在我的集成测试期间,我尝试使用以下方法删除数据库:
USE master
ALTER DATABASE TestXyz SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE TestXyz
然而,很多时候(考虑到测试的数量)应用程序后台进程之一设法在SET SINGLE_USER
和之间DROP DATABASE
,这使得它成为数据库的单一用户并打破DROP
.
我不能使用RESTRICTED_USER
,因为应用程序当前有db_owner
权限(由于大量遗留代码,其中一些需要它,所以它不会仅仅为了测试而改变)。
我不能使用OFFLINE
,因为它不会从磁盘中删除数据库文件。
你将如何解决这个问题?