Microsoft Data Access Components Version 2.5 Readme

ここでは、Microsoft® Data Access Components (MDAC) Version 2.5 の技術的な問題点、既知のバグ、および制限事項について説明します。

標準の再配布用の MDAC には、コア コンポーネント (ADO、OLE DB、および ODBC) と、多様なデータを格納するために追加された OLE DB プロバイダ群および ODBC ドライバ群が含まれます。マニュアル、サンプル、ツール、ヘッダー、およびライブラリが含まれている MDAC の SDK については、この Readme の MDAC の技術的な問題点が記載されている項目を参照してください。

目次

技術的な問題点、既知のバグ、および制限事項

技術的な問題点、既知のバグ、および制限事項

MDAC

MDAC ファイル一覧

http://www.microsoft.com/data/download.htm で MDAC のファイル一覧を取得することができます。

Platform SDK から MDAC 2.5 SDK をインストールする方法

MSDN Online Web サイトの http://msdn.microsoft.com/developer/sdk/platform.asp から、Platform SDK を、そのまま、または独立したコンポーネントとして、インストールすることができます。セットアップ ウィザードによって、インストールの手順が示されます。ほかのアプリケーションも Data Access コンポーネントを共有するため、ほかのアプリケーションをすべて閉じてから、Platform SDK をインストールする必要があります。

Platform SDK のセットアップ ウィザードでは、標準インストールとカスタム インストールのどちらかを選択することができます。標準インストールでは、SDK 全体がダウンロードされます。カスタム インストールでは、特定のコンポーネント、つまり、マニュアル、構築環境、デバッガ、ツール、サンプルとソース コード、再配布可能なコンポーネント、およびその他のマテリアルを選択することができます。Data Access コンポーネントの場合は、API、マニュアル、サンプルなど、MDAC SDK のどの部分をインストールするか選択できます。MDAC SDK をインストールするときに、各コンポーネントを同期させるために、インストールの過程で構築環境を更新することをお勧めします。

HTML ヘルプ ファイルには Windows NT 4 で更新済みの HHCTRL.OCX が必要

Microsoft® Windows NT® 4.0 Service Pack 3 を使用している場合は、HTML ヘルプ ファイルを正しく表示するために、HHCTRL.OCX の更新済みのバージョンが必要です。http://msdn.microsoft.com/workshop/author/htmlhelp/localize.asp の「MSDN Online Web Workshop」から、HTML ヘルプの更新データをインストールしてください。使用中のプラットフォームに適した言語を選択します。

MDAC 依存関係

OLE DB Core Services (Oledb32.dll) および MDAC スタックの新機能は Internet Explorer と一緒に出荷されている 2 つの DLL に依存しています。

SQL Server と共に使用した場合のエラー

Microsoft OLE DB Provider for SQL Server または SQL Server ODBC ドライバを通じて SQL Server 6.5 にアクセスするアプリケーションを実行中のコンピュータに、MDAC 2.5 をインストールする場合で、さらに、Microsoft SQL Server 6.5 にインストールされたカタログ ストアド プロシージャが最新バージョンでない場合は、プロバイダまたはドライバによって以下の警告メッセージが表示されます。

このメッセージをアプリケーションが無視した場合は、スキーマ情報の消失などの問題が発生するおそれがあります。

この問題を回避するには、以下を実行します。

MDAC の目次に戻る


ADO および RDS

Microsoft ADO のマニュアルを補足する最新情報、またはその他の関連情報については、以下を参照してください。

ADO/RDS の技術的な問題点

ADO/RDS の既知のバグと制限事項

技術的な問題点

Microsoft Internet Explorer Version 5.0 と XML

XML ファイルから Recordset を開く場合、Microsoft® Internet Explorer 5.0 が必要です。

Windows 2000 Beta 2 以降の ADO 2.5 のフィールド コレクションに対する変更

ADO 内でパフォーマンスを向上させるために、既存のフィールドの値を変更する場合と同様に、Record オブジェクトの Fields コレクションに対する追加と削除は、Update メソッドが呼び出されるまで、キャッシュに入れられます。Update メソッドが呼び出されると、すべての変更が一括して行われます。

各フィールドには Status プロパティがあり、更新中にエラーが発生した場合には、Status プロパティを調べることによって、どのフィールドが正常に追加、削除、または変更されたかを判断することができます。Record オブジェクトが閉じられたか、または Update メソッドが呼び出される前に有効範囲を外れると、保留状態のフィールドはコミットされません。

Fields コレクション用に、ResyncCancelUpdate の 2 つのメソッドが追加されました。また、フィールドを追加する際に値を指定できるように、Append メソッドにパラメータが追加されました。Resync メソッドは、サーバーからフィールド群の現在の値を取得し、単独のパラメータとして ResyncEnum を伴います (規定値は adResyncAllValues)。Resync は、削除されたフィールドには効力がありません。削除されたフィールドは、Update の呼び出しで正常に削除されるまで、ローカル キャッシュに引き続き存在しています。削除されたフィールドの Fields.Count プロパティも、Update が呼び出されて正常に削除されるまで、変更されません。

Record オブジェクトの Field オブジェクトには、StatusOriginalValue、および UnderlyingValue という、新しいプロパティが 3 つあります。Field オブジェクトの Status プロパティは、フィールドの現在の状態を示します。つまり、新しい値になったにもかかわらず、まだ Update が呼び出されていないフィールドは、adFieldPendingUpdate の状態です。OriginalValueUnderlyingValue は、Recordset オブジェクトの Field オブジェクトにある、同じ名前のプロパティと類似しています。

Windows 2000 Beta 2 以降の ADO 2.5 の URL のバインドに対する変更

URL のバインドを簡略化するために、以下の例のように、接続文字列内で "URL=" を使用できます。

rec.Open "someDirectory", "URL=http://someComputer/someFolder/", adModeReadWrite

定数の adOpenURLBindadCmdURLBind、および adOpenStreamFromURL が廃止されました。

セットアップの変更: セットアップ中は RDS DataFactory をセーフ モードに設定

Remote Data Service (RDS) セットアップは MDAC 2.5 で変更されました。RDS DataFactory は Windows 2000 のインストールおよびアップグレード時に自動的にセーフ モードに設定されます。(MDAC 2.5 は Windows 2000 と一緒に出荷されます。) 以前は、MDAC セットアップは既存の RDS の DataFactory 設定を変更しませんでした。

この変更は Windows 2000 でのみ適用されます。Windows NT 4.0 または Windows 95/98 に MDAC 2.5 をインストールする場合は、セットアップに変更はありません。これらのシステムでは、MDAC 2.5 へのアップグレード時に既存の DataFactory 設定が保持されます。

注   MDAC Version 2.5 以降のセットアップは、最初のインストール時に一度だけ DataFactory をセーフ モードに設定します。そのため、Windows NT 4.0 または Windows 98/95 に MDAC 2.5 以降をクリーン インストール (MDAC を初めてインストール) して、DataFactory を後から構成する場合、構成は Windows 2000 へのアップグレード時に維持されます。同様に、Windows 2000 Release Candidate 3 以降からのアップグレード時にはセーフ モード構成を変更することはありません。

既知のバグと制限事項

Client Cursor Engine と OLE DB 2.5 インターフェイス

Client Cursor Engine には OLE DB 2.5 インターフェイスが実装されていません。その結果、バージョン 2.5 の OLE DB Provider で Recordset を開き、CursorLocation として adUseClient を指定すると、RecordCount が常に -1 を返すなど、一定のプロパティが不正確になります。

Data Shaping Service および Remoting Provider 内の拡張プロパティ

Data Shaping Service for OLE DB または OLE DB Remoting Provider を使用する際に、"Persist Sensitive Authinfo" が偽であっても、"Extended Properties" プロパティの値を使用することができます。ユーザーは、"Extended Properties" プロパティが安全でないことを承知しておく必要があります。したがって、重要な情報を拡張プロパティに設定することは避けることをお勧めします。ADO と同じようにサービス コンポーネントを経由して Data Shaping Service を使用する場合は、以下の 2 つの方法で拡張プロパティを設定することができます。

