这不是解决方案本身的问题,我试图理解Management Studio中一个非常奇怪的行为。
我完全理解在事务下不能执行BACKUP和RESTORE数据库以及SET IMPLICIT_TRANSACTIONS ON的含义是什么。
所以我做了一个实验:
执行了BACKUP并且失败并显示消息
Msg 3021,Level 16,State 0,Line 7 无法在事务中执行备份或还原操作。 Msg 3013,Level 16,State 1,Line 7 BACKUP DATABASE异常终止。
更改回master不会消除错误消息
我的问题是 - 为什么它允许在连接后立即执行BACKUP并在更改数据库后失败?
答案 0 :(得分:2)
BACKUP can not be in a transaction
在显式或隐式事务中不允许使用BACKUP语句。
当您从master更改数据库时,您将发出SET IMPLICIT_TRANSACTIONS ON中所述的命令之一(使用SQL Profiler查看)并创建事务。
根据经验(没有实际检查!)它将是一个用于Intellisense或对象资源管理器的SELECT或获取一些其他MetaData。我也猜测像Intellisense这样的东西不用于系统数据库(我把该死的东西关掉并使用第三方工具)所以最初不会发生这种情况
由于您仍处于交易中而发生后续错误