分离 SQL Server 数据库而不删除它?

Jon*_*len 1 sql-server

有没有办法在不删除数据库的情况下分离数据库?

Ali*_*ghi 5

分离数据库将从 Master 管理的数据库内部列表中删除它的条目,但会将文件保留在那里以便重新附加。这通常可能不是最好的做法,但要遵循 MS 文档来分离数据库

您可以执行以下命令,但如果用户连接到实例中的数据库,则可能会失败:

EXEC sp_detach_db 'Databasename', 'true';  
Run Code Online (Sandbox Code Playgroud)

您始终可以运行快速 sp_who2 来查看谁连接到您的数据库或更彻底

select spid, status, loginame, hostname, blocked, db_name(dbid), cmd from master..sysprocesses where db_name(dbid) = 'databasename'
Run Code Online (Sandbox Code Playgroud)

正如 BradC 所回答的那样,使数据库“离线”也是一个不错的选择,它有其自身的优点和缺点。分离会解锁文件,以便您可以在分离时操作文件。请注意,数据库“脱​​机”可能会导致您的脚本或维护任务扫描所有数据库以报告故障。它仍然会“看到”数据库,尝试访问它,但无法访问。通常,我编写的大多数维护脚本都有处理此问题的逻辑,但许多野外人员并不只是注意到这一点。