DRDA (Operations) 服务
以下部分提供有关操作适用于 DRDA 的 Microsoft Service (DRDA 服务) 的帮助。
管理 DRDA 服务
启动 DRDA 服务
可以启动 DRDA 服务以作为服务或控制台应用程序运行。
Windows 服务
使用命令窗口,可以在服务配置中定义的凭据下启动 DRDA 服务,以作为服务运行。 打开命令提示符,输入 net start msdrdaservice,然后选择 Enter。
C:\Windows\system32>net start msdrdaservice
The Microsoft Service for DRDA service is starting.
The Microsoft Service for DRDA service was started successfully.
控制台应用程序
使用命令窗口,可以在命令窗口的凭据下运行 DRDA 服务以作为控制台应用程序运行。
- 在命令提示符下,输入 net stop msdrdaservice ,然后按 Enter。
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC>net stop msdrdaservice
The Microsoft Service for DRDA service is stopping.
The Microsoft Service for DRDA service was stopped successfully.
- 在命令提示符下,输入 msdrdaservice.exe -c ,然后按 Enter。
Information:0:3:[Jan 24 2024 17:03:15.743] disableXaTransaction has been set to False by parsing string: False
Information:0:3:[Jan 24 2024 17:03:15.743] Successful to set TransactionExpiryDuration.
Information:0:3:[Jan 24 2024 17:03:15.743] Successful to set ResyncRetryDurationInMinutes.
Information:0:3:[Jan 24 2024 17:03:15.743] Successful to set XaIsolationLevel attribute to: SZ
Information:0:3:[Jan 24 2024 17:03:15.743] ResynchronizationManager reaching the end of transaction log file.
Information:0:5:[Jan 24 2024 17:03:15.962] Enter SessionManager::Initialize
Information:0:5:[Jan 24 2024 17:03:16.118] Exit SessionManager::Initialize
Information:0:5:[Jan 24 2024 17:03:16.118] Enter TcpConnectionManager::StartListener
Information:0:3:[Jan 24 2024 17:03:16.118] Microsoft Service for DRDA (build: 11.0.2205.0)
Information:0:3:[Jan 24 2024 17:03:16.118] TCP communication manager listening on port 446
Information:0:5:[Jan 24 2024 17:03:16.150] Exit TcpConnectionManager::StartListener
Information:0:5:[Jan 24 2024 17:03:16.150] Exit TcpConnectionManager::Initialize
Information:0:4:[Jan 24 2024 17:03:16.150] Set ServerBootstrap state to: Started
注意
DRDA 服务跟踪侦听器会将信息输出到控制台窗口。 需要取消注释 DrdaAsConsoleListener 条目,并在 MsDrdaServiceConfig.exe.config 文件中设置 traceLevel (,即 5) 。
停止 DRDA 服务
当 DRDA 服务作为服务或控制台应用程序运行时,可以停止该服务。
Windows 服务
使用命令窗口,可以在作为服务运行时停止 DRDA 服务。
- 在命令提示符下,输入 net stop msdrdaservice,然后按 Enter。
C:\Windows\system32>net stop msdrdaservice
The Microsoft Service for DRDA service is stopping.
The Microsoft Service for DRDA service was stopped successfully.
控制台应用程序
使用命令窗口,可以在 DRDA 服务作为控制台应用程序运行时停止该服务。
- 在命令提示符下,键入 CTRL+C。
C:\Windows\system32>
注意
DRDA 服务停止作为控制台应用程序运行,并出现命令提示符。
将 DRDA 客户端连接到SQL Server数据库
DRDA 服务将 DRDA 客户端请求处理到本地和远程SQL Server数据库的连接中。 本主题讨论 MsDrdaService 数据库连接操作的操作。
客户端连接
在服务启动时,DRDA 服务将向内部 DRDA 服务跟踪侦听器写入信息条目,通知 IT 专业人员 TCP 通信管理器正在其上侦听入站 DRDA 应用程序请求程序客户端连接的端口。
Information:0:3:[Jan 24 2024 17:03:16.118] TCP communication manager listening on port 446
远程 DRDA 应用程序请求程序客户端通过 TCP/IP 网络连接连接到本地 DRDA 服务。 DRDA 客户端发送 DRDA EXCSAT (Exchange Server 属性) 、ACCSEC (访问安全) 和 ACCRDB (Access 关系数据库) 协议流和数据格式,DRDA 服务使用 DRDA 协议回复响应这些流和数据格式。
身份验证
为了提供集成的身份验证,DRDA 服务可以将使用 Microsoft 企业单一登录 (ESSO) 的入站凭据验证和映射与使用 Windows SSPI(安全支持提供程序接口)的出站 SQL Server 身份验证相结合。 例如,DRDA 服务可以与 ESSO 配合使用,以将 IBM RACF(资源访问控制设备)用户名和密码映射到 Microsoft Windows Active Directory 域\用户名,使用此用户名和密码可以通过集成的安全性连接到远程 SQL Server 数据库。
SQL Server Connections
DRDA 服务使用 ADO.NET framework Provider for SQL Server 与上游本地或远程SQL Server数据库通信。 基础 SQL 客户端通过内存中连接或使用命名管道或 TCP/IP 通过网络访问SQL Server。 SQL 客户端支持可选的加密和故障转移功能,以提高安全性和可靠性。 DRDA 服务支持可选的单一登录和池功能,以提高安全性和性能。 可以编辑 MsDrdaService.exe.config 文件,以指示 DRDA 服务如何管理 SQL 客户端以SQL Server连接。
故障转移Connections
DRDA 服务可以在包含两 (2) 个服务器(每台计算机上各有一个服务器)的组中运行,以提供基本容错能力。 当 DRDA AR 客户端连接到 SQL Server 数据库时,DRDA 服务将返回 DRDA SRVLST(服务器列表)以及数据服务器实例的加权列表。 在主 DRDA 服务故障转移的情况下,DRDA AR 可以使用此信息连接到一对 DRDA 服务计算机的备用成员。 与 SQL Server 群集或镜像相结合,此技术可以提供合理程度的容错故障转移保护。
上图显示了 DRDA 客户端如何在故障转移方案中重新连接到 DRDA 服务伙伴服务器。
处理包绑定
DRDA 服务通过将 DRDA Begin Bind (BGNBND) 和 Bind SQL 语句 (BNDSQLSTT) 命令处理为 SQL Server DROP PROCEDURE 和 CREATE PROCEDURE 语句,将静态 SQL for DB2 包转换为 SQL Server 存储过程。 DRDA BGNBND 流将包含一个或多个 BNDSQLSTT 流,每个存储在包中的 SQL 语句一个。 DRDA 服务将一个 DRDA 静态 SQL 包部分 (与一个语句) 映射到一个SQL Server存储过程。 DRDA 服务映射或保留存储过程内注释中的 BGNBND 包绑定选项,以及可选的扩展存储过程属性。 DRDA 服务使用内部 SQL 转换器来转换 SQL 命令语法、参数、数据类型、游标和结果集。 (可选)可以开发自定义包绑定侦听器,以使用 DRDA 服务或下线以交互方式处理包。
将包绑定到 XML 文件
DRDA 服务可以将单个 BGNBND 流处理到静态 SQL for DB2 包 XML 文件中,保留 DRDA BNDSQLSTT 流定义的原始绑定选项和语句。
将包绑定到存储过程
DRDA 服务会将单个 BGNBND 流处理到SQL Server存储过程中,并将 DRDA BNDSQLSTT 流定义的原始语句转换为相应的SQL Server语法。
创建过程语句
DRDA 服务内部包绑定侦听器和大多数自定义侦听器将包含带有 DROP PROCEDURE 语句的 IF EXISTS 子句,具体取决于 BGNBND (Begin Bind) DRDA 协议流中 PKGRPLOPT (包替换选项) 的值。 PKGRPLOPT 的默认值为 PKGRPLALW (允许的包替换) 。 (可选)可以指定值 PKGRKGA (不允许包替换) 。
DRDA 服务内部包绑定侦听器和大多数自定义侦听器将在 CREATE PROCEDURE 语句文本之前包含注释,以通知 DRDA 服务运行时如何执行存储过程。
查询结果集
此注释指示 DRDA 服务使用 SqlClient DataReader 返回 SELECT 语句的结果。
/****** RETURN RESULTSET ******/
查询输出参数
此注释指示 DRDA 服务在调用从查询返回数据的过程时准备 OUTPUT 参数。
/****** HAS OUTPUT PARAMS ******/
具有保留的光标
此注释指示 DRDA 服务在事务中保持游标打开状态。
/****** CURSOR WITH HOLD ******/
绑定选项
此注释保留运行时 DRDA BNDOPT (绑定选项) 供将来使用。
/****** BNDOPT: <Options><BNDCHKEXS>BNDEXSOPT</BNDCHKEXS><BNDCRTCTL>BNDNERALW</BNDCRTCTL><BNDEXPOPT>EXPNON</BNDEXPOPT><DFTRDBCOL>DBO</DFTRDBCOL><DGRIOPRL>1</DGRIOPRL><PKGATHOPT>PKGATHKP</PKGATHOPT><PKGATHRUL>OWNER</PKGATHRUL><PKGISOLVL>ISOLVLCS</PKGISOLVL><PKGOWNID>PLARSEN</PKGOWNID><PKGRPLOPT>PKGRPLALW</PKGRPLOPT><QRYBLKCTL>LMTBLKPRC</QRYBLKCTL><RDBRLSOPT>RDBRLSCMM</RDBRLSOPT><STTDATFMT>ISODATFMT</STTDATFMT><STTDECDEL>DECDELPRD</STTDECDEL><STTSTRDEL>STRDELAP</STTSTRDEL><STTTIMFMT>ISOTIMFMT</STTTIMFMT></Options> ******/
忽略绑定和执行包命令
DRDA 客户端程序将绑定一组包含基本 DECLARE CURSOR 语句的标准包,用于定义如何针对 IBM DB2 for z/OS 提取和返回 SELECT 和 CALL 语句的结果。 DRDA 服务器不需要将这些包转换为SQL Server存储过程。 可以通过指示 DRDA 服务器忽略这些包来节省绑定处理和存储空间,方法是读取包含限定包名称值的分隔列表的 IgnoreStandardPackages.txt 文件。
COLIDPKGNAM
SYSIBM*
*MSCS001
*MSUR001
*MSRS001
*MSRR001
*MSNC001
NULLIDSYSSH*
库存 IgnoreStandardPackages.txt 文件的内容。
文件的第一行包含一组制表符分隔的两个值,这些值表示列标题。 第一个列标题是 COLID (集合标识符) 。 第二列标题是 PKGNAM (包名称) 。 文件的其余行包含集合标识符和包名称的一组制表符分隔值。
星号代替值表示任何值。 Microsoft DRDA 客户端提供了一组工具,用于在一个或多个用户定义的集合中定义标准包集。 在这种情况下,通配符指示 DRDA 服务器忽略引用 Microsoft DRDA 客户端标准包的绑定和执行命令,无论这些包在哪个集合中定义。
字符串末尾的星号表示部分值。 IBM DB2 Connect DRDA 客户端提供了一组工具,用于定义 NULLID 集合中标准包集,起始包名称值为 SYSSH。 在这种情况下,通配符指示 DRDA 服务器忽略引用完整的 IBM DB2 Connect DRDA 客户端标准包集的绑定和执行命令。
数据类型
DRDA 服务通过提供这些平台转换,提供跨异类供应商产品和技术的兼容性。
DB2 到SQL Server数据类型映射
DRDA 服务根据存储在 %DRDAROOT%\system 目录中 Db2ToSql.xml 文件中定义的一组映射,将 DB2 映射到SQL Server数据类型。 例如,DRDA 服务通过用于SQL Server接口的 Microsoft ADO.NET 框架数据提供程序,将 DRDA 协议流和格式化数据中定义的 DB2 TIMESTAMP 值和格式转换为SQL Server DATETIME2 (6 个) 值和格式。
源 DB2 类型 | 目标SQL Server类型 |
---|---|
TIME | TIME |
TIMESTAMP | DATETIME2 |
DATE | DATETIME |
CHAR | CHAR |
CHAR() FOR BIT DATA | BINARY |
CHAR () FOR MIXED DATA | NCHAR |
CHAR () FOR SBCS DATA | CHAR |
CHARACTER | CHAR |
CHARACTER () FOR BIT DATA | BINARY |
FIXEDBYTE | BINARY |
CHARACTER () FOR MIXED DATA | NCHAR |
CHARACTER () FOR SBCS DATA | CHAR |
NATIONAL CHARACTER | NCHAR |
VARCHAR | VARCHAR |
VARCHAR () FOR BIT DATA | VARBINARY |
VARBYTE | VARBINARY |
VARCHAR () FOR MIXED DATA | NVARCHAR |
VARCHAR () FOR SBCS DATA | VARCHAR |
CHARACTER VARYING | VARCHAR |
CHARACTER VARYING () FOR BIT DATA | VARBINARY |
CHARACTER VARYING () FOR MIXED DATA | NVARCHAR |
CHARACTER VARYING () FOR SBCS DATA | VARCHAR |
NATIONAL CHARACTER VARYING | NVARCHAR |
LONG VARCHAR FOR BIT DATA | 图像 |
LONG VARCHAR | TEXT |
GRAPHIC | NCHAR |
VARGRAPHIC | NVARCHAR |
GRAPHIC VARYING | NVARCHAR |
SMALLINT | SMALLINT |
INT | INT |
INTEGER | INT |
BIGINT | BIGINT |
DECIMAL | DECIMAL |
NUMERIC | DECIMAL |
real | real |
FLOAT | FLOAT |
DOUBLE | FLOAT |
DOUBLE PRECISION | FLOAT |
BLOB | 图像 |
BINARY LARGE OBJECT | 图像 |
CLOB | TEXT |
CLOB () FOR MIXED DATA | NTEXT |
CLOB () FOR SBCS DATA | TEXT |
CHAR LARGE OBJECT | TEXT |
CHAR LARGE OBJECT () FOR MIXED DATA | NTEXT |
CHAR LARGE OBJECT () FOR SBCS DATA | TEXT |
CHARACTER LARGE OBJECT | TEXT |
CHARACTER LARGE OBJECT () FOR MIXED DATA | NTEXT |
CHARACTER LARGE OBJECT () FOR SBCS DATA | TEXT |
SQL Server到 DB2 数据类型映射
DRDA 服务根据存储在 %DRDAROOT%\system 目录中 MsSqlToDb2.xml 文件中定义的一组映射,将 DB2 映射到SQL Server数据类型。 例如,DRDA 服务将 microsoft ADO.NET Framework Data Provider for SQL Server 接口定义的SQL Server MONEY 值和格式转换为 DRDA 协议流和格式化数据中定义的 DB2 DECIMAL 值和格式。
目标SQL Server类型 | 源 DB2 类型 |
---|---|
SMALLINT | SMALLINT |
INT | INTEGER |
REAL | real |
FLOAT | DOUBLE |
SMALLMONEY | DECIMAL(10,4) |
MONEY | DECIMAL(19,4) |
BIT | SMALLINT |
TINYINT | SMALLINT |
BIGINT | BIGINT |
UNIQUEIDENTIFIER | CHAR(38) |
VARBINARY | VARBYTE |
TIMESTAMP | TIMESTAMP |
BINARY | FIXEDBYTE |
XML | LONG VARCHAR |
图像 | LONG VARCHAR |
VARIANT | VARCHAR (32672 位数据) |
TEXT | LONG VARCHAR |
CHAR | CHAR |
VARCHAR | VARCHAR |
NCHAR | CHAR |
NVARCHAR | VARCHAR |
NTEXT | LONG VARCHAR |
DECIMAL | DECIMAL |
NUMERIC | DECIMAL |
DATETIME | TIMESTAMP |
DATETIMEOFFSET | TIMESTAMP |
DATE | DATE |
TIME | TIME |
SMALLDATETIME | TIMESTAMP |
SYSNAME | VARGRAPHIC (128) |
配置数据类型映射
DRDA 服务将基本数据类型从 DB2 转换为 SQL Server,从 SQL Server 转换为 DB2。 (可选)可以编辑这些 XML 文件以修改基本数据类型映射。
C:\Program Files\Microsoft Service for DRDA\system\ DB2ToMSSql.xml
C:\Program Files\Microsoft Service for DRDA\system\ MSSQLToDB2.xml
区域设置编码
DRDA 服务支持特定于区域设置的字符串编码。
EBCDIC
DRDA 服务支持以下列出的 SBCS (单字节字符集) EBCDIC CCSID 转换为 UNICODE 1208。
名称 | CCSID | NLS 代码页 |
---|---|---|
EBCDIC - 阿拉伯语 | 420 | 20420 |
EBCDIC - 西里尔文 (俄语) | 880 | 20880 |
EBCDIC - 西里尔文 (塞尔维亚语、保加利亚) | 1025 | 21025 |
EBCDIC - 丹麦/挪威 (欧元) | 277 | 1142 |
EBCDIC - 丹麦/挪威 | 277 | 20277 |
EBCDIC - 芬兰/瑞典 (欧元) | 278 | 1143 |
EBCDIC - 芬兰/瑞典 | 278 | 20278 |
EBCDIC - 法国 (欧元) | 297 | 1147 |
EBCDIC - 法国 | 297 | 20297 |
EBCDIC - 德国 (欧元) | 273 | 1141 |
EBCDIC - 德国 | 273 | 20273 |
EBCDIC - 希腊文 (现代) | 875 | 875 |
EBCDIC - 希腊文 | 423 | 20423 |
EBCDIC - 希伯来语 | 424 | 20424 |
EBCDIC - 冰岛 (欧元) | 871 | 1149 |
EBCDIC - 冰岛语 | 871 | 20871 |
EBCDIC - 国际 (欧元) | 500 | 1148 |
EBCDIC - 国际 | 500 | 500 |
EBCDIC - 意大利 (欧元) | 280 | 1144 |
EBCDIC - 意大利 | 280 | 20280 |
EBCDIC - 拉丁美洲/西班牙 (欧元) | 284 | 1145 |
EBCDIC - 拉丁美洲/西班牙 | 284 | 20284 |
EBCDIC - 多语言/ROECE (拉丁语-2) | 870 | 870 |
EBCDIC - 泰语 | 838 | 20838 |
EBCDIC - 土耳其语 (拉丁语-3) | 905 | 20905 |
EBCDIC - 土耳其语 (拉丁语-5) | 1026 | 1026 |
EBCDIC - 美国/加拿大 (欧元) | 37 | 1140 |
EBCDIC - 美国/加拿大 | 37 | 37 |
EBCDIC - 英国 (欧元) | 285 | 1146 |
EBCDIC - 英国 | 285 | 20285 |
ANSI
DRDA 服务支持以下列出的 SBCS (单字节字符集) ANSI CCSS 转换到 UNICODE 1208 和从 UNICODE 1208 转换。
名称 | CCSID | NLS 代码页 |
---|---|---|
ANSI - 阿拉伯语 | 1256 | 1256 |
ANSI - 波罗的海 | 1257 | 1257 |
ANSI - 中欧 | 1250 | 1250 |
ANSI - 西里尔文 | 1251 | 1251 |
ANSI - 希腊文 | 1253 | 1253 |
ANSI - 希伯来语 | 1255 | 1255 |
ANSI - 拉丁文 I | 1252 | 1252 |
ANSI - 土耳其语 | 1254 | 1254 |
ANSI - 阿拉伯语 | 1256 | 1256 |
性能
本主题包含的信息将帮助你在使用 DRDA 服务时最大限度地提高性能。
身份验证和加密
身份验证
DRDA 服务利用 Microsoft Enterprise 单一 Sign-On 对绑定的 DRDA 应用程序请求者 (进行身份验证,例如,DB2 for z/OS RACF 用户标识符和密码) 用户凭据到边界外 SQL 客户端以SQL Server数据库连接 (例如,与 Windows Active Directory 帐户的集成安全性) 用户凭据。 作为 ESSO 的替代方法,可以将 MsDrdaService 配置为使用映射身份验证。 MsDrdaService.exe.config 的 mappedAuthenticationDomain 属性指示在连接到使用集成安全支持提供程序接口 (SSPI) 为Windows 身份验证配置的SQL Server时,将 microsoft Windows Active Directory 域映射到的 DRDA 客户端凭据 (用户名和密码) ,但不是使用 Microsoft Enterprise 单一登录时。 DRDA 服务将缓存从 Microsoft 企业单一 Sign-On 和映射身份验证域功能获取的安全令牌,在配置的时间内,在连接到使用集成安全支持提供程序接口 (SSPI) 为Windows 身份验证配置的SQL Server时使用。securityTokenTimeout 属性指示 DRDA 服务器将安全令牌保留一段时间,然后获取新的 Windows 客户端标识符 (CID) 。 此可选属性接受持续时间值。 默认值为 PT8H (时间段为 8 小时) .To 提高性能,可以调整 ESSO 安全令牌超时值更长的持续时间。
Encryption
DRDA 服务支持数据提供程序支持使用数据加密标准 (DES) 技术、安全套接字层 (SSL) V3.0 和传输层安全性 (TLS) V1.0 进行身份验证和数据加密。 此外,DRDA 服务仅支持使用高级加密标准 (AES) 加密进行数据加密。 这些加密机制可能会影响性能。
连接
SQL Server连接
DRDA 服务使用适用于 SQL Server 的 ADO.NET Framework 数据提供程序和基础 SQL 网络客户端连接到 SQL Server 数据库。 连接到本地SQL Server实例时,请指定网络库=dbmslpcn 以指示 SQL 客户端使用共享内存而不是 TCP/IP 网络连接连接到SQL Server。若要减少连接启动时间,请使用SQL Server连接池,方法是在连接字符串中设置 Pooling=true,以指示 SQL 客户端在 DRDA 服务关闭时将新创建的连接添加到池。 若要调整对本地服务器的影响,请在连接字符串中设置“最大池大小”,以定义 SQL 客户端应在连接池中保留的最大连接数。 默认值为 100.To 进一步缩短连接启动时间,使用 MsDrdaService 内部连接池,通过将 SQL Server 数据库连接 connectionCacheSize 属性设置为SQL ServerDRDA 服务将在 SQL 客户端连接池中缓存的计算机连接。 此可选属性接受整数值。 默认值为 1000。connectionCacheTimeout 属性指示 DRDA 服务器将共用连接保留一段时间,然后获取新的 SQL 客户端连接。 此可选属性接受持续时间值。 默认值为 PT8H, (时间段为 8 小时) 。
连接故障转移
DRDA 服务可以在组中运行,以提供容错故障转移。 通过指定本地服务角色(主要或辅助)、可用的故障转移合作伙伴服务器和用于监视组中服务器运行状况的 ping 间隔来定义组。 pingInterval 属性指示 DRDA 服务监视伙伴服务器计算机的运行状况的频率,方法是执行 EXCSAT (Exchange Server 属性) 流并检查 EXCSATRD (EXCSAT 回复数据) 。 此可选属性接受整数值。 默认值为 10000 毫秒(10 秒)。
平台兼容性
包过程缓存
DRDA 服务将通过对相应的SQL Server存储过程执行 SQL Server CALL 语句来处理 DRDA EXCSQLSTT (执行 SQL 语句) 和 OPNQRY (Open Query) 命令。 在执行 CALL 语句之前,DRDA 服务将提取SQL Server存储过程的元数据,这些存储过程用于验证语句类型 (SELECT、INSERT、UPDATE、DELETE) 、游标类型 (WITH HOLD) 、参数数据类型 (例如,CHAR FOR BIT) ,以及 (的其他属性) 结果。 提取元数据后,DRDA 服务会将此信息(包括映射的过程名称)缓存为包过程缓存中的配置间隔,以便在下次执行此包部分时提高性能。 packageProcedureCacheFlush 属性指示 DRDA 服务器在指定的时间间隔后刷新包过程缓存。 此可选属性接受持续时间值。 默认值为 P1D (时间段为 1 天) 。packageProcedureLastInvoke 属性指示 DRDA 服务器在指定的时间间隔后将包过程缓存中的对象名称写入文本文件 %DRDAROOT%\LastInvokePackageProcedures.txt。 此可选属性接受持续时间值。 默认值为 P7D (时间段为 7 天) 。 在服务启动时,DRDA 服务会将此文本文件加载为文件中列出的过程预提取架构。若要提高服务启动的性能,可以编辑此文件并删除不需要的存储过程名称。 若要禁用读取和写入 LastInvokePackageProcedures.txt 文件,请将时间跨度设置为 PT0S (时间段零秒) 。
SQL 语法
DRDA 服务利用其中随附的一个受限 DB2 ANSI 到 SQL Server T-SQL 命令语法转换器来绑定包以及执行静态和动态 SQL 语句。 DRDA 服务选择性地以基于 SQL Server CLR 的函数形式提供其他兼容的 DB2 函数。 若要提高 SQL 语法转换的性能,请启用基于 DRDA 服务 CLR 的函数。 当处理 DRDA 开始绑定和绑定 SQL 语句命令(包括嵌入式 SQL DECLARE CURSOR 语句)时,DRDA 服务会将 DB2 包的静态 SQL 转换为SQL Server存储过程。 为了提高性能,DRDA 服务在可能的情况下每次提取返回多行,除非为单行提取定义了包或游标以支持并发更新。 定义 SELECT 语句以实现最佳读取性能时,开发人员应包含 FOR FETCH ONLY 或 FOR READ ONLY 子句。
隔离级别
DRDA 服务将 DRDA EXCSQLSTT (执行 SQL 语句) 的 IBM DB2 隔离级别映射到 ADO.NET Provider for SQL Server 事务对象上的SQL Server事务级别。 若要提高性能并减少对数据库对象的争用,开发人员应利用映射到SQL Server隔离级别 Read Committed 的 DB2 隔离级别 Cursor Stability (CS) 。
日期时间格式和转换
在处理特定日期时间和字符数据类型的动态和静态 SQL 语句时,DRDA 服务会将源和目标中的字符串日期时间值的格式设置为格式。 conversionFormats 元素包含用于转换 DB2 和 SQL Server datetime 格式的 dateMasks、timeMask 和 dateTimeMask,并指示 DRDA 服务何时执行这些转换。 对日期时间格式值的字符串进行分析、编码和解码将占用额外的 DRDA 服务资源。
代码页转换
DRDA 服务使用基础 HIS 编码器组件和 Windows 国家/地区语言支持 (NLS) 系统组件映射代码页并支持自定义代码页转换。 DRDA 服务还可以转换单个代码点以支持自定义代码页。 支持自定义代码页转换时,DRDA 服务器将使用其他资源。
排序规则映射
SQL Server可能按不同于 DRDA 客户端程序预期的顺序整理查询结果。 例如,IT 专业人员可将 SQL Server 数据库配置为使用 ANSI 排序规则,将 DB2 for z/OS 数据库配置为使用 EBCDIC 排序规则。 DRDA 服务可以将 SELECT 语句从 DB2 ORDER BY COLLATION_KEY (排序规则名称) 语法转换为SQL Server T-SQL ORDER BY COLLATE (collation_name) 语法,从 DB2 排序规则名称值映射到SQL Server collation_name值,以提供更兼容的查询结果。DRDA 服务可以根据默认的 ORDER BY 排序规则名称,将 COLLATE 子句添加到 ORDER BY 子句。 DRDA 服务分析和替换或添加 SQL 语法将消耗额外的资源。
跟踪
DRDA 服务支持一组共享侦听器,用于将信息记录到文本、控制台、事件日志和自定义组件。 系统。MsDrdaService.exe.config 文件的 hostIntegration.drdaAs.drdaService 部分的诊断元素定义和控制各种侦听器。traceLevel 属性指示 DRDA 服务跟踪已定义的信息集合,从最低级别到最高级别的跟踪。 此可选属性接受整数值。 默认值为 0,这会禁用跟踪。DRDA 服务可以自动将跟踪数据刷新到跟踪侦听器,这可确保捕获跟踪数据,但会增加磁盘 I/O 并降低整体系统性能。 要提高性能,请设置 autoFlush=false,以禁用自动刷新跟踪。
性能监视器
为了测量性能,DRDA 服务提供了性能计数器。 DRDA 服务性能计数器捕获有关打开的连接、打开语句、发送/接收的数据包和字节、平均处理时间、命令执行、数据提取以及事务提交/回滚的信息。
配置
为了测量性能,DRDA 服务提供用于 Windows 性能监视器的性能计数器。 peformanceCountersOn 属性指示 DRDA 服务将信息收集到性能计数器中。 此可选属性接受布尔值。 默认值为 false。 有关详细信息,请参阅性能部分。 此外,有关 Windows 性能监视器 的详细信息,请参阅性能计数器 (https://go.microsoft.com/fwlink/?LinkID=119211) 。
计数器
DRDA 服务将数据输出到这些性能监视器计数器。
活动会话
活动 SQL Connections
Active Transactions
接收的字节数
收到的字节数/秒
发送的字节数
发送的字节数/秒
事务
事务提交
Transactions Commits/sec
事务回滚
Transactions/sec
DRDA 服务实例
DRDA 服务基于每个服务或每个连接“实例”提供性能监视器计数器,其中“实例”可以是进程或会话。