内部包绑定器
DRDA 服务将 DB2 包的静态 SQL 转换为 SQL Server 存储过程,方法是将 DRDA Begin Bind (BGNBND) 和 Bind SQL 语句 (BNDSQLSTT) 命令转换为 SQL Server DROP PROCEDURE 和 CREATE PROCEDURE 语句。 DRDA BGNBND 流可能包含一个或多个 BNDSQLSTT 流,每个 SQL 语句储存在包中都有一个相应的流。 DRDA 服务将一个 DRDA 静态 SQL 包部分(包含一个语句)映射到一个 SQL Server 存储过程。 DRDA 服务在存储过程内的注释中映射或保留 BGNBND 包绑定选项,以及可选的扩展存储过程属性。 DRDA 服务使用内部 SQL 转换器转换 SQL 命令语法、参数、数据类型、游标和结果集。 (可选)可以开发自定义包绑定侦听器,以便使用 DRDA 服务或脱机处理包,实现交互式处理。
包装流程
createPackageProcedure 属性指示 DRDA 服务将单个 BGNBND 流处理到 SQL Server 存储过程,将 DRDA BNDSQLSTT 定义的原始语句转换为相应的 SQL Server 语法。 此可选属性接受布尔值。 默认值为真。
XML包
createPackageXml 属性指示 DRDA 服务将单个 BGNBND 流处理成静态 SQL for DB2 包 XML 文件,保留 DRDA BNDSQLSTT 流定义的原始绑定选项和语句。 此 可选 属性接受 布尔 值。 默认值是 false。
注释
DRDA 服务将通过将此代码点转换为 DROP PROCEDURE 语句来处理 DRDA PKGRPLOPT (包替换选项)。
包 XML 格式
packageXmlFormat 属性指示 DRDA Server 以 v90 或 v85 格式编写 DB2 XML 文件的静态 SQL。 此 可选 属性接受 v85 或 v90 的 字符串 值。 默认值为 v90。
注释
Microsoft HIS 2010 2013(V9)支持旧格式和新格式,其中包括用于验证 XML 文档的相关 XML 架构。 Microsoft HIS 2009 和 HIS 2010 (V8.5) 仅支持旧格式。
软件包 XML 位置
packageXmlLocation 属性指示 DRDA 服务在何处写入 DB2 包 XML 文件的静态 SQL。 此 可选 属性接受字符串值。 默认值为 c:\temp。
注释
将 DRDA BGNBND 处理到 DB2 XML 文件的静态 SQL 时,DRDA 服务不会验证 SQL 命令语法。 DRDA 服务保留原始绑定选项、SQL 语句语法、数据类型和其他值。
存储过程名称
DRDA 使用由这些多个部分组成的 PKGNAMCT(包名称和一致性令牌)定义完全限定的静态 SQL 包。
RDBNAM (关系数据库名称)
DRDA RDBCOLID (RDB 集合标识符)
DRDA PKGID (RDB 包标识符)
DRDA PKGCNSTKN (RDB 包一致性令牌)
DRDA PKGSN (包节号)
DRDA 服务将 DRDA 包名称转换为 SQL Server 存储过程名称,删除 RDBNAM 部分,使用句点分隔 RDBCOLID,然后使用单个下划线字符分隔其余三个部分。
DRDA BGNBND 静态 SQL 包命名约定:
RDBNAME.RDBCOLID.PKGID.PKGCNSTKN.PKGSN
DRDA 服务映射的 SQL Server 存储过程命名约定:
CollectionIdentifer.PackageIdentifier_PackageConsistencyToken_PackageSectionNumber
原始包架构和名称:
CONTOSO.DSN8HC91_PKGSAMP1_43484152544F4B31_1
映射的包架构和名称:
ContosoRetailDW.DSN8910_PKGSAMP1_43484152544F4B31_1
storedProcedureNameSeparator 属性指示 DRDA 服务将 DRDA 包名称映射到 SQL Server 存储过程名称时要使用的分隔符。 此 可选 属性接受 字符串 值。 默认值为单个 下划线 字符(_)。
包绑定选项
createPackageProcedureWithExtendedProperties 属性指示 DRDA 服务将 BGNBND 包绑定选项保留为 SQL Server 存储过程上的扩展属性。 此 可选 属性接受 布尔 值。 默认值是 false。
包过程架构
DRDA 服务将通过对相应的 SQL Server 存储过程执行 SQL Server CALL 语句来处理 DRDA EXCSQLSTT(执行 SQL 语句)和 OPNQRY (Open Query)命令。 DRDA 服务将在 DRDA PKGNAMCT(包名称和一致性令牌)或完全限定的包名称(属于 DRDA EXCSQLSTT 和 OPNQRY 命令流的一部分)中的架构名称中找到派生自 DRDA RDBCOLID (RDB 集合标识符)的值中的目标 SQL Server 存储过程。
packageProcedureSchemaList 指示 DRDA 服务在备用架构中找到目标 SQL Server 存储过程。 此 可选 属性接受 字符串 值。 默认值为 空字符串。 该字符串由逗号分隔的 SQL Server 架构名称组成。
packageProcedureSchemaList=“DBO,DSN8910”
packageProcedureSchemaList 属性类似于 IBM DB2 for z/OS CURRENT PACKAGESET 特殊寄存器和 SET CURRENT PACKAGESET 语句。 DRDA 服务将合并 databaseAliases 元素和 packageProcedureSchemaList 属性中包含的命名映射约定。
原始包架构和名称:
CONTOSO.DSN8HC91_MSDB2SDK_43484152544F4B31_1
映射的包架构和名称:
ContosoRetailDW.DSN8910_MSDB2SDK_43484152544F4B31_1
首先,DRDA 服务将尝试在 DRDA 服务包过程缓存中查找目标 SQL Server 存储过程的元数据,先使用包过程的原始名称,然后使用包过程架构列表中的映射名称。
其次,DRDA 服务将尝试在 SQL Server 数据库目录中查找目标 SQL Server 存储过程的元数据,首先使用字面包过程名称,然后使用包过程架构列表值映射出的名称。
包过程缓存
DRDA 服务将通过对相应的 SQL Server 存储过程执行 SQL Server CALL 语句来处理 DRDA EXCSQLSTT(执行 SQL 语句)和 OPNQRY (Open Query)命令。 在执行 CALL 语句之前,DRDA 服务将提取用于验证语句类型(SELECT、INSERT、UPDATE、DELETE)、游标类型(WITH HOLD)、参数数据类型(例如 CHAR FOR BIT)和其他属性(例如具有结果)的 SQL Server 存储过程的元数据。 提取元数据后,DRDA服务将把这些信息(包括映射的过程名称)缓存至包过程缓存中,并在预设的时间间隔内保持。
软件包程序缓存刷新
packageProcedureCacheFlush 属性指示 DRDA 服务器在指定的时间间隔后刷新包过程缓存。 此 可选 属性接受 持续时间 值。 默认值为 P1D (时间段为 1 天)。 持续时间值以 PnYnMnDTnHnMnS 的形式指定。
| 条目 | DESCRIPTION |
|---|---|
| P | 持续时间的时间段(必需) |
| 纽约 | 年数。 |
| 纳米 | 月数。 |
| nD | 天数。 |
| T | 时间节的开始(需要指定由小时、分钟或秒组成的持续时间)。 |
| nH | 小时数。 |
| 纳米 | 分钟数。 |
| S | 秒数。 |
以 XML 格式表示的时间持续时间。
程序包过程上次调用
packageProcedureLastInvoke 属性指示 DRDA 服务器在指定时间间隔后将包过程缓存中的对象名称写入文本文件 %DRDAROOT%\LastInvokePackageProcedures.txt。 此 可选 属性接受 持续时间 值。 默认值为 P7D (时间段为 7 天)。 在服务启动时,DRDA 服务将加载此文本文件,以预取文件中列出过程的方案。 持续时间值以 PnYnMnDTnHnMnS 的形式指定。
| 条目 | DESCRIPTION |
|---|---|
| P | 持续时间的时间段(必需) |
| 纽约 | 年数。 |
| 纳米 | 月数。 |
| nD | 天数。 |
| T | 时间节的开始(需要指定由小时、分钟或秒组成的持续时间)。 |
| nH | 小时数。 |
| 纳米 | 分钟数。 |
| S | 秒数。 |
以 XML 格式表示的时间持续时间。
注释
若要提高服务启动的性能,可以编辑此文件并删除不需要的存储过程名称。 若要提高运行时执行的性能,可以编辑此文件以包含其他存储过程名称。 若要禁用 LastInvokePackageProcedures.txt 文件的读取和写入,请将时间跨度设置为 PT0S(零秒时间段)。
自定义包绑定器
DRDA 服务支持自定义包绑定器,并以 .NET Framework 自定义侦听器的形式实现。 有关自定义包绑定侦听器示例的信息,请参阅程序员指南和参考。 packageBindListeners 元素包含一个或多个 packageBindListener 元素,以指示 DRDA Server 将绑定包与绑定 SQL 语句输出一起发送到可选的自定义绑定侦听器。 packageBindListener 元素包含一组用于定义自定义绑定侦听器的属性。 类型为 Microsoft.HostIntegration.Drda.Common.PackageBindListener,后者定义了 DRDA 服务器自定义绑定侦听器。
自定义绑定侦听器
createPackageProcedureWithCustomSqlScripts 属性指示 DRDA 服务通过外部自定义包绑定侦听器组件处理 DRDA BGNBND 和 BNDSQLSTT。 此 可选 属性接受 布尔 值。 默认值是 false。
注释
自定义包绑定侦听器组件必须在 MsDrdaService.exe.config 中引用,如下所示。
<packageBindListeners>
<packageBindListener
type="Microsoft.HostIntegration.Drda.Common.PackageBindListener, Microsoft.HostIntegration.Drda.Common, Version=9.0.1000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
errorWhenNoCallback="true"/>
</packageBindListeners>
DRDA 服务应用程序配置文件中 packageBindListener 的默认值。
没有回调时发生错误
errorWhenNoCallback 属性指示 DRDA 服务将 BGNBNDRM (开始绑定回复消息)返回到 DRDA AR 客户端,当自定义绑定侦听器组件不返回回调接口上的任何信息时。 此 可选 属性接受 布尔 值。 默认值为 true。