共用方式為


DRDA 的服務(作業)

以下各節提供 Microsoft 的 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服務以主控台應用程式身分執行。

  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服務以服務或控制台應用程式的形式執行時,您可以停止它。

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(存取安全性)和 ACCRDB (Access Relational Database) 通訊協定流程和數據格式傳送至 DRDA 服務以 DRDA 通訊協定回復回應。

認證

為了提供整合式驗證,DRDA 服務可以使用 Microsoft Enterprise Single Sign-On (ESSO),結合入站憑證驗證和映射,以及使用 Windows SSPI (安全性支援提供者介面)進行向外的 SQL Server 驗證。 例如,DRDA 服務可以使用ESSO,將IBM RACF(資源訪問控制設施)用戶名稱和密碼對應至Microsoft Windows Active Directory 網域\用戶名稱,以將整合式安全性連線到遠端 SQL Server 資料庫。

SQL Server 連線

DRDA 服務會使用 ADO.NET Framework Provider for SQL Server,與上游本機或遠端 SQL Server 資料庫通訊。 基礎 SQL 用戶端透過記憶體連線或網路(使用命名管道或 TCP/IP)存取 SQL Server。 SQL 用戶端支援選擇性加密和故障轉移功能,以改善安全性和可靠性。 DRDA 服務支援選擇性單一登錄和共用功能,以改善安全性和效能。 您可以編輯 MsDrdaService.exe.config 檔案,以指示DRDA服務如何管理SQL用戶端與SQL Server 連線。

故障轉移連線

DRDA 服務可以在每部電腦一部的兩部伺服器群組中運作,以提供基本的容錯能力。 當DRDA AR用戶端連線到 SQL Server 資料庫時,DRDA 服務會傳回DRDA SRVLST (伺服器清單),其中包含資料伺服器實例的加權清單。 如果是主要DRDA服務的故障轉移,DRDA AR 可以使用這項資訊來連線到一對DRDA服務計算機的替代成員。 結合 SQL Server 叢集或鏡像,這項技術可以提供合理的容錯故障轉移保護層級。

故障轉移連線

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

處理封裝系結

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服務或離線處理套件。

將封裝系結至 XML 檔案

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

將封裝系結至預存程式

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

建立程序聲明

DRDA 服務內部套件的接聽程式和大部分自定義接聽程式都會包含帶有 DROP PROCEDURE 語句的 IF EXISTS 子句,這取決於 BGNBND(開始綁定)DRDA 通訊協定流程中的 PKGRPLOPT(套件替換選項)的值。 PKGRPLOPT 的預設值為 PKGRPLALW (允許替換套件)。 您可以選擇性地指定 PKGRPLNA(不允許套件替換)值。

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 Server 不需要將這些套件轉換成 SQL Server 預存程式。 您可以藉由指示DRDA伺服器忽略這些套件,並透過讀取包含限定套件名稱值的IgnoreStandardPackages.txt檔案來儲存系結處理和儲存空間。

COLIDPKGNAM
SYSIBM*
*MSCS001
*MSUR001
*MSRS001
*MSRR001
*MSNC001
NULLIDSYSSH*

庫存 IgnoreStandardPackages.txt 檔案的內容。

檔案的第一個數據列包含一組以製表符分隔的兩個值,代表數據行標頭。 第一個欄位標頭是 COLID(集合標識符)。 第二個欄位標頭是 PKGNAM(套件名稱)。 檔案的其餘行包含集合識別碼和套件名稱的一組製表符分隔值。

取代值的星號表示任何值。 Microsoft DRDA 用戶端提供一組工具來定義一或多個使用者定義集合中的標準套件集。 在此情況下,通配符會指示DRDA伺服器忽略參考MicrosoftDRDA用戶端標準套件的系結和執行命令,無論定義封裝的集合為何。

字串結尾的星號表示部分值。 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 陳述式中所定義的 SQL Server DATETIME2(6) 值和格式。