注意   Microsoft OLE DB Provider for ODBC の PWD プロパティは、Data Shaping Service または Remoting Provider にサポートされないプロバイダ固有のプロパティです。したがって、サービス コンポーネントが PWD プロパティを "Extended Properties" プロパティ内に格納するので、安全ではありません。接続文字列には、"PWD=" の代わりに "PASSWORD=" を使用することをお勧めします。

URL からレコードを開く

Record を開くために URL を使用する場合は、バックスラッシュでなくスラッシュを使用する必要があります。たとえば、次のコードは正しく実行されます。

Dim r As New Record 
r.Open "SomeDirectory", "url=http://someComputer/someFolder"

これに対し、次のコードはエラーの原因になります。

Dim r As New Record 
r.Open "SomeDirectory", "url=http:\\someComputer\someFolder"

操作の中断

オプションとして adAsyncFetchNonBlocking を指定すると、Open メソッドは非同期的に操作されないで、操作が完了するまで中断されます。

ある種の文字セットがストリーム オブジェクトに正しく処理されない

ある種の文字は、ダブル バイト文字とシングル バイト文字が混在している場合、文字サイズが変わります。Stream オブジェクトでは、文字列の長さを判断する際に、このことが問題の原因になります。影響を受ける文字セットは、ISO-2022-JP、ISO-2022-KR、HZ-GB-2312、および UTF-7 です。

存在しない .UDL ファイルで接続を開いた場合のエラーの変更

存在しない .UDL ファイルへのパスを使用した接続を開こうとした場合に、"ファイルが見つかりません" というエラー メッセージが表示されます。これは、ADO の前のバージョンでは、"プロバイダが見つかりません" というエラー メッセージだったものです。

レコードのオープンとクローズによる空のファイルの作成

OLE DB Provider for Internet Publishing で Record オブジェクトの Open メソッドを使用してファイルを作成する場合は、2 バイトのファイルが作成されます。その後直ちに Record を閉じると、サイズが 2 バイトのファイルになります。

OLE DB Provider for ODBC のエラー

OLE DB Provider for ODBC を使って Recordset の BLOB 列にアクセスする場合、データにアクセスするメソッドが混在するとエラーが発生します。つまり、GetChunk メソッドを使ってデータの一部にアクセスし、Value プロパティを使って残りのデータにアクセスすることはできません。次の 2 行目の例ではエラーが起きます。

v = rs("BlobColumn").GetChunk(10)
Debug.Print rs("BlobColumn").Value

GetChunk メソッドを使って BLOB 列を読み取る場合は、GetChunk メソッドを最後まで使う必要があります。GetChunk メソッドと Value プロパティが混在すると、エラー -2147217887 が発生します。

MDAC の目次に戻る


ADOX

以下は、Microsoft ADO Extensions for DDL and Security (ADOX) のマニュアルを補足する最新情報、またはその他の関連情報です。

ADOX の技術的な問題点

ADOX の既知のバグと制限事項

技術的な問題点

テーブル、インデックス、および列の、必須またはオプションのプロパティ

使用するデータ プロバイダが、TableIndex、および Column オブジェクトのすべてのプロパティをサポートしない可能性があります。プロバイダにサポートされないプロパティに値を設定すると、エラーになります。新しい TableIndex、または Column オブジェクトの場合は、そのオブジェクトがコレクションに追加される時に、エラーが発生します。既存のオブジェクトの場合は、プロパティに値を設定する時にエラーが発生します。

TableIndex、または Column オブジェクトを作成する場合は、オプションのプロパティに適切な既定値があったとしても、そのプロパティがプロバイダにサポートされることの保証にはなりません。使用するプロバイダにサポートされるプロパティの詳細については、そのプロバイダのマニュアルを参照してください。

Microsoft OLE DB プロバイダと共に ADOX を使用する方法

使用する OLE DB プロバイダによって、ADOX の一定の機能がサポートされます。ADOX は、OLE DB Provider for Microsoft Jet で使用する場合に完全にサポートされます。Microsoft OLE DB Provider for SQL Server、Microsoft OLE DB Provider for ODBC、または Microsoft OLE DB Provider for Oracle の場合にサポートされない機能については、以下に示します。その他の Microsoft OLE DB プロバイダの場合、ADOX はサポートされません。

  1. Microsoft OLE DB Provider for SQL Server   以下を除く、すべての ADOX のオブジェクト、コレクション、プロパティ、およびメソッドがサポートされます。
  2. Microsoft OLE DB Provider for ODBC   以下を除く、すべての ADOX のオブジェクト、コレクション、プロパティ、およびメソッドがサポートされます。
  3. Microsoft OLE DB Provider for Oracle   以下を除く、すべての ADOX のオブジェクト、コレクション、プロパティ、およびメソッドがサポートされます。

既知のバグと制限事項

現時点で既知のバグまたは制限事項はありません。

MDAC の目次に戻る


ADO MD

以下は、Microsoft ADO のマニュアルを補足する最新情報、またはその他の関連情報です。

技術的な問題点

現時点で技術的な問題点はありません。

既知のバグと制限事項

現時点で既知のバグまたは制限事項はありません。

MDAC の目次に戻る


JRO

以下は、Microsoft Jet and Replication Objects のマニュアルを補足する最新情報、またはその他の関連情報です。

JRO の技術的な問題点

JRO の既知のバグと制限事項

技術的な問題点

現時点で技術的な問題点はありません。

既知のバグと制限事項

Microsoft® Access で開かれたことがなく、コード内で複製可能に設定されているデータベースには、常にフォーム、レポート、マクロ、モジュールのローカル プロジェクトがあり、そのデータベースがプロジェクトを複製できるように変更することはできません。データベースを複製可能にする前にそのデータベースが Access 内で開かれることがないと、この機能 (mSysAccessObjects) を制御するシステム テーブルが作成されないためです。データベースをいったん複製可能にすると、ユーザーがプロジェクトを複製できるか、またはできないかを変更することはできません。

MDAC の目次に戻る


Microsoft Data Link API

以下は、Microsoft Data Link API のマニュアルを補足する最新情報、またはその他の関連情報です。

Microsoft Data Link の技術的な問題点

Microsoft Data Link の既知のバグと制限事項

技術的な問題点

現時点で技術的な問題点はありません。

既知のバグと制限事項

PromptDataSource のインスタンスは一つしか使用できない

指定された時間に開くことができる [データ リンク プロパティ] ダイアログ ボックスのインスタンスは 1 つだけです。最初のオブジェクトを解放する前に 2 つめのオブジェクトを作成するための IDBPromptInitialize::PromptDataSource を呼び出すと、予期できない結果になります。

リモート プロバイダまたはアウトプロセス プロバイダの作成がサポートされない

Data Link API Version 2.5 のリリースでは、リモート プロバイダまたはアウトプロセス プロバイダの作成はサポートされません。アウトプロセス プロバイダ以外の何に対しても、IDataInitialize::CreateDBInstanceEx の呼び出しと、これに類似したメソッドは失敗します。

共有排他フラグの Share Deny Read および Share Deny Write への変換

DB_MODE_SHARE_EXCLUSIVE フラグは、DB_MODE_SHARE_DENY_READ と DB_MODE_SHARE_DENY_WRITE が論理和で組み合わされた場合の結果の値になります。DB_MODE_SHARE_EXCLUSIVE が入力時に設定された場合、Data Link のユーザー インターフェイスは、"Share Deny Read" と "Share Deny Write" をチェック済みとして表示しますが、"Share Exclusive" はチェックされません。

MDAC の目次に戻る


OLE DB

以下は、Microsoft OLE DB のマニュアルを補足する最新情報、またはその他の関連情報です。

OLE DB の技術的な問題点

OLE DB の既知のバグと制限事項

技術的な問題点

Oledb.h における 64 ビット データ型サポート

Oledb.h ヘッダー ファイルにある、64 ビット データ型をサポートする条件プリプロセッサ ディレクティブを無視してください。これらのディレクティブは _WIN64 をテストし、将来のバージョンに組み込まれる機能をサポートしています。

