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

作者:菇毒 时间:2024-01-27 19:59:23 

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

标签:sqlserver数据库,分离,附加
0
投稿

猜你喜欢

  • MySQL8.0开启远程连接权限的方法步骤

    2024-01-22 14:33:58
  • python 实现语音聊天机器人的示例代码

    2021-03-24 14:36:07
  • Mysql使用索引实现查询优化

    2024-01-16 03:59:35
  • python按行读取文件,去掉每行的换行符\\n的实例

    2022-06-01 03:49:43
  • php ajax异步读取rss文档数据

    2023-10-17 19:59:02
  • Python PyWebIO实现网页版数据查询器

    2023-07-11 20:01:03
  • go GCM gin中间件的加密解密文件流处理

    2024-04-26 17:32:36
  • python绘制双柱形图代码实例

    2022-02-28 19:42:27
  • PyQt5 QTable插入图片并动态更新的实例

    2022-02-11 03:22:43
  • 在Golang中使用http.FileServer返回静态文件的操作

    2024-02-20 07:51:50
  • js实现的全国省市二级联动下拉选择菜单完整实例

    2023-09-09 05:21:01
  • PHP session 会话处理函数

    2023-11-15 14:55:53
  • 设计中基于人类学的田野调查与比较研究法 ——浅谈用研与竞品分析方法之理论基础

    2009-08-31 16:45:00
  • python实现录屏功能(亲测好用)

    2022-01-12 19:54:34
  • 使用urllib库的urlretrieve()方法下载网络文件到本地的方法

    2021-11-27 11:21:08
  • 快速解决Golang Map 并发读写安全的问题

    2024-04-30 10:03:46
  • 浅谈Python中range和xrange的区别

    2021-04-18 14:52:13
  • python中decimal模块的用法

    2021-01-20 06:54:57
  • Python脚本实现格式化css文件

    2023-01-09 19:00:37
  • SQL Server提示"选定的用户拥有对象,所以无法除去该用户”

    2024-01-22 03:35:05
  • asp之家 网络编程 m.aspxhome.com