如何在运行 SQL Server 的计算机之间移动数据库
发布时间:2023-02-17 09:50:46 所属栏目:MsSql 来源:互联网
导读:本文分步介绍了如何在运行 sql Server 的计算机之间移动 Microsoft sql Server 用户数据库和大多数常见的 sql Server 组件。 本文中介绍的步骤假定您不移动 master、model、tempdb 或 msdb 这些系统数据库。这些步骤为您传输登录以及master 和 msdb 数据库中
本文分步介绍了如何在运行 sql Server 的计算机之间移动 Microsoft sql Server 用户数据库和大多数常见的 sql Server 组件。 本文中介绍的步骤假定您不移动 master、model、tempdb 或 msdb 这些系统数据库。这些步骤为您传输登录以及master 和 msdb 数据库中包含的大多数常见组件提供了多个选项。 有关执行本文中介绍的步骤时未传输的特定项目的信息,请参阅本文中的“更多信息”一节。 注意:支持将数据从 sql Server 2000 迁移到 Microsoft sql Server 2000(64 位)。您可以将一个 32 位数据库附加到一个 64 位数据库上,方法是:使用 sp_attach_db 系统存储过程或 sp_attach_single_file_db 系统存储过程,或者使用 32 位企业管理器中的备份和还原功能。您可以在 sql Server 的 32 位和 64 位两种版本之间来回移动数据库。您还可以使用同样的方法从 sql Server 7.0 迁移数据。但是,不支持将数据从 sql Server 2000(64 位)降级到 sql Server 7.0。 下面分别介绍这几种方法。 如果您使用的是 sql Server 2005 您可以使用相同的方法从 sql Server 7.0 或 sql Server 2000 迁移数据。但是,Microsoft sql Server 2005 中的管理工具与 sql Server 7.0 或 sql Server 2000 中的管理工具有所不同。您应该使用 sql Server Management Studio(而不是 sql Server 企业管理器)以及 sql Server 导入和导出向导 (DTSWizard.exe)(而不是数据转换服务导入和导出数据向导)。 备份和还原 在源服务器上备份用户数据库,然后将用户数据库还原到目标服务器上。 •在备份过程中时可能有人使用数据库。如果用户在备份完成后对数据库执行 INSERT、UPDATE 或 DELETE 语句,则备份中不会包含这些更改。如果您必须传输所有更改,那么,假如您既执行事务日志备份又执行完整数据库备份,您可以以尽可能短的停止时间来传输这些更改。 1.在目标服务器上还原完整数据库备份,并指定 WITH norECOVERY 选项。 注意:为防止对数据库做进一步的修改,请指导用户在源服务器上退出数据库活动。 2.执行事务日志备份,然后使用 WITH RECOVERY 选项将事务日志备份还原到目标服务器上。停止时间仅限于事务日志备份和恢复的时间。有关更多信息,请参阅 sql Server 联机丛书的“Transact-sql 参考”主题中的“还原”子主题。 •目标服务器上的数据库将与源服务器上的数据库大小相同。要减小数据库的大小,您必须在执行备份前压缩源数据库的大小,或者在完成还原后压缩目标数据库的大小。有关更多信息,请参阅 sql Server 联机丛书的“创建和维护数据库”标题下的“压缩数据库”子主题。 •如果您将数据库还原到的文件位置不同于源数据库的文件位置,则必须指定 WITH MOVE 选项。例如,在源服务器上,数据库位于 D:MssqlData 文件夹中。目标服务器没有 D 驱动器,因而您需要将数据库还原到 C:MssqlData 文件夹。 有关如何将数据库还原到其他位置的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 221465 (http://support.microsoft.com/kb/221465/) INF:结合使用 WITH MOVE 选项和 RESTORE 语句 304692 (http://support.microsoft.com/kb/304692/) INF:使用 BACKUP 和 RESTORE 将 sql Server 7.0 数据库移到新的位置 •如果您想覆盖目标服务器上的一个现有数据库,则必须指定 WITH REPLACE 选项。有关更多信息,请参阅 sql Server 联机丛书的“Transact-sql 参考”主题中的“还原”子主题。 •源服务器和目标服务器上的字符集、排序顺序和 Unicode 整序可能必须相同,具体取决于您要还原到 sql Server 的哪种版本。有关更多信息,请参阅本文中的“关于排序规则的说明”一节。 Sp_detach_db 和 Sp_attach_db 存储过程 要使用 sp_detach_db 和 sp_attach_db 这两个存储过程,请按下列步骤操作: 1.使用 sp_detach_db 存储过程分离源服务器上的数据库。您必须将与数据库关联的 .mdf、.ndf 和 .ldf 这三个文件复制到目标服务器上。参见下表中对文件类型的描述: 文件扩展名说明 .mdf主要数据文件 .ndf辅助数据文件 .ldf事务日志文件 2.使用 sp_attach_db 存储过程将数据库附加到目标服务器上,并指向您在上一步骤中复制到目标服务器的文件。 有关如何使用这些方法的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 224071 (http://support.microsoft.com/kb/224071/) 如何通过使用 sql Server 中的分离和附加功能将 sql Server 数据库移到新位置 •分离数据库后将无法访问该数据库,并且复制文件时也无法使用该数据库。在进行分离的那一时刻数据库中包含的所有数据都被移动。 •在您使用附加或分离方法时,两个服务器上的字符集、排序顺序和 Unicode 整序都必须相同。有关更多信息,请参阅本文中的“关于排序规则的说明”一节。 关于排序规则的说明 如果您使用备份和还原或附加和分离方法在两个 sql Server 7.0 服务器之间移动数据库,则两个服务器上的字符集、排序顺序和 Unicode 整序都必须相同。如果您将数据库从 sql Server 7.0 移到 sql Server 2000,或者在不同的 sql Server 2000 服务器之间移动数据库,则数据库将保留源数据库的整序。这意味着,如果运行 sql Server 2000 的目标服务器的整序与源数据库的整序不同,则目标数据库的整序也将与目标服务器的 master、model、tempdb 和 msdb 数据库的整序不同。有关更多信息,请参见 sql Server 2000 联机丛书中的“混合整序环境”主题。 导入和导出数据(在 sql Server 数据库之间复制对象和数据) 您可以使用数据转换服务导入和导出数据向导来复制整个数据库或有选择地将源数据库中的对象和数据复制到目标数据库。 •在传输过程中,可能有人在使用源数据库。如果在传输过程中有人在使用源数据库,您可能会看到传输过程中出现一些阻滞现象。 •在您使用导入和导出数据向导时,源服务器与目标服务器的字符集、排序顺序和整序不必相同。 •因为源数据库中未使用的空间不会移动,所以目标数据库不必与源数据库一样大。同样,如果您只移动某些对象,则目标数据库也不必与源数据库一样大。 •sql Server 7.0 数据转换服务可能无法正确地传输大于 64 KB 的文本和图像数据。但 sql Server 2000 版本的数据转换服务不存在此问题。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 257425 (http://support.microsoft.com/kb/257425/) FIX:DTS 对象传输不能传输大于 64 KB 的 BLOB 数据 第 2 步:如何传输登录和密码 如果您不将源服务器中的登录传输到目标服务器,当前的 sql Server 用户就无法登录到目标服务器。您可以按照下面的 Microsoft 知识库文章中的说明来传输登录和密码: 246133 (http://support.microsoft.com/kb/246133/) 如何在 sql Server 实例之间传输登录和密码 目标服务器上的登录的默认数据库可能与源服务器上的登录的默认数据库不同。您可以使用 sp_defaultdb 存储过程来更改登录的默认数据库。有关更多信息,请参见 sql Server 联机丛书中的“Transact-sql 参考”主题的“sp_defaultdb”子主题。 第 3 步:如何解决孤立用户 在您向目标服务器传输登录和密码后,用户可能还无法访问数据库。登录与用户是靠安全识别符 (SID) 关联在一起的;在您移动数据库后,如果 SID 不一致,sql Server 可能会拒绝用户访问数据库。此问题称为孤立用户。如果您使用 sql Server 2000 DTS 传输登录功能来传输登录和密码,就可能会产生孤立用户。此外,被允许访问与源服务器处于不同域中的目标服务器的集成登录帐户,也会导致出现孤立用户。 1.查找孤立用户。在目标服务器上打开查询分析器,然后在您移动的用户数据库中运行以下代码: exec sp_change_users_login 'Report' 此过程将列出任何未链接到一个登录帐户的孤立用户。如果没有列出用户,请跳过第 2 步和第 3 步,直接进行第 4 步。 2.解决孤立用户问题。如果一个用户是孤立用户,数据库用户可以成功登录到服务器,但却无权访问数据库。如果您尝试向数据库授予登录访问权,则会因该用户已经存在而出现下列错误消息: Microsoft sql-DMO (ODBC sqlState:42000) 错误 15023:当前数据库中已存在用户或角色 '%s'。 有关如何解决孤立用户的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 240872 (http://support.microsoft.com/kb/240872/) 如何解决在运行 sql Server 的服务器之间移动数据库时的权限问题 此文章介绍如何将登录映射到数据库用户,以及如何解决标准的 sql Server 登录和集成登录产生的孤立用户。 (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |