DRDA (作業) 的服務

下列各節提供操作 Microsoft Service for DRDA (DRDA Service) 的說明。

管理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服務以主控台應用程式身分執行。

  1. 從命令提示字元中,輸入 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.
  1. 在命令提示字元中,輸入 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服務以服務或控制台應用程式的形式執行時,您可以停止DRDA服務。

Windows 服務

使用命令視窗,您可以在以服務身分執行時停止DRDA服務。

  1. 在命令提示字元中,輸入 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 (Access Security) ,以及 ACCRDB (Access Relational Database) 通訊協定流程和數據格式,DRDA 服務會回應 DRDA 通訊協定回復。

驗證

為了提供整合式驗證,DRDA 服務可以使用 Microsoft Enterprise Single Sign-On (ESSO) 結合認證驗證和對應,並使用 Windows SSPI (安全性支援提供者介面) 來與外系 SQL Server 驗證。 例如,DRDA 服務可與 ESSO 搭配運作,將 IBM RACF (Resource 存取控制 Facility) 使用者名稱和密碼對應至 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 叢集或鏡像結合,這項技術可以提供合理的容錯故障轉移保護層級。

故障轉移 Connections

上圖顯示DRDA用戶端如何在故障轉移案例中重新連線到DRDA服務夥伴伺服器。

處理封裝系結

DRDA 服務會將 DB2 套件的靜態 SQL 轉換成 SQL Server 預存程式,方法是處理 DRDA Begin Bind (BGNBND) ,並將 SQL 語句 (BNDSQLSTT) 命令轉換成 #D92CC15488C9148F7810C2B06293AB138 DROP PROCEDURE 和 CREATE PROCEDURE 語句。 DRDA BGNBND 流程將包含一或多個 BNDSQLSTT 流程,每個儲存在封裝內的 SQL 語句一個。 DRDA 服務會將一個DRDA靜態 SQL 套件區段對應 (,其中一個語句) 到一個 SQL Server 預存程式。 DRDA 服務會在預存程式內的批注中對應或保留 BGNBND 套件系結選項,以及選擇性的擴充預存程序屬性。 DRDA 服務會使用內部 SQL 轉換器來轉換 SQL 命令語法、參數、數據類型、數據指標和結果集。 您可以選擇性地開發自定義套件系結接聽程式,以互動方式使用DRDA服務或離線處理套件。

將封裝系結至 XML 檔案

DRDA 服務可以將單一 BGNBND 流程處理至 DB2 套件 XML 檔案的靜態 SQL,並保留 DRDA BNDSQLSTT 流程所定義的原始系結選項和語句。

將封裝系結至預存程式

DRDA 服務會將單一 BGNBND 流程處理到 SQL Server 預存程式,將DRDA BNDSQLSTT所定義的原始語句轉換成對應的 SQL Server 語法。

建立程式語句

根據 BGNBND (Begin Bind) DRDA 通訊協定流程中的 PKGRPLOPT (套件取代) 選項值而定,DRDA 服務內部套件系結接聽程式和大部分自定義接聽程式都會包含 IF EXISTS 子句與 DROP PROCEDURE 語句。 PKGRPLOPT 的預設值是 PKGRPLALW (套件取代允許) 。 您可以選擇性地指定 PKGRLVA (套件取代) 值。

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 語句的標準套件,以定義如何針對適用於 z/OS 的 IBM DB2 擷取和傳回 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 Client標準套件的系結和執行命令,而不論在哪一個集合中定義封裝。

字串結尾的星號表示部分值。 IBM DB2 Connect DRDA 用戶端提供一組工具來定義 NULLID 集合中的標準套件集,其起始套件名稱值為 SYSSH。 在此情況下,通配符會指示DRDA伺服器忽略參考完整IBM DB2 Connect DRDA用戶端標準套件集的系結和執行命令。

資料類型

DRDA 服務藉由提供這些平台轉換,提供跨異質廠商產品和技術的相容性。

DB2 至 SQL Server 數據類型對應

DRDA 服務會根據儲存在 %DRDAROOT%\system 目錄中 Db2ToSql.xml 檔案中定義的一組對應,將 DB2 對應至 SQL Server 數據類型。 例如,DRDA 服務會透過 Microsoft ADO.NET Framework Data Provider for SQL Server 介面,將 DRDA 通訊協定流程中所定義的 DB2 TIMESTAMP 值和格式轉換成 SQL Server DATETIME2 (6) 值和格式。

