Microsoft OLE DB 远程处理提供程序概述

借助 Microsoft OLE DB 远程处理提供程序,客户端计算机上的本地用户可在远程计算机上调用数据提供程序。 指定远程计算机的数据提供程序参数,就像你是远程计算机上的本地用户一样。 接着,指定远程处理提供程序用于访问远程计算机的参数。 然后,你就可像本地用户一样访问远程计算机。

重要

从 Windows 8 和 Windows Server 2012 开始,Windows 操作系统不再包含 RDS 服务器组件(有关更多详细信息,请参阅 Windows 8 和 Windows Server 2012 兼容性实用手册)。 Windows 的未来版本中将移除 RDS 客户端组件。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 使用 RDS 的应用程序应迁移到 WCF 数据服务

提供程序关键字

若要调用 OLE DB 远程处理提供程序,请在连接字符串中指定以下关键字和值。 (注意提供程序名称中的空白。)

"Provider=MS Remote"

其他关键字

调用此服务提供程序时,以下附加关键字是相关的。

关键字 说明
数据源 指定远程数据源的名称。 它传递给 OLE DB 远程处理提供程序进行处理。

此关键字等效于 RDS.DataControl 对象的 Connect 属性。

动态属性

调用此服务提供程序时,会将以下动态属性添加到 Connection 对象的 Properties 集合中。

动态属性名称 说明
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 属性中请求的版本。

可以是以下有效长整型值之一:

- 25-Version 2.5(默认)
- 21-Version 2.1
- 20-Version 2.0
- 15-Version 1.5

如果在使用 MSRemote 提供程序时将“DFMode=20;”添加到连接字符串,可提升服务器在更新数据时的性能。 通过此设置,服务器上的 RDSServer.DataFactory 对象使用占用更少资源的模式。 不过,以下功能在此配置中不可用:

- 使用参数化查询。
- 在调用 Execute 方法之前获取参数或列信息。
- 将“事务处理更新”设置为 True。
- 获取行状态。
- 调用 Resync 方法。
- 通过 Update Resync 属性进行刷新(显式或自动)。
- 设置 Command 或 Recordset 属性。
- 使用 adCmdTableDirect。
处理程序 指示扩展 RDSServer.DataFactory 功能的服务器端自定义程序(或处理程序)的名称,以及处理程序使用的任何参数(全部用逗号 (,) 分隔)。 一个字符串值
Internet 超时 指示等待请求往返服务器的最大毫秒数。 (默认值为 5 分钟。)
远程提供程序 指示要在远程服务器上使用的数据提供程序的名称。
Remote Server 指示此连接要使用的服务器名称和通信协议。 此属性等效于 RDS.DataContro 对象的 Server 属性。
事务处理更新 设置为 True 时,此值指示在服务器上执行 UpdateBatch 时,将在事务中完成它。 此布尔动态属性的默认值是 False。

还可通过在连接字符串中将名称指定为关键字来设置可写动态属性。 例如,通过指定以下内容将“Internet 超时”动态属性设置为 5 秒:

Dim cn as New ADODB.Connection
cn.Open "Provider=MS Remote;Internet Timeout=5000"

还可通过将动态属性的名称指定为 Properties 属性的索引来设置或检索该动态属性。 以下示例演示如何获取和打印“Internet 超时”动态属性的当前值,然后设置一个新值:

Debug.Print cn.Properties("Internet Timeout")
cn.Properties("Internet Timeout") = 5000

注解

在 ADO 2.0 中,只能在 Recordset 对象的 Open 方法的 ActiveConnection 参数中指定 OLE DB 远程处理提供程序。 从 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
...

另请参阅

OLE DB 远程处理提供程序概述