技术开发 频道

使用分离和附加来升级SQL Server

  【IT168 技术文档】在SQL Server 2008 中,可以使用分离和附加操作将用户数据库从 SQL Server 2000 或 SQL Server 2005 升级。将 SQL Server 2005 或 SQL Server 2000 数据库附加到 SQL Server 2008 后,该数据库将立即变为可用,然后会自动进行升级。

  但是,存在下列限制:

  不能附加使用 SQL Server 2000 或 SQL Server 2005 创建的 master、model 或 msdb 数据库的副本。

  附加复制的而不是分离的复制数据库时:

  如果将该数据库附加到同一服务器实例的升级版本中,则必须在附加操作完成后执行 sp_vupgrade_replication 来升级复制数据库。

  如果将该数据库附加到不同的服务器实例中(不考虑版本),则必须在附加操作完成后执行 sp_removedbreplication 来删除复制数据库。

  当对从 SQL Server 2000 升级到 SQL Server 2008 的数据库使用 APPLY、PIVOT、TABLESAMPLE 或 UNPIVOT 关键字时,必须将数据库的兼容级别设置为 100。
  重要提示:
  在 SQL Server 2000 Service Pack 3 (SP3) 和 SQL Server 的更高版本中,附加和分离操作可以通过将数据库的 cross db ownership chaining 选项设置为 0 来禁用数据库的跨数据库所有权链接。

  全文索引升级选项

  注意:
  将 SQL Server 2005 或 SQL Server 2000 数据库附加到 SQL Server 2008 后,该数据库将立即变为可用,然后会自动进行升级。如果数据库具有全文索引,升级过程将导入、重置或重新生成它们,具体取决于 upgrade_option 服务器属性的设置。如果将升级选项设置为“导入”(upgrade_option = 2) 或“重新生成”(upgrade_option = 0),在升级过程中将无法使用全文索引。根据编制索引的数据量,导入可能需要数小时,而重新生成最多可能需要十倍的时间。另请注意,如果将升级选项设置为“导入”,并且全文目录不可用,则会重新生成关联的全文索引。若要更改 upgrade_option 服务器属性的设置,请使用 sp_fulltext_service。

  步骤

  使用分离和附加来升级数据库
  使用 sp_detach_db 存储过程从 SQL Server 7.0 或 SQL Server 2000 实例分离数据库。

  注意:
  在 SQL Server 2005 中,此存储过程具有新的选项。

  (可选)移动所分离的数据库文件和日志文件。

  即使希望创建新的日志文件,也应该将日志文件与数据文件一起移动。在某些情况下,重新附加数据库需要使用其现有的日志文件。因此,除非在不使用分离日志文件的情况下可以成功附加数据库,否则,请始终保留所有分离的日志文件。

  注意:
  如果尝试在不指定日志文件的情况下附加数据库,则附加操作将会在日志文件的原始位置中查找文件。如果该位置仍存在日志文件的原始副本,则附加该副本。若要避免使用原始日志文件,请指定新日志文件的路径,或在日志文件复制到新位置之后,删除其原始副本。

  使用带有 FOR ATTACH 或 FOR ATTACH_REBUILD_LOG 选项的 CREATE DATABASE 语句,将复制的文件附加到 SQL Server 2005 实例。

  注意:
  建议您对已升级的数据库运行 DBCC UPDATEUSAGE。

  在 SQL Server 的早期版本中,用于表和索引行计数以及页计数的值可能不正确。因此,根据 SQL Server 2005 之前的版本创建的数据库可能包含错误的计数。将数据库升级到 SQL Server 2005 之后,建议您运行 DBCC UPDATEUSAGE 以更正所有无效的计数。此 DBCC 语句可更正表或索引中每个分区的行数、已用页数、保留页数、叶级页数以及数据页数。

  (可选)如果是复制数据库(而不是移动数据库),则可以使用 sp_attach_db 或 sp_attach_single_file_db 存储过程重新附加 SQL Server 7.0 或 SQL Server 2000 实例上的原始数据库。

  升级后的数据库兼容级别

  升级后,tempdb、model、msdb 和 Resource 数据库的兼容级别将设置为 100。master 系统数据库保留它在升级之前的兼容级别,除非该级别小于 80。如果 master 的兼容级别在升级前小于 80,升级后兼容级别将设置为 80。

  如果升级前用户数据库的兼容级别为 80 或 90,升级后将保持相应级别。如果升级前兼容级别为 70 或更低,则在升级后的数据库中,兼容级别将设置为 80,该级别为 SQL Server 2008 支持的最低兼容级别。

  注意:
  新的用户数据库将继承 model 数据库的兼容级别。

0
相关文章