1. 概述

若要将数据库移动或更改到同一计算机的不同 SQL Server 实例,分离和附加数据库会很有用;用户可以分离数据库的数据和事务日志文件,再将它们重新附加到同一或其他 SQL Server 实例中;

在 64 位和 32 为环境中,SQL Server 磁盘存储格式均相同,所以,能将 32 位环境中的数据库附加到 64 位环境中,反过来也行;

从运行在某个环境中的服务器实例上分离的数据库可以附加到运行在另一个环境的服务器实例;

注意: 不要从未知或不可信源附加或还原数据库;此类数据库可能包含执行非预期 T-SQL 代码的恶意代码,或通过修改架构或物理数据库结构导致错误;在使用未知源或不可信源中的数据库之前,在非生产服务器中对数据库运行 DBCC CHECKDB,同时检查数据库中的代码;

2. 分离数据库

分离数据库 指从 SQL Server 实例中删除,但使数据库在其数据文件和事物日志文件保持不变;之后,就能使用这些文件将数据库附加到任何 SQL Server 实例,包括分离该数据库的服务器;

若存在以下任何情况,就不能分离数据库;

  1. 已复制并发布的数据库;若进行复制,数据库就必须是未发布的,必须通过运行 sp_replicationdboption 禁用发布后,才能分离数据库;
  2. 数据库中存在数据库快照,必须先删除所有数据库快照,才能分离数据库;
  3. 该数据库正在某个数据库镜像会话中进行镜像,不终止该会话,就不能分离该数据库;
  4. 数据库处于可疑状态;
  5. 该数据库是系统数据库;

2.1 分离数据库的步骤

  1. 在 SSMS 对象资源管理器中连接到 SQL Server 数据库引擎的实例,展开该实例;
  2. 展开数据库,选择要分离的用户数据库名称;
  3. 右击数据库 → 任务 → 分离

SQL Server数据库分离和附加数据库的操作步骤

4.分离数据库对话框,确定;

SQL Server数据库分离和附加数据库的操作步骤

3. 附加数据库

通过 SSMS ,用户同样能附加复制的或分离的 SQL Server 数据库;

注意: 附加数据库时,该数据库必须已分离且所有数据文件(MDF 文件或 NDF 文件)都必须可用;

附加日志文件的要求在某些方面取决于是读写还是只读的;

若读写数据库具有单个日志文件,且没有为该日志文件指定新位置,附加操作将在旧位置中查找该文件;

若找到了该就日志文件,无论数据库上次是否完全关闭,都会使用该文件;但是,若未找到旧文件日志,数据库上次是完全关闭且现在没有活动日志链,则附加操作将尝试为数据创建新的日志文件;

反之,若附加的主数据文件是只读的,则数据库引擎假定该数据库也是只读的;对于只读数据库,日志文件在数据库中指定的位置上必须可用;

从上述内容能看出,用户尝试附加 SQL Server 数据库前,必须具备一定的先决条件,如下所示:

  1. 必须先分离数据库,任何尝试附加未分离的数据库都将返回错误;
  2. 附加数据库时,所有数据文件(MDF 文件和 LDF 文件)都必须可用;若任何数据文件路径不同于首次创建数据库或上次附加数据库时的路径,则必须指定文件的当前路径;
  3. 在附加数据库时,若 MDF 和 LDF 文件位于不同目录且其中一条路径包含 \?\GlobalRoot,该操作将失败;

3.1 附加数据的操作步骤

附加数据库到指定目标上,操作步骤如下:

1.右击数据库附加

2.附加数据库对话框中,若要指定要附加的数据库,可单击添加,在定位数据库文件中选择数据库所在的磁盘驱动器并展开目录,以查找并选择数据的**.mdf** 数据库文件;

SQL Server数据库分离和附加数据库的操作步骤

SQL Server数据库分离和附加数据库的操作步骤

总结 

原文地址:https://blog.csdn.net/weixin_43960383/article/details/124086987

相关文章: