MSSQL_ENG018752
訊息詳細資料
產品名稱 |
SQL Server |
產品版本 |
10.0 |
產品組建編號 |
|
事件識別碼 |
18752 |
事件來源 |
MSSQLSERVER |
元件 |
SQL Server Database Engine |
符號名稱 |
|
訊息文字 |
一次只有一個記錄讀取器代理程式或記錄檔相關程序 (sp_repldone, sp_replcmds, and sp_replshowcmds) 可連接到資料庫。若您已執行記錄檔相關程序,請卸除執行程序的連接,或者利用該連接執行 sp_replflush 之後,再啟動記錄讀取器代理程式或執行其他記錄檔相關程序。 |
說明
目前有多個連接嘗試執行下列任一項目:sp_repldone、sp_replcmds 或 sp_replshowcmds。預存程序 sp_repldone (Transact-SQL) 和 sp_replcmds (Transact-SQL) 是「記錄讀取器代理程式」用來在已發行資料庫中尋找及更新已複寫交易之資訊的預存程序。預存程序 sp_replshowcmds (Transact-SQL) 用來對交易式複寫之特定類型的問題進行疑難排解。
此錯誤在下列情況下產生:
如果已發行資料庫的「記錄讀取器代理程式」正在執行,而第二個「記錄讀取器代理程式」嘗試針對相同的資料庫執行,則錯誤就會在第二個代理程式中產生,並且出現在代理程式記錄中。
若出現多個代理程式的情況,則可能其中一個代理程式是被遺棄處理的結果。
如果已發行資料庫的「記錄讀取器代理程式」已啟動,而使用者針對相同的資料庫執行 sp_repldone、sp_replcmds 或 sp_replshowcmds ,則錯誤就會在執行預存程序 (例如 sqlcmd) 的應用程式中產生。
如果已發行資料庫的「記錄讀取器代理程式」未在執行,且使用者執行了 sp_repldone、sp_replcmds 或 sp_replshowcmds,之後也未關閉執行該程序的連接,則當「記錄讀取器代理程式」嘗試連接到資料庫時就會產生錯誤。
使用者動作
下列步驟可以幫助您對此問題進行疑難排解。如果任一步驟允許「記錄讀取器代理程式」在沒有錯誤的情況下啟動,則無需完成剩餘步驟。
檢查「記錄讀取器代理程式」的記錄,以便尋找可能導致此錯誤的其他任何錯誤。如需有關檢視代理程式狀態以及複寫監視器中的錯誤詳細資料,請參閱<如何:檢視與發行集相關聯之代理程式的資訊並執行工作 (複寫監視器)>。
檢查 sp_who (Transact-SQL) 的輸出以尋找連接到已發行資料庫之特定處理序識別碼 (SPID)。關閉可能已執行 sp_repldone、sp_replcmds 或 sp_replshowcmds 的任何連接。
重新啟動「記錄讀取器代理程式」。如需詳細資訊,請參閱<如何:啟動和停止複寫代理程式 (SQL Server Management Studio)>。
在「散發者」上重新啟動 SQL Server Agent 服務 (使之在叢集中離線或上線) 。如果已排程作業可能已經從其他任何 SQL Server 執行個體執行 sp_repldone、sp_replcmds 或 sp_replshowcmds,則重新啟動那些執行個體的 SQL Server Agent。如需詳細資訊,請參閱<啟動、停止和暫停 SQL Server Agent 服務>。
在發行集資料庫上的「發行者」端執行 sp_replflush (Transact-SQL),然後重新啟動「記錄讀取器代理程式」。
若錯誤繼續發生,請增加代理程式的記錄,並指定記錄的輸出檔。視錯誤內容的不同,可提供導致錯誤的步驟和 (或) 其他錯誤訊息。如需詳細資訊,請參閱<複寫代理程式 (疑難排解)>。