レプリケーション ログ リーダー エージェント
適用対象: SQL Server Azure SQL Managed Instance
レプリケーション ログ リーダー エージェントは、トランザクション レプリケーション用に構成した各データベースのトランザクション ログを監視し、レプリケーションのマークが付けられたトランザクションをトランザクション ログからディストリビューション データベースにコピーする実行可能ファイルです。
Note
パラメーターは任意の順序で指定できます。 省略可能なパラメーターが指定されていない場合は、既定のエージェント プロファイルに基づく定義済みの値が使用されます。
構文
logread [ -? ]
-Publisher server_name [ \instance_name ]
-PublisherDB publisher_database
[ -Continuous ]
[ -DefinitionFile def_path_and_file_name ]
[ -Distributor server_name[ \instance_name ] ]
[ -DistributorLogin distributor_login ]
[ -DistributorPassword distributor_password ]
[ -DistributorSecurityMode [ 0 | 1 ] ]
[ -EncryptionLevel [ 0 | 1 | 2 ] ]
[ -ExtendedEventConfigFile configuration_path_and_file_name ]
[ -HistoryVerboseLevel [ 0 | 1 | 2 ] ]
[ -KeepAliveMessageInterval keep_alive_message_interval_seconds ]
[ -LoginTimeOut login_time_out_seconds ]
[ -LogScanThreshold scan_threshold ]
[ -MaxCmdsInTran number_of_commands ]
[ -MessageInterval message_interval ]
[ -MultiSubnetFailover [ 0 | 1 ] ]
[ -Output output_path_and_file_name ]
[ -OutputVerboseLevel [ 0 | 1 | 2 | 3 | 4 ] ]
[ -PacketSize packet_size ]
[ -PollingInterval polling_interval ]
[ -ProfileName profile_name ]
[ -PublisherFailoverPartner server_name[ \instance_name ] ]
[ -PublisherSecurityMode [ 0 | 1 ] ]
[ -PublisherLogin publisher_login ]
[ -PublisherPassword publisher_password ]
[ -QueryTimeOut query_time_out_seconds ]
[ -ReadBatchSize number_of_transactions ]
[ -ReadBatchThreshold read_batch_threshold ]
[ -RecoverFromDataErrors ]
引数
-?
使用方法に関する情報を表示します。
-Publisher server_name [ \instance_name ]
パブリッシャーの名前。 そのサーバー上の SQL Server の既定のインスタンスの <server_name>
を指定します。 そのサーバー上の SQL Server の名前付きインスタンスの <server_name>\<instance_name>
を指定します。
-PublisherDB publisher_database
パブリッシャー データベースの名前。
-Continuous
エージェントがレプリケートされたトランザクションの呼び出しを継続的に試みるかどうかを指定します。 このパラメーターを指定する場合は、保留されているトランザクションがなくても、エージェントはポーリング間隔でレプリケートされたトランザクションをソースから呼び出します。
-DefinitionFile def_path_and_file_name
エージェント定義ファイルのパス。 エージェント定義ファイルには、エージェントのコマンド ライン引数が含まれます。 ファイルの内容は実行可能ファイルとして解析されます。 任意の文字を含む引数値を指定するには、二重引用符 ("
) を使用します。
-Distributor server_name [ \instance_name ]
ディストリビューター名。 そのサーバー上の SQL Server の既定のインスタンスの <server_name>
を指定します。 そのサーバー上の SQL Server の名前付きインスタンスの <server_name>\<instance_name>
を指定します。
-DistributorLogin distributor_login
ディストリビューターのログイン名。
-DistributorPassword distributor_password
ディストリビューターのパスワード。
-DistributorSecurityMode [ 0 | 1 ]
ディストリビューターのセキュリティ モードを指定します。 0
の値は SQL Server 認証モード (既定値) を示し、1
の値は Windows 認証モードを示します。
-EncryptionLevel [ 0 | 1 | 2 ]
トランスポート層セキュリティ (TLS) のレベル。以前は Secure Sockets Layer (SSL) と呼ばれ、接続時にログ リーダー エージェントによって使用される暗号化です。
EncryptionLevel の値 | 説明 |
---|---|
0 |
TLS が使用されていないことを指定します。 |
1 |
TLS を使用することを指定しますが、エージェントは TLS サーバー証明書が信頼された発行者によって署名されていることを確認しません。 |
2 |
TLS を使用し、証明書を検証することを指定します。 |
Note
有効な TLS/SSL 証明書は、SQL Server の完全修飾ドメイン名を使用して定義されます。 -EncryptionLevel
を 2
に設定するときにエージェントが正常に接続できるようにするには、ローカル SQL Server にエイリアスを作成します。 'Alias Name' パラメーターはサーバー名にし、'Server' パラメーターは SQL Server の完全修飾名に設定する必要があります。
詳細については、「 View and Modify Replication Security Settings」を参照してください。
-ExtendedEventConfigFile configuration_path_and_file_name
拡張イベントの XML 構成ファイルのパスとファイル名を指定します。 拡張イベントの構成ファイルによって、追跡に必要なセッションを構成し、イベントを有効にすることができます。 内部のみで使用します。
-HistoryVerboseLevel [ 0 | 1 | 2 ]
ログ リーダー操作中にログに記録する履歴の量を指定します。 1
を選択すると、履歴ログのパフォーマンス効果を最小限に抑えることができます。
HistoryVerboseLevel の値 | 説明 |
---|---|
0 |
なし。 |
1 (既定) |
同じ状態 (startup、progress、success など) を示している以前の履歴メッセージを常に更新します。 前回の記録に同じ状態がない場合は、新しい記録を挿入します。 |
2 |
アイドル状態や長時間実行を示すメッセージでない場合、新しい履歴レコードを挿入します。アイドル状態などを示すメッセージの場合には、以前のレコードを更新します。 |
-KeepAliveMessageInterval keep_alive_message_interval_seconds
既存の接続のいずれかがサーバーからの応答を待機しているかどうかを、履歴スレッドが確認するまでの秒数。 長時間実行のときに、照合エージェントによってログ リーダー エージェントに SUSPECT とマークされないようにするには、この値を小さくします。 既定では 300 秒です。
-LoginTimeOut login_time_out_seconds
ログインがタイムアウトするまでの秒数。既定値は 15 秒です。
-LogScanThreshold scan_threshold
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
-MaxCmdsInTran number_of_commands
ログ リーダーがディストリビューション データベースにコマンドを書き込む際に、トランザクションにグループ化されるステートメントの最大数を指定します。 このパラメーターを使用すると、ログ リーダー エージェントおよびディストリビューション エージェントは、サブスクライバーでコマンドを適用するときに、パブリッシャーで (多数のコマンドで構成される) 大きなトランザクションを複数の小さなトランザクションに分割できます。 このパラメーターを指定すると、ディストリビューターでの競合を減らし、パブリッシャーとサブスクライバーの間の待機時間を減らすことができます。 元のトランザクションはより小さな単位で適用されるため、サブスクライバーは元のトランザクションの終了前に大規模な論理パブリッシャー トランザクションの行にアクセスでき、厳密なトランザクションのアトミック性が損なわれます。 既定値は 0
であり、パブリッシャーのトランザクション境界が保持されます。
このパラメーターは、SQL Server 以外のパブリケーションでは無視されます。 詳細については、「 トランザクション セット ジョブの構成」を参照してください。
MaxCmdsInTran
は、常にオンにするように設計されていませんでした。 これは、1 つのトランザクションで多数の DML 操作を誤って実行した場合に回避されます。 これにより、トランザクション全体がディストリビューション データベース内に存在し、ロックが保持されるまで、コマンドの配布が遅れます。このような状況が日常的に発生する場合は、アプリケーションを確認し、トランザクション サイズを小さくする方法を見つけます。
警告
大きなトランザクションのレプリケート中に MaxCmdsInTran
パラメーターが追加および削除されると、主キー エラーが発生する可能性があります。 大規模なトランザクションの主キー エラーを解決するには、トランザクションがディストリビューション データベースにレプリケートされるまで、 MaxCmdsInTran
パラメーターを再度追加します。
変更データ キャプチャ (CDC) とレプリケーションの両方が有効になっているデータベースで MaxCmdsInTran
パラメーターを使用することはサポートされておらず、CDC 変更テーブルのデータ損失につながる可能性があります。
-MessageInterval message_interval
履歴ログに使用される時間間隔。 履歴イベントは、最後の履歴イベントがログに記録された後に MessageInterval
値に達したときにログに記録されます。
ソースで使用できるレプリケートされたトランザクションがない場合、エージェントはトランザクションなしメッセージをディストリビューターに報告します。 このオプションは、エージェントが次にトランザクションなしのメッセージを報告するまでの待ち時間を指定します。 前回レプリケートされたトランザクションを処理した後で、ソースに利用可能なトランザクションがないことを検出すると、エージェントは必ずトランザクションなしのメッセージを報告します。 既定値は 60 秒です。
-MultiSubnetFailover [ 0 | 1 ]
適用対象: SQL Server 2019 (15.x) 以降のバージョン。
MultiSubnetFailover プロパティを有効にするかどうかを指定します。 アプリケーションが異なるサブネット上の AlwaysOn 可用性グループ (AG) に接続している場合、MultiSubnetFailover を 1 (true) に設定すると、(現在) アクティブなサーバーの検出と接続が速くなります。
AG でトランザクション パブリケーションを構成すると、ログ リーダー エージェントによって、リスナーがメタデータを検証するための動的リンク サーバーが作成されます。 SQL Server 2022 (16.x) CU 10 以降のバージョンでは、動的リンク サーバーの構成が変更されています。 詳しくは、KB5031778 を参照してください。
-Output output_path_and_file_name
エージェント出力ファイルのパス。 ファイル名が指定されていない場合、出力はコンソールに送信されます。 指定された名前のファイルが存在する場合、出力はそのファイルに追加されます。
-OutputVerboseLevel [ 0 | 1 | 2 | 3 | 4 ]
出力を詳細表示にするかどうかを指定します。
値 | 説明 |
---|---|
0 |
エラー メッセージのみが記録されます。 |
1 |
すべてのエージェント進行状況レポート メッセージが出力されます。 |
2 (既定) |
すべてのエラー メッセージおよびエージェント進行状況レポート メッセージが出力されます。 |
3 |
レプリケートされた各コマンドの最初の 100 バイトが出力されます。 |
4 |
すべてのレプリケートされたコマンドが出力されます。 |
値 2 ~ 4 はデバッグ時に有用です。
-PacketSize packet_size
パケット サイズ (バイト単位)。 既定値は 4096 (バイト) です。
-PollingInterval polling_interval
レプリケートされたトランザクションに対してログが照会される頻度 (秒単位)。 既定値は 5 秒です。
-ProfileName profile_name
エージェント パラメーターに使用するエージェント プロファイルを指定します。 ProfileName
がNULL
されている場合、エージェント プロファイルは無効になります。 ProfileName
が指定されていない場合は、エージェントの種類の既定のプロファイルが使用されます。 詳細については、「レプリケーション エージェント プロファイル」を参照してください。
-PublisherFailoverPartner server_name [ \instance_name ]
パブリケーション データベースとのデータベース ミラーリング セッションに参加する、SQL Server フェールオーバー パートナー インスタンスを指定します。 詳細については、「データベース ミラーリングとレプリケーション (SQL Server)」をご覧ください。
-PublisherSecurityMode [ 0 | 1 ]
パブリッシャーのセキュリティ モードを指定します。 0
の値は SQL Server 認証 (既定値) を示し、1
の値は Windows 認証モードを示します。
-PublisherLogin publisher_login
パブリッシャー のログイン名。
-PublisherPassword publisher_password
発行元のパスワード。
-QueryTimeOut query_time_out_seconds
クエリがタイムアウトするまでの秒数。既定値は 1,800 秒です。
-ReadBatchSize number_of_transactions
処理サイクルごとに発行データベースのトランザクション ログから読み取られるトランザクションの最大数。既定値は 500、最大は 10000 です。 エージェントは、すべてのトランザクションがログから読み取られるまで、トランザクションをバッチで読み取り続けます。 このパラメーターは、Oracle パブリッシャーではサポートされていません。
-ReadBatchThreshold number_of_commands
ディストリビューション エージェントによってサブスクライバーに発行される前にトランザクション ログから読み取られるレプリケーション コマンドの数。 既定値は 0 です。 このパラメーターが指定されていない場合、ログ リーダー エージェントはログの末尾または -ReadBatchSize
で指定された数 (トランザクション数) を読み取ります。
-RecoverFromDataErrors
SQL Server 以外のパブリッシャーからパブリッシュされる列データでエラーが発生しても、ログ リーダー エージェントを継続して実行することを指定します。 既定では、このようなエラーが発生するとログ リーダー エージェントは失敗します。 -RecoverFromDataErrors
を使用すると、誤った列データがNULL
または適切な null 以外の値としてレプリケートされ、警告メッセージがMSlogreader_history テーブルに記録されます。 このパラメーターは、Oracle パブリッシャーに対してのみサポートされます。
解説
ドメイン ユーザー アカウント (既定値) ではなくローカル システム アカウントで実行するように SQL Server エージェントをインストールした場合、サービスはローカル コンピューターにのみアクセスできます。 SQL Server エージェントから実行されるログ リーダー エージェントで、Windows 認証モードを使用するように構成すると、SQL Server へのログイン時にログ リーダー エージェントは異常終了します。 既定の設定は SQL Server 認証です。 セキュリティ アカウント変更の詳細については、「 View and Modify Replication Security Settings」を参照してください。
ログ リーダー エージェントを起動するには、コマンド プロンプトから logread.exe
を実行します。 詳細については、「レプリケーション エージェント実行可能ファイルの概念」を参照してください。