來源 DB2 類型 目標 SQL Server類型
TIME TIME
timestamp DATETIME2
日期 DATETIME
CHAR CHAR
適用於 BIT 資料的 CHAR () 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
適用於 BIT 資料的 VARCHAR () 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 值和格式轉換成 DB2 DECIMAL 值和格式,如 DRDA 通訊協定流程和格式化數據中所定義。

目標 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 適用於 BIT 數據的 VARCHAR (32672)
TEXT LONG VARCHAR
CHAR CHAR
VARCHAR VARCHAR
NCHAR CHAR
NVARCHAR VARCHAR
NTEXT LONG VARCHAR
DECIMAL DECIMAL
NUMERIC DECIMAL
DATETIME timestamp
DATETIMEOFFSET timestamp
日期 日期
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 (Latin-2) 870 870
EBCDIC - 泰文 838 20838
EBCDIC - 土耳其文 (Latin-3) 905 20905
EBCDIC - 土耳其文 (拉丁文-5) 1026 1026
EBCDIC - 美國/加拿大 (歐元) 37 1140
EBCDIC - 美國/加拿大 37 37
EBCDIC - 英國 (歐元) 285 1146
EBCDIC - 英國 285 20285

ANSI

DRDA 服務支援下列列出的 SBCS (單一位元組位元集,) 轉換成 UNICODE 1208 的 ANSI CCSI CCID。

名稱 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 Single Sign-On 來驗證系結 DRDA 應用程式要求者 (例如,DB2 適用於 z/OS RACF 使用者標識符和密碼) 使用者認證,以將 SQL 用戶端輸出到 SQL Server 資料庫連線 (例如,與 Windows Active Directory 帳戶的整合式安全性) 使用者認證。 除了 ESSO,您可以將 MsDrdaService 設定為使用對應的驗證。 MsDrdaService.exe.config 的 mappedAuthenticationDomain 屬性會指示 Microsoft Windows Active Directory 網域將系結 DRDA 用戶端認證對應至 microsoft Windows Active Directory 網域 (使用者名稱和密碼) 的DRDA服務,在使用整合式安全性支援提供者介面 (SSPI) 時,連線到針對 Windows 驗證 設定的 SQL Server 時,而不是在使用 Microsoft Enterprise 單一登錄時。 DRDA 服務會快取從 Microsoft Enterprise Single Sign-On 和對應驗證網域功能取得的安全性令牌,在設定的時間內使用連線到使用整合式安全性支援提供者介面 (SSPI) 針對 Windows 驗證 設定的 SQL Server。securityTokenTimeout 屬性會指示DRDA伺服器在一段時間內保留安全性令牌,之後再取得新的 Windows 用戶端標識碼 (CID) 。 這個選擇性屬性會接受持續時間值。 默認值為 PT8H (時間週期為 8 小時) .To 改善效能,您可以調整 ESSO 安全性令牌逾時值,持續時間較長。

加密

DRDA 服務支持數據提供者使用數據加密標準 (DES) 技術、安全套接字層 (SSL) V3.0,以及傳輸層安全性 (TLS) V1.0 支援驗證和數據加密。 此外,DRDA 服務僅支援使用進階加密標準 (AES) 加密的數據加密。 這些加密機制可能會影響效能。

連線

SQL Server 連線

DRDA 的服務會使用 ADO.NET Framework Data Provider for SQL Server 和基礎 SQL 網路用戶端,連線到 SQL Server 資料庫。 連接到本機 SQL Server 實例時,請指定 Network Library=dbmslpcn 以指示 SQL 用戶端使用共用記憶體連線到 SQL Server,而不是 TCP/IP 網路連線。若要減少連線啟動時間,請在 連接字串 中設定Pooling=true,以使用 SQL Server連線共用,以指示 SQL 用戶端在DRDA服務關閉時將新建立的連線新增至集區。 若要調整對本地伺服器的影響,請設定 連接字串 中的 [最大集區大小] 來定義 SQL 用戶端應該保留在連線集區中的連線數目上限。 默認值為 100.To 進一步減少連線啟動時間、使用 MsDrdaService 內部連線集區、將系結 DRDA AR 用戶端連線和驗證認證對應至輸出 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 預存程式執行 #DECB248BE5E57455A98E032F056BF8EFC CALL 語句,以處理DRDA EXCSQLSTT (Execute SQL Statement) 和 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 服務會以 #DE5D90A986519455186744C77BA51988B CLR 型函式的形式提供額外的相容 DB2 函式。 若要改善 SQL 語法轉換的效能,請啟用DRDA服務 CLR 型函式。 DRDA 服務會在處理DRDA開始系結和系結 SQL 語句命令時,將 DB2 套件的靜態 SQL 轉換成 SQL Server 預存程式,包括內嵌的 SQL DECLARE CURSOR 語句。 為了改善效能,DRDA 服務會盡可能傳回每個擷取的多個數據列,除非針對單一數據列擷取定義封裝或數據指標以支援並行更新。 定義 SELECT 語句以獲得最佳讀取效能時,開發人員應該包含 FOR FETCH ONLY 或 FOR READ ONLY 子句。