既知のバグと制限事項

現時点で既知のバグまたは制限事項はありません。

MDAC の目次に戻る


OLE DB Service Components

以下は、Microsoft OLE DB Service Components のマニュアルを補足する最新情報、またはその他の関連情報です。

OLE DB Service Components の技術的な問題点

OLE DB Service Components の既知のバグと制限事項

技術的な問題点

セッション プールには SSPROP_ENABLEFASTLOAD を使用してはならない

OLE DB Provider for SQL Server を使用する場合、このプロバイダ固有のプロパティの SSPROP_ENABLEFASTLOAD を、OLE DB Session オブジェクトの特殊フォームを入手するために使用することができます。このフォームで、IRowsetFastLoad インターフェイスがサポートされます。ただし、このプロパティを使用する場合は、セッション プールを使用しないでください。セッション プールを有効に設定すると、コンシューマに返される Session オブジェクトがプールから取り出される可能性があります。既存のセッションは SSPROP_ENABLEFASTLOAD で作成されていない場合があるため、IRowsetFastLoad インターフェイスをサポートしない可能性があります。

既知のバグと制限事項

現時点で既知のバグまたは制限事項はありません。

MDAC の目次に戻る


OLE DB for Online Analytical Processing (OLAP)

OLE DB for OLAP リリース ノートは、Microsoft OLE DB for OLAP のマニュアルの補足情報や最新情報を提供しています。

OLE DB for OLAP の技術的な問題点

OLE DB for OLAP の既知のバグと制限事項

技術的な問題点

現時点で技術的な問題点はありません。

既知のバグと制限事項

現時点で既知のバグと制限事項はありません。

MDAC の目次に戻る


OLE DB Provider for ODBC

以下は、Microsoft OLE DB Provider for ODBC のマニュアルを補足する最新情報、またはその他の関連情報です。

OLE DB Provider for ODBC の技術的な問題点

OLE DB Provider for ODBC の既知のバグと制限事項

技術的な問題点

現時点で技術的な問題点はありません。

既知のバグと制限事項

IAccessor::CreateAccessor の dwFlags

このプロバイダは、IAccessor::CreateAccessor を呼び出すときに dwFlags を無視し、このフィールドの DBBINDFLAGS_HTML やほかのフラグ設定を有効にしません。コンシューマは dwFlags を 0 に設定します。

サービス コンポーネントが有効なときにサーバー オプションがリセットされる

OLE DB サービス コンポーネントのリソース プーリング実装は、プールにデータ ソースとセッションを返すときにサーバー オプションをリセットしません。例えば、SET QUOTED_IDENTIFIER OFF コマンドがセッション中に SQL Server に送られ、そのセッションがプールに返されると、サーバー オプションはリセットされません。このように、コンシューマは異なるサーバー オプションが設定されているアクティブ接続をプールから選択する可能性があります。QUOTED_IDENTIFIER などのサーバー オプションが既定値以外に設定されている場合、アクティブ接続の状態はオブジェクトがプールに返されたときにリセットされません。そこで、DBMS がサーバー オプションを制御できるようにコンシューマが OLE DB サービス コンポーネントを無効にするか、これらのオプションをリセットする必要があります。

分散トランザクションにおいて新しい接続に必要な接続プーリング

ODBC 接続プーリングが使用されないと、分散トランザクション内で新しい接続が作成できません。ODBC は接続をトランザクションに参加させます。

接続の破棄またはプールへの戻し時に接続の属性がリセットされない

OLE DB Provider for ODBC は、接続が破棄またはプールに返されるときにすべての接続属性をリセットしません。プールから接続を受け取った後に接続属性を確認またはリセットすることをお勧めします。接続属性のリストについては、『ODBC Programmer's Reference』 を参照してください。また、SQL Server 固有の接続属性については、『SQL Server Books Online』 を参照してください。

一括更新と複数の結果の要求で、1 つの結果セットしか返されない

OLE DB Provider for ODBC に対してバッチ内で 2 つの UPDATE ステートメントを発行し、複数の結果を要求しても、結果セットはただ 1 つしか返されません。 BATCH ステートメントが SQLPrepare と SQLExecute を使用して実行されると、エラーが発生します。バッチの更新が SQLExecDirect を使用して実行される場合は、2 つの結果セットが正しく返されます。OLE DB Provider for ODBC では Prepare/Execute 呼び出しが使用され、1 つの結果セットのみが返されることに注意してください。この問題を回避する方法は、OLE DB Provider for SQL Server を使用することです。このプロバイダでは、SQLExecDirect が使用され、正しく実行されます。

一括更新による複数の競合行の競合情報の消失

OLE DB Provider for ODBC を通じて SQL Server に一括更新を実行するときに複数の行が競合すると、競合の情報が失われます。バッチ内で競合している最初の行に競合のマークが付けられ、編集状態を維持します。ただし、それに続く競合している行には競合のマークが付けられません。そして、サーバーに影響を与えることなく、adEditNone の編集モードに戻されます。回避方法は、OLE DB Provider for SQL Server (SQLOLEDB) を使用することです。

MDAC の目次に戻る


OLE DB Provider for Oracle

以下は、Microsoft OLE DB Provider for Oracle のマニュアルを補足する最新情報、またはその他の関連情報です。

OLE DB Provider for Oracle の技術的な問題点

OLE DB Provider for Oracle の既知のバグと制限事項

技術的な問題点

OLE DB Provider for Oracle と Oracle クライアント ソフトウェアを使用するには、既定の Ociw32.dll ではなく Oci.dll を使用するように HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\* レジストリ エントリを変更する必要があります。

Oracle8 および Oracle8i の MTxOCI の正しい値です:

キーの値 Oracle8i Oracle8
OracleXaLib Oraclient8.dll Xa80.dll
OracleSqlLib Orasql8.dll Sqllib80.dll
OracleOciLib Oci.dll Oci.dll

Windows 2000

  1. RegEdit を実行します。

  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI の下の OracleOciLib を編集して前の表にある正しい値を設定します。

   このキーがセットアップによって自動的に追加されなかった場合は、"OracleOciLib" をレジストリに追加してください。

Windows NT 4.0 または Windows 95/98

  1. RegEdit を実行します。

  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Transaction Server\Local Computer\My Computer の下の OracleOciLib を編集して前の表にある正しい値を設定します。

   RegEdit を使用してこのキーを手動で追加する必要があります。レジストリー値 "OracleOciLib" を含む最新の修正モジュールをインストールするには、製品サポート サービスに連絡してください。

既知のバグと制限事項

IAccessor::CreateAccessor の dwFlags

このプロバイダは、IAccessor::CreateAccessor を呼び出すときに dwFlags を無視し、このフィールドの DBBINDFLAGS_HTML やほかのフラグ設定を有効にしません。コンシューマは dwFlags を 0 に設定します。

Oracle 7.x のサーバー使用時のエラー

Oracle 7.x サーバーに対して OLE DB Provider for Oracle を使用すると、外部結合の実行時にエラーとなる可能性があります。外部結合を実行するとすべての列は潜在的に NULL になる可能性がありますが、Oracle 7.x では、外部結合の列に対して NULL が許容されない可能性があります。したがって、結果の列が NULL 値になった時にエラーになります。これを回避する方法は、Oracle 8.x のサーバーを使用することです。

Oracle 8.x データベースに対する Select ステートメントにはトランザクションが必要

"select...for update" ステートメントを使用して Oracle 8.x データベースにアクセスする場合は、まずトランザクションを開始しておく必要があります。開始しておかないと、"フェッチの順序が違います。(ORA-01002)" という内容のエラー メッセージが表示されます。

Oracle Server では空の文字列が NULL 値に変換される

ODBC Driver for Oracle または OLE DB Provider for Oracle を使用して Oracle データベースを更新する場合は、空の文字列が NULL に変換されることに注意してください。ADO の Update メソッドを使用すると、エラー メッセージの "行が見つからなかっため、更新できません。最終読み取り時以降に値が変更された可能性があります。" (80040e38) が表示されます。この原因は、Oracle サーバーで空の文字列が NULL に変換されたにもかかわらず、ADO の Recordset では空の文字列が格納されるためです。

