使用复制数据库向导

您所在的位置:网站首页 眼神迷离是什么原因造成的 使用复制数据库向导

使用复制数据库向导

2023-12-05 06:33| 来源: 网络整理| 查看: 265

使用复制数据库向导 项目 04/15/2023

适用于:SQL Server

复制数据库向导可将数据库和某些服务器对象从一个 SQLServer 实例轻松移动或复制到另一个实例,而且无需服务器停机。 使用此向导可执行以下操作:

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

选择要移动或复制的数据库。

为数据库指定文件位置。

将登录名复制到目标服务器。

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

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

注意

是否考虑迁移到 Azure SQL? 请查看下列工具,而不是“复制数据库”向导:

“迁移到 Azure SQL”指南 Azure 数据库迁移服务 Azure 数据迁移助手 Azure Migrate 服务 限制和局限

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

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

系统数据库(master、model、msdb、tempdb)。

标记为进行复制。

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

将数据或日志文件存储在 Microsoft Azure 存储空间。

使用 FileTables 时,不能在同一服务器上使用复制数据库向导,因为该向导使用同一目录名。

无法将数据库移动或复制到较早版本的 SQL Server。

如果选择 “移动” 选项,则在移动数据库之后,该向导将自动删除源数据库。 如果选择 “复制” 选项,则复制数据库向导不会删除源数据库。 此外,将复制所选服务器对象,而不是将其移至目标;数据库是唯一实际移动的对象。

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

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

如果传输的 SQL Server 代理作业引用目标服务器上尚不存在的数据库,将导致整个操作失败。 向导在创建数据库之前,会尝试创建 SQL Server 代理作业。 解决方法如下:

在目标服务器上创建与要复制或移动的数据库同名的 Shell 数据库。 请参阅 创建数据库。

从“配置目标数据库”页中,选择“删除目标服务器上同名的任何数据库,然后继续传输数据库,覆盖现有数据库文件”。

警告

分离和附加 方法将导致源数据库和目标数据库所有权设置为执行 复制数据库向导的登录名。 若要更改数据库的所有权,请参阅 ALTER AUTHORIZATION (Transact-SQL) 。

如果目标服务器中的 model 数据库包含源数据库中也存在的用户帐户,则复制数据库将失败。 这会创建预期错误,就像创建新数据库时一样,用户会自动从 model 添加到新数据库。 然后,复制数据库步骤无法在目标数据库上创建同名用户。 若要防止此情况,请确保目标服务器上的 model 数据库和复制数据库向导的源数据库没有任何同名用户。 先决条件

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

确保可以从目标服务器访问源服务器上的数据和日志文件目录。

在“分离和附加”方法下,目标服务器上必须存在用于 SQL Server Integration Services (SSIS) 子系统的 SQL Server 代理程序代理,并且该代理具有可访问源服务器和目标服务器的文件系统的凭据。 有关代理的详细信息,请参阅 创建 SQL Server 代理的代理帐户。

重要

在 分离和附加 方法下,如果不使用 Integration Services 代理帐户,复制或移动过程将失败。 在某些情况下,源数据库不会重新附加到源服务器,并将从数据和日志文件中去除所有 NTFS 安全权限。 如果发生这种情况,请导航到你的文件,重新应用相关权限,然后再将数据库重新附加到 SQL Server 实例。

建议

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

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

权限

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

复制数据库向导

在源或目标 SQL Server 实例上,在 SQL Server Management Studio 中通过对象资源管理器启动复制数据库向导,再展开“数据库”。 然后右键单击某个数据库,指向“任务”,再选择“复制数据库”。 如果显示“欢迎使用复制数据库向导”初始页,则选择“下一步”。

选择源服务器

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

源服务器 用于标识想要移动或复制的数据库所在的服务器的名称。 手动输入,或者选择省略号导航到所需的服务器。 该服务器必须至少为 SQL Server 2005。

Use Windows Authentication 允许用户通过 Microsoft Windows 用户帐户进行连接。

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

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

密码 用于输入登录名的密码。 只有在已选择使用 SQL Server 身份验证进行连接的情况下,此选项才可用。

选择目标服务器

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

目标服务器 用于标识想要将数据库移动或复制到的服务器的名称。 手动输入目标服务器名称,或者选择省略号导航到所需的服务器。 该服务器必须至少为 SQL Server 2005。

注意

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

Use Windows Authentication 允许用户通过 Microsoft Windows 用户帐户进行连接。

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

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

密码 用于输入登录名的密码。 只有在已选择使用 SQL Server 身份验证进行连接的情况下,此选项才可用。

选择传输方法

选择“分离和附加”方法或“SQL 管理对象”方法。

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

注意

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

警告

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

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

注意

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

选择数据库

选择要从源服务器移动或复制到目标服务器的数据库。 请查看限制和局限。

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

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

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

状态 显示源数据库的各种信息。

“刷新” 刷新数据库列表。

配置目标数据库

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

源数据库 源数据库的名称。 此文本框不可编辑。

目标数据库 要创建的目标数据库的名称,根据需要进行修改。

目标数据库文件:

Filename 要创建的目标数据库文件的名称,根据需要进行修改。

大小(MB) 目标数据库文件的大小(以兆字节为单位)。

目标文件夹 目标服务器上用于托管目标数据库文件的文件夹,根据需要进行修改。

状态 状态

如果目标数据库已存在: 确定目标数据库已存在时要执行的操作。

如果目标上已存在同名的数据库或文件则停止传输。

删除目标服务器上同名的任何数据库,然后继续传输数据库,覆盖现有数据库文件。

