防止在存储过程中恢复其他数据库

时间:2013-11-25 19:30:47

标签: sql-server stored-procedures database-restore

假设服务器上有两个Sql Server数据库,即备份和分析。备份处于待机模式,并定期应用日志。 Analysis上有一个长时间运行的存储过程,用于访问Backup中的表。如果备份在存储过程中进入还原,则存储过程失败。 (我不关心存储过程开始时备份已经在恢复中的情况。)

有许多方法可以解决此问题,例如计划存储过程和还原以便在同一时间段内不发生或将存储过程分解为较小的存储过程。但是,我想要做的是在整个存储过程的持续时间内阻止Backup进入恢复(可能是通过阻止恢复进程获得独占访问)。我尝试在存储过程中调用Backup.sys.sp_getapplock来获取并保持应用程序锁定,但这并不妨碍恢复。

我有什么办法可以做到这一点吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果您在备份上使用日志传送,则将其设置为仅在没有用户与数据库的连接时应用t-logs。 http://technet.microsoft.com/en-us/library/ms189572(v=sql.105).aspx

  

您可以选择不断开用户连接。在这种情况下,还原作业   如果,则无法将事务日志备份还原到辅助数据库   有用户连接到该数据库。事务日志备份   将累积,直到没有用户连接到数据库。