SQL Server 计算机间移动数据库
作者:网络转载 发布时间:[ 2014/8/22 10:31:46 ] 推荐标签:数据库 软件开发 SQL Server
关于排序规则的说明
如果您使用备份和还原或附加和分离方法在两个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存储过程来更改登录的默认数据库。
#p#
第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'。上面介绍了如何使用sp_change_users_login存储过程来逐个纠正孤立用户。sp_change_users_login存储过程仅能解决标准的SQL Server登录帐户的孤立用户问题。
3.如果数据库所有者(dbo)被当作孤立用户列出,请在用户数据库中运行下面的代码:exec sp_changedbowner 'sa'此存储过程会将数据库所有者更改为dbo并解决这个问题。要将数据库所有者更改为另一用户,请使用您想使用的用户再次运行sp_changedbowner。
4.如果您的目标服务器运行的是SQL Server 2000 Service Pack 1,则在您执行附加操作或还原操作(或两种操作都执行)后,企业管理器的用户文件夹中的列表中可能没有数据库所有者用户。
5.如果目标服务器上不存在映射到源服务器上的dbo的登录,您在尝试通过企业管理器更改系统管理员(sa)密码时,可能会收到以下错误消息:
错误21776:[SQL-DMO]名称'dbo'在Users集合中没有找到。如果该名称是合法名称,则使用[]来分隔名称的不同部分,然后重试。
警告:如果您再次还原或附加数据库,则数据库用户可能会再次被孤立,这样您必须重复第3步操作。
第4步:如何移动作业、警报和运算符
第4步是可选操作。您可以为源服务器上的所有作业、警报和运算符生成脚本,然后在目标服务器上运行脚本。要移动作业、警报和运算符,请按照下列步骤操作:
1.打开SQL Server企业管理器,然后展开管理文件夹。
2.展开SQL Server代理,然后右键单击警报、作业或运算符。
3.单击所有任务,然后单击生成SQL脚本。对于SQL Server 7.0,请单击为所有作业生成脚本、警报或运算符。
您可以用右键单击选择为所有警报、所有作业或所有运算符生成脚本。
◆您可以将作业、警报和运算符从SQL Server 7.0移到SQL Server 2000,也可以在运行SQL Server 7.0和运行SQL Server 2000计算机之间移动。
◆如果在源服务器上为运算符设置了SQLMail通知,则目标服务器上也必须设置SQLMail,才能具有相同的功能。
第5步:如何移动DTS包
第5步是可选操作。如果DTS包在源服务器上存储在SQL Server中或存储库中,您可以在需要时移动这些包。要在服务器之间移动DTS包,请使用下列方法之一。
方法1
1.在源服务器上将DTS包保存到一个文件中,然后在目标服务器上打开DTS包文件。
2.将目标服务器上的包保存到SQL Server或存储库中。
注意:您必须用单独的文件逐个地移动这些包。
方法2
1.在DTS设计器中打开每个DTS包。
2.在包菜单上,单击另存为。
3.指定目标SQL Server。
注意:在新服务器上,包可能无法正常运行。您可能必须对包进行更改,更改包中任何对旧的源服务器上的连接、文件、数据源、配置文件和其他信息的引用,以便引用新的目标服务器。您必须根据每个包的设计逐个包进行这些更改。
本文中介绍的步骤不移动数据库关系图以及备份与还原历史记录。如果您必须移动这些信息,请移动msdb系统数据库。如果您移动msdb数据库,则不必执行“第4步:如何移动作业、警报和运算符”或“第5步:如何移动DTS包”。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
在测试数据库性能时,需要注意哪些方面的内容?测试管理工具TC数据库报错的原因有哪些?怎么解决?数据库的三大范式以及五大约束编程常用的几种时间戳转换(java .net 数据库)优化mysql数据库的几个步骤数据库并行读取和写入之Python实现深入理解数据库(DB2)缓冲池(BufferPool)国内三大云数据库测试对比预警即预防:6大常见数据库安全漏洞数据库规划、设计与管理数据库-事务的概念SQL Server修改数据库物理文件存在位置使用PHP与SQL搭建可搜索的加密数据库用Python写一个NoSQL数据库详述 SQL 中的数据库操作详述 SQL 中的数据库操作Java面试准备:数据库MySQL性能优化

sales@spasvo.com