Windows-Server-2008

重新啟動後 SQL Server 鏡像錯誤的故障轉移伺服器

  • June 13, 2013

我設置了兩台 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

引用自:https://serverfault.com/questions/514143