我正在尝试自动执行分离和删除数据库的过程(通过 VBS objshell.run)如果我手动使用 SSMS 进行分离和删除,然后我可以将数据库文件复制到另一个位置...但是,如果我使用:

sqlcmd -U sa -P MyPassword -S (local) -Q "ALTER DATABASE MyDB set single_user With rollback IMMEDIATE" 

然后
sqlcmd -U sa -P MyPassword -S (local) -Q "DROP DATABASE MyDB" 

它分离/删除然后删除文件。如何在不删除的情况下进行分离和删除?

请您参考如下方法:

DROP DATABASE 上的 MSDN 文档有关于删除数据库而不删除文件的说法(在一般备注下):

Dropping a database deletes the database from an instance of SQL Server and deletes the physical disk files used by the database. If the database or any one of its files is offline when it is dropped, the disk files are not deleted. These files can be deleted manually by using Windows Explorer. To remove a database from the current server without deleting the files from the file system, use sp_detach_db.



因此,为了让您在不使用 sqlcmd 删除文件的情况下删除数据库,您可以将其更改为:
sqlcmd -U sa -P MyPassword -S (local) -Q "EXEC sp_detach_db 'MyDB', 'true'" 

免责声明:老实说,我以前从未使用过 sqlcmd,但从它的使用语法假设我相信这应该可以帮助您解决问题。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!