レプリケーション ログ リーダー エージェント
適用対象: 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]
パブリッシャーの名前です。 サーバー上で、Microsoft 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 は Microsoft Windows 認証モードを示します。
-EncryptionLevel [ 0 | 1 | 2 ]
接続確立時にログ リーダー エージェントが使用するトランスポート層セキュリティ (TLS) (旧称 Secure Sockets Layer (SSL)) の暗号化レベルです。
EncryptionLevel の値 | 説明 |
---|---|
0 | TLS を使用しないことを指定します。 |
1 | TLS を使用しますが、信頼できる発行者によって TLS/SSL サーバー証明書が署名されているかどうかをエージェントでは検証しないことを指定します。 |
2 | TLS を使用し、証明書を検証することを指定します。 |
Note
有効な TLS/SSL 証明書は、SQL Server の完全修飾ドメイン名を使用して定義されます。 -EncryptionLevel を 2 に設定したときにエージェントが正しく接続されるようにするには、ローカルの SQL Server 上に別名を作成します。 'Alias Name' パラメーターはサーバー名にし、'Server' パラメーターは SQL Server の完全修飾名に設定する必要があります。
詳細については、「レプリケーションのセキュリティ設定の表示および変更」を参照してください。
-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です。この場合、パブリッシャーのトランザクション境界が保護されます。
Note
このパラメーターは、SQL Server パブリケーション以外では無視されます。 詳細については、「 Performance Tuning for Oracle Publishers」の「トランザクション セット ジョブの構成」を参照してください。
警告
MaxCmdsInTran は、常に有効になるようには設計されていませんでした。 このパラメーターは、ユーザーが誤って 1 つのトランザクションで多数の DML 操作を実行した場合に対応するためのものです (このような場合、トランザクション全体がディストリビューション データベースに格納されるまでコマンドの配布で遅延が発生したり、ロックが保持されたりするなどの問題が発生します)。 このような状況が定期的に発生する場合は、アプリケーションを確認して、トランザクションのサイズを縮小する方法を見つけます。
警告
Change Data Capture とレプリケーションの両方で特定のパブリケーション データベースが有効になっている場合、MaxCmdsInTran はサポートされません。 この構成で MaxCmdsInTran を使用すると、CDC 変更テーブルでデータが失われる可能性があります。 また、大規模なトランザクションのレプリケート中に MaxCmdsInTran パラメーターを追加および削除すると、PK エラーが発生する可能性もあります。
-MessageInterval message_interval
履歴をログに記録する間隔です。 最後の履歴イベントがログに記録された後で MessageInterval 値に到達すると、次の履歴イベントがログに記録されます。
ソースに利用可能なレプリケートされたトランザクションがない場合、エージェントはディストリビューターに対してトランザクションなしのメッセージを報告します。 このオプションは、エージェントが次にトランザクションなしのメッセージを報告するまでの待ち時間を指定します。 前回レプリケートされたトランザクションを処理した後で、ソースに利用可能なトランザクションがないことを検出すると、エージェントは必ずトランザクションなしのメッセージを報告します。 既定値は 60 秒です。
-MultiSubnetFailover [0|1] MultiSubnetFailover プロパティを有効にするかどうかを指定します。 アプリケーションが異なるサブネット上の AlwaysOn 可用性グループ (AG) に接続している場合、MultiSubnetFailover を 1 (true) に設定すると、(現在) アクティブなサーバーの検出と接続が速くなります。
AG でトランザクション パブリケーションを構成すると、ログ リーダー エージェントによって、リスナーがメタデータを検証するための動的リンク サーバーが作成されます。 SQL Server 2022 CU10 以降では、動的リンク サーバーの構成が変更されています。 詳しくは、KB5031778 を参照してください。
適用対象: SQL Server (SQL Server 2019 (15.x) 以降)。
-Output output_path_and_file_name
エージェントの出力ファイルのパスです。 ファイル名が指定されていない場合、出力はコンソールに送られます。 指定された名前のファイルが存在する場合、出力はそのファイルに追加されます。
-OutputVerboseLevel [ 0| 1| 2 | 3 | 4 ]
出力を詳細表示にするかどうかを指定します。
Value | 説明 |
---|---|
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
クエリがタイムアウトするまでの秒数です。既定値は 1800 秒です。
-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 を実行します。 詳細については、「レプリケーション エージェント実行可能ファイルの概念」を参照してください。
変更履歴
変更内容 |
---|
-ExtendedEventConfigFile パラメーターを追加しました。 |
-MultiSubnetFailover パラメーターを追加しました。 |