Microsoft OLE DB 远程提供程序(ADO 服务提供程序)
适用于:Access 2013、Office 2013
Microsoft OLE DB 远程处理提供程序使客户端计算机上的本地用户能够调用远程计算机上的数据提供程序。 指定远程计算机的数据提供程序参数,就像你是远程计算机上的本地用户一样。 然后指定远程处理提供程序用于访问远程计算机的参数。 由此产生的效果是,你将像访问本地用户一样访问远程计算机。
提供程序关键字
若要调用 OLE DB 远程处理提供程序,请在连接字符串中指定以下关键字 (keyword) 和值。 (记下提供程序名称中的空白区域。)
"Provider=MS Remote"
附加关键字
调用此服务提供程序时,会涉及到以下附加的关键字。
关键字 |
说明 |
---|---|
Data Source |
指定远程数据源的名称。 该名称将被传递给 OLE DB Remoting Provider 进行处理。 此关键字与 RDS.DataControl 对象的 Connect 属性等效。 |
动态属性
调用此服务提供程序时,会将以下动态属性添加到 Connection 对象的 Properties 集合中。
动态属性名称 |
说明 |
---|---|
DFMode |
指示 DataFactory Mode。 一个指定服务器上所需的 DataFactory 对象版本的字符串。 打开连接来请求特定的 DataFactory 版本之前,请先设置此属性。 如果请求的版本不可用,则将尝试使用以前的版本。 如果没有以前的版本,则将发生错误。 如果 DFMode 低于可用版本,则也会发生错误。 建立连接后,此属性即为只读形式。 可为以下有效的字符串值之一:
|
Command Properties |
指示将被添加到 MS Remote 提供程序发送到服务器的命令(行集)属性字符串中的值。 此字符串的默认值为 vt_empty。 |
Current DFMode |
指示服务器上的 DataFactory 的实际版本号。 请检查此属性以了解是否已提供在 DFMode 属性中请求的版本。 可以为以下有效的长整型值之一:
如果在使用 MSRemote 提供程序时将“DFMode=20;”添加到连接字符串中,则可以提高服务器更新数据时的性能。 通过使用此设置,服务器上的 RDSServer.DataFactory 对象可使用资源占用量较少的模式。 但是,以下功能在此配置中不可用:
|
处理程序 |
指示用于扩展 RDSServer.DataFactory 功能的服务器端自定义程序(或处理程序)的名称,以及由该处理程序使用的任何参数,所有参数之间都以逗号(“,”)进行分隔。 这是一个 String 值。 |
Internet Timeout |
指示等待请求往返服务器的最大毫秒数。 (默认值为 5 分钟。) |
Remote Provider |
指示要在远程服务器上使用的数据提供程序的名称。 |
Remote Server |
指示此连接所使用的服务器名称和通信协议。 此属性等效于 RDS.DataControl 对象的 Server 属性。 |
Transact Updates |
设置为 True 时,此值指示在服务器上执行 UpdateBatch 时,该操作将在事务处理内部完成。 此 Boolean 动态属性的默认值为 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 中,OLE DB Remoting Provider 只能在 Recordset 对象的 Open 方法的 ActiveConnection 参数中指定。 从 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
...