使用复制数据库向导

通过复制数据库向导,可以方便地将数据库及其对象从一台服务器移动或复制到另一台服务器,而服务器无需停机。 还可以将数据库从以前的 SQL Server 版本升级到 SQL Server 2012。 使用此向导可执行以下操作:

  • 选取源服务器和目标服务器。

  • 选择要移动、复制或升级的数据库。

  • 为数据库指定文件位置。

  • 在目标服务器上创建登录名。

  • 复制其他支持的对象、作业、用户定义的存储过程和错误消息。

  • 计划何时移动或复制数据库。

除了复制数据库,还可以复制关联的元数据,例如 master 数据库的登录名和对象,它们是复制的数据库所必需的。

本主题内容

  • 开始之前:

    限制和局限

    先决条件

    建议

    安全性

  • 使用复制数据库向导:

    复制、移动或升级数据库

  • 跟进,在升级之后:

    在升级 SQL Server 数据库之后

开始之前

限制和局限

  • Express 版中未提供复制数据库向导。

  • 复制数据库向导不能用于复制或移动以下数据库。

    • 系统数据库

    • 为复制操作标记的数据库。

    • 标记为“无法访问”、“正在加载”、“脱机”、“正在恢复”、“可疑”或处于“紧急模式”的数据库。

  • 升级数据库后,它无法降级到以前的版本。

  • 如果选择**“移动”选项,则在移动数据库之后,该向导将自动删除源数据库。 如果选择“复制”**选项,则复制数据库向导不会删除源数据库。

  • 如果使用 SQL Server 管理对象方法移动全文目录,则必须在移动后重新填充索引。

  • 分离和附加方法可分离数据库,移动或复制数据库 .mdf、 .ndf、.ldf 文件,并在新的位置重新附加该数据库。 对于分离和附加方法,若要避免数据丢失或不一致,不能将活动会话附加到正在移动或复制的数据库。 如果存在活动会话,复制数据库向导不会执行移动或复制操作。 对于 SQL Server 管理对象方法,由于数据库从不会脱机,因此允许活动会话。

先决条件

确保在目标服务器上启动了 SQL Server 代理。

建议

  • 为了确保升级后的数据库具有最佳性能,请对升级后的数据库运行 sp_updatestats(更新统计信息)。

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

安全性

权限

您必须是源服务器和目标服务器上 sysadmin 固定服务器角色的成员。

用于“返回首页”链接的箭头图标[返回页首]

