sql - 删除数据库但不删除 *.mdf/*.ldf

标签 sql sql-server-2008 sqlcmd

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

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

最佳答案

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,但从它的使用语法假设我相信这应该可以帮助您解决问题。

关于sql - 删除数据库但不删除 *.mdf/*.ldf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33154141/

相关文章:

SQL Server : How can I copy data from one table to another table without the characters 'e+' being added to the results

sql - 查询以检查表上的索引

tsql - sqlcmd 未显示 RESTORE 数据库统计信息

xml - 什么是 :XML ON in T-SQL query to export data into XML using SQLCMD?

sql-server - 如何更改 pre-script 中的 SSDT SQLCMD 变量?

mysql - 对多列进行分组的单个列的计数

MySQL 查询 : Aggregation at two different level

SQL Server : Cannot insert an explicit value into a timestamp column

java - 在MySQL中根据条件检索数据

mysql - 当我使用 INNER JOIN 时,MariaDB 没有显示任何结果