MDAC の目次に戻る


OLE DB Provider for SQL Server

Microsoft OLE DB Provider for SQL Server のマニュアルの補足情報や最新情報です。

OLE DB Provider for SQL Server 技術的な問題点

OLE DB Provider for SQL Server の既知のバグと制限事項

技術的な問題点

現時点では技術的な問題点はありません。

既知のバグと制限事項

サービス コンポーネントが有効なときにサーバー オプションがリセットされる

OLE DB サービス コンポーネントのリソース プーリング実装は、プールにデータ ソースとセッションを返すときにサーバー オプションをリセットしません。例えば、SET QUOTED_IDENTIFIER OFF コマンドがセッション中に SQL Server に送られ、そのセッションがプールに返されると、サーバー オプションはリセットされません。このように、コンシューマは異なるサーバー オプションが設定されているアクティブ接続をプールから選択する可能性があります。QUOTED_IDENTIFIER などのサーバー オプションが既定値以外に設定されている場合、アクティブ接続の状態はオブジェクトがプールに返されたときにリセットされません。そこで、DBMS がサーバー オプションを制御できるようにコンシューマが OLE DB サービス コンポーネントを無効にするか、これらのオプションをリセットする必要があります。

MDAC の目次に戻る


OLE DB Provider for Microsoft Jet

OLE DB Provider for Microsoft Jet のマニュアルの補足情報や最新情報です。

OLE DB Provider for Microsoft Jet の技術的な問題点

OLE DB Provider for Microsoft Jet の既知のバグと制限事項

技術的な問題点

Microsoft Jet 4.0 データベース エンジンは Unicode のインターフェイスを持ちます。データは ANSI ではなく Unicode 形式で提供されています。

既知のバグと制限事項

Jet 4.0 Provider をインストールすると Jet 3.51 Provider を使用できない

OLE DB Provider for Microsoft Jet 4.0 をインストールするといくつかのファイルが置き換わり、OLE DB Provider for Microsoft Jet 3.51 を使用できません。Access 2000 を使用して新しい Microsoft Jet 4.0 形式に変換しないと、古い .mdb ファイルにアクセスするときにパフォーマンスの問題が発生する可能性があります。

MDAC の目次に戻る


Data Shaping Service for OLE DB

Microsoft Data Shaping Service for OLE DB のマニュアルの補足情報や最新情報です。

Data Shaping Service for OLE DB の技術的な問題点

Data Shaping Service for OLE DB の既知のバグと制限事項

技術的な問題点

現時点で技術的な問題点はありません。

既知のバグと制限事項

マニュアルにありません: Data Shaping Service でサポートされているデータ型

次に示すのは、New 句で Data Shaping Service for OLE DB が使用できる OLE DB データ型の一覧です。ADO のデータ型については、ADO DataTypeEnum のマニュアルを参照してください。

DBTYPE_BOOL DBTYPE_I2
DBTYPE_BSTR DBTYPE_I4
DBTYPE_BYTES DBTYPE_I8
DBTYPE_CY DBTYPE_NUMERIC
DBTYPE_DATE DBTYPE_R4
DBTYPE_DBDATE DBTYPE_R8
DBTYPE_DBTIME DBTYPE_STR
DBTYPE_DBTIMESTAMP DBTYPE_UI1
DBTYPE_DECIMAL DBTYPE_UI2
DBTYPE_ERROR DBTYPE_UI4
DBTYPE_FILETIME DBTYPE_UI8
DBTYPE_GUID DBTYPE_VARNUMERIC
DBTYPE_I1 DBTYPE_WSTR

MDAC の目次に戻る


オープン データベース コネクティビティ (ODBC)

以下は、Microsoft ODBC のマニュアルを補足する最新情報、またはその他の関連情報です。

ODBC の技術的な問題点

ODBC の既知のバグと制限事項

技術的な問題点

32 ビットの ODBC クライアントおよびドライバの推奨

ドライバが ANSI の CONFIGDSNW と同等の CONFIGDSN の作用を受けていない限り、16 ビットの ODBC クライアントは、UNICODE ODBC ドライバを追加、構成、または削除できません。この問題を回避するには、UNICODE をサポートする 32 ビット API を使用します。Microsoft、MERANT、Simba Technologies などの主要なすべてのデータベースでは、32 ビット ドライバを使用できます。

Microsoft Transaction Server のトランザクション

Microsoft Transaction Server のトランザクション内の関与と参加についての情報は、Microsoft Transaction Server のマニュアルを参照してください。ドライバの開発担当者とアプリケーション作成者のための詳細な情報が記載されています。

トランザクションの自動参加には接続プールが必要

ODBC では、接続プールが有効になっていないと、トランザクションの自動参加ができません。

既知のバグと制限事項

ロックダウン システムによる ODBC DSN の作成の防止

Zero Administration Windows、Windows 2000、または Windows Terminal Server などのロックダウン システムでは、HKLM レジストリ ツリーへの書き出し権限が、ユーザーにありません。 これが原因で、ODBC Driver for Microsoft Jet を使用する DSN なしの接続も含めた ODBC DSN を作成するアプリケーションが、失敗になります。これを回避するには、Windows の管理者アカウントを使用して DSN を作成します。

MDAC の目次に戻る


ODBC Driver for Oracle

以下は、Microsoft ODBC Driver for Oracle のマニュアルを補足する最新情報、またはその他の関連情報です。

ODBC Driver for Oracle の技術的な問題点

ODBC Driver for Oracle の既知のバグ、制限事項、および回避方法

技術的な問題点

ODBC Driver for Oracle と Oracle クライアント ソフトウェアを使用するには、既定の Ociw32.dll ではなく Oci.dll を使用するようにレジストリ エントリを修正する必要があります。

Windows 2000

  1. RegEdit を実行します。

  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI の下の OracleOciLib を編集して Oci.dll に設定します。(既定値は Ociw32.dll です。)

   このキーはセット アップによって自動的に追加されます。

NT 4 または Windows 95/98

  1. RegEdit を実行します。

  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Transaction Server\Local Computer\My Computer の下の OracleOciLib を編集して Oci.dll に設定します。(既定値は Ociw32.dll です。)

   RegEdit を使用してこのキーを手動で追加する必要があります。レジストリー値 "OracleOciLib" を含む最新の修正モジュールをインストールするには、製品サポート サービスに連絡してください。

既知のバグ、制限事項、および回避方法

ドライバによるエラー メッセージまたはデータ切り捨てメッセージの表示

セットアップ ウィザードによって列定義を推測するように強制されていない場合に、ドライバがエラー メッセージまたはデータ切り捨てのメッセージを返す可能性があります。バージョン 2.5 のドライバの既定値は、"0" です。

静的テーブル更新時のアクセス違反

ODBC Driver for Oracle で、resultset 句から行を削除する時にアクセス違反になる場合があります。これは、静的テーブルを更新できるようにするバグが原因です。

ODBC 3.0 以降のデータ型をサポートしない

ODBC Driver for Oracle では、SQLGetTypeInfo によって ODBC 3.0 以降のデータ型をクエリした場合に、"[Microsoft][ODBC driver for Oracle] SQL データ型が有効範囲にありません。" が表示されます。ODBC Driver for Oracle では、ODBC 2.5 のデータ型のみがサポートされます。

Client Cursor Engine では、ODBC Driver for Oracle を使用した OLE DB Provider for ODBC によってデータベースを更新できない

ODBC Driver for Oracle と共に OLE DB Provider for ODBC (MSDASQL) を使用する場合に、Client Cursor Engine 用の IColumnsRowset インターフェイスによって Columns MetaData 行セットに返される情報が、ADO 内で UpdateBatch メソッドを実行するには不十分です。回避方法は、代わりに OLE DB Provider for Oracle (MSDAORA) を使用することです。

MDAC の目次に戻る


ODBC データ ソース アドミニストレータ

