用于 Oracle 数据库的 BizTalk 适配器中的主要功能
本部分列出了 Microsoft BizTalk Adapter for Oracle Database 中的新增功能和已弃用的功能。
与技术相关的功能
功能 | 注释 |
---|---|
连接到 Oracle 数据库的新方法 | 除了像以前版本的适配器) 一样,使用 tnsnames.ora 文件 (中的网络服务名称连接到 Oracle 数据库外,适配器客户端现在还可以通过指定连接参数直接连接到 Oracle 数据库,从而无需使用网络服务名称或 tnsnames.ora 文件。 在环境中添加或更新 Oracle 服务器时,无需使用 tnsnames.ora 文件连接到 Oracle 数据库,就无需手动更新连接参数 (net service name) 每台客户端计算机上的 tnsnames.ora 文件中。 有关详细信息,请参阅 创建与 Oracle 数据库的连接。 |
支持 Windows 身份验证 | 适配器客户端可以使用 Windows 身份验证连接到 Oracle 数据库。 Windows 身份验证使你能够基于 Windows 登录凭据确定用户的标识,从而帮助你利用 Windows 环境的内置安全性。 有关 Oracle 数据库适配器中的 Windows 身份验证的详细信息,请参阅 使用 Windows 身份验证连接到 Oracle 数据库。 |
与操作相关的功能
功能 | 注释 |
---|---|
支持在 Insert 操作中指定内联值 | 可以使用 Insert 操作中的 InlineValue 属性将计算值插入到 Oracle 数据库中的表或视图中。 这是一个可选属性,可用于多记录插入操作中的所有简单数据记录。 如果为此属性指定值,它将替代记录的指定值。 有关 InlineValue 属性的详细信息,请参阅 对 Oracle 表和视图执行插入、更新、删除和选择操作。 |
增强的轮询 | Oracle 数据库适配器现在支持使用存储过程、函数或打包过程或函数定期轮询 Oracle 数据库,从而接收“基于轮询”的数据更改消息。 除了 SELECT 语句之外,现在还可以将存储过程、函数或打包过程或函数指定为轮询语句,适配器会定期执行该语句来轮询 Oracle 数据库。 有关轮询的详细信息,请参阅 支持接收基于轮询的数据更改消息。 |
支持 Oracle User-Defined 类型 (UDT) | Oracle 数据库适配器支持对包含 Oracle UDT 的 Oracle 数据库中的项目执行操作。 有关 UDT 支持的信息,请参阅 支持 Oracle 数据库中的 Oracle User-Defined 类型。 |
支持复合操作 | Oracle 数据库适配器使适配器客户端能够对 Oracle 数据库执行复合操作。 复合操作可以包括任意数量的以下操作,并且可以按任意顺序进行: - 对表和视图的操作。 - 在适配器中显示为操作的包中的存储过程、函数和过程或函数。 有关复合操作的详细信息,请参阅 复合操作的消息架构。 |
支持在非用户拥有的架构中执行存储过程 | Oracle 数据库适配器允许在架构中执行存储过程,即使当前用户不是架构的所有者,前提是用户对 Oracle 中的架构具有权限。 但是,如果存储过程使用 RECORD 类型,则必须在与存储过程相同的架构中定义它们。 有关使用 Oracle 数据库适配器执行存储过程的信息,请参阅 对函数和存储过程的操作。 |
支持数据库更改通知 | 适配器客户端可以根据触发的 SELECT 语句从 Oracle 数据库接收数据库更改通知。 当 SELECT 语句的结果集发生更改时,Oracle 数据库会将通知发送到适配器客户端。 有关数据库更改通知的详细信息,请参阅 接收数据库更改通知的注意事项。 |
支持同义词 | 适配器客户端可以对为表、视图、存储过程、函数和包创建的同义词执行操作。 有关同义词以及如何使用 Oracle 数据库适配器对同义词执行操作的信息,请参阅 Oracle 数据库中同义词的操作。 |
支持布尔参数和 PL/SQL 表类型 | 适配器客户端可以在包含布尔参数和 PL/SQL 表类型的存储过程和函数中执行操作。 |
其他功能
功能 | 注释 |
---|---|
在 BizTalk Server 中使用适配器的新方法 | Oracle 数据库适配器可以在 BizTalk 中用作 WCF-Custom 端口或 WCF-OracleDB 端口。 如果要通过 WCF-Custom 端口使用 Oracle 数据库适配器,则无需将 WCF-Custom 端口添加到 BizTalk Server 管理控制台,因为默认情况下,WCF-Custom 端口已添加到 BizTalk Server 管理控制台。 但是,如果要通过 WCF-OracleDB 端口使用 Oracle 数据库适配器,必须先将 WCF-OracleDB 适配器添加到 BizTalk Server 管理控制台。 有关详细信息,请参阅将 Oracle 数据库适配器添加到 BizTalk Server 管理控制台。 |
Oracle 适配器中已弃用的功能
下表列出了当前版本的 Oracle 数据库适配器中已弃用的功能。
功能 | 注释 |
---|---|
绑定属性 | PollingRetryCount、TransactionIsolationLevel 和 LongDataTypeColumnSize 绑定属性已弃用。 注意 若要为入站操作设置事务隔离级别,必须在配置接收端口时添加服务行为来设置适当的值。 有关如何设置事务隔离级别的说明,请参阅 配置事务隔离级别和事务超时。 |
要注意的更改
常规
对于类型为 IN OUT REF CURSOR 的参数
如果存储过程内的 REF CURSOR 值没有更改,则输出的值与输入 REF CURSOR 中的值相同。
REF CURSOR 中的输入和输出数据属于同一类型。
“nil”属性的错误行为:对于所有简单数据类型,如果将 nil 属性的值设置为“true”,并且存在字段或参数的值,则 Oracle 数据库适配器错误地传递指定的值而不是 NULL。 作为解决方法,如果要为字段或参数传递 NULL 值,必须确保未指定字段或参数的值。 例如,为名为“name”的字段传递 NULL 值:
<name xsi:nil="true"/>
Select 操作的结果集中的值末尾的 Real、Float 和 Long 数据类型以及 (0) 的额外零不会被截断。 此外,对于 Real、Float 和 Long 数据类型,Select 操作的结果集始终返回精度为 8 的值。
RECORD 类型的数据处理:为这些节点传递的值取决于 SkipNilNodes 绑定属性的值。 有关此绑定属性的详细信息,请参阅 配置 Oracle 数据库的绑定属性。
出站操作:对于没有在输入 XML 文件中指定的值的参数,不会发送任何值。 如果在存储过程中指定了默认值,则 Oracle 数据库将使用该值,因为适配器未发送任何值。 如果需要发送 NULL 值,用户需要通过将“nil”属性的值设置为“true”,在输入 XML 文件中指定 NULL 节点。
支持命令超时。
UpdateLOB 操作必须作为事务的一部分执行。 为了确保这一点, UseAmbientTransaction 绑定属性的值必须设置为 True。
BizTalk 方案
出站操作:如果 UseAmbientTransaction 绑定属性为“True”,则会在同一分布式事务中对 Oracle 数据库和 BizTalk MessageBox 数据库执行操作。 有关 Oracle 数据库适配器中事务的详细信息,请参阅 使用 Oracle 数据库适配器处理事务。
入站操作:对于使用 Oracle 数据库适配器的入站操作,不能在 BizTalk Server 中使用 Request-Response 接收端口。 只能使用 One-Way 接收端口。
其他方案
出站操作:适配器不启动事务。 如果用户希望在同一事务中插入多行,则用户负责在 System.Transactions 事务范围内执行操作。 用户还需要将 UseAmbientTransaction 属性的值设置为 True。 有关 Oracle 数据库适配器中事务的详细信息,请参阅 使用 Oracle 数据库适配器处理事务。
出站操作:对同一 IRequestChannel/proxy 对象执行的 Sll 操作可能不会在与 Oracle 数据库建立的同一物理连接上执行。
WCF 通道模型:使用 WCF 通道模型时,Oracle 数据库适配器不支持 IReplyChannel。 但是,可以使用 IInputChannel 执行入站操作。 此外,在事务方面,适配器依赖于 WCF 调度程序发起的事务来针对 Oracle 数据库执行轮询语句和后轮询语句。 可以通过在 ServiceBehavior 中设置适当的值来控制 WCF 调度程序发起的事务的事务隔离级别和超时。