这是我的设置。每天一次,我的数据库的完整备份从生产服务器中检索并恢复到本地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