以下は、Microsoft ODBC データ ソース アドミニストレータのマニュアルを補足する最新情報、またはその他の関連情報です。

ODBC データ ソース アドミニストレータの技術的な問題点

ODBC データ ソース アドミニストレータの既知のバグと制限事項

技術的な問題点

現時点で技術的な問題点はありません。

既知のバグと制限事項

[Visual Studio Analyzer の開始] ボタン

ODBC データ ソース アドミニストレータの [トレース] タブにある [Visual Studio Analyzer の開始] をクリックすると、Visual Studio Analyzer がインストールされていない場合に、"ODBC を Visual Studio Analyzer イベント ソースとして登録できませんでした。" というエラー メッセージが表示されます。

オンライン ヘルプ

ODBC データ ソース アドミニストレータからアクセスされたダイアログ ボックス内のラベルをマウスの右ボタンでクリックしても、状況依存のヘルプは表示されません。これらのコントロールについてのヘルプを表示するには、ダイアログ ボックス右上の隅にある疑問符のボタンをクリックしてからコントロールをクリックする必要があります。マウスの右ボタンをクリックすると表示されるヘルプは、すべてのボタン、オプション ボタン、およびチェック ボックスについてのヘルプです。

MDAC の目次に戻る


ODBC デスクトップ データベース ドライバ

以下は、Microsoft ODBC デスクトップ データベース ドライバのマニュアルを補足する最新情報、またはその他の関連情報です。

ODBC デスクトップ データベース ドライバの技術的な問題点

ODBC デスクトップ データベース ドライバの既知のバグと制限事項

技術的な問題点

CREATE_DB で Jet 4.0 のデータベースが参照される

現在、ODBC Driver for Jet では、CREATE_DB が Jet 3.x データベースでなく Jet 4.0 データベースを作成すると解釈されます。Microsoft® Project 98 を含めて以前 Jet 3.x データベースを作成したアプリケーションは、このキーワードを使用して現在では Jet 4.0 データベースを作成します。Jet 4.0 データベースは、MDAC 2.1 以降、および Access 2000 以降を使用して読むことができます。キーワードの CREATE_DBV4 が、Jet 4.0 データベースの作成をアプリケーションで指定できるように追加されました。

パラメータ

Jet 4.0 エンジン内の変更が原因で、サブクエリに含まれるパラメータは、ステートメントの最上位のパラメータの前に挿入されます。ODBC の仕様では、パラメータは、パラメータが挿入される SQL ステートメントに出現する順番でバインドされるように決められています。その後ステートメントが実行される時に、パラメータがその順番で挿入されます。この問題は Jet 3.51 の場合ですが、Jet 4.0 での動作は変更されました。

既知のバグと制限事項

現時点で既知のバグまたは制限事項はありません。

MDAC の目次に戻る


SQL Server Client Data Access Components

はじめに

共通の問題点 : サーバーへの INSTCAT.SQL のインストール

OLE DB Provider for SQL Server

SQL Server ODBC ドライバ

クライアント Net-Library

クライアント設定ユーティリティ

はじめに

MDAC には、ADO、OLE DB、および ODBC のクライアントが SQL Server のデータを利用できるように、Microsoft SQL Server のクライアントに接続するためのコンポーネントが含まれています。

以下は、MDAC 内の SQL Server コンポーネントです。

この Readme ファイルのこれ以降は、さまざまなバージョンの SQL Server に対して、MDAC のこのバージョン内の特定の SQL Server コンポーネントを使用する方法を説明します。

共通の問題点

OLE DB Provider for SQL Server と SQL Server ODBC ドライバの両方に共通する問題点を、以下に説明します。

サーバーへの INSTCAT.SQL のインストール

OLE DB Provider for SQL Server と SQL Server ODBC ドライバでは、SQL Server のシステム カタログから情報を入手するために、カタログ ストアド プロシージャとして知られているシステム ストアド プロシージャが使用されます。OLE DB Provider for SQL Server と ODBC ドライバの各バージョンは、カタログ ストアド プロシージャの特定のバージョンで機能するように開発されています。

OLE DB Provider for SQL Server Version 07.01 と SQL Server ODBC ドライバ Version 3.70 に含まれている INSTCAT.SQL ファイルには、この両方に使用されるバージョンにプロシージャをアップグレードする、カタログ ストアド プロシージャのマイナー アップグレードが含まれています。OLE DB Provider for SQL Server Version 07.01 と SQL Server ODBC ドライバ Version 3.70 と共に出荷される INSTCAT.SQL ファイルは、SQL Server 7.0 と共に出荷される INSTCAT.SQL ファイルと同一のものです。SQL Server 7.0 を使用している場合は、INSTCAT.SQL を実行する必要はありません。

SQL Server のシステム管理者は、ドライバが正しく動作するように、INSTCAT.SQL スクリプトを使用してカタログ ストアド プロシ−ジャをアップグレードする必要があります。カタログ ストアド プロシージャをアップグレードしても、旧来の SQL Server クライアントの操作には影響ありません。これは、4.21a から 6.5 までの SQL Server のすべてのバージョンで実行する必要があります。SQL Server 7.0 を使用している場合は、このアップグレードは必要ありません。

SQL Server 4.21a、6.0、または 6.5 のカタログ プロシージャをアップグレードするには、システム管理者が isql ユーティリティを使用して、INSTCAT.SQL スクリプトを実行する必要があります (以下の手順を参照してください)。

マスタ データベースに変更を加える前に、データベースのバックアップを作成する必要があります。isql を実行するには、コンピュータが SQL Server のクライアント ワークステーションとして設定されている必要があります。

コマンド プロンプトに対し、以下の例のように、isql ユーティリティを使用して INSTCAT.SQL スクリプトを実行します。

C:>ISQL /Usa /Psa_password /Sserver_name

         /ilocation\Instcat.Sql

入力する項目の意味は、次のとおりです。

sa_password

システム管理者のパスワード。

server_name

SQL Server が実行されているサーバーの名前。

location

INSTCAT.SQL の格納場所を示す完全パス名。

INSTCAT.SQL スクリプトでは、多くのメッセージが生成されます。メッセージのほとんどは、スクリプトによって発行された Transact-SQL ステートメントに影響を受けた行数を示しています。実行エラーを示すメッセージを探すために出力されたものを調べる必要がありますが、多くは無視できるメッセージです。SQL Server Version 6.0 で INSTCAT.SQL を実行した場合は、"sp_MS_upd_sysobj_category オブジェクトは存在しません。" というメッセージは無視してかまいません。最後のメッセージは、INSTCAT.SQL が正常に終了したことを示している必要があります。マスタ データベース内にカタログ ストアド プロシージャを格納するため、または既存のプロシージャに対する変更をログに記録するための十分な領域がない場合は、INSTCAT.SQL スクリプトは失敗して終わります。

SQL Server Client Data Access Components の目次に戻る

OLE DB Provider for SQL Server

OLE DB Provider for SQL Server Version 07.01 は、SQL Server Version 7.0 と 6.5 にアクセスするために使用できます。

OLE DB Provider for SQL Server Version 07.01 は SQL Server 7.0 と共に出荷されるので、SQL Server 7.0 のユーザーは、このドライバについて、この Readme ファイルではなく、SQL Server 7.0 のマニュアルを参照する必要があります。SQL Server Books Online for SQL Server 7.0 が、MSDN で、また、Technet CD で利用できます。

SQL Server Version 6.5 のユーザーは、OLE DB Provider for SQL Server 7.0 用の MDAC SDK のマニュアルを調べることができます。

SQL Server Client Data Access Components の目次に戻る

SQL Server ODBC ドライバ

ここでは、SQL Server 6.5 以前のバージョンで SQL Server ODBC ドライバ Version 3.70 を使用する方法を説明します。

SQL Server ODBC ドライバ Version 3.70 は SQL Server 7.0 と共に出荷されるので、SQL Server 7.0 のユーザーは、このドライバについて、この Readme ファイルではなく、SQL Server 7.0 のマニュアルを参照する必要があります。SQL Server Books Online for SQL Server 7.0 が、MSDN で、また、Technet CD で利用できます。

