每当我在 SQL Server 中恢复数据库备份时,都会出现以下错误:
Msg 3101, Level 16, State 1, Line 1
Exclusive access could not be obtained because the database is in use.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
通常为了解决这个问题,我只需重新启动服务器即可。当我们在开发机器上的本地实例上进行开发时,这很好。但是我们有一些程序员需要访问数据库,以及让每个人编写他们的更改并将其放入的后勤工作颠覆 http://en.wikipedia.org/wiki/Apache_Subversion正在成为一场噩梦。不管怎样,我们简单的解决方案是将其放在办公室的共享服务器上,并偶尔备份服务器,以防有人搞砸数据。
好吧,我搞砸了数据,需要恢复。不幸的是,我办公室里的另一位同事正在处理另一个项目,并且正在使用相同的数据库服务器进行开发。为了友善起见,我想在不重新启动 SQL Server 的情况下进行恢复,并且可能不会中断他的工作。
有没有一种方法可以在 T-SQL 中编写脚本来进行独占访问或删除所有连接?
您可以使用以下命令强制数据库脱机并断开连接:
EXEC sp_dboption N'yourDatabase', N'offline', N'true'
或者你可以
ALTER DATABASE [yourDatabase] SET OFFLINE WITH
ROLLBACK AFTER 60 SECONDS
回滚指定是否正在执行任何操作。在此期限之后,它们将被回滚。所以它提供了一些保护。
抱歉,我没有正确思考/阅读。您可以重新上线并进行备份。 Stack Overflow 上还有一篇帖子T-SQL http://en.wikipedia.org/wiki/Transact-SQL用于删除所有连接而不是先离线的代码片段:SQL Server 的隐藏功能 https://stackoverflow.com/questions/121243/hidden-features-of-sql-server#121927
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)