Microsoft OLE DB Remoting Provider の概要
Microsoft OLE DB Remoting Provider は、クライアント マシン上のローカル ユーザーがリモート マシン上のデータ プロバイダーを呼び出せるようにします。 リモート マシンのローカル ユーザーの場合と同じように、リモート マシンのデータ プロバイダー パラメーターを指定します。 次に、リモート マシンにアクセスするために Remoting Provider が使うパラメーターを指定します。 すると、ローカル ユーザーと同じようにリモート マシンにアクセスできるようになります。
重要
Windows 8 および Windows Server 2012 から、RDS サーバー コンポーネントが Windows オペレーティング システムに含まれなくなりました (詳細については、Windows 8 および Windows Server 2012 の互換性クックブックを参照してください)。 RDS クライアント コンポーネントは、今後のバージョンの Windows で削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 RDS を使用するアプリケーションを、WCF Data Service に移行する必要があります。
プロバイダー キーワード
OLE DB Remoting Provider を呼び出すには、接続文字列に次のキーワードと値を指定します。 (プロバイダー名の空白に注意してください)
"Provider=MS Remote"
追加キーワード
このサービス プロバイダーを起動する場合、次の追加キーワードが関連します。
キーワード | 説明 |
---|---|
データ ソース | リモート データ ソースの名前を指定します。 これは処理のために OLE DB Remoting Provider に渡されます。 このキーワードは RDS.DataControl オブジェクトの Connect プロパティに相当します。 |
動的プロパティ
このサービス プロバイダーが呼び出されると、Connection オブジェクトの Properties コレクションに次の動的プロパティが追加されます。
動的プロパティ名 | 説明 |
---|---|
DFMode | DataFactory モードを示します。 サーバー上の DataFactory オブジェクトの目的のバージョンを指定する文字列。 接続を開く前にこのプロパティを設定して、特定のバージョンの DataFactory を要求します。 要求されたバージョンが使用できない場合、先行するバージョンの使用を試みます。 先行するバージョンがない場合は、エラーが発生します。 DFMode が使用できるバージョンより小さい場合、エラーが発生します。 このプロパティは、接続が確立された後、読み取り専用になります。 次の有効な文字列値のいずれかを指定できます。 - "25"-バージョン 2.5 (既定値) - "21"-バージョン 2.1 - "20"-バージョン 2.0 - "15"-バージョン 1.5 |
Command Properties | MS Remote プロバイダーからサーバーに送信されるコマンド (行セット) プロパティの文字列に追加される値を示します。 この文字列の既定値は vt_empty です。 |
Current DFMode | サーバー上の DataFactory の実際のバージョン番号を示します。 DFMode プロパティで要求されたバージョンが受け入れられたかどうかを確かめるには、このプロパティを確認します。 次の有効な Long 整数値のいずれかを指定できます。 - 25-バージョン 2.5 (既定値) - 21-バージョン 2.1 - 20-バージョン 2.0 - 15-バージョン 1.5 MSRemote プロバイダーを使う場合、接続文字列に "DFMode=20;" を追加すると、データ更新時のサーバーのパフォーマンスを向上させることができます。 この設定では、サーバー上の RDSServer.DataFactory オブジェクトによって、リソース消費量が少ないモードが使用されます。 ただし、この構成では以下の機能は使用できません。 - パラメーター化されたクエリの使用。 - Execute メソッドを呼び出す前にパラメーターまたは列の情報を取得。 - Transact Updates を True に設定。 - 行の状態の取得。 - Resync メソッドの呼び出し。 - Update Resync プロパティを使用した (明示的または自動的な) 更新。 - Command または Recordset プロパティの設定。 - adCmdTableDirect の使用。 |
Handler | RDSServer.DataFactory の機能を拡張するサーバー側のカスタマイズ プログラム (またはハンドラー) の名前とハンドラーによって使用されるパラメーターを、すべてカンマ (",") で区切って示しています。 文字列値です。 |
Internet Timeout | サーバーとの間で要求が行き来するまでの最大待ち時間をミリ秒単位で指定します。 (既定値は 5 分です) |
リモート プロバイダー | リモート サーバーで使うデータ プロバイダーの名前を示します。 |
"リモート サーバー" | この接続で使うサーバー名と通信プロトコルを示します。 このプロパティは RDS.DataControl オブジェクトの Server プロパティに相当します。 |
Transact Updates | True に設定すると、この値は UpdateBatch がサーバー上で実行されるとき、トランザクション内で実行されることを示します。 このブール型動的プロパティの既定値は False です。 |
接続文字列で名前をキーワードとして指定して、書き込み可能な動的プロパティを設定することもできます。 たとえば、Internet Timeout というダイナミック プロパティを指定して 5 秒に設定します。
Dim cn as New ADODB.Connection
cn.Open "Provider=MS Remote;Internet Timeout=5000"
動的プロパティの名前を Properties プロパティのインデックスとして指定して、動的プロパティを設定または取得することもできます。 次の例は、Internet Timeout 動的プロパティの現在の値を取得して表示し、新しい値を設定する方法を示しています。
Debug.Print cn.Properties("Internet Timeout")
cn.Properties("Internet Timeout") = 5000
解説
ADO 2.0 では、OLE DB Remoting Provider は Recordset オブジェクト Open メソッドの ActiveConnection パラメーターで指定することしかできません。 ADO 2.1 以降では、プロバイダーは Connection オブジェクト Open メソッドの ConnectionString パラメーターで指定することもできます。
RDS.DataControl オブジェクト SQL プロパティに相当するものは使用できません。 代わりに Recordset オブジェクト Open メソッド Source 引数が使われます。
注 "...;Remote Provider=MS Remote;..." を指定すると、4 層のシナリオが作成されます。 3 層を超えるシナリオはテストされておらず、必要ないはずです。
例
この例では、YourServer というサーバー上の Pubs データベースの Authors テーブルに対してクエリを実行します。 リモート データソースとリモート サーバーの名前は Connection オブジェクトの Open メソッドで指定され、SQL クエリは Recordset オブジェクトの Open メソッドで指定されます。 Recordset オブジェクトが返され、編集され、データソースを更新するために使われます。
Dim rs as New ADODB.Recordset
Dim cn as New ADODB.Connection
cn.Open "Provider=MS Remote;Data Source=pubs;" & _
"Remote Server=https://YourServer"
rs.Open "SELECT * FROM authors", cn
... 'Edit the recordset
rs.UpdateBatch 'Equivalent of RDS SubmitChanges
...