這是我的設置。每天一次,我的數據庫的完整備份從生產服務器中檢索並恢復到本地SQL Server實例。每隔15分鐘,就會從生產中檢索SQL事務日誌並在本地恢復。我可以完成還原數據庫備份並在同一存儲過程中查詢該數據庫嗎?
RESTORE DATABASE [DBNAME] from [email protected] with NORECOVERY, REPLACE)
RESTORE LOG [DBNAME] from [email protected] with NORECOVERY
在生產環境中發生故障的情況下,我需要能夠使用本地數據庫來代替。這意味着「完成了恢復」,並改變一些像這樣的配置值:
RESTORE DATABASE [DBNAME] with RECOVERY
UPDATE [DBNAME].dbo.[TABLE] SET [COL1] = 1
我已經把這個代碼在存儲過程(在另一個數據庫上相同的SQL Server實例)。然而,我無法執行它作爲第二行導致錯誤:
Database 'DBNAME' cannot be opened. It is in the middle of a restore.
我認爲,直到執行還原查詢,這是由於前期驗證由SQL Server引擎(因爲DB不可用),但我想知道如何儘可能乾淨地解決它。我找到了一個解決方法,我在下面發佈了一個答案,但它肯定不是解決問題的好方法。
感謝您的幫助!
您可以在單獨的事務中執行還原。 – NickyvV