我正在尝试自动化分离和删除数据库的过程(通过 VBS objshell.run)如果我手动使用 SSMS 分离和删除我可以将数据库文件复制到另一个位置...但是如果我使用:
sqlcmd -U sa -P MyPassword -S (local) -Q "ALTER DATABASE MyDB set single_user With rollback IMMEDIATE"
then
sqlcmd -U sa -P MyPassword -S (local) -Q "DROP DATABASE MyDB"
它分离/删除然后删除文件。如何在不删除的情况下分离并删除?
MSDN 文档上删除数据库 https://msdn.microsoft.com/en-us/library/ms178613.aspx关于删除数据库而不删除文件有这样的说法(在“一般说明”下):
删除数据库将从 SQL Server 实例中删除该数据库,并删除该数据库使用的物理磁盘文件。如果数据库或其任何一个文件在删除时处于脱机状态,则不会删除磁盘文件。可以使用 Windows 资源管理器手动删除这些文件。要从当前服务器中删除数据库而不从文件系统中删除文件,请使用sp_detach_db https://msdn.microsoft.com/en-us/library/ms188031.aspx.
因此,为了让您删除数据库而不用 sqlcmd 删除文件,您可以将其更改为执行以下操作:
sqlcmd -U sa -P MyPassword -S (local) -Q "EXEC sp_detach_db 'MyDB', 'true'"
免责声明:老实说,我以前从未使用过 sqlcmd,但从它的使用语法来看,我相信这应该可以帮助您解决问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)