如何使用 DBCC CLONEDATABASE 以生成架构和统计信息的唯一副本,用户数据库的 SQL Server 2014 SP2

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 3177838
概要
此更新中引入新的管理命令DBCC CLONEDATABASE (事务处理 SQL) Microsoft SQL Server 2014 Service Pack 2.此命令创建新的数据库,其中包含所有的对象和统计信息,从指定的源数据库的架构。

有关 SQL Server 的服务包
Service pack 具有累积性。每个新服务包中包含以前的服务包,以及任何新的解决办法中的所有修补程序。我们的推荐是应用最新的 service pack 和该 service pack 累积更新。在安装最新的服务包之前不需要安装上一个服务包。查找有关的最新服务包和最新的累积更新的更多信息下面文章中使用表 1。

有关 DBCC CLONEDATABASE
Microsoft 客户支持服务可能会要求您使用DBCC CLONEDATABASE为了调查性能问题与查询优化器生成数据库的复本。

注意:新生成的数据库生成的DBCC CLONEDATABASE可作为生产数据库不支持,主要是为了进行故障排除和诊断。我们建议在创建数据库后分离克隆的数据库。

源数据库的克隆执行以下操作︰
  • 创建一个新的目标数据库作为源,但默认的文件大小为 model 数据库使用相同的文件布局。
  • 创建源数据库的一个内部快照。
  • 将系统元数据从源复制到目标数据库。
  • 将所有对象的所有架构从源都复制到目标数据库。
  • 副本为从源到目标数据库的所有索引的的统计信息。
语法
DBCC CLONEDATABASE (source_database_name, target_database_name)
参数
  • source_database_name

    此参数是数据库的其架构和统计数据需要复制的名称。
  • target_database_name

    此参数是架构和源数据库中的统计信息将被复制到的数据库的名称。将创建此数据库 DBCC CLONEDATABASE 并且不应该存在。
何时使用 DBCC CLONEDATABASE?
DBCC CLONEDATABASE应使用生产数据库的副本创建架构和统计信息来调查的查询性能问题。请注意以下限制和支持的对象︰
  • 限制

    下面的验证由DBCC CLONEDATABASE执行。如果任何验证失败,则该命令将失败。
    • 源数据库必须是用户数据库。不允许使用克隆系统数据库 (主控形状、 型号、 msdb、 tempdb、 分发数据库等)。
    • 源数据库必须联机或不可读。
    • 作为克隆数据库使用相同名称的数据库必须已经存在。
    • 在用户事务中没有的命令。


    如果所有验证都成功, DBCC CLONEDATABASE将运行以下操作︰
    • 创建主数据文件和日志文件
    • 添加辅助 dataspaces
    • 添加辅助文件

    注意:在目标数据库中的所有文件将从模型数据库都继承的大小和增长的设置。文件命名约定︰ 目标数据库的文件的名称将遵循source_file_name _underscore_random 编号约定。如果目标文件夹中已经存在生成的文件名, DBCC CLONEDATABASE将会失败。
  • 内部数据库快照

    DBCC CLONEDATABASE使用源数据库的内部数据库快照执行复制所需的事务一致性。当执行这些命令时,这可以防止锁定和并发问题。如果无法创建快照, DBCC CLONEDATABASE将会失败。

    数据库级锁在下面的复制过程的步骤︰
    • 验证源数据库
    • S 锁获得源数据库
    • 创建源数据库的快照
    • 创建克隆数据库 (这是一个空的数据库模型从继承)
    • 克隆数据库的获取 X 锁
    • 将元数据复制到克隆数据库
    • 释放所有数据库的锁定

    一旦该命令已完成运行时,内部快照将被删除。在克隆数据库的可信DB_CHAINING选项被关闭。
支持的对象。
仅以下对象的架构将被复制到目标数据库。下面的部分中未列出任何对象未复制︰
  • 应用程序角色
  • 可用性组
  • COLUMNSTORE 索引
  • CDB
  • CDC
  • 数据库属性
  • 默认
  • 文件和文件组
  • 函数
  • 索引
  • 登录
  • 分区函数
  • 分区方案
  • 过程
    注意: T-SQL 过程。以本机方式编译的存储的过程和 CLR 过程将不会被复制。
  • 角色
  • 规则
  • 架构
  • 顺序
  • 空间索引
  • 统计信息
  • 同义词

  • 注意: 只有用户和文件流表复制。优化内存的表和文件不会被复制。
  • 触发器
  • 键入
  • 升级的数据库
  • 用户
  • 视图
  • XML 索引
  • XML 架构集合

权限
您必须拥有sysadmin固定服务器角色中的成员资格。
错误日志消息
在克隆过程中,错误日志中记录以下消息︰

时间戳> spid53 数据库克隆的 sourcedb 已开始为 sourcedb_clone 的目标。

时间戳> spid53 启动数据库 sourcedb_clone。

时间戳> spid53 设置数据库选项为 OFF 可信数据库 sourcedb_clone。

时间戳> 数据库 sourcedb_clone' spid53 DB_CHAINING 为 OFF 选项设置数据库。

时间戳> spid53 启动数据库 sourcedb_clone。

时间戳> spid53 数据库 sourcedb_clone 是一个克隆的数据库。克隆的数据库应该使用仅用于诊断并不支持在生产环境中使用。

时间戳> spid53 数据库克隆的 sourcedb 已完成。克隆的数据库是 sourcedb_clone。
数据库属性
添加新的数据库属性IsClone 。如果数据库使用生成的DBCC CLONEDATABASEDATABASEPROPERTYEX (dbname','IsClone')将返回1
示例-创建 AdventureWorks 数据库的克隆
下面的示例执行DBCC CLONEDATABSE对于AdventureWorks数据库。

Transact-SQL -- Generate the clone of AdventureWorks database.    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone);    GO   

参考
了解有关 术语 Microsoft 用于描述软件更新。

属性

文章 ID:3177838 - 上次审阅时间:07/11/2016 17:27:00 - 修订版本: 1.0

Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB3177838 KbMtzh
反馈