來源 DB2 類型 目標 SQL Server 類型
時間 時間
時間戳記 DATETIME2
日期 日期時間
字元 字元
CHAR () 適用於 BIT 資料 二進制
CHAR () 適用於混合數據 NCHAR
CHAR () 適用於 SBCS 資料 字元
字元 字元
字元 () 適用於 BIT 資料 二進制
FIXEDBYTE 二進制
混合資料用的字元( ) NCHAR
SBCS 資料的字元 () 字元
民族特性 NCHAR
VARCHAR VARCHAR
VARCHAR () 適用於 BIT 數據 VARBINARY(變數二進位數據)
VARBYTE VARBINARY(變數二進位數據)
VARCHAR () 適用於混合數據 NVARCHAR
適用於 SBCS 資料的 VARCHAR () VARCHAR
可變字元 VARCHAR
字元變化 () 適用於 BIT 資料 VARBINARY(變數二進位數據)
混合資料的字元不同 () NVARCHAR
SBCS 資料的字元變化 () VARCHAR
國家字元變化 NVARCHAR
適用於 BIT 資料的 LONG VARCHAR 圖像
LONG VARCHAR 簡訊
圖形 NCHAR
VARGRAPHIC NVARCHAR
圖形變化 NVARCHAR
SMALLINT SMALLINT
INT INT
整數 INT
BIGINT BIGINT
十進位 十進位
數字 十進位
真實 真實
浮動 浮動
雙倍 浮動
雙精確度 浮動
BLOB 圖像
二進制大型物件 圖像
CLOB 簡訊
CLOB () 適用於混合數據 NTEXT
CLOB () 適用於 SBCS 資料 簡訊
大型字符物件 簡訊
混合資料的 CHAR LARGE 物件 () NTEXT
SBCS 資料的 CHAR LARGE 物件 () 簡訊
字元大型物件 簡訊
混合資料的字元大型物件 () NTEXT
SBCS 資料用的字元大型物件() 簡訊

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 整數
真實 真實
浮動 雙倍
小錢 小數(10,4)
金錢 DECIMAL(19,4)
位元 SMALLINT
TINYINT SMALLINT
BIGINT BIGINT
唯一識別碼 CHAR(38)
VARBINARY(變數二進位數據) VARBYTE
時間戳記 時間戳記
二進制 FIXEDBYTE
XML LONG VARCHAR
圖像 LONG VARCHAR
變體 VARCHAR(32672) 適用於 BIT 數據
簡訊 LONG VARCHAR
字元 字元
VARCHAR VARCHAR
NCHAR 字元
NVARCHAR VARCHAR
NTEXT LONG VARCHAR
十進位 十進位
數字 十進位
日期時間 時間戳記
日期時間偏移 (DATETIMEOFFSET) 時間戳記
日期 日期
時間 時間
SMALLDATETIME(小日期時間) 時間戳記
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,或從 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 - 義大利 (歐元) 二百八十 1144
EBCDIC - 義大利 二百八十 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 CCSID,這些 CCSID 可以轉換為 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 Single Sign-On 來驗證 DRDA 應用程式發送者的輸入要求(例如,DB2 for z/OS RACF 的使用者標識符和密碼)的用戶認證,以進行 SQL 用戶端至 SQL Server 資料庫連線(例如,整合式安全性配合 Windows Active Directory 帳戶)的用戶認證。 除了 ESSO,您可以將 MsDrdaService 設定為使用映射的驗證。 MsDrdaService.exe.config 的 mappedAuthenticationDomain 屬性指示 DRDA 服務如何將傳入的 DRDA 客戶端認證(使用者名稱和密碼)映射到某個 Microsoft Windows Active Directory 網域。当以整合的安全支持提供者接口(SSPI)进行 Windows 验证时连线到 SQL Server,但不包括使用 Microsoft 企业单一登录时。 DRDA 服務會快取從 Microsoft Enterprise Single Sign-On 和 Mapped Authentication Domain 功能取得的安全性令牌,其會在使用整合式安全性支援提供者介面 (SSPI) 連線到針對 Windows 驗證設定的 SQL Server 時使用。securityTokenTimeout 屬性會指示DRDA伺服器保留一段時間的安全性令牌,之後再取得新的Windows用戶端標識碼 (CID)。 這個選擇性屬性接受持續時間值。 默認值為 PT8H(時間週期為 8 小時)。若要改善效能,您可以調整ESSO安全性令牌逾時值,持續時間較長。

加密

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

連線

SQL Server 連線

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

隔離等級

DRDA 服務會將DRDA EXCSQLSTT (Execute SQL Statement) 中的 IBM DB2 隔離等級對應至 SQL Server 交易物件的 ADO.NET Provider 上的 SQL Server 交易層級。 為了改善資料庫物件的效能並減少爭用,開發人員應該使用對應至 SQL Server 隔離等級 Read Committed 的 DB2 隔離等級 Cursor Stability (CS)。

日期時間格式和轉換

DRDA 服務會在處理動態和靜態 SQL 語句時,將來源和目標格式的字串常值日期時間值格式化為特定日期時間和字元數據類型。 conversionFormats 元素包含 dateMasks、timeMasks 和 dateTimeMasks,可用來轉換 DB2 和 SQL Server 日期時間格式,並指示 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 (collation-name) 語法轉換成 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 服務性能計數器會捕捉開啟連接、開啟語句、封包和已傳送/接收的位元組、平均處理時間、命令執行、數據擷取,以及交易提交/回復的相關資訊。

設定

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

計數器

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

  1. 活動會話

  2. 作用中的 SQL 連線

  3. 活動交易

  4. 接收的位元元組數

  5. 每秒接收位元組數

  6. 已傳送的位元組

  7. 傳送位元組/秒

  8. 交易

  9. 交易認可

  10. 交易提交次數/秒

  11. 交易回復

  12. 交易/秒

DRDA 服務實例

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