使用复制数据库向导

使用复制数据库向导,可以轻松地将数据库及其对象从一台服务器移动到另一台服务器,且不会造成服务器停机。 还可以将数据库从以前的 SQL Server 版本升级到 SQL Server 2014。 使用此向导,可以执行以下操作:

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

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

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

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

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

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

除了复制数据库之外,还可以从复制的数据库所需的 master 数据库中复制关联的元数据,例如登录名和对象。

本主题内容

在您开始之前

局限性与限制

  • 复制数据库向导在 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 的新且实际为空的数据库会复制整个 100 MB,即使只有 5 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 2014 后,该数据库将立即可用并自动升级。 如果数据库具有全文检索,升级过程将导入、重置或重新生成它们,具体取决于 全文升级选项 服务器属性的设置。 如果将升级选项设置为“导入”或“重新生成”,在升级过程中将无法使用全文检索。 根据要编制索引的数据量,导入可能需要几个小时,重新生成可能需要长达 10 倍的时间。 另请注意,当升级选项设置为“导入”时,如果全文目录不可用,将重新生成关联的全文检索。 有关查看或更改“全文升级选项”属性设置的信息,请参阅管理和监视服务器实例的全文搜索

如果在升级前用户数据库的兼容级别为 100 或更高版本,则升级后仍保持不变。 如果升级后的数据库中兼容级别为 90,则兼容性级别设置为 100,这是 SQL Server 2014 中支持的最低兼容级别。 有关详细信息,请参阅 ALTER DATABASE 兼容性级别 (Transact-SQL)

另请参阅

使用分离和附加升级数据库(Transact-SQL)
创建 SQL Server 代理