复制、移动或升级数据库

  1. 在 SQL Server Management Studio 中的对象资源管理器中,展开**“数据库”,右键单击某个数据库,指向“任务”,然后单击“复制数据库”**。

  2. 从**“选择源服务器”页,指定要移动或复制的数据库所在的服务器并输入登录信息。 在选择身份验证方法并输入登录信息之后,单击“下一步”**即可与源服务器建立连接。 此连接会在整个会话过程中保持打开状态。

    • 源服务器
      选择要移动或复制的数据库所在服务器的名称,或者单击浏览 (...) 按钮查找所需的服务器。 该服务器必须至少为 SQL Server 2005。

    • 使用 Windows 身份验证
      允许用户通过 Microsoft Windows 用户帐户进行连接。

    • 使用 SQL Server 身份验证
      允许用户通过提供 SQL Server 身份验证用户名和密码进行连接。

    • 用户名
      输入连接所使用的用户名。 只有已选择使用 SQL Server 身份验证进行连接时,此选项才可用。

    • 密码
      输入登录名的密码。 只有选择使用 SQL Server 身份验证进行连接时,此选项才可用。

    • 下一步
      连接到服务器并验证用户。 此过程将检查用户是否是所选计算机上 sysadmin 固定服务器角色的成员。

  3. 从**“选择目标服务器”**页,指定数据库移动或复制的目标服务器。 如果将源服务器和目标服务器设置为同一个服务器实例,则将会创建一个数据库的副本。 在此情况下,必须稍后在向导中重命名数据库。 仅当目标服务器上不存在名称冲突时,源数据库名称才能用于复制或移动的数据库。 如果存在名称冲突,则必须在目标服务器上手动解决冲突问题,然后才能在此处使用源数据库名称。

    • 目标服务器
      选择将数据库移动或复制到的服务器的名称,或者单击浏览 (...) 按钮找到目标服务器。

      注意注意

      可以使用群集服务器作为目标;复制数据库向导将确保您只选择群集目标服务器上的共享驱动器。

    • 使用 Windows 身份验证
      允许用户通过 Microsoft Windows 用户帐户进行连接。

    • 使用 SQL Server 身份验证
      允许用户通过提供 SQL Server 身份验证用户名和密码进行连接。

    • 用户名
      输入连接所使用的用户名。 只有选择 SQL Server 身份验证时,此选项才可用。

    • 密码
      输入登录名的密码。 只有选择 SQL Server 身份验证时,此选项才可用。

    • 下一步
      连接到服务器并验证用户。 此过程检查用户是否对所选计算机拥有上述权限。

  4. 从**“选择传输方法”**页,选择传输方法。

    • 使用分离和附加方法
      从源服务器上分离数据库,将数据库文件(.mdf、. ndf 和 .ldf)复制到目标服务器,然后在目标服务器上附加数据库。 此方法通常较快,因为其主要任务只是读取源磁盘和写入目标磁盘。 无需使用 SQL Server 逻辑在数据库中创建对象或创建数据存储结构。 但是,如果数据库包含大量已分配但未使用的空间,此方法会比较慢。 例如,对于一个在创建时分配了 100 MB 空间的几乎为空的新数据库,即使只使用了 5 MB 空间,也会复制全部 100 MB 空间。

      注意注意

      如果使用此方法。用户将无法在传输过程中使用数据库。

    • 如果失败,则重新附加源数据库
      数据库复制之后,原始数据库文件将始终重新附加到源服务器。 如果无法完成数据库移动,请使用此框将原始文件重新附加到源数据库。

    • 使用 SQL 管理对象方法
      此方法读取源数据库上每个数据库对象的定义,在目标数据库上创建每个对象。 然后,它从源表向目标表传输数据,重新创建索引和元数据。

      注意注意

      数据库用户可以在传输过程中继续访问数据库。

  5. 从**“选择数据库”**页,选择要从源服务器移动或复制到目标服务器的数据库。 请参阅本主题“开始之前”一节中的限制和局限。

    • 移动
      将数据库移动到目标服务器。

    • 复制
      将数据库复制到目标服务器。


    • 显示源服务器上的数据库。

    • 状态
      如果数据库可以移动则显示**“确定”**。 否则将显示无法移动该数据库的原因。

    • 刷新
      刷新数据库列表。

    • 下一步
      开始验证过程,然后转到下一屏幕。

  6. 从“配置目标数据库”页,更改数据库名称(如果适用)并指定数据库文件的位置和名称。 在移动或复制每个数据库时都会出现此页。

  7. 从**“选择数据库对象”页,选择要在移动或复制操作中包括的对象。 只有当源和目标为不同服务器的时候,此页才可用。 若要包含某个对象,请在“可用相关对象”框中单击对象名称,再单击 >> 按钮,将对象移动到“所选相关对象”框中。 若要排除某个对象,请在“所选相关对象”框中单击对象名称,再单击 << 按钮,将对象移动到“可用相关对象”框中。 默认情况下,将传输每个所选类型中的所有对象。 若要选择某个类型中的单个对象,请在“所选相关对象”**框中单击该对象类型旁边的省略号按钮。 这将打开一个对话框,您可以从中选择各个对象。

    • 登录名(运行时的所有登录名)
      在移动或复制操作中包括登录名。 默认为选中状态。

    • master 数据库中的存储过程
      在移动或复制操作中包括 master 数据库中的存储过程。

      注意注意

      不能对扩展存储过程及其相关的 DLL 进行自动复制。

    • SQL Server 代理作业
      在移动或复制操作中包括 msdb 数据库中的作业。

    • 用户定义的错误消息
      在移动或复制操作中包括用户定义的错误消息。

    • 端点
      包括源数据库中定义的端点。

    • 全文目录
      包括源数据库中的全文目录。

    • SSIS 包
      包括源数据库中定义的 SSIS 包。

    • 说明
      对象的说明。

  8. 从**“源数据库文件的位置”**页,指定源服务器上包含数据库文件的文件系统共享。 如果源服务器实例和目标服务器实例位于不同的计算机上,这是必需的。

    • 数据库
      显示正在移动的每个数据库的名称。

    • 文件夹位置
      指定文件系统上源数据库文件所在的位置。

      例如:C:\Program Files\Microsoft SQL Server\MSSQL110.MSSQLSERVER\MSSQL\DATA

    • 源服务器上的文件共享
      指定源数据库文件的位置作为文件共享的路径。

      例如:"\\server_name\C$\Program Files\Microsoft SQL Server\MSSQL110.MSSQLSERVER\MSSQL\Data

  9. 复制数据库向导将创建一个要传输数据库的 SSIS 包。从**“配置包”**页,对包进行自定义(如果适用)。

    • 包位置
      显示 SSIS 包的写入位置。

    • 包名称
      输入 SSIS 包的名称。

    • 日志记录选项
      选择是将日志记录信息存储在 Windows 事件日志中还是文本文件中。

    • 错误日志文件路径
      提供日志文件位置的路径。 只有在选择了文本文件日志记录选项后,才能使用此选项。

  10. 从**“安排运行包”**页,指定希望何时启动移动操作或复制操作。 如果您不是系统管理员,必须指定有权访问 Integration Services (SSIS) 包执行子系统的 SQL Server 代理的代理帐户。

    • 立即运行
      在单击**“下一步”**后启动移动操作或复制操作。

    • 计划
      以后启动移动操作或复制操作。 当前的计划设置显示在说明框中。 若要更改该计划,请单击**“更改”**。

    • 更改
      打开**“新建作业计划”**对话框。

    • Integration Services 代理帐户
      选择可用的代理帐户。 若要计划传输,则必须至少有一个代理帐户可供用户使用,而且必须将该帐户配置为拥有对**“SQL Server Integration Services 包执行”**子系统的权限。

      若要为 SSIS 包执行创建代理帐户,请在对象资源管理器中,依次展开**“SQL Server 代理”“代理”,再右键单击“执行 SSIS 包”,然后单击“新建代理”**。

      sysadmin 固定服务器角色的成员可以选择**“SQL Server 代理服务帐户”**,该帐户拥有必要的权限。

  11. 从**“完成该向导”页,查看所选选项的摘要。 单击“上一步”可以更改选项。 单击“完成”将创建数据库。 在传输过程中,“正在执行操作”页会监视与“复制数据库向导”**的执行有关的状态信息。

    • 操作
      列出要执行的每项操作。

    • 状态
      指示操作总体来说是成功还是失败。

    • 消息
      提供每个步骤返回的任何消息。