概要

SQL Server ODBC ドライバ Version 3.70 は、Win32 ODBC Version 3.51 のドライバです。このドライバは、ODBC 2.X または ODBC 3.X の API に対して書かれたアプリケーションと共に使用することができます。またこのドライバは、SQL Server Version 4.21a 以降を使用して動作します。このドライバは、Windows 95、Windows 98、および Windows NT Version 4.0 で動作します。

Win32 SQL Server 7.0 クライアント設定ユーティリティ (CLICONFG.EXE) も、SQL Server ODBC ドライバ Version 3.70 と共にインストールされます。この SQL Server クライアント設定ユーティリティは、SQL Server の 4.21a 以降のバージョンで使用することができます。

SQL Server で ODBC を使用する方法について参照できるマニュアル

SQL Server ODBC ドライバ Version 3.70 は、SQL Server 7.0 と共に出荷されるドライバと同一のものです。SQL Server 7.0 のユーザーは、SQL Server ODBC ドライバ Version 3.70 について、SQL Server 7.0 のマニュアルを参照することができます。SQL Server Books Online for SQL Server 7.0 が、MSDN で、また、Technet CD で利用できます。

SQL Server ODBC ドライバ Version 3.70 が SQL Server (Version 4.21a、6.0、または 6.5) で使用される場合、このドライバは、それ以前のドライバと同じ方法で動作します。ドライバ固有の情報は、SQL Server の該当バージョンと共に供給され、以下のものが使用できます。

SQL Server ODBC ドライバ Version 3.70 と共に出荷される SQLSODBC.HLP ファイルには、SQL Server DSN 構成ウィザード用の状況依存のヘルプのみが含まれています。SQL Server ODBC ドライバの以前のバージョンと共に出荷された DRVSSRVR.HLP ファイルには、古いバージョンのドライバ固有の情報が含まれていました。その情報は、SQL Server 6.5 のマニュアル内の「ODBC SQL Server ドライバ」の部分にコピーされています。

開発環境でのドライバの使用

SQL Server ODBC ドライバでは、いくつかの ODBC 関数を呼び出すために、ドライバ固有のパラメータが使用されます。ドライバ固有のパタメータのための #defines と、ドライバ固有の C および C++ プログラミング構造が、インクルード ファイルの ODBCSS.H に含まれています。

SQL Server ODBC ドライバ Version 3.70 は、以下のソースから供給される ODBCSS.H ファイルを処理します。

MDAC SDK は、Microsoft Developer Network Professional Edition の一部です。SDK は、http://www.microsoft.com/data にある Microsoft Web サイトからダウンロードすることもできます。また、Microsoft Press 刊行の『Microsoft ODBC 3.0 プログラマーズ リファレンス & SDK』を利用することもできます。

互換性に関連する問題点

ODBC ドライバ Version 3.70 は SQL Server 7.0 と共に出荷されるので、SQL Server 7.0 のユーザーは、SQL Server 7.0 の ODBC マニュアルを参照する必要があります。ここで説明されている互換性に関連する問題点は、このドライバを SQL Server Version 4.21a、6.0、または 6.5 と共に実行する場合にのみ適用されます。

SQL Server ODBC ドライバ Version 3.70 では、ODBC アドミニストレータ ユーティリティ内でデータ ソースを追加または構成する時に、またはアプリケーションで SQLConfigDataSource を呼び出してユーザーに情報を求めるようにドライバに指定する時に、新しいウィザードが表示されます。ウィザード内で [ヘルプ] ボタンをクリックして、ウィザードの説明を読んでください。

SQL Server 6.5 と共に出荷される SQL Server ODBC ドライバ Version 2.65 内で、SQL_COPT_SS_PERF_QUERY_INTERVAL は、解説されているミリ秒単位でなく、秒単位で動作しました (Knowledge Base article Q157753 を参照)。SQL Server ODBC ドライバ Version 3.70 では、SQL_COPT_SS_PERF_QUERY_INTERVAL は解説書どおりにミリ秒単位で動作するように変更されました。

以下の変更は、ODBC 3.X の API を使用して作成されたアプリケーションにのみ影響があります。ODBC 2.X の API を使用して作成されたアプリケーションには影響がありません。これらの変更は、ほとんどの ODBC アプリケーション内で処理される結果セットには影響がないはずです。

SQL Server ODBC ドライバの初期のバージョンでは、バッチまたはストアド プロシージャ内の連続した PRINT ステートメントまたは RAISERROR ステートメントによって、1 つの結果セット内にメッセージが一緒に返されました。SQL Server ODBC ドライバ Version 3.70 では、各 SQL ステートメントのメッセージは、別々の結果セットとして返されます。次の SQL ステートメントのためにメッセージに位置指定するために、各メッセージ間で SQLMoreResults を呼び出す必要があります。DBCC ステートメントなどの単一の SQL ステートメントから出力される複数のメッセージの場合は、すべて単一の結果セットに返されるので、各メッセージ間で SQLMoreResults を呼び出す必要はありません。

SQL Server ODBC ドライバの初期のバージョンでは、バッチまたはストアド プロシージャ内の最初のステートメントで発生した、厳正度が 11 以上の実行時エラー、つまり RAISERROR によって、SQLExecute、SQLExecDirect、または SQLParamData のいずれかが SQL_ERROR を返しました。SQL Server ODBC ドライバ Version 3.70 では、最初のステートメントの後にほかのステートメントが実行されない場合にのみ、SQLExecute、SQLExecDirect、または SQLParamData が SQL_ERROR を返します。最初のステートメントの後にほかのステートメントが実行されると (値を返さない単純な RETURN ステートメントであっても)、SQLExecute または SQLExecDirect が SQL_SUCCESS_WITH_INFO を返します。SQLGetDiagRec を使用して SQL_SUCCESS_WITH_INFO メッセージを処理した後に、SQLMoreResults を呼び出して、次の結果セットに位置指定を行います。

このドライバの初期のバージョンでは、バッチまたはストアド プロシージャの最初のステートメントでエラーが発生すると、SQLExecute または SQLExecDirect が SQL_ERROR を返した後に、ステートメントのハンドルが別の SQL ステートメントで使用できました。バージョン 3.7 のドライバでは、SQL_SUCCESS_WITH_INFO を返す場合は、SQLMoreResults が SQL_NO_DATA を返すまで、または RAISERROR の後のすべての結果セットが閉じられるまで、最初のステートメントは別の SQL ステートメントを処理できるように解放されません。エラー メッセージの後に結果セットが何もない場合は、SQLCloseCursor を呼び出すことができません。SQLFreeStmt(SQL_CLOSE) または SQLMoreResults を呼び出して、別の SQL ステートメントを処理するために該当するステートメントのハンドルを解放する必要があります。

CREATE PROCEDURE TestPrc @Parm1 as
IF (@Parm1 IS NULL)
BEGIN
   RAISERROR ('Parm1 cannot be NULL', 11, 1)
   RETURN
END
SELECT * FROM sysusers WHERE suid = @Parm1
GO

Execute the following:

SQLExecDirect(hstmt, "{ call TestPrc (NULL) }", SQL_NTS);

SQL Server ODBC ドライバの古いバージョンを使用しているか、アプリケーションで ODBC 2.X の API が使用されている場合は、SQLExecDirect が SQL_ERROR を返します。SQLGetDiagRec が SQL_NO_DATA を返すか、SQLError が SQL_NO_DATA_FOUND を返した後に、ステートメントのハンドルが解放されて、別の SQL ステートメントが実行できるようになります。

ODBC 3.X API に合わせて作成されたアプリケーションから SQL Server ODBC ドライバ Version 3.70 を使用する場合は、SQLExecDirect によって SQL_SUCCESS_WITH_INFO が返されます。SQLGetDiagRec が SQL_NO_DATA を返した後は、SQLMoreResults が SQL_NO_DATA を返すか、SQLFreeStmt(SQL_CLOSE) が呼び出されるまで、ステートメントのハンドルを使用して別の SQL ステートメントを処理することができません。

