SQL Server復制刪除發布時遇到錯誤18752
2024-01-25 16:33 瀟湘隱者 閱讀(527) 評論(0) 收藏 舉報朋友反饋他無法刪除一臺SQL Server數據庫上的發布,具體情況為刪除一個SQL Server Replication的發布時,遇到下面錯誤
TITLE: Microsoft SQL Server Management Studio
------------------------------
無法刪除發布“REPL_ITSMS”。
------------------------------
ADDITIONAL INFORMATION:
執行 Transact-SQL 語句或批處理時發生了異常。 (Microsoft.SqlServer.ConnectionInfo)
------------------------------
Only one Log Reader Agent or log-related procedure (sp_repldone, sp_replcmds, and sp_replshowcmds) can connect to a database at a time. If you executed a log-related procedure, drop the connection with session ID 75 over which the procedure was executed or execute sp_replflush over that connection before starting the Log Reader Agent or executing another log-related procedure.
Only one Log Reader Agent or log-related procedure (sp_repldone, sp_replcmds, and sp_replshowcmds) can connect to a database at a time. If you executed a log-related procedure, drop the connection with session ID 75 over which the procedure was executed or execute sp_replflush over that connection before starting the Log Reader Agent or executing another log-related procedure.
Only one Log Reader Agent or log-related procedure (sp_repldone, sp_replcmds, and sp_replshowcmds) can connect to a database at a time. If you executed a log-related procedure, drop the connection with session ID 75 over which the procedure was executed or execute sp_replflush over that connection before starting the Log Reader Agent or executing another log-related procedure.
Only one Log Reader Agent or log-related procedure (sp_repldone, sp_replcmds, and sp_replshowcmds) can connect to a database at a time. If you executed a log-related procedure, drop the connection with session ID 75 over which the procedure was executed or execute sp_replflush over that connection before starting the Log Reader Agent or executing another log-related procedure.
Only one Log Reader Agent or log-related procedure (sp_repldone, sp_replcmds, and sp_replshowcmds) can connect to a database at a time. If you executed a log-related procedure, drop the connection with session ID 75 over which the procedure was executed or execute sp_replflush over that connection before starting the Log Reader Agent or executing another log-related procedure.
在執行 'sp_droppublication' 的過程中出錯。調用 'sp_replcmds' 失敗,錯誤代碼: '18752',返回代碼: '1'。
已將數據庫上下文更改為 "itsms"。 (Microsoft SQL Server, Error: 18752)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=15.00.4312&EvtSrc=MSSQLServer&EvtID=18752&LinkId=20476
好久沒有維護SQL Server數據庫了,感覺生疏了很多,檢查后發現其實出現這個錯誤,是因為一次只能有一個日志讀取器代理或日志相關過程(sp_repldone、sp_replcmds 和 sp_replshowcmds)連接到某個數據庫。 如果執行了一個日志相關過程,那么在啟動日志讀取器代理或者執行另一個日志相關過程之前,請刪除執行第一個過程時所用的連接,或者在該連接上執行 sp_replflush。
其實,官方文檔[1]關于錯誤代碼18752有詳細的說明,只要詳細閱讀文檔,就能知道如何解決這個錯誤了。這里特此記錄一下。具體如下所示:
說明
有多個當前連接正在嘗試執行以下任一日志相關過程: 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 代理服務(使之在群集中脫機或聯機)。 如果計劃的作業有可能在任何其他 實例中執行了sp_repldone 、 sp_replcmds 或 sp_replshowcmds SQL Server ,則也要為那些實例重新啟動 SQL Server 代理。 有關詳細信息,請參閱啟動、停止或暫停 SQL Server 代理服務。
sp_replflush (發布服務器上對發布數據庫執行 Transact-SQL) ,然后重啟日志讀取器代理。
如果錯誤繼續出現,請增加代理的日志記錄并指定日志的輸出文件。 此操作可能會提供找到該錯誤和/或其他錯誤消息的步驟,具體取決于錯誤的上下文。
其實這里的解決方法也很簡單,就是執行命令sp_replflush后,就可以正常的刪除復制的發布了。
參考資料
1: https://learn.microsoft.com/zh-cn/sql/relational-databases/replication/mssql-eng018752?view=sql-server-ver16
浙公網安備 33010602011771號