[英]How to properly detach a MSSQL database
I am trying to copy a MDF file using PowerShell. 我正在尝试使用PowerShell复制MDF文件。
I take the DB offline and detach it using this SQL (based on Detach local database .mdf, copy, attach the new file ): 我使数据库脱机并使用此SQL分离它(基于Detach本地数据库.mdf,复制并附加新文件 ):
USE MASTER;
ALTER DATABASE mydatabase SET OFFLINE WITH ROLLBACK IMMEDIATE;
EXEC sp_detach_db 'mydatabase'
This sometimes gives the following error: 有时会出现以下错误:
Invoke-Sqlcmd : Cannot detach the database'mydatabase' because it is currently in use.
Invoke-Sqlcmd:无法分离数据库“ mydatabase”,因为它当前正在使用中。
How to properly detach the database? 如何正确分离数据库?
Solution is to close outstanding connections to the database by setting it to SINGLE_USER
mode: 解决方案是通过将数据库设置为
SINGLE_USER
模式来关闭与数据库的未完成连接:
USE master;
ALTER DATABASE mydatabase
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
As described here: 如此处所述:
https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-detach-db-transact-sql?view=sql-server-2017 https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-detach-db-transact-sql?view=sql-server-2017
https://docs.microsoft.com/en-us/sql/relational-databases/databases/set-a-database-to-single-user-mode?view=sql-server-2017 https://docs.microsoft.com/en-us/sql/relational-databases/databases/set-a-database-to-single-user-mode?view=sql-server-2017
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.