创建 Oracle Database 连接 URI

用于 Oracle Database 连接 URI 的 Microsoft BizTalk 适配器包含适配器用于建立与 Oracle 数据库的连接的属性。 本主题提供有关如何使用 tnsnames.ora 指定连接 URI 以连接到 Oracle 数据库以及不使用 tnsnames.ora. tnsnames.ora 的信息。 它还提供了有关使用连接 URI 连接到 Oracle 数据库的信息。

使用 tnsnames.ora 连接到 Oracle Database 连接的连接 URI

重要

  • 对于此方法,必须在安装了适配器客户端的计算机上的 tnsnames.ora 文件中添加 net service name 条目。 有关 net service name 条目的详细信息,请参阅为 Oracle Database 适配器配置 Oracle 客户端
  • 由于 Oracle 客户端限制,如果在事务中执行操作,则连接 URI 中 (net service name ) 的网络名称参数不 能超过39个字符。 因此,如果要在事务中执行操作,请确保 为 "值类型" 参数 指定的值小于或等于39个字符。

WCF 中的典型终结点地址 URI 表示为: scheme://userauthparams@hostinfoparams?query_string ,其中:

  • scheme 方案名称。
  • userauthparams 终结点进行用户身份验证所需的参数的名称-值集合。
  • hostinfoparams 与主机建立连接所需的信息。例如,路径。
  • query_string 由问号分隔的参数的名称-值集合 (? ) 。

Oracle Database 适配器连接 URI 遵循这种基本格式,并按如下所示实现:

oracledb://[NET_SERVICE_NAME]?PollingId=[POLLING_ID]  

或者,在更高级的方案中:

oracledb://User=[USER_NAME];Password=[PASSWORD]@[NET_SERVICE_NAME]?PollingId=[POLLING_ID]  

下表说明了连接 URI 中包含的属性:

连接 URI 属性 类别 说明
[USER_NAME] userauthparams 用于在 Oracle 数据库上进行身份验证的用户名,例如 SCOTT 。 您必须将 AcceptCredentialsInUri 绑定属性设置为 true ,才能指定连接 URI 中的用户名和密码。 在 BizTalk Server "绑定" 选项卡中, AcceptCredentialsInUri绑定属性不可用。

注意 Oracle Database 适配器在 Oracle 数据库上打开连接时,保留为用户名输入的值的大小写。 Oracle 数据库上的用户名区分大小写。 应确保在 Oracle 数据库所需的情况下向 Oracle Database 适配器提供 Oracle 用户名。 通常,这意味着 SCOTT/TIGER 凭据中的用户名应大写: "SCOTT"。
权限 userauthparams 用于在 Oracle 数据库上进行身份验证的密码,如 TIGER 。 您必须将 AcceptCredentialsInUri 绑定属性设置为 true ,才能指定连接 URI 中的用户名和密码。 在 BizTalk Server "绑定" 选项卡中, AcceptCredentialsInUri绑定属性不可用。

注意 在 Oracle 数据库上打开连接时,Oracle Database 适配器会保留为密码输入的值的大小写。 对于发行版 10g 和更早版本,Oracle 系统中的密码不区分大小写。
[NET_SERVICE_NAME] hostinfoparams 在安装 Oracle Database 适配器的计算机上的 tnsnames.ora 文件中指定的网络服务名称。 有关 net 服务名称和 tnsnames.ora. tnsnames.ora 的详细信息,请参阅为 Oracle Database 适配器配置 Oracle 客户端
[POLLING_ID] query_string 应将适配器追加到 POLLINGSTMT 操作的标准命名空间的可选字符串。 这使您可以在项目包含多个轮询操作时为每个轮询操作指定唯一的命名空间。 如果项目仅包含一个 POLLINGSTMT 操作,则无需指定 PollingId 字符串。

注意

如果为 WCF Metadata Exchange 客户端指定了终结点地址,则还会在连接 URI 中使用查询参数。

要连接到 Oracle Database 的连接 URI,而不使用 tnsnames.ora. tnsnames.ora

重要

  • 对于这种方法,tnsnames.ora 文件中的 net service 名称或实际的 tnsnames.ora 文件本身不需要存在于客户端计算机上。
  • 如果在事务中执行操作,则不支持此连接模式。 这是因为 Oracle 客户端的限制。

WCF 中的典型终结点地址 URI 表示为: scheme://userauthparams@hostinfoparams?query_string ,其中:

  • scheme 方案名称。
  • userauthparams 终结点进行用户身份验证所需的参数的名称-值集合。
  • hostinfoparams 与主机建立连接所需的信息。例如,服务器名称、端口号等。
  • query_string 由问号分隔的参数的名称-值集合 (? ) 。

Oracle Database 适配器连接 URI 遵循这种基本格式,并按如下所示实现:

oracledb://[SERVER_ADDRESS]:[PORT_NUMBER]/[SERVICE_NAME]/[SERVICE_TYPE]?PollingId=[POLLING_ID]  

或者,在更高级的方案中:

oracledb://User=[USER_NAME];Password=[PASSWORD]@[SERVER_ADDRESS]:[PORT_NUMBER]/[SERVICE_NAME]/[SERVICE_TYPE]?PollingId=[POLLING_ID]  

下表说明了连接 URI 中包含的属性:

连接 URI 属性 类别 说明
[USER_NAME] userauthparams 用于在 Oracle 数据库上进行身份验证的用户名;例如,SCOTT。 您必须将 AcceptCredentialsInUri 绑定属性设置为 true ,才能指定连接 URI 中的用户名和密码。 在 BizTalk Server "绑定" 选项卡中, AcceptCredentialsInUri绑定属性不可用。

