分享方式:


複寫記錄讀取器代理程式

適用於:SQL Server Azure SQL 受控執行個體

「複寫記錄讀取器代理程式」是一個可執行檔,它會監視針對異動複寫所設定之每個資料庫的交易記錄,並將標示要複寫的交易從交易記錄複製到散發資料庫中。

注意

您可以使用任何順序來指定參數。 如果未指定選擇性參數,則會使用以預設代理程式配置檔為基礎的預先定義值。

語法

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 ]

發行者的名稱。 <server_name>指定該伺服器上 SQL Server 的預設實例。 <server_name>\<instance_name>指定該伺服器上的 SQL Server 具名實例。

-PublisherDB publisher_database

發行者資料庫的名稱。

-Continuous

指定代理程式是否會嘗試持續輪詢複寫的交易。 如果您指定了這個參數,代理程式就會以輪詢間隔輪詢來源的複寫交易,即使沒有任何交易暫止也一樣。

-DefinitionFile def_path_and_file_name

代理程式定義檔的路徑。 代理程式定義檔包含代理程式的命令列引數。 此檔案的內容會剖析為可執行檔。 使用雙引號 (") 指定包含任意字元的自變數值。

-Distributor server_name [ \instance_name ]

散發者名稱。 <server_name>指定該伺服器上 SQL Server 的預設實例。 <server_name>\<instance_name>指定該伺服器上的 SQL Server 具名實例。

-DistributorLogin distributor_login

散發者登入名稱。

-DistributorPassword distributor_password

散發者密碼。

-DistributorSecurityMode [ 0 | 1 ]

指定散發者的安全性模式。 的值 0 表示 SQL Server 驗證模式 (預設值),而的值 1 則表示 Windows 驗證模式。

-EncryptionLevel [ 0 | 1 | 2 ]

傳輸層安全性層級 (TLS),先前稱為安全套接字層 (SSL),在建立連線時,記錄讀取器代理程式所使用的加密。

EncryptionLevel 值 描述
0 指定不使用 TLS。
1 指定使用 TLS,但代理程式不會驗證 TLS 伺服器證書是由受信任的簽發者所簽署。
2 指定要使用 TLS,而且憑證會經過驗證。

注意

定義的 TLS/SSL 憑證必須包含 SQL Server 的完整網域名稱才會有效。 為了讓代理程式在設定 -EncryptionLevel2時成功連線,請在本機 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 (預設值) 一律更新相同狀態的上一個記錄訊息 (啟動、進度、成功等等)。 如果沒有任何具有相同狀態的上一筆記錄存在,便插入新的記錄。
2 除非記錄用於閒置訊息或長時間執行作業訊息等事件 (在此情況下,更新之前的記錄),否則便插入新的記錄。

-KeepAliveMessageInterval keep_alive_message_interval_seconds

歷程記錄線程之前的秒數會檢查是否有任何現有的連線正在等候伺服器的回應。 執行長時間執行的批次時,您可以減少這個值,避免檢查代理程式將記錄讀取器代理程式標示為有疑問。 預設為 300 秒。

-LoginTimeOut login_time_out_seconds

登入逾時之前的秒數。預設值為15秒。

-LogScanThreshold scan_threshold

僅供參考之用。 不支援。 我們無法保證未來的相容性。

-MaxCmdsInTran number_of_commands

指定當記錄讀取器將命令寫入散發資料庫時,分組到某交易內的最大陳述式數目。 使用此參數可讓記錄讀取器代理程式和散發代理程式在「訂閱者」端套用命令時,於「發行者」端將大型交易 (由許多命令組成) 分割成幾個較小的交易。 指定此參數可以降低「散發者」的競爭,並減少「發行者」和「訂閱者」之間的延遲。 由於原始交易是以較小的單位套用,訂閱者可以在原始交易結束前存取大型邏輯發行者交易的數據列,而中斷嚴格的交易不可部分完成性。 默認值為 0,它會保留發行者的交易界限。

非 SQL Server 發行集會忽略此參數。 如需詳細資訊,請參閱 設定交易集作業

MaxCmdsInTran 不是設計為永遠開啟。 它適用於有人在單一交易中意外執行大量 DML 作業的情況。 這會導致命令的散發延遲,直到整個交易都在散發資料庫中、保留鎖定等為止。如果您經常陷入這種情況,請檢閱您的應用程式,並尋找減少交易大小的方法。

警告

如果在復寫大型交易時新增和移除 參數, MaxCmdsInTran 可能會發生主鍵錯誤。 MaxCmdsInTran 如果指定的發行集資料庫同時啟用異動數據擷取(CDC)和復寫,則不支援。 在此 MaxCmdsInTran 組態中使用 可能會導致 CDC 變更數據表中的數據遺失。

-MessageInterval message_interval

用於記錄記錄的時間間隔。 記錄 MessageInterval 最後一個記錄事件之後的值時,就會記錄記錄記錄事件。

如果來源沒有可用的復寫交易,代理程式會將無交易訊息回報給散發者。 這個選項會指定回報另一個無交易訊息之前等候的時間長度。 在先前處理複寫的交易之後,當代理程式偵測到來源沒有任何交易可用時,代理程式一律會回報無交易訊息。 預設值是 60 秒。

-MultiSubnetFailover [ 0 | 1 ]

適用於:SQL Server 2019 (15.x) 和更新版本。

指定是否啟用 MultiSubnetFailover 屬性。 如果您的應用程式連線至不同子網路上的 Always On 可用性群組 (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 ]

指定輸出是否應該詳細。

Description
0 僅列印錯誤訊息。
1 列印所有代理程式進度報表訊息。
2 (預設值) 列印所有錯誤訊息和代理程式進度報表訊息。
3 列印每個複寫命令中的前 100 個位元組。
4 列印所有複寫指令。

進行偵錯時,值 2-4 很有用。

-PacketSize packet_size

封包大小,以位元組為單位。 預設值是 4096 (位元組)。

-PollingInterval polling_interval

以秒為單位,會查詢複寫交易的記錄頻率。 預設值是 5 秒。

-ProfileName profile_name

指定要用於代理程式參數的代理程式設定檔。 如果 ProfileNameNULL,則會停用代理程式配置檔。 如果未 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 Agent 安裝成在本機系統帳戶而非網域使用者帳戶 (預設值) 底下執行,這項服務就只能存取本機電腦。 如果在 SQL Server Agent 底下執行的記錄讀取器代理程式設定為使用 Windows 驗證模式,當它登入 SQL Server 時,記錄讀取器代理程式就會失敗。 預設設定為 SQL Server 驗證。 如需有關變更安全性帳戶的詳細資訊,請參閱< View and Modify Replication Security Settings>。

若要啟動記錄讀取器代理程式,請從命令提示字元執行 logread.exe 。 如需詳細資訊,請參閱複寫代理程式可執行檔概念