小编典典

删除数据库,但不要删除* .mdf / * .ldf

sql

我正在尝试自动化分离和删除数据库的过程(通过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"

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


阅读 324

收藏
2021-04-22

共1个答案

小编典典

关于DROP DATABASE的MSDN文档具有这样的说法:删除数据库而不删除文件(在“常规备注”下):

删除数据库将从SQL
Server实例中删除该数据库,并删除该数据库使用的物理磁盘文件。如果数据库或其任何文件在删除时处于脱机状态,则不会删除磁盘文件。可以使用Windows资源管理器手动删除这些文件。
若要从当前服务器中删除数据库而不从文件系统中删除文件,请使用
sp_detach_db

因此,为了使您删除数据库而又不使用sqlcmd删除文件,可以对其进行更改以执行以下操作:

sqlcmd -U sa -P MyPassword -S (local) -Q "EXEC sp_detach_db 'MyDB', 'true'"

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

2021-04-22