用于“返回首页”链接的箭头图标[返回页首]

跟进:在升级 SQL Server 数据库之后

使用复制数据库向导将数据库从早期版本的 SQL Server 升级到 SQL Server 2012 后,该数据库将立即变为可用,然后自动升级。 如果数据库具有全文索引,升级过程将导入、重置或重新生成它们,具体取决于**“全文升级选项”服务器属性的设置。 如果升级选项设置为“导入”“重新生成”,则全文索引将在升级过程中不可用。 导入可能需要数小时,而重新生成最多可能需要十倍的时间,具体取决于编制索引的数据量。 另请注意,当升级选项设置为“导入”时,如果全文目录不可用,将重新生成关联的全文索引。 有关查看或更改“全文升级选项”**属性设置的信息,请参阅管理和监视服务器实例的全文搜索

如果升级前用户数据库的兼容级别为 90 或 100,升级后将保持相应级别。 如果升级前兼容级别为 80 或更低,则在升级后的数据库中,兼容级别将设置为 90,该级别为 SQL Server 2012 支持的最低兼容级别。 有关详细信息,请参阅 ALTER DATABASE 兼容级别 (Transact-SQL)

用于“返回首页”链接的箭头图标[返回页首]

请参阅

概念

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

创建 SQL Server 代理的代理帐户