数据库分离和附加 (SQL Server)

  • 2018/11/2

    • 适用对象:SQL ServerAzure SQL 数据库Azure SQL 数据仓库并行数据仓库

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

      Security

      文件访问权限可在很多数据库操作过程中设置,其中包括分离或附加数据库。

      重要

      建议您不要附加或还原来自未知或不可信源的数据库。 此类数据库可能包含恶意代码,这些代码可能会执行非预期的 Transact-SQL 代码,或者通过修改架构或物理数据库结构导致错误。
      使用来自未知源或不可信源的数据库前,请在非生产服务器上针对数据库运行 DBCC CHECKDB ,然后检查数据库中的代码,例如存储过程或其他用户定义代码。

      分离数据库

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

      如果存在下列任何情况,则不能分离数据库:

      • 已复制并发布数据库。 如果进行复制,则数据库必须是未发布的。 必须通过运行 sp_replicationdboption禁用发布后,才能分离数据库。

        备注

        如果无法使用 sp_replicationdboption,可以通过运行 sp_removedbreplication删除复制。

      • 数据库中存在数据库快照。

        必须首先删除所有数据库快照,然后才能分离数据库。 有关详细信息,请参阅 删除数据库快照 (Transact-SQL)实例。

        备注

        不能分离或附加数据库快照。

      • 该数据库正在某个数据库镜像会话中进行镜像。

        除非终止该会话,否则无法分离该数据库。 有关详细信息,请参阅 删除数据库镜像 (SQL Server)。

      • 数据库处于可疑状态。 无法分离可疑数据库;必须将数据库设为紧急模式,才能对其进行分离。 有关如何将数据库置于紧急模式下的详细信息,请参阅 ALTER DATABASE (Transact-SQL)。

      • 数据库为系统数据库。

      备份、还原及分离

      分离只读数据库将会丢失有关差异备份的差异基准的信息。 有关详细信息,请参阅 差异备份 (SQL Server)。

      响应分离错误

      分离数据库时生成的错误会阻止完全关闭数据库和重新生成事务日志。 收到错误消息后,请执行下列更正操作:

      1. 重新附加与数据库关联的所有文件,而不仅仅是主文件。

      2. 解决导致生成错误消息的问题。

      3. 再次分离数据库。

      附加数据库

      您可以附加复制的或分离的 SQL Server 数据库。 当将包含全文目录文件的 SQL Server 2005 (9.x) 数据库附加到 SQL Server 2017 服务器实例上时,会将目录文件从其以前的位置与其他数据库文件一起附加,这与 SQL Server 2005 (9.x)中的情况相同。 有关详细信息,请参阅 全文搜索升级。

      附加数据库时,所有数据文件(MDF 文件和 NDF 文件)都必须可用。 如果任何数据文件的路径不同于首次创建数据库或上次附加数据库时的路径,则必须指定文件的当前路径。

      备注

      如果附加的主数据文件是只读的,则 数据库引擎 假定数据库也是只读的。

      当加密的数据库首次附加到 SQL Server 实例时,数据库所有者必须通过执行下面的语句打开数据库的主密钥:OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'。 建议通过执行下面的语句对主密钥启用自动解密:ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY。 有关详细信息,请参阅 CREATE MASTER KEY (Transact-SQL) 和 ALTER MASTER KEY (Transact-SQL)。

      附加日志文件的要求在某些方面取决于数据库是读写的还是只读的,如下所示:

      • 对于读写数据库,通常可以附加新位置中的日志文件。 不过,在某些情况下,重新附加数据库需要使用其现有的日志文件。 因此,请务必保留所有分离的日志文件,直到在不需要这些日志文件的情况下成功附加了数据库。

        如果读写数据库具有单个日志文件,并且您没有为该日志文件指定新位置,附加操作将在旧位置中查找该文件。 如果找到了旧日志文件,则无论数据库上次是否完全关闭,都将使用该文件。 但是,如果未找到旧文件日志,数据库上次是完全关闭且现在没有活动日志链,则附加操作将尝试为数据库创建新的日志文件。

      • 如果附加的主数据文件是只读的,则 数据库引擎 假定数据库也是只读的。 对于只读数据库,日志文件在数据库主文件中指定的位置上必须可用。 因为 SQL Server 无法更新主文件中存储的日志位置,所以无法生成新的日志文件。

      附加数据库时的元数据更改

      分离再重新附加只读数据库后,会丢失有关当前差异基准的备份信息。 “差异基准” 是数据库或其文件或文件组子集中所有数据的最新完整备份。 如果没有基准备份信息,master 数据库会变得与只读数据库不同步,这样之后进行的差异备份可能会产生意外结果。 因此,如果对只读数据库使用差异备份,在重新附加数据库后,应通过进行完整备份来建立新的差异基准。 有关差异备份的信息,请参阅差异备份 (SQL Server)。

      附加时,数据库会启动。 通常,附加数据库时会将数据库重置为它分离或复制时的状态。 但是,附加和分离操作都会禁用数据库的跨数据库所有权链接。 有关如何启用链接的详细信息,请参阅 cross db ownership chaining 服务器配置选项。

      重要

      为安全起见,,默认情况下,每当附加数据库时,is_broker_enabled、is_honoor_broker_priority_on 和 is_trustworthy_on 的选项均设置为 OFF。 有关如何将这些选项设置为 ON 的详细信息,请参阅 ALTER DATABASE (Transact-SQL)。 有关元数据的详细信息,请参阅使数据库在其他服务器上可用时管理元数据。

      备份、还原及附加

      与任何完全或部分脱机的数据库一样,不能附加正在还原文件的数据库。 如果停止了还原顺序,则可以附加数据库。 然后,可以重新启动还原顺序。

      将数据库附加到其他服务器实例

      重要

      无法在早期版本的 SQL Server 中附加由较新版本的 SQL Server 创建的数据库。 这将阻止数据库被旧版本的 数据库引擎 物理使用。 但是,这与元数据状态相关且不会影响数据库兼容性级别。 有关详细信息,请参阅 ALTER DATABASE 兼容级别 (Transact-SQL)。

      将数据库附加到其他服务器实例时,为了给用户和应用程序提供一致的体验,您最好在其他服务器实例上为数据库重新创建部分或全部元数据(例如登录名和作业)。 有关详细信息,请参阅使数据库在其他服务器实例上可用时管理元数据 (SQL Server)。

      相关任务

      分离数据库

      • sp_detach_db (Transact-SQL)

      • 分离数据库

      附加数据库

      • CREATE DATABASE (SQL Server Transact-SQL)

      • 附加数据库

      • sp_attach_db (Transact-SQL)

      • sp_attach_single_file_db (Transact-SQL)

      使用分离和附加操作升级数据库

      • 使用分离和附加来升级数据库 (Transact-SQL)

      使用分离和附加操作移动数据库

      • 使用分离和附加来移动数据库 (Transact-SQL)

      删除数据库快照

      • 删除数据库快照 (Transact-SQL)

      另请参阅

数据库分离和附加 (SQL Server)相关推荐

  1. mysql数据库的分离_数据库分离和附加 (SQL Server)

    数据库分离和附加 (SQL Server)Database Detach and Attach (SQL Server) 06/30/2020 本文内容 适用于:Applies to: SQL Ser ...

  2. linux 附加数据库文件,SQL Server 数据库分离与附加图文详解

    SQL Server 数据库分离与附加图文教程,需要的朋友可以参考一下. 一.概述 SQL Server提供了"分离/附加"数据库."备份/还原"数据库.复制数 ...

  3. SQL Server数据库分离与附加

    分离和附加是数据库管理员常用的操作之一,可以将数据库移到其他SQL Server实例或者位置进行保存. 一.分离数据库 将数据库从SQL Server实例中删除,但是数据库在其数据文件和事务日志文件中 ...

  4. SQL Server 数据库分离与附加(图文教程)

    SQL Server 数据库分离与附加(图文教程),需要的朋友可以参考一下 一.概述 SQL Server提供了"分离/附加"数据库."备份/还原"数据库.复制 ...

  5. sql附加服务器数据库文件夹,快速开发平台企业版--后台SqlServer更换服务器,可以用数据库分离与附加方法重新启动...

    这个方法涉及到SQL Server分离数据库和附加数据库这两个互逆操作工具. 1.分离数据库就是将某个数据库(如student_Mis)从SQL Server数据库列表中删除,使其不再被SQL Ser ...

  6. MSSQL Server2000数据库分离与附加

    本篇文章由 泉州SEO www.234yp.com 整理发布,mssql是什么 www.234yp.com/Article/168173.html 谢谢合作! mssql是什么 如果您数据库系统安装在 ...

  7. SQLServer2019数据库分离、附加操作

    SQLSERVER采用 .MDF文件保存数据库的主要数据,采用 .LDF文件保存日志文件.那么它们能不能像windows 其他文件一样(例如 word文档),进行复制.粘贴,将数据库从一台机器移到另一 ...

  8. SQLServer2008数据库分离与附加

    1.分离数据库就是将某个数据库(如student_Mis)从SQL Server数据库列表中删除,使其不再被SQL Server管理和使用,但该数据库的文件(.MDF)和对应的日志文件(.LDF)完好 ...

  9. mysql bak 还原数据库文件格式_Navicat操作SQL server 2008R2文件.bak文件还原

    项目操作过程中,利用Navicat操作SQL Server2008R2数据备份,结果发现数据丢失了很多,不得不先对数据丢失部分进行差异对比,然后再重新输入. 1.利用Navicat导出的数据格式为sq ...

最新文章

  1. 面了小 100 人,90% 都背了面试题......
  2. 从零开始教你训练神经网络(附公式学习资源)
  3. robotframework调用python类方法_RobotFramework-调用.py文件
  4. 微服务开发及部署_基于 Kubernetes 的微服务部署即代码
  5. 雪城大学信息安全讲义 五、竞态条件
  6. VMware vCenter升级杂谈
  7. php 性能日志,php性能分析之php-fpm慢执行日志slow log用法浅析
  8. L3-012 水果忍者 (30 分)-PAT 团体程序设计天梯赛 GPLT
  9. 定时器Cron 表达式解析工具
  10. 图形界面 I: 图形界面的动画 (第三章)
  11. 如何把一张照片的像素提高_能够充分提高照片像素的方法!
  12. 2021哔哩哔哩1024程序员节日第二弹:安全攻防挑战赛
  13. springboot学习:bean生命周期
  14. 搜索引擎lucene点滴
  15. windows突破百度云上传限速
  16. 【str家族】如何使用处理字符和字符串的库函数
  17. 2022Java面试题大全(整理版)面试题附答案详解,最全面详细,看完稳了
  18. 滤波器的抽头系数、通带、阻带、过渡带
  19. VAIO系统自带的娱乐媒体应用软件
  20. 迭代函数系统matlab实现,线性随机IFS迭代Matlab示例程序.doc

热门文章

  1. Apache[多后缀文件名解析漏洞+换行解析漏洞+SSI远程命令执行漏洞]复现
  2. C语言编程:扑克牌魔术
  3. VS Code代码高亮颜色设置
  4. springboot整合amazonS3,封装上传文件接口
  5. 服务器搭建hifi系统,初入烧友如何搭配好一套HIFI音响系统?只需要5点轻松搞定~...
  6. Sivers Semiconductors 与 Richardson RFPD 签署全球分销协议
  7. 【KMRE全新升级】玩法更多、应用更全、体验更好
  8. linux确定刻录机目录,2021年推荐的5款Linux系统最佳CD刻录机
  9. 入冬最冷的上海——致在外漂泊的孩子
  10. Android驱动开发之earlysuspend睡眠模式--实现代码