Qaz*_*swe 2 sql sqlcmd sql-server-2008
我正在尝试自动化分离和删除数据库的过程(通过VBS objshell.run)如果我手动使用SSMS分离和删除我可以将数据库文件复制到另一个位置...但是,如果我使用:
sqlcmd -U sa -P MyPassword -S (local) -Q "ALTER DATABASE MyDB set single_user With rollback IMMEDIATE"
Run Code Online (Sandbox Code Playgroud)
然后
sqlcmd -U sa -P MyPassword -S (local) -Q "DROP DATABASE MyDB"
Run Code Online (Sandbox Code Playgroud)
它分离/删除然后删除文件.如何在没有删除的情况下获取分离和删除?
DROP DATABASE上的MSDN文档可以解释如何在不删除文件的情况下删除数据库(在"常规备注"下):
删除数据库会从SQL Server实例中删除数据库,并删除数据库使用的物理磁盘文件.如果数据库或其任何一个文件在删除时处于脱机状态,则不会删除磁盘文件.可以使用Windows资源管理器手动删除这些文件.要从当前服务器中删除数据库而不从文件系统中删除文件,请使用sp_detach_db.
因此,为了让您在不使用sqlcmd删除文件的情况下删除数据库,您可以更改它以执行此操作:
sqlcmd -U sa -P MyPassword -S (local) -Q "EXEC sp_detach_db 'MyDB', 'true'"
Run Code Online (Sandbox Code Playgroud)
免责声明:我老实说以前从未使用过sqlcmd,但是从它的使用方法的语法中假设我认为这可以帮助你解决问题.