删除数据库但不要删除 *.mdf / *.ldf
Drop DB but don't delete *.mdf / *.ldf
我正在尝试自动执行分离和删除数据库的过程(通过 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"
它detaches/drops 然后删除文件。如何在没有删除的情况下获得分离和删除?
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,但从它的使用语法来看,我相信这应该可以帮助您解决问题。
可能最好分离数据库而不是删除它?
如果删除数据库,则意味着 delete
但是请注意,这会使您的硬盘上堆满您不再需要的数据库文件 - 几年后,您的继任者将 运行 出 space 并想知道为什么磁盘上全是他不认识的 MDF 文件
使用 SET OFFLINE 代替 SET SINGLE_USER
ALTER DATABASE [DonaldTrump] SET OFFLINE WITH ROLLBACK IMMEDIATE; DROP DATABASE [DonaldTrump];
我正在尝试自动执行分离和删除数据库的过程(通过 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"
它detaches/drops 然后删除文件。如何在没有删除的情况下获得分离和删除?
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,但从它的使用语法来看,我相信这应该可以帮助您解决问题。
可能最好分离数据库而不是删除它? 如果删除数据库,则意味着 delete
但是请注意,这会使您的硬盘上堆满您不再需要的数据库文件 - 几年后,您的继任者将 运行 出 space 并想知道为什么磁盘上全是他不认识的 MDF 文件
使用 SET OFFLINE 代替 SET SINGLE_USER
ALTER DATABASE [DonaldTrump] SET OFFLINE WITH ROLLBACK IMMEDIATE; DROP DATABASE [DonaldTrump];