Microsoft OLE DB Remoting Provider 概觀
Microsoft OLE DB Remoting Provider 可讓用戶端電腦上的本機使用者叫用遠端電腦上的資料提供者。 指定遠端電腦的資料提供者參數,就如同您是遠端電腦上的本機使用者。 然後指定遠端提供者用來存取遠端電腦的參數。 接著,您可以像本機使用者一樣存取遠端電腦。
重要
從 Windows 8 和 Windows Server 2012 開始,Windows 作業系統中不再包含 RDS 伺服器元件 (請參閱 Windows 8 和 Windows Server 2012 相容性逐步指南 (英文) 以取得詳細資料)。 未來的 Windows 版本將移除 RDS 用戶端元件。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 使用 RDS 的應用程式應移轉至 WCF 資料服務。
提供者關鍵字
若要叫用 OLE DB Remoting Provider,請在連接字串中指定下列關鍵字和值。 (記下提供者名稱中的空格。)
"Provider=MS Remote"
其他關鍵字
叫用此服務提供者時,下列其他關鍵字有相關性。
關鍵字 | 描述 |
---|---|
資料來源 | 指定遠端資料來源的名稱。 名稱會傳遞至 OLE DB Remoting Provider 進行處理。 此關鍵字相當於 RDS.DataControl 物件的 Connect 屬性。 |
動態屬性
叫用此服務提供者時,會將下列動態屬性新增至 Connection 物件的 Properties 集合。
動態屬性名稱 | Description |
---|---|
DFMode | 標示 DataFactory 模式。 此字串可指定伺服器上所需的 DataFactory 物件版本。 開啟連線之前,請先設定此屬性,以要求特定版本的 DataFactory。 如果要求的版本無法使用,則會嘗試使用先前的版本。 如果沒有先前版本,就會發生錯誤。 如果 DFMode 低於可用的版本,就會發生錯誤。 建立連線之後,這個屬性會是唯讀。 可以是下列其中一個有效字串值: - "25"-Version 2.5 (預設) - "21"-Version 2.1 - "20"-Version 2.0 - "15"-Version 1.5 |
命令屬性 | 表示將加入命令 (資料列集) 字串的值,由 MS 遠端提供者傳送至伺服器的屬性。 此字串的預設值為 vt_empty。 |
目前的 DFMode | 表示伺服器上 DataFactory 的實際版本號碼。 請檢查此屬性,以查看是否接受 DFMode 屬性中要求的版本。 可能是下列其中一個有效的 Long 整數值: - 25-Version 2.5 (預設) - 21-Version 2.1 - 20-Version 2.0 - 15-Version 1.5 使用 MSRemote 提供者時,將 "DFMode=20;" 新增至連接字串,可以在更新資料時改善伺服器的效能。 使用此設定,伺服器上的 RDSServer.DataFactory 物件會使用較低的資源密集模式。 然而,此設定無法使用下列功能: - 使用參數化查詢。 - 先取得參數或資料行資訊,再呼叫 Execute 方法。 - 將 Transact Updates 設定為 True。 - 取得資料列狀態。 - 呼叫 Resync 方法。 - 透過 Update Resync 屬性進行重新整理 (明確或自動)。 - 設定 Command 或 Recordset 屬性。 - 使用 adCmdTableDirect。 |
處理常式 | 表示伺服器端自訂程式 (或處理常式) 的名稱,其擴充 RDSServer.DataFactory 的功能,以及處理常式使用的任何參數,皆以逗號 (",") 分隔。 字串值。 |
網際網路逾時 | 表示等待要求往返伺服器的最大毫秒數。 (預設為 5 分鐘。) |
遠端提供者 | 表示遠端伺服器上要使用的資料提供者名稱。 |
遠端伺服器 | 表示此連接要使用的伺服器名稱和通訊協定。 此屬性相當於 RDS.DataContro 物件 Server 屬性。 |
交易更新 | 設為 True 時,此值表示在伺服器上執行 UpdateBatch 時,會在交易內完成。 此布林動態屬性的預設值為 False。 |
您也可以在連接字串中將其名稱指定為關鍵字,來設定可寫入的動態屬性。 例如,藉由指定下列命令,將 Internet Timeout 動態屬性設定為五秒:
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 中,只能在 Recordset 物件 Open 方法的 ActiveConnection 參數中指定 OLE DB Remoting Provider。 從 ADO 2.1 開始,也可以在 Connection 物件 Open 方法的 ConnectionString 參數中指定提供者。
RDS.DataControl 物件 SQL 屬性的對等物件無法使用。 會改用 Recordset 物件 Open 方法 Source 引數。
注意,指定 "...;Remote Provider=MS Remote;..." 會建立四層案例。 超過三層的案例尚未經過測試,而且應該不需要。
範例
此範例會在名稱為 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
...