分离数据库
适用于: SQL Server
本文介绍了解如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中分离数据库。 分离后的文件不会被删除,而是保留在文件系统中。 可使用 CREATE DATABASE ... FOR ATTACH
或 FOR ATTACH_REBUILD_LOG
选项重新附加文件。 还可将文件移动到另一个服务器,并将其附加到具有相同或更高版本的实例。
限制
有关限制和局限的列表,请参阅数据库分离和附加 (SQL Server)。
权限
要求具有 db_owner 固定数据库角色中的成员资格。
使用 SQL Server Management Studio
移动数据库之前
如果要移动数据库,请在将它与其现有 SQL Server 实例分离之前,使用“数据库属性”页查看与数据库关联的文件及其当前位置。
在 SQL Server Management Studio 对象资源管理器中,连接到 SQL Server 数据库引擎 实例,再展开该实例。
展开 “数据库”,并选择要分离的用户数据库的名称。
右键单击数据库名称,并选择“属性”。 选择“文件”页,并查看“数据库文件:”表中的条目。
分离、移动和附加之前,请务必考虑与数据库关联的所有文件。 然后,继续执行下一部分中的分离步骤。 若要详细了解如何将数据库附加到新位置,请参阅附加数据库。
分离数据库
在 SQL Server Management Studio 对象资源管理器中,连接到 SQL Server 数据库引擎 实例,再展开该实例。
展开 “数据库”,并选择要分离的用户数据库的名称。
右键单击数据库名称,指向“任务”,然后选择“分离”。 将出现 “分离数据库” 对话框。
要分离的数据库:列出要分离的数据库。
数据库名称:显示要分离的数据库的名称。
删除连接:断开与指定数据库的连接。
注意
不能分离连接为活动状态的数据库。
更新统计信息:默认情况下,分离操作将在分离数据库时保留过期的优化统计信息;若要更新现有的优化统计信息,请选择此复选框。
保留全文目录:默认情况下,分离操作保留所有与数据库关联的全文目录。 若要删除全文目录,请清除 “保留全文目录” 复选框。 只有从 SQL Server 2005 (9.x) 升级数据库时,才会显示此选项。
状态:显示以下状态之一: “就绪”或“未就绪”。
消息:将出现消息列可显示关于数据库的如下信息:
当数据库进行了复制操作,则“状态”为“未就绪”,“消息”列将显示 “已复制数据库”。
如果数据库有一个或多个活动连接,则“状态”为“未就绪”,且“消息”列会显示“<number_of_active_connections> 个活动连接”。 例如:1 个活动连接。 必须选择“删除连接”来断开所有活动连接,然后才可分离数据库。
若要获取消息的详细信息,请选择相应的超链接文本打开活动监视器。
分离数据库准备就绪后,请选择“确定”。
注意
新分离的数据库将一直显示在对象资源管理器的 “数据库” 节点中,直到刷新该视图。 可以随时刷新视图:选择对象资源管理器窗格,然后从菜单栏依次选择“视图”和“刷新”。
使用 Transact-SQL
移动数据库之前
如果要移动数据库,请在将它与其现有 SQL Server 实例分离之前,使用 sys.database_files
系统目录视图查看与数据库关联的文件及其当前位置。 有关详细信息,请参阅 sys.database_files (Transact-SQL)。
在 SQL Server Management Studio 中,选择“新建查询”以打开查询编辑器。
将以下 Transact-SQL 脚本复制到查询编辑器中,然后选择“执行”。 此脚本显示物理数据库文件的位置。 通过分离/附加来移动数据库时,请务必考虑所有文件。
USE [database_name] GO SELECT type_desc, name, physical_name FROM sys.database_files;
分离、移动和附加之前,请务必考虑与数据库关联的所有文件。 然后,继续执行下一部分中的分离步骤。 若要详细了解如何将数据库附加到新位置,请参阅附加数据库。
分离数据库
连接到 数据库引擎。
在标准栏上,选择“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 此示例将分离
AdventureWorks2022
数据库,同时将skipchecks
选项设置为true
。 有关详细信息,请参阅 sp_detach_db。EXEC sp_detach_db 'AdventureWorks2022', 'true';