| • | 在备份过程中时可能有人使用数据库。如果用户在备份完成后对数据库执行 INSERT、UPDATE 或 DELETE 语句,则备份中不会包含这些更改。如果您必须传输所有更改,那么,假如您既执行事务日志备份又执行完整数据库备份,您可以以尽可能短的停止时间来传输这些更改。
| ||||
| • | 目标服务器上的数据库将与源服务器上的数据库大小相同。要减小数据库的大小,您必须在执行备份前压缩源数据库的大小,或者在完成还原后压缩目标数据库的大小。有关更多信息,请参阅 SQL Server 联机丛书的“创建和维护数据库”标题下的“压缩数据库”子主题。 | ||||
| • | 如果您将数据库还原到的文件位置不同于源数据库的文件位置,则必须指定 WITH MOVE 选项。例如,在源服务器上,数据库位于 D:\Mssql\Data 文件夹中。目标服务器没有 D 驱动器,因而您需要将数据库还原到 C:\Mssql\Data 文件夹。 有关如何将数据库还原到其他位置的更多信息,请单击下面的文章编号,以查看 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 的哪种版本。有关更多信息,请参阅本文中的“关于排序规则的说明”一节。 |
| 1. | 使用 sp_detach_db 存储过程分离源服务器上的数据库。您必须将与数据库关联的 .mdf、.ndf 和 .ldf 这三个文件复制到目标服务器上。参见下表中对文件类型的描述:
| ||||||||
| 2. | 使用 sp_attach_db 存储过程将数据库附加到目标服务器上,并指向您在上一步骤中复制到目标服务器的文件。 有关如何使用这些方法的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 224071 (http://support.microsoft.com/kb/224071/) 如何通过使用 SQL Server 中的分离和附加功能将 SQL Server 数据库移到新位置 |
| • | 分离数据库后将无法访问该数据库,并且复制文件时也无法使用该数据库。在进行分离的那一时刻数据库中包含的所有数据都被移动。 |
| • | 在您使用附加或分离方法时,两个服务器上的字符集、排序顺序和 Unicode 整序都必须相同。有关更多信息,请参阅本文中的“关于排序规则的说明”一节。 |
| • | 在传输过程中,可能有人在使用源数据库。如果在传输过程中有人在使用源数据库,您可能会看到传输过程中出现一些阻滞现象。 |
| • | 在您使用导入和导出数据向导时,源服务器与目标服务器的字符集、排序顺序和整序不必相同。 |
| • | 因为源数据库中未使用的空间不会移动,所以目标数据库不必与源数据库一样大。同样,如果您只移动某些对象,则目标数据库也不必与源数据库一样大。 |
| • | SQL Server 7.0 数据转换服务可能无法正确地传输大于 64 KB 的文本和图像数据。但 SQL Server 2000 版本的数据转换服务不存在此问题。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 257425 (http://support.microsoft.com/kb/257425/) FIX:DTS 对象传输不能传输大于 64 KB 的 BLOB 数据 |
| 1. | 查找孤立用户。在目标服务器上打开查询分析器,然后在您移动的用户数据库中运行以下代码: 此过程将列出任何未链接到一个登录帐户的孤立用户。如果没有列出用户,请跳过第 2 步和第 3 步,直接进行第 4 步。 |
| 2. | 解决孤立用户问题。如果一个用户是孤立用户,数据库用户可以成功登录到服务器,但却无权访问数据库。如果您尝试向数据库授予登录访问权,则会因该用户已经存在而出现下列错误消息: Microsoft SQL-DMO (ODBC SQLState:42000) 错误 15023:当前数据库中已存在用户或角色 '%s'。 有关如何解决孤立用户的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 240872 (http://support.microsoft.com/kb/240872/) 如何解决在运行 SQL Server 的服务器之间移动数据库时的权限问题 此文章介绍如何将登录映射到数据库用户,以及如何解决标准的 SQL Server 登录和集成登录产生的孤立用户。 274188 (http://support.microsoft.com/kb/274188/) PRB:联机丛书中的“孤立用户疑难解答”主题不完整 上面的文章介绍了如何使用 sp_change_users_login 存储过程来逐个纠正孤立用户。sp_change_users_login 存储过程仅能解决标准的 SQL Server 登录帐户的孤立用户问题。 |
| 3. | 如果数据库所有者 (dbo) 被当作孤立用户列出,请在用户数据库中运行下面的代码: 此存储过程会将数据库所有者更改为 dbo 并解决这个问题。要将数据库所有者更改为另一用户,请使用您想使用的用户再次运行 sp_changedbowner。有关更多信息,请参见 SQL Server 联机丛书的“Transact-SQL 参考”主题中的“sp_changedbowner”子主题。 |
| 4. | 如果您的目标服务器运行的是 SQL Server 2000 Service Pack 1,则在您执行附加操作或还原操作(或两种操作都执行)后,企业管理器的用户文件夹中的列表中可能没有数据库所有者用户。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 305711 (http://support.microsoft.com/kb/305711/) BUG:在企业管理器中没有显示 DBO 用户 |
| 5. | 如果目标服务器上不存在映射到源服务器上的 dbo 的登录,您在尝试通过企业管理器更改系统管理员 (sa) 密码时,可能会收到以下错误消息: 错误 21776:[SQL-DMO] 名称 'dbo' 在 Users 集合中没有找到。如果该名称是合法名称,则使用 [] 来分隔名称的不同部分,然后重试。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 218172 (http://support.microsoft.com/kb/218172/) PRB:在企业管理器中不能更改 SA 密码 |
| • | 要移动作业、警报和运算符,请按照下列步骤操作:
| ||||||
| • | 您可以将作业、警报和运算符从 SQL Server 7.0 移到 SQL Server 2000,也可以在运行 SQL Server 7.0 和运行 SQL Server 2000 计算机之间移动。 | ||||||
| • | 如果在源服务器上为运算符设置了 SQLMail 通知,则目标服务器上也必须设置 SQLMail,才能具有相同的功能。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 263556 (http://support.microsoft.com/kb/263556/) INF:如何配置 SQL Mail |
| 1. | 在源服务器上将 DTS 包保存到一个文件中,然后在目标服务器上打开 DTS 包文件。 |
| 2. | 将目标服务器上的包保存到 SQL Server 或存储库中。 注意:您必须用单独的文件逐个地移动这些包。 |
| 1. | 在 DTS 设计器中打开每个 DTS 包。 |
| 2. | 在包菜单上,单击另存为。 |
| 3. | 指定目标 SQL Server。 |