Windows-Server-2008
重新啟動後 SQL Server 鏡像錯誤的故障轉移伺服器
我設置了兩台 Windows Server 2008 伺服器,均執行 SQL Server 2008 R2。一個用作主數據庫,另一個用作鏡像故障轉移(兩個網站數據庫 + 用於會話的 ASPState)。一切正常,直到其中一個數據庫在其執行的伺服器重新啟動後成為主數據庫。我收到此錯誤:
Invalid object name 'tempdb.dbo.ASPStateTempSessions'.
我可以通過執行儲存過程
ASPState_Startup
(執行ASPState.dbo.CreateTempTables
)來解決這個問題,但前提是數據庫處於“主要”狀態。當伺服器重新啟動時,它將始終以“鏡像/恢復”狀態恢復數據庫,這意味著我無法在啟動時執行該 SP。關於如何解決這個問題的任何建議?
嘗試設置每分鐘在每個實例上執行的 SQL 代理作業,並執行腳本以查找處於未恢復狀態的數據庫,檢查表,如果不存在則執行該過程。我從您的問題中獲取了對象名稱,因此如果它們不在您的環境中,則可能需要對其進行更改。
if exists ( select 1 from sys.databases where state_desc <> 'RESTORING' and [name] = 'ASPState' ) begin if ( object_id('tempdb.dbo.ASPStateTempSessions') is null ) begin exec sp_executesql @stmt = N'exec ASPState.dbo.CreateTempTables' end end