SQL Server ODBC ドライバの初期のバージョンでは、アプリケーションが行に影響を与えない UPDATE ステートメントまたは DELETE ステートメントを実行すると、SQLExecute、SQLExecDirect、または SQLParamData によって、SQL_SUCCESS が返されました。この場合については、バージョン 3.7 のドライバも ODBC 2.X API で作成されたアプリケーションに対しては引き続き SQL_SUCCESS を返しますが、ODBC 3.X API で作成されたアプリケーションに対しては、SQL_NO_DATA を返します。SQL_SUCCESS を受け取った ODBC 2.X のアプリケーションまたは SQL_NO_DATA を受け取った ODBC 3.X のアプリケーションが SQLRowCount を呼び出すと、0 のカウントが返されます。

ODBC 3.X では ODBC 2.X に比べて、結果が返される方法がより明確に定義されています。SQL Server ODBC ドライバの初期のバージョンでは、ODBC 2.X 関数の SQLFetch または SQLExtendedFetch がストアド プロシージャによって返された最後の結果セットに SQL_NO_DATA を返した場合、出力パラメータの値と戻りコードが返されました。SQL Server ODBC ドライバ Version 3.70 では、ODBC 2.X のアプリケーションで呼び出された場合にこの動作が保たれます。ただし、ODBC 3.X のアプリケーションによって SQL Server ODBC ドライバ Version 3.70 が呼び出された場合は、SQLMoreResults が SQL_NO_DATA を返すまで、このドライバは出力パラメータまたは戻りコードを返しません。

SQL Server Client Data Access Components の目次に戻る

クライアント Net-Library

OLE DB Provider for SQL Server と SQL Server ODBC ドライバでは、サーバー間の通信のために SQL Server クライアント Net-Library が使用されます。

インストールの一部として、MDAC ではより新しいすべての Net-Library がインストールされるので、OLE DB Provider for SQL Server と SQL Server ODBC ドライバは、Net-Library と同期します。

クライアント設定ユーティリティ

MDAC によってインストールされる SQL Server クライアント設定ユーティリティは、データ ソースの作成時に SQL Server ODBC ドライバ Version 3.70 によって使用されます。

SQL Server Client Data Access Components の目次に戻る

MDAC の目次に戻る


Visual FoxPro ODBC ドライバ

以下の項目で、Microsoft Visual FoxPro ODBC ドライバ Version 6.0a の使用方法を説明します。

インストールの注意点

サポートされる分野

サポートされない分野

既知の問題点

トラブルシューティング

参考資料

インストールの注意点

システム要件

Visual FoxPro ODBC ドライバのインストールには、以下のソフトウェアとハードウェアが必要です。

重要   Visual FoxPro ODBC ドライバは 32 ビット専用のドライバです。Windows 3.1 と Windows for Workgroups のプラットフォームではサポートされません。

Windows 2000 オペレーティング システムでは、VFP ODBC ドライバの英語版のみがインストールされます。ドイツ語、フランス語、スペイン語でローカライズされた前のバージョンは、英語バージョンで上書きされます。

このリリースの新機能

SET REPROCESS の初期の設定値が 5 に変更されたので、Visual FoxPro は限定された回数だけレコードをロックしようとします。ロックに失敗した場合には、エラーになります。

DELETED と NULL に対する Visual FoxPro の設定を、ドライバ構成ダイアログまたは接続文字列で設定できるようになりました。構文は次のとおりです。

ドライバのインストール

Visual FoxPro ODBC ドライバをインストールするために、SETUP.EXE を実行します。

注意   Visual FoxPro ODBC ドライバをインストールすると、ODBC コンポーネントが、必要に応じて ODBC 3.51 準拠に更新されます。ODBC 3.51 の拡張機能の詳細については、MSDASDK フォルダ内の ODREADME.TXT ファイルを参照してください。

データ ソースの追加

インストールの後に、以下のようにしてデータ ソースを定義します。

  1. Windows のコントロール パネル内で、[管理ツール] アイコンをダブルクリックします。

  2. [データ ソース (ODBC)] アイコンをダブルクリックします。

  3. [追加] をクリックします。

  4. [Microsoft Visual FoxPro Driver] を選択します。

  5. [ODBC Visual FoxPro Setup] ダイアログ ボックスで、データ ソース名を入力します。

  6. [Visual FoxPro database] (.DBC) または [Free Table] フォルダのどちらかを選択します。

  7. データベースの名前またはフリー テーブルへのパスを入力するか、[Browse] をクリックします。

  8. [OK] をクリックしてから、[閉じる] をクリックします。

ヘルプ ファイル

Visual FoxPro ODBC ドライバには 2 つのヘルプ ファイルがあり、Windows 95/Windows 98 の SYSTEM フォルダ、または Windows NT/Windows 2000 の SYSTEM32 フォルダ内に配置されます。

Microsoft Data Access Components (MDAC) の SDK 内には、Visual FoxPro ODBC ドライバについての詳細な情報があります。この SDK は msdn.microsoft.com から入手できます。「MSDN Online Library」、次に「Platform SDK」を開いて「Microsoft Data Access 2.5 SDK」を探してください。ここにある「Microsoft Open Database Connectivity (ODBC)」の「ODBC Drivers」を参照してください。MDAC SDK の Visual FoxPro ODBC ドライバについてのセクションには、以下の情報が含まれています。

名前付け規則

Visual FoxPro ODBC ドライバでは、式に基づいて列に名前が付けられます。たとえば、以下のステートメントを実行するとします。

    SELECT MIN (customer_id) FROM customers

Visual FoxPro ODBC ドライバは、列の名前として、結果セット内に min_customerid を返します。結果のフィールド名を制御する場合は、次の例のように AS 句を使用します。

    SELECT MIN(customer_id) AS minimum_custid FROM customers

「Visual FoxPro ODBC ドライバ」に戻る

サポートされる分野

ここでは、Visual FoxPro ODBC ドライバにサポートされる特定の分野について説明します。

言語サポート

Visual FoxPro ODBC ドライバでは、Microsoft® FoxBase+®、FoxPro 1.x、FoxPro 2.x、および Visual FoxPro のテーブルにアクセスすることができます。また、Visual FoxPro のデータベース コンテナ (.DBC ファイル) 内のテーブルにアクセスすることもできます。

注意   Visual FoxPro ODBC ドライバのみが、フリー テーブルではなく Visual FoxPro データベース (.DBC ファイル) 内のテーブルに、トランザクションが存在することを許可します。

ODBC 3.51 準拠

Visual FoxPro ODBC ドライバは ODBC レベル 1 の API に準拠し、いくつかのレベル 2 の API も実装しています。サポートされるすべての API は、この時点で実装されました。API に関連した問題を見つけた場合には、報告してください。MDAC SDK のヘルプ ファイルには、サポートされる関数と受け入れ可能な入力パラメータの説明があります。また、Visual FoxPro の SQL では、ドライバ全体で利用できる SQL 機能を拡張しています。拡張された SQL の文法については、『Visual FoxPro Language Reference』を参照してください。

参照の整合性のサポート

Visual FoxPro ODBC ドライバでは、ドライバによってサポートされる関数に含まれる Visual FoxPro の規則、トリガ、および既定値がサポートされます。Visual FoxPro でサポートされる言語要素の詳細については、MDAC SDK のヘルプ ファイルを参照してください。

スレッドのサポート

Visual FoxPro ODBC ドライバでは、バックグラウンドでクエリを処理することができます。ただし、接続プールを VFP ODBC ドライバと一緒に使用することは避けてください。このドライバがマルチスレッドのアプリケーションによって呼び出される場合は、この機能を停止してください。そのためには、接続文字列内に BackGroundFetch=No を設定するか、または [Setup] ダイアログ ボックス内の [Fetch data in background] チェック ボックスをオフにします。詳細については、DRVVFP.CHM または MDAC SDK ヘルプ ファイル内の「ODBC Visual FoxPro Setup Dialog Box」ヘルプ トピックを参照してください。