选择服务器对象

只有当源和目标为不同服务器的时候,此页才可用。

可用相关对象 列出可供传输到目标服务器的对象。 若要包含某个对象,请在“可用相关对象”框中选择对象名称,然后单击 按钮,将该对象移动到“所选相关对象”框中>>。

所选相关对象 列出将传输到目标服务器的对象。 若要包含某个对象,请在“所选相关对象”框中选择对象名称,然后单击 按钮,将该对象移动到“可用相关对象”框中。 在“所选相关对象:”面板中,选择“SQL Server 代理作业”的省略号按钮。 在“复制选项”下面,选择“只复制所选作业”。 选中 Jennie's Report的对应框。 选择“确定”。 选择“下一页”。

“源数据库文件的位置”页:选择“源服务器上的文件共享”的省略号按钮,并导航到给定文件夹位置的相应位置。 例如,对于文件夹位置 D:\MSSQL13.MSSQLSERVER\MSSQL\DATA,请对“源服务器上的文件共享”使用 \\Server1\D$\MSSQL13.MSSQLSERVER\MSSQL\DATA。 选择“下一页”。

“配置包”页:在“包名称:”文本框中输入 SalesFromServer1toServer2_Move。 选中“是否保存传输日志?”框。 在“日志记录选项”下拉列表中,选择“文本文件”。 记下“错误日志文件路径”;根据需要进行修改。 选择“下一页”。

注意

“错误日志文件路径”是目标服务器上的路径。

“安排运行包”页:从“Integration Services 代理帐户”下拉列表中选择相关的代理。 选择“下一页”。

“完成该向导”页:查看所选选项的摘要。 选择“上一步”可更改选项。 选择“完成”可执行任务。 在传输过程中,“正在执行操作”页会监视与向导的执行有关的状态信息。

“正在执行操作”页:如果操作成功,请选择“关闭”。 如果操作不成功,请查看错误日志,并且可能需要单击“返回”以便进一步查看。 否则请选择“关闭”。

移动后步骤 请考虑在新主机 Server2上执行以下 T-SQL 语句:

ALTER AUTHORIZATION ON DATABASE::Sales TO sa; GO ALTER DATABASE Sales SET COMPATIBILITY_LEVEL = 130; GO USE [Sales] GO EXEC sp_updatestats; GO

移动后步骤清理 由于 Server1 将移动到其他团队,并且“移动”操作不会重复,因此,请考虑执行以下步骤:

删除 SalesFromServer1toServer2_Move 上的 SSIS 包 Server2。 删除 SalesFromServer1toServer2_Move 上的 SQL Server 代理作业 Server2。 删除 Jennie's Report 上的 SQL Server 代理作业 Server1。 删除 contoso\Jennie 上的登录名 Server1。 B. 使用分离和附加方法将数据库复制到同一实例并设置定期计划。

在本示例中,将复制 Sales 数据库,并在同一实例上将其创建为 SalesCopy。 此后,将每周重新创建一次 SalesCopy。

“选择传输方法”页:查看并维护默认值。 选择“下一页”。

“选择数据库”页:为 Sales 数据库选中“复制”复选框。 选择“下一页”。

“配置目标数据库”页:将“目标数据库”名称更改为 SalesCopy。 根据需要更改“文件名”和“目标文件夹”。 选择“删除目标服务器上同名的任何数据库,然后继续传输数据库,覆盖现有数据库文件”。 选择“下一页”。

“配置包”页:在“包名称:”文本框中输入 SalesCopy Weekly Refresh。 选中“是否保存传输日志?”框。 选择“下一页”。

“安排运行包”页:选择“计划:”单选按钮,然后选择“更改计划”按钮。

“新建作业计划”页:在“名称”文本框中输入“每周星期日”。

选择“确定”。

从“Integration Services 代理帐户”下拉列表中选择相关的代理。 选择“下一页”。

“完成该向导”页:查看所选选项的摘要。 选择“上一步”可更改选项。 选择“完成”可执行任务。 在包创建期间,“正在执行操作”页会监视与向导的执行有关的状态信息。

“正在执行操作”页:如果操作成功,请选择“关闭”。 如果操作不成功,请查看错误日志,并且可能需要单击“返回”以便进一步查看。 否则请选择“关闭”。

手动启动新创建的 SQL Server 代理作业 SalesCopy weekly refresh。 查看作业历史记录,并确保实例上现在存在 SalesCopy 。

跟进:在升级数据库之后

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

升级后,数据库兼容性级别将保持在升级前的兼容性级别,除非新版本不支持以前的兼容性级别。 在这种情况下,升级后的数据库兼容性级别将设置为支持的最低兼容性级别。

例如,如果附加兼容性级别为 90 的数据库,然后将其附加到 SQL Server 2019 (15.x) 的实例,在升级后,兼容性级别设置为 100,这是 SQL Server 2019 (15.x) 中支持的最低兼容性级别。 有关详细信息,请参阅 ALTER DATABASE 兼容性级别 (Transact-SQL)。

复制或移动后的注意事项

请考虑在“复制”或“移动”之后是否要执行以下步骤:

使用分离和附加方法时更改数据库的所有权。 在“移动”后删除源服务器上的服务器对象。 删除由向导在目标服务器上创建的 SSIS 包。 删除由向导在目标服务器上创建的 SQL Server 代理作业。 后续步骤 使用分离和附加来升级数据库 (Transact-SQL) 创建 SQL Server 代理的代理帐户 SQL Server Integration Services


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3