2015-10-15 87 views
1

我想自动化分离和删除数据库的过程(通过VBS objshell.run)如果我手动使用SSMS分离和放下,我可以然后复制到数据库文件到另一个位置......但是如果我使用:删除数据库但不删除* .mdf/* .ldf

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" 

它分离/下降,然后删除该文件。如何在没有删除的情况下获得分离并删除?

回答

3

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前但从假设我诚实地没用过它如何使用的语法我相信这应该可以帮助你解决你的问题。