隔離等級

DRDA 服務會將DRDA EXCSQLSTT中的IBM DB2 隔離等級 (執行 SQL 語句) 對應至 ADO.NET Provider for SQL Server 交易物件的 SQL Server 交易層級。 為了改善資料庫物件的效能並減少爭用,開發人員應該利用 DB2 隔離等級數據指標穩定性 (CS) 對應至 SQL Server 隔離等級 Read Committed。

日期時間格式和轉換

DRDA 服務會在處理動態和靜態 SQL 語句時,針對特定日期時間和字元數據類型,將來自來源和目標格式的字串常值日期時間值格式化為目標格式。 conversionFormats 元素包含 dateMasks、timeMasks 和 dateTimeMasks,用於轉換成 DB2 和 SQL Server datetime 格式,並指示 DRDA 服務何時執行這些轉換。 在日期時間格式化值的字串剖析、編碼和譯碼,將會耗用額外的DRDA服務資源。

字碼頁轉換

DRDA 服務會使用基礎 HIS 編碼器元件和 Windows 國家語言支援 (NLS) 系統元件來對應代碼頁並支援自定義代碼頁轉換。 或者,DRDA 服務可以轉換個別的程式代碼點,以支援自定義代碼頁。 DRDA 伺服器會在支援自訂代碼頁轉換時耗用額外的資源。

定序對應

SQL Server 可能會以不同於DRDA用戶端程式預期的順序來定序查詢結果。 例如,IT 專業人員可能會將 SQL Server 資料庫設定為使用 ANSI 定序,併為 z/OS 資料庫設定 DB2,以使用 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 區段的 system.diagnostics 元素會定義和控制各種接聽程式。traceLevel 屬性會指示DRDA服務追蹤定義的資訊集合,從最小到最大追蹤層級。 這個選擇性屬性接受整數值。 默認值為 0,這會停用追蹤。DRDA 服務可以將追蹤數據自動排清到追蹤接聽程式,以確保擷取追蹤數據,但會增加磁碟 I/O 並降低整體系統效能。 若要改善效能,請將 autoFlush=false 設定為停用自動追蹤排清。

效能監視器

為了測量效能,DRDA 服務會提供性能計數器。 DRDA 服務性能計數器會擷取有關開啟連線、open 語句、封包和位元組傳送/接收、平均處理時間、命令執行、數據擷取和交易認可/回復的相關信息。

設定

為了測量效能,DRDA 服務會提供性能計數器來與 Windows 效能監視器 搭配使用。 peformanceCountersOn 屬性會指示DRDA服務將資訊收集到性能計數器。 這個選擇性屬性接受布爾值。 預設值為 false。 如需詳細資訊,請參閱效能一節。 此外,如需 Windows 效能監視器 的詳細資訊,請參閱性能計數器 (https://go.microsoft.com/fwlink/?LinkID=119211) 。

Counters

DRDA 服務會將數據輸出至這些 效能監視器 計數器。

  1. Active Sessions

  2. 作用中的 SQL Connections

  3. Active Transactions

  4. 接收的位元組數

  5. Bytes Received/sec

  6. 傳送的位元組數

  7. Bytes Sent/sec

  8. 交易

  9. 交易認可

  10. Transactions Commits/sec

  11. 交易回復

  12. 交易/秒

DRDA 服務實例

DRDA 服務會以個別服務或每個連線的「實例」為基礎,提供 效能監視器 計數器,其中「實例」可以是進程或會話。