注意 Oracle Database 适配器在 Oracle 数据库上打开连接时,保留为用户名输入的值的大小写。 Oracle 数据库上的用户名区分大小写。 应确保在 Oracle 数据库所需的情况下向 Oracle Database 适配器提供 Oracle 用户名。 通常,这意味着 SCOTT/TIGER 凭据中的用户名应大写: "SCOTT"。
权限 userauthparams 用于在 Oracle 数据库上进行身份验证的密码;例如,TIGER。 您必须将 AcceptCredentialsInUri 绑定属性设置为 true ,才能指定连接 URI 中的用户名和密码。 在 BizTalk Server "绑定" 选项卡中, AcceptCredentialsInUri绑定属性不可用。

注意 在 Oracle 数据库上打开连接时,Oracle Database 适配器会保留为密码输入的值的大小写。 对于发行版 10g 和更早版本,Oracle 系统中的密码不区分大小写。
[SERVER_ADDRESS] hostinfoparams 运行 Oracle 数据库的服务器的名称或 IP 地址。 如果你使用此类型的连接,则这是必需的。
[PORT_NUMBER] hostinfoparams Oracle Net 侦听器端口。 如果未指定任何值,则适配器将采用默认值1521。
[SERVICE_NAME] hostinfoparams Oracle 数据库服务名称。 如果你使用此类型的连接,则这是必需的。
[SERVICE_TYPE] hostinfoparams Oracle 服务的类型。 可能的值为 " 专用 " 或 " 共享"。 专用服务使用专用服务器进程只为一个用户进程提供服务。 共享服务使用可为多个用户进程提供服务的共享服务器进程。 默认值为“专用”
[POLLING_ID] query_string 应将适配器追加到 POLLINGSTMT 操作的标准命名空间的可选字符串。 这使您可以在项目包含多个轮询操作时为每个轮询操作指定唯一的命名空间。 如果项目仅包含一个 POLLINGSTMT 操作,则无需指定 PollingId 字符串。

注意

如果为 WCF Metadata Exchange 客户端指定了终结点地址,则还会在连接 URI 中使用查询参数。

Oracle Database 凭据和连接 URI

默认情况下,当在连接 URI 中指定 Oracle 数据库凭据时,Oracle Database 适配器会引发异常。 这是因为这些凭据在连接 URI 中表示为纯文本,这会带来安全风险。 可以设置 AcceptCredentialsInUri 绑定属性来控制连接 URI 是否可以包含 Oracle 数据库的凭据。 如果 AcceptCredentialsInUri 属性为 false,则如果连接 URI 包含 Oracle 数据库凭据,则 Oracle Database 适配器将引发异常;如果该属性为 true,则不会引发异常。

在某些情况下,需要在连接 URI 中指定凭据。 例如,若要在使用 WCF 服务模型或 WCF 通道模型时接收入站 POLLINGSTMT 操作。 但在大多数情况下,应避免在连接 URI 中提供凭据。 有关如何更安全地为 Oracle 数据库提供凭据的详细信息,请参阅 保护 Oracle Database 应用程序

重要

由于通过以纯文本形式传递字符串中的凭据引起的安全风险,因此应避免在连接 URI 中指定 Oracle 数据库连接凭据。

在连接 URI 中使用保留字符

Oracle Database 适配器不支持为任何参数值指定包含特殊字符的连接 URI。 如果连接参数值包含特殊字符,请确保执行下列操作之一:

  • 如果你在使用 "添加适配器服务引用" 插件或使用适配器服务外接程序 Visual Studio 中指定 URI,则必须在 " URI 属性" 选项卡中按原样指定,即不使用任何转义符。 如果直接在 " 配置 uri " 字段中指定 uri,并且连接参数包含保留字符,则必须使用正确的转义符指定连接参数。

  • 如果在 BizTalk Server 管理控制台中创建发送端口或接收端口时指定 URI,并且连接参数包含保留字符,则必须使用正确的转义字符指定连接参数。

使用连接 URI 连接到 Oracle Database

下面是 Oracle Database 适配器的连接 URI 的示例。

使用 tnsnames.ora. tnsnames.ora 而不使用 tnsnames.ora. tnsnames.ora
oracledb://ADAPTER

在此示例中,适配器是一个网络服务名称,它与 tnsnames.ora. tnsnames.ora 中目标 Oracle 数据库的服务名称和连接信息相关联。
oracledb://yourOracleServer:1521/yourOracleDatabaseServiceName/Dedicated

在此示例中,服务器名称为 "yourOracleServer",服务名称为 "yourOracleDatabaseServiceName"。

下面是 POLLINGSTMT 操作的连接 URI 的示例。 此 URI 包含 PollingId 参数,用于修改 POLLINGSTMT 操作的命名空间。

使用 tnsnames.ora. tnsnames.ora 而不使用 tnsnames.ora. tnsnames.ora
oracledb://ADAPTER?PollingId=MyPollingNotification1 oracledb://yourOracleServer:1521/yourOracleDatabaseServiceName/Dedicated? PollingId=MyPollingNotification1

对于上述连接 Uri,Oracle Database 适配器为 POLLINGSTMT 操作创建以下命名空间。

http://Microsoft.LobServices.OracleDB/2007/03/POLLINGSTMTMyPollingNotification1  

有关在以下情况中如何建立与 Oracle 数据库的连接的信息:

另请参阅

创建与 Oracle 数据库的连接
为 Oracle Database 适配器配置 Oracle 客户端