扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:天新网 2008年04月30日
关键字:SQL Server SQL Mssql 数据库
第 2 步:如何传输登录和密码
第 3 步:如何解决孤立用户
在您向目标服务器传输登录和密码后,用户可能还无法访问数据库。登录与用户是靠安全识别符 (SID) 关联在一起的;在您移动数据库后,如果 SID 不一致,SQL Server 可能会拒绝用户访问数据库。此问题
1. 查找孤立用户。在目标服务器上打开查询分析器,然后在您移动的用户数据库中运行以下代码:
exec sp_change_users_login "Report"
此过程将列出任何未链接到一个登录帐户的孤立用户。如果没有列出用户,请跳过第 2 步和第 3 步,直接进行第 4 步。
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。
5. 如果目标服务器上不存在映射到源服务器上的 dbo 的登录,您在尝试通过企业管理器更改系统管理员 (sa) 密码时,可能会收到以下错误消息:
错误 21776:[SQL-DMO] 名称 "dbo" 在 Users 集合中没有找到。如果该名称是合法名称,则使用 [] 来分隔名称的不同部分,然后重试。
警告:如果您再次还原或附加数据库,则数据库用户可能会再次被孤立,这样您就必须重复第 3 步操作。
第 4 步:如何移动作业、警报和运算符
第 4 步是可选操作。您可以为源服务器上的所有作业、警报和运算符生成脚本,然后在目标服务器上运行脚本。• 要移动作业、警报和运算符,请按照下列步骤操作:
1. 打开 SQL Server 企业管理器,然后展开管理文件夹。
2. 展开 SQL Server 代理,然后右键单击警报、作业或运算符。
3. 单击所有任务,然后单击生成 SQL 脚本。对于 SQL Server 7.0,请单击为所有作业生成脚本、警报或运算符。
您可以用右键单击选择为所有警报、所有作业或所有运算符生成脚本。
• 如果在源服务器上为运算符设置了 SQLMail 通知,则目标服务器上也必须设置 SQLMail,才能具有相同的功能。
第 5 步:如何移动 DTS 包
第 5 步是可选操作。如果 DTS 包在源服务器上存储在 SQL Server 中或存储库中,您可以在需要时移动这些包。要在服务器之间移动 DTS 包,请使用下列方法之一。
方法 1
1. 在源服务器上将 DTS 包保存到一个文件中,然后在目标服务器上打开 DTS 包文件。
2. 将目标服务器上的包保存到 SQL Server 或存储库中。
注意:您必须用单独的文件逐个地移动这些包。
方法 2
2. 在包菜单上,单击另存为。
3. 指定目标 SQL Server。
本文中介绍的步骤不移动数据库关系图以及备份与还原历史记录。如果您必须移动这些信息,请移动 msdb 系统数据库。如果您移动 msdb 数据库,则不必执行“第 4 步:如何移动作业、警报和运算符”或“第 5 步:如何移动 DTS 包”。
概要
如果您使用的是 SQL Server 2005
备份和还原
在源服务器上备份用户数据库,然后将用户数据库还原到目标服务器上。• 在备份过程中时可能有人使用数据库。如果用户在备份完成后对数据库执行 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 数据库的整序不同。
第一步:导入和导出数据(在 SQL Server 数据库之间复制对象和数据)
您可以使用数据转换服务导入和导出数据向导来复制整个数据库或有选择地将源数据库中的对象和数据复制到目标数据库。• 在传输过程中,可能有人在使用源数据库。如果在传输过程中有人在使用源数据库,您可能会看到传输过程中出现一些阻滞现象。
• 在您使用导入和导出数据向导时,源服务器与目标服务器的字符集、排序顺序和整序不必相同。
• 因为源数据库中未使用的空间不会移动,所以目标数据库不必与源数据库一样大。同样,如果您只移动某些对象,则目标数据库也不必与源数据库一样大。
• SQL Server 7.0 数据转换服务可能无法正确地传输大于 64 KB 的文本和图像数据。但 SQL Server 2000 版本的数据转换服务不存在此问题。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。