リモート ビューとパラメータ付きビュー

SQLTables( ) が呼び出された時は常に、リモート ビューとパラメータ付きビューがリストから除外されます。パラメータ付きビューに基づくローカル ビューは除外されませんが、使用した場合にはエラーになります。ただし、SQLTables( ) を一意なテーブル名で呼び出すと、名前が競合していないかチェックできるように、そのようなビューを検索できます。

サポートされる dBASE IV テーブルのバージョン

Visual FoxPro ODBC ドライバでは、dBASE® 4 以前のテーブルにアクセスすることができます。dBASE のファイルは、以下の方法でサポートされます。

警告   dBASE v4.x または 5.x のファイルに関連するインデックス ファイル (.MDX、NDX) がある場合、Visual FoxPro ODBC ドライバでは、ファイルが正しく更新されず、インデックス ファイルが壊れます。このようなファイルには、読み取り専用のアクセスを行う必要があります。

国際的なサポート

ドライバでは、DBCS が起動されています。

現在は、インデックスの順序を決めるために、照合順序を設定することができます。サポートされる照合順序の一覧は、MDAC SDK の『Visual FoxPro Language Reference』内の「SET COLLATE Command」の解説内にあります。

既定の照合順序は "MACHINE" です。ODBC C API の SQLExecDirect( ) と一緒に "SET COLLATE TO 言語" を実行するか、SQLPrepare( ) と SQLExec( ) を呼び出すか、またはデータ ソースのセットアップ ダイアログ ボックス内でドライバ オプションの中から別の照合順序を選択することのいずれかによって、この照合順序を変更することができます (『ODBC プログラマーズ リファレンス & SDK 』を参照)。

注意   FOXPRO.INT ファイルはシステム フォルダ内にインストールされます。これが削除されると、東欧のコード ページ マシンの照合順序が機能しなくなります。

Visual FoxPro ODBC ドライバの目次に戻る

サポートされない分野

規則とトリガ内では、更新はサポートされません。

MDAC SDK ヘルプ ファイルの「Visual FoxPro ODBC Driver」のセクションには、サポートされるコマンドと関数の説明と、サポートされないコマンドと関数の更新済みの一覧が含まれています。このヘルプ ファイルにないコマンドまたは関数は、サポートされません。

パラメータ付きのビューは、ビューが開かれる前にパラメータに値が代入された場合にのみ、トリガ内で動作します。ODBC 内でパラメータ値を対話方式で入力することはできません。

Visual FoxPro ODBC ドライバでは、ほかの ODBC データ ソースへのリモート ビューはサポートされませんが、パラメータなしのローカル ビューは完全にサポートされます。

既知の問題点

Visual FoxPro ODBC ドライバを使用して Visual FoxPro テーブルを挿入、削除、または更新すると、"Trigger Failed." というメッセージが表示される場合があります。トリガ内でサポートされないコマンドかどうかをチェックしてください。

INDEX ON は、このリリースではサポートされません。

テーブルが排他的に開かれ、同じテーブルが SET EXCLUSIVE OFF を使用して別のユーザーにアクセスされた場合は、Visual FoxPro ODBC ドライバによって、"File is in use by another." ではなく、"Option Value Changed." が返されます。

MSQuery では、数字で始まるフィールド名を使用してテーブルを作成すると、"Cannot Open File." というエラーが返されます。たとえば、"1995 Sales" というフィールド名は使用できません。Visual FoxPro では数字で始まるフィールド名を作成できませんが、MSQuery では作成できます。

空の日付の値の問題

VFP ODBC Driver では、空の日付の既定値は 0 (off) です。 ドライバーは無効な日付の値を空の日付の値 "  /  /  " に変換することによって、無効な値を処理します。 ODBC クライアントは VFP ODBC Driver の空の日付の値を違う方法で解釈する可能性があります。このデータを効率的に使用できるように、アプリケーションがこの値を処理する方法を確認することをお勧めします。

以前の FoxPro ISAM ドライバと Visual FoxPro ODBC ドライバとの相違点

VFP ODBC ドライバでは、テーブルがデータベース コンテナ (.DBC) 内に含まれていない限り、10 文字より長い列名または間にスペースがある列名はサポートされません。

特定のテーブルで使用されるインデックスを、単独で選択することはできません。

VFP ODBC ドライバでは、新しく作成されたテーブルが、データ ソースによって示された場所でなく、ドライバを使用するアプリケーションの規定のフォルダ内に配置されます。テーブルを特定のフォルダ内に配置するには、"CREATE TABLE C:\MyFolder\myTable (col1 i, col2 c(10))" のように、SQL コード内で指定します。

Visual FoxPro ODBC ドライバの目次に戻る

トラブルシューティング

ドライバのインストールで問題が発生した場合には、以下を実行し、再びドライバをインストールしてください。

  1. コンピュータをクリーンブートします。たとえば Windows 95 では、安全モードでスタートします。

  2. ウィルス対策のソフトウェア、サードパーティのシェル、Microsoft Office などのツールバーも含めて、ほかのすべてのアプリケーションを閉じます。

  3. コンピュータにビデオまたはシステム ROM シャドウ機能がある場合には、これらのオプションを無効にしてから、再インストールします。

  4. .EXE ファイルが壊れていないかどうかをチェックします。

引き続き問題が発生するならば、以下を実行します。

Microsoft ODBC データ ソース アドミニストレータの [トレース] タブを使用して、問題の原因を判断する手がかりにします。Windows 2000 内で ODBC データ ソース アドミニストレータを開くには、 Windows のコントロール パネルを開き、[管理ツール] アイコンをダブルクリックし、次に [データ ソース (ODBC)] アイコンをダブルクリックします。(Windows 2000 より前のバージョンでは、コントロール パネルを開き、[32 ビット ODBC] または [ODBC データ ソース] をダブルクリックして、[ODBC データ ソース アドミニストレータ] ダイアログ ボックスを開きます。)

これで、コードを実行すると、すべての C の ODBC API 呼び出し、入力パラメータ、および出力がログ ファイルに書き出されます。ODBC のログ ファイルは ASCII テキスト ファイルで、Microsoft® Word、メモ帳、またはワードパッドなどの標準的な ASCII テキスト エディタで表示することができます。場合によっては、バグの報告書にトレース ログを含める必要があるかもしれません。ODBC トレース ログは、冗長にすることも、最後の 4 つまたは 5 つの関数呼び出しをコピーして別の文書に貼り付けることもできます。そのように加工してから、バグ報告書に載せることができます。

参考資料

「Visual FoxPro ODBC ドライバ」に戻る

MDAC の目次に戻る


ご注意

このソフトウェアの仕様およびマニュアルに記載されている事柄は、将来予告なしに変更することがあります。お客様が本製品を運用した結果の影響については、お客様が負うもので、マイクロソフトは責任を負うものではありません。 特に記載していない場合、このソフトウェアおよびマニュアルで使用している会社、組織、製品、人物、キャラクタ、データなどの名称は架空のものです。実在する商品名、団体名、個人名などとは一切関係ありません。このソフトウェアおよびマニュアルは、本製品の使用許諾契約書のもとでのみ使用することができます。このソフトウェアおよびマニュアルのいかなる部分も、米国 Microsoft Corporation の書面による許諾を受けることなく、その目的を問わず、どのような形態であっても、複製または譲渡することは禁じられています。ここでいう形態とは、複写や記録など、電子的な、または物理的なすべての手段を含みます。

マイクロソフトは、このマニュアルに記載されている内容に関し、特許、特許申請、商標、著作権、またはその他の無体財産権を有する場合があります。このマニュアルはこれらの特許、商標、著作権、またはその他の無体財産権に関する権利をお客様に許諾するものではありません。

© 1991-1999 Microsoft Corporation. All rights reserved.

Microsoft、MS-DOS、Windows、Windows NT、ActiveX、Visual Studio、Visual C++、Visual FoxPro、および MSDN は、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。

その他、記載されている会社名、製品名は、各社の商標および登録商標です。

MDAC の目次に戻る