次の方法で共有


DRDA向けサービス(運用)

次のセクションでは、Microsoft Service for DRDA (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. コマンド プロンプトで、「 -c」msdrdaservice.exe 入力し、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 サービスは、ローカルおよびリモートの SQL Server データベースへの接続に対する DRDA クライアント要求を処理します。 このトピックでは、MsDrdaService データベース接続操作の操作について説明します。

クライアント接続

サービスの起動時に、DRDA サービスは内部 DRDA サービス トレース リスナーに情報エントリを書き込み、TCP 通信マネージャーがバインドされた DRDA アプリケーションリクエスター クライアント接続をリッスンしているポートを IT プロフェッショナルに通知します。

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 (リソース アクセス制御機能) のユーザー名とパスワードを 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 ファイルを編集して、SQL クライアントから SQL Server への接続を管理する方法について DRDA サービスに指示できます。

フェールオーバー接続

DRDA サービスは、基本的なフォールト トレランスを提供するために、コンピューターごとに 1 つずつ、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 ステートメントに処理することで、DB2 パッケージ用の静的 SQL を SQL Server ストアド プロシージャに変換します。 DRDA BGNBND フローには、パッケージ内に格納されている SQL ステートメントごとに 1 つ、1 つ以上の BNDSQLSTT フローが含まれます。 DRDA サービスは、1 つの DRDA 静的 SQL パッケージ セクション (1 つのステートメントを含む) を 1 つの SQL Server ストアド プロシージャにマップします。 DRDA サービスは、ストアド プロシージャ内のコメントの BGNBND パッケージ バインド オプションと、オプションの拡張ストアド プロシージャ プロパティをマップまたは保持します。 DRDA サービスでは、内部 SQL トランスフォーマーを使用して、SQL コマンドの構文、パラメーター、データ型、カーソル、および結果セットを変換します。 必要に応じて、DRDA サービスまたはオフラインでパッケージを対話形式で処理するカスタム パッケージ バインド リスナーを開発できます。

パッケージを XML ファイルにバインドする

DRDA サービスは、1 つの BGNBND フローを静的 SQL for DB2 パッケージ XML ファイルに処理でき、DRDA BNDSQLSTT フローで定義されている元のバインド オプションとステートメントを保持します。

パッケージをストアド プロシージャにバインドする

DRDA サービスは、単一の BGNBND フローを SQL Server ストアド プロシージャに処理し、DRDA BNDSQLSTT フローによって定義された元のステートメントを対応する SQL Server 構文に変換します。

プロシージャ ステートメントの作成

DRDA サービスの内部パッケージ バインド リスナーとほとんどのカスタム リスナーには、BGNBND (Begin Bind) DRDA プロトコル フローの PKGRPLOPT (パッケージ置換オプション) の値に応じて、DROP PROCEDURE ステートメントを含む IF EXISTS 句が含まれます。 PKGRPLOPT の既定値は PKGRPLALW (パッケージ置換可能) です。 必要に応じて、値 PKGRPLNA (パッケージ置換不可) を指定できます。

DRDA サービスの内部パッケージ バインド リスナーとほとんどのカスタム リスナーには、ストアド プロシージャの実行方法を DRDA サービス ランタイムに通知する CREATE PROCEDURE ステートメント テキストの直前にコメントが含まれます。

クエリ結果セット

このコメントは、SQLClient DataReader を使用して SELECT ステートメントの結果を返すように DRDA サービスに指示します。

/****** RETURN RESULTSET ******/

クエリ出力パラメーター

このコメントは、クエリからデータを返すプロシージャを呼び出すときに OUTPUT パラメーターを準備するように DRDA サービスに指示します。

/****** 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 ストアド プロシージャに変換する必要はありません。 修飾されたパッケージ名の値の区切りリストを含む IgnoreStandardPackages.txt ファイルを読み取ることで、これらのパッケージを無視するように DRDA サーバーに指示することで、バインド処理とストレージ領域を節約できます。

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

ストック IgnoreStandardPackages.txt ファイルの内容。

ファイルの最初の行には、列ヘッダーを表す 2 つの値のタブ区切りのセットが含まれています。 最初の列ヘッダーは COLID (コレクション識別子) です。 2 番目の列ヘッダーは PKGNAM (パッケージ名) です。 ファイルの残りの行には、コレクション識別子とパッケージ名のタブ区切り値のセットが含まれています。

値の代わりにアスタリスクを指定すると、任意の値が示されます。 Microsoft DRDA クライアントには、1 つ以上のユーザー定義コレクションでパッケージの標準セットを定義するための一連のツールが用意されています。 この場合、ワイルドカードは、パッケージが定義されているコレクションに関係なく、Microsoft DRDA クライアント標準パッケージを参照するバインド コマンドと実行コマンドを無視するように DRDA サーバーに指示します。

文字列の末尾にあるアスタリスクは、部分的な値を表します。 IBM DB2 Connect DRDA クライアントには、開始パッケージ名値 SYSSH を使用して NULLID コレクション内のパッケージの標準セットを定義するための一連のツールが用意されています。 この場合、ワイルドカードは、IBM DB2 Connect DRDA クライアント標準パッケージの完全なセットを参照するバインドおよび実行コマンドを無視するように DRDA サーバーに指示します。

データ型

DRDA サービスは、これらのプラットフォーム変換を提供することで、異種ベンダー製品とテクノロジ間の互換性を提供します。

DB2 から SQL Server へのデータ型マッピング

DRDA サービスは、%DRDAROOT%\system ディレクトリ内の Db2ToSql.xml ファイルに格納されている定義済みのマッピング セットに基づいて、DB2 を SQL Server データ型にマップします。 たとえば、DRDA サービスは、DRDA プロトコル フローで定義されている DB2 TIMESTAMP 値と形式を、ストアドプロシージャと動的 SQL 文で定義されている SQL Server DATETIME2(6) の値と形式に、MICROSOFT ADO.NET Framework Data Provider for SQL Server インターフェイスを介して変換します。

ソース DB2 の種類 ターゲット SQL Server の種類
時間 時間
タイムスタンプ DATETIME2
日付 日時
焦がす 焦がす
CHAR() 型のビットデータ バイナリ
混合データ用のCHAR() NCHAR
SBCS データ用の CHAR() 焦がす
文字 焦がす
ビットデータ用の文字列 () バイナリ
FIXEDBYTE バイナリ
混合データの文字 () NCHAR
SBCS データの文字 () 焦がす
国民性 NCHAR
VARCHAR VARCHAR
VARCHAR() ビットデータ用 VARBINARY(可変長バイナリデータ型)
VARBYTE VARBINARY(可変長バイナリデータ型)
VARCHAR() を用いた混合データ NVARCHAR
SBCS データの VARCHAR () VARCHAR
可変文字列 VARCHAR
ビット データの文字可変 () VARBINARY(可変長バイナリデータ型)
混在データの文字可変 () NVARCHAR
SBCS データ用の可変文字列 () VARCHAR
国民性の変化 NVARCHAR
ビットデータを長い VARCHAR 型で保存するもの イメージ
LONG VARCHAR [TEXT]
グラフィック NCHAR
VARGRAPHIC NVARCHAR
グラフィックの変化 NVARCHAR
スモールイント スモールイント
INT INT
整数 INT
BIGINT BIGINT
小数 小数
数値 小数
実数 実数
浮く 浮く
ダブル 浮く
倍精度 浮く
ブロッブ イメージ
バイナリ ラージ オブジェクト イメージ
CLOB [TEXT]
複合データの CLOB () NTEXT
SBCS データの CLOB () [TEXT]
CHAR 大規模オブジェクト [TEXT]
混合データの CHAR ラージ オブジェクト () NTEXT
SBCS データの CHAR ラージ オブジェクト () [TEXT]
キャラクタ大規模オブジェクト [TEXT]
混在データの文字ラージオブジェクト () NTEXT
SBCS データの CHARACTER LARGE OBJECT () [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 の種類
スモールイント スモールイント
INT 整数
実数 実数
浮く ダブル
小額マネー DECIMAL(10,4)
お金 DECIMAL(19,4)
ビット スモールイント
TINYINT スモールイント
BIGINT BIGINT
ユニーク識別子 CHAR(38)
VARBINARY(可変長バイナリデータ型) VARBYTE
タイムスタンプ タイムスタンプ
バイナリ FIXEDBYTE
XML LONG VARCHAR
イメージ LONG VARCHAR
バリアント ビットデータ用VARCHAR(32672)
[TEXT] 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 サービスでは、UNICODE 1208 との間で変換される以下の SBCS (1 バイト文字セット) EBCDIC CCSID がサポートされます。

名前 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 - トルコ語 (Latin-3) 905 20905
EBCDIC - トルコ語 (Latin-5) 1026 1026
EBCDIC - 米国/カナダ (ユーロ) 37 1140
EBCDIC - 米国/カナダ 37 37
EBCDIC - イギリス (ユーロ) 285 1146
EBCDIC - イギリス 285 20285

ANSI(米国国家規格協会)

DRDA サービスでは、UNICODE 1208 との間で変換される、以下に示す SBCS (1 バイト文字セット) ANSI CCSID がサポートされています。

名前 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 属性は、統合セキュリティ サポート プロバイダー インターフェイス (SSPI) を使用して Windows 認証用に構成された SQL Server に接続するときに、Microsoft Windows Active Directory ドメインがバインドされた DRDA クライアント資格情報 (ユーザー名とパスワード) をマップするように DRDA サービスに指示しますが、Microsoft Enterprise シングル サインオンを使用する場合は指定しません。 DRDA サービスは、Microsoft Enterprise Single Sign-On および Mapped Authentication Domain の機能から取得したセキュリティ トークンを、構成された期間キャッシュします。このトークンは、統合セキュリティ サポート プロバイダー インターフェイス (SSPI) を使用して Windows 認証用に構成された SQL Server に接続するときに使用します。securityTokenTimeout 属性は、一定期間セキュリティ トークンを保持するように DRDA サーバーに指示し、その後、新しい Windows クライアント識別子 (CID) を取得します。 この省略可能な属性は、期間の値を受け入れます。 既定値は PT8H です (期間は 8 時間です)。パフォーマンスを向上させるために、ESSO セキュリティ トークンのタイムアウト値を長期間調整できます。

暗号化

DRDA サービスは、Data Provider が Data Encryption Standard (DES) テクノロジ、Secure Sockets Layer (SSL) V3.0、トランスポート層セキュリティ (TLS) V1.0 を使用した認証とデータ暗号化をサポートしています。 また、DRDA サービスでは、Advanced Encryption Standard (AES) 暗号化のみを使用したデータ暗号化がサポートされています。 これらの暗号化メカニズムは、パフォーマンスに影響を与える可能性があります。

接続

SQL Server 接続

SERVICE for DRDA は、ADO.NET Framework Data Provider for SQL Server と基になる SQL ネットワーク クライアントを使用して SQL Server データベースに接続します。 ローカル SQL Server インスタンスに接続する場合は、ネットワーク ライブラリ =dbmslpcn を指定して、TCP/IP ネットワーク接続ではなく共有メモリを使用して SQL Server に接続するように SQL クライアントに指示します。接続の起動時間を短縮するには、接続文字列で Pooling=true を設定して、DRDA サービスによって閉じられたときに新しく作成された接続をプールに追加するように SQL クライアントに指示することで、SQL Server 接続プーリングを使用します。 ローカル サーバーへの影響を調整するには、接続文字列の最大プール サイズを設定して、SQL クライアントが接続プールに保持する必要がある接続の最大数を定義します。 既定値は100です。接続の起動時間をさらに短縮するには、MsDrdaService の内部接続プールを使用し、DRDA AR クライアントのインバウンド接続と認証情報を、SQL Server データベースのアウトバウンド接続と認証情報にマッピングします。このために、connectionCacheSize 属性を設定して、DRDA サービスが SQL クライアント接続プール内でキャッシュする SQL クライアントと SQL Server コンピューターの接続数を定義します。 この省略可能な属性は整数値を受け入れます。 既定値は 1000 です。connectionCacheTimeout 属性は、プールされた接続を一定期間保持し、その後、新しい SQL クライアント接続を取得するように DRDA サーバーに指示します。 この省略可能な属性は、期間の値を受け入れます。 既定値は PT8H (期間は 8 時間) です。

接続フェールオーバー

DRDAサービスは、耐障害性のフェイルオーバーを提供するためにグループ内で動作できます。 グループは、ローカル サービス ロール (プライマリまたはセカンダリ)、使用可能なフェールオーバー パートナー サーバー、およびグループ内のサーバーの正常性を監視するための ping 間隔を指定することによって定義されます。 pingInterval 属性は、EXCSAT (Exchange Server 属性) フローを実行し、EXCSATRD (EXCSAT 応答データ) を確認することによって、パートナー サーバー コンピューターの正常性を監視する頻度を DRDA サービスに指示します。 この省略可能な属性は整数値を受け入れます。 既定値は、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 属性は、指定された時間間隔後に、パッケージ プロシージャ キャッシュ内のオブジェクトの名前をテキスト ファイル (%DRDAROOT%\LastInvokePackageProcedures.txt) に書き込むよう DRDA サーバーに指示します。 この省略可能な属性は、期間の値を受け入れます。 既定値は P7D (期間は 7 日間) です。 サービスの起動時に、DRDA サービスはこのテキスト ファイルを読み込み、ファイルにリストされているプロシージャのスキーマをプリフェッチします。サービスの起動のパフォーマンスを向上させるために、このファイルを編集し、不要なストアド プロシージャ名を削除できます。 LastInvokePackageProcedures.txt ファイルの読み取りと書き込みを無効にするには、期間を PT0S (時間 0 秒の期間) に設定します。

SQL 構文

DRDA サービスには、バインド パッケージ、静的および動的 SQL ステートメントの実行に使用される DB2 ANSI から SQL Server への T-SQL コマンド構文トランスフォーマーが限られています。 必要に応じて、DRDA サービスは、SQL Server CLR ベースの関数の形式で、互換性のある DB2 関数を追加で提供します。 SQL 構文変換のパフォーマンスを向上させるには、DRDA サービス CLR ベースの関数を有効にします。 DRDA サービスは、DB2 用の静的 SQL パッケージを SQL Server ストアド プロシージャに変換します。DRDA の処理時に、SQL ステートメントのバインドとバインドを開始するコマンド (埋め込み SQL DECLARE CURSOR ステートメントを含む) が開始されます。 パフォーマンスを向上させるために、DRDA サービスは、同時更新をサポートするために単一行フェッチにパッケージまたはカーソルが定義されていない限り、フェッチごとに複数の行を返します。 読み取りパフォーマンスを最適化するために SELECT ステートメントを定義する場合、開発者は FOR FETCH ONLY 句または FOR READ ONLY 句を含める必要があります。

分離レベル

DRDA サービスは、DRDA EXCSQLSTT (SQL ステートメントの実行) の IBM DB2 分離レベルを、ADO.NET プロバイダー for SQL Server トランザクション オブジェクトの SQL Server トランザクション レベルにマップします。 パフォーマンスを向上させ、データベースオブジェクトの競合を減らすには、開発者は、DB2の分離レベルであるカーソル安定性(CS)を使用することが推奨されます。これはSQL Serverの分離レベルの読み取りコミット済みに対応しています。

日付時刻の形式と変換

DRDA サービスは、特定の日付時刻および文字データ型に対して動的および静的 SQL ステートメントを処理する際に、ソースおよびターゲット形式の文字列リテラル日時値を書式設定します。 conversionFormats 要素には、DB2 および SQL Server の日時形式との間で変換するための dateMasks、timeMasks、および dateTimeMask が含まれており、これらの変換をいつ実行するかを DRDA サービスに指示します。 日時の書式設定された値との間の文字列の解析、エンコード、デコードでは、追加の DRDA サービス リソースが消費されます。

コード ページの変換

DRDA サービスは、コード ページをマップし、基になる HIS Encoder コンポーネントと Windows 各国語サポート (NLS) システム コンポーネントを使用したカスタム コード ページ変換をサポートします。 必要に応じて、DRDA サービスは、カスタム コード ページをサポートするように個々のコード ポイントを変換できます。 DRDA サーバーは、カスタム コード ページ変換をサポートするときに追加のリソースを使用します。

コレーションマッピング

SQL Server は、DRDA クライアント プログラムで予想される順序とは異なる順序でクエリ結果を照合できます。 たとえば、IT プロフェッショナルは、ANSI 照合順序を使用するように SQL Server データベースを構成し、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 照合順序名に基づいて、ORDER BY 句に COLLATE 句を追加できます。 DRDA サービスによる SQL 構文の解析と置換または追加では、追加のリソースが消費されます。

追跡

DRDA サービスでは、テキスト、コンソール、イベント ログ、およびカスタム コンポーネントに情報をログに記録するための一連の共有リスナーがサポートされています。 MsDrdaService.exe.config ファイルの hostIntegration.drdaAs.drdaService セクションの system.diagnostics 要素は、さまざまなリスナーを定義および制御します。traceLevel 属性は、定義済みの情報コレクションをトレースするように DRDA サービスに指示します。トレースの最小レベルから最大レベルまでです。 この省略可能な属性は整数値を受け入れます。 既定値は 0 で、トレースを無効にします。DRDA サービスはトレース データをトレース リスナーに自動的にフラッシュできます。これにより、トレース データが確実にキャプチャされますが、ディスク I/O が増加し、システム全体のパフォーマンスが低下します。 パフォーマンスを向上させるには、autoFlush=false を設定して、自動トレース フラッシュを無効にします。

パフォーマンス モニター

パフォーマンスを測定するために、DRDA サービスにはパフォーマンス カウンターが用意されています。 DRDA サービスのパフォーマンス カウンターは、開いている接続、開いているステートメント、送受信されたパケットとバイト数、平均処理時間、コマンド実行、データ フェッチ、トランザクションのコミット/ロールバックに関する情報をキャプチャします。

コンフィギュレーション

パフォーマンスを測定するために、DRDA サービスには Windows パフォーマンス モニターで使用するパフォーマンス カウンターが用意されています。 peformanceCountersOn 属性は、パフォーマンス カウンターに情報を収集するように 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 サービスは、サービスごとまたは接続ごとの "インスタンス" ベースでパフォーマンス モニター カウンターを提供します。ここで、"インスタンス" はプロセスまたはセッションにすることができます。