运行SQL Server的电脑之间移动数据库

2008-02-23 07:39:16来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

本文分步介绍了如何在运行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选项将事务日志备份还原到目标服务器上。停止时间仅限于事务日志备份和恢复的时间。

◆目标服务器上的数据库将和源服务器上的数据库大小相同。要减小数据库的大小,您必须在执行备份前压缩源数据库的大小,或在完成还原后压缩目标数据库的大小。

◆假如您将数据库还原到的文档位置不同于源数据库的文档位置,则必须指定WITH MOVE选项。例如,在源服务器上,数据库位于D:MssqlData文档夹中。目标服务器没有D驱动器,因而您需要将数据库还原到C:MssqlData文档夹。有关如何将数据库还原到其他位置的更多信息,请查看相关资料。

◆假如您想覆盖目标服务器上的一个现有数据库,则必须指定WITH REPLACE选项。

◆源服务器和目标服务器上的字符集、排序顺序和Unicode整序可能必须相同,具体取决于您要还原到SQL Server的哪种版本。有关更多信息,请参阅本文中的“关于排序规则的说明”一节。

Sp_detach_db和Sp_attach_db存储过程

要使用sp_detach_db和sp_attach_db这两个存储过程,请按下列步骤操作:

1.使用sp_detach_db存储过程分离源服务器上的数据库。您必须将和数据库关联的.mdf、.ndf和.ldf这三个文档复制到目标服务器上。参见下表中对文档类型的描述: 


2.使用sp_attach_db存储过程将数据库附加到目标服务器上,并指向您在上一步骤中复制到目标服务器的文档。

◆分离数据库后将无法访问该数据库,并且复制文档时也无法使用该数据库。在进行分离的那一时刻数据库中包含的任何数据都被移动。

◆在您使用附加或分离方法时,两个服务器上的字符集、排序顺序和Unicode整序都必须相同。有关更多信息,请参阅本文中的“关于排序规则的说明”一节。

关于排序规则的说明

假如您使用备份和还原或附加和分离方法在两个SQL Server 7.0服务器之间移动数据库,则两个服务器上的字符集、排序顺序和Unicode整序都必须相同。假如您将数据库从SQL Server 7.0移到SQL Server 2000,或在不同的SQL Server 2000服务器之间移动数据库,则数据库将保留源数据库的整序。这意味着,假如运行SQL Server 2000的目标服务器的整序和源数据库的整序不同,则目标数据库的整序也将和目标服务器的master、model、tempdb和msdb数据库的整序不同。

第1步:导入和导出数据:(在SQL Server数据库之间复制对象和数据)

您能够使用数据转换服务导入和导出数据向导来复制整个数据库或有选择地将源数据库中的对象和数据复制到目标数据库。在传输过程中,可能有人在使用源数据库。假如在传输过程中有人在使用源数据库,您可能会看到传输过程中出现一些阻滞现象。

◆在您使用导入和导出数据向导时,源服务器和目标服务器的字符集、排序顺序和整序不必相同。

◆因为源数据库中未使用的空间不会移动,所以目标数据库不必和源数据库相同大。同样,假如您只移动某些对象,则目标数据库也不必和源数据库相同大。

◆SQL Server 7.0数据转换服务可能无法正确地传输大于64KB的文本和图像数据。但SQL Server 2000版本的数据转换服务不存在此问题。

第2步:如何传输登录和密码:

假如您不将源服务器中的登录传输到目标服务器,当前的SQL Server用户就无法登录到目标服务器。目标服务器上的登录的默认数据库可能和源服务器上的登录的默认数据库不同。您能够使用sp_defaultdb存储过程来更改登录的默认数据库。

第3步:如何解决孤立用户:

在您向目标服务器传输登录和密码后,用户可能还无法访问数据库。登录和用户是靠安全识别符(SID)关联在一起的;在您移动数据库后,假如SID不一致,SQL Server可能会拒绝用户访问数据库。此问题称为孤立用户。假如您使用SQL Server 2000 DTS传输登录功能来传输登录和密码,就可能会产生孤立用户。此外,被允许访问和源服务器处于不同域中的目标服务器的集成登录帐户,也会导致出现孤立用户。

1.查找孤立用户。在目标服务器上打开查询分析器,然后在您移动的用户数据库中运行以下代码:exec sp_change_users_login 'Report'

此过程将列出任何未链接到一个登录帐户的孤立用户。假如没有列出用户,请跳过第2步和第3步,直接进行第4步。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: MySQL关系数据库系统IF查询处理远程拒绝服务漏洞

下一篇: jsp从数据库取得数据作为下拉菜单选项的实现