升级复制数据库时的注意事项

SQL Server 2008 支持从 SQL Server 的早期版本升级复制数据库;在升级某一节点时,不需要停止其他节点的活动。请务必遵守有关拓扑中支持哪些版本的规则:

  • SQL Server 2000 Service Pack 3 (SP3) 是参与 SQL Server 2008 的复制拓扑必需的最低版本。如果使用的是 SQL Server 2005,则没有必需的最低版本。

  • 分发服务器的版本可以是高于或等于发布服务器版本的任何版本(在许多情况下,分发服务器与发布服务器是同一个实例)。

  • 发布服务器的版本可以是低于或等于分发服务器版本的任何版本。

  • 订阅服务器版本取决于发布的类型:

    • 用于事务发布的订阅服务器版本可以是两个发布服务器版本中的任何一个版本。例如,SQL Server 2000 发布服务器可以对应 SQL Server 2008 订阅服务器,而 SQL Server 2008 发布服务器可以对应 SQL Server 2000 订阅服务器。

    • 合并发布的订阅服务器版本可以是低于或等于发布服务器版本的任何版本。

注意注意

在“安装帮助”文档和 SQL Server 联机丛书中可以查看此主题。对于“安装帮助”文档中显示为粗体文本的主题链接来说,所指向的主题仅在联机丛书中提供。

在升级前先运行用于事务复制的日志读取器代理

升级到 SQL Server 2008 之前,必须确保已发布表的所有已提交事务已由日志读取器代理进行了处理。若要确保所有事务均得到处理,请针对包含事务发布的每个数据库执行以下步骤:

  1. 确保针对数据库运行了日志读取器代理。默认情况下,该代理会连续运行。

  2. 停止已发布表上的用户活动。

  3. 日志读取器代理和分发代理支持事务读取和提交操作的批大小。

  4. 执行 sp_replcmds 以验证所有事务是否得到了处理。此过程的结果集应为空。

  5. 执行 sp_replflush 以关闭与 sp_replcmds 的连接。

  6. 将服务器升级到 SQL Server 2008。

  7. 如果在升级后 SQL Server 代理和日志读取器代理没有自动启动,请重新启动它们。

升级后运行用于合并复制的代理

升级后,请为每一个合并发布运行快照代理,并为每一个订阅运行合并代理,以更新复制元数据。因为不必重新初始化订阅,所以不需要应用新快照。升级后首次运行合并代理时,将更新订阅元数据。这表明发布服务器升级时订阅数据库可以保持在线状态和活动状态。

合并复制将发布和订阅元数据存储在发布和订阅数据库中的若干系统表中。运行快照代理将更新发布元数据,而运行合并代理将更新订阅元数据。只需生成发布快照。如果合并发布使用参数化筛选器,则每一个分区也都有快照。不必更新这些分区快照。(在 SQL Server 2000 中,“参数化筛选器”称为“动态筛选器”,“分区快照”称为“动态快照”)。

从 SQL Server Management Studio、复制监视器或命令行运行代理。有关运行快照代理的详细信息,请参阅下列主题:

有关运行合并代理的详细信息,请参阅下列主题:

在使用合并复制的拓扑中升级 SQL Server 之后,如果要使用新功能,请更改所有发布的发布兼容级别。有关详细信息,请参阅在复制拓扑中使用 SQL Server 的多个版本

升级至 Standard Edition、Workgroup Edition 或 Express Edition

在从 SQL Server 2008 的某一版本升级到另一版本之前,请验证要升级到的版本是否支持当前使用的功能。有关详细信息,请参阅主题 SQL Server 2008 各个版本支持的功能中的“SQL Server 2008 复制功能”部分。

新的复制代理安全模式

在版本低于 SQL Server 2005 的 SQL Server 中,默认情况下,代理在 SQL Server 2005 代理服务帐户的上下文中运行。对于在运行复制代理和建立与数据库及其他资源的 Windows 集成连接时所使用的每个帐户,SQL Server 引入了更细粒度的控制;可为每个代理指定一个不同的帐户。有关详细信息,请参阅安全性和保护(复制)复制代理安全性模式

新的安全模式对于在拓扑中升级和运行 SQL Server 2000 具有下列含义:

  • 从 SQL Server 2000 中创建的复制脚本应针对 SQL Server 2008 进行升级,以便利用安全性增强。有关详细信息,请参阅如何升级复制脚本(复制 Transact-SQL 编程)

  • 从 SQL Server 2000 升级到 SQL Server 2008 的分发服务器或订阅服务器在 SQL Server 代理帐户下可继续运行,并且所拥有的权限很可能比需要的多。建议您在升级后,为具有相应最低权限的代理指定单独的帐户。指定单独的帐户:

    1. 编写发布和订阅脚本。

    2. 对脚本进行更改。有关详细信息,请参阅如何升级复制脚本(复制 Transact-SQL 编程)

    3. 删除发布和订阅。有关详细信息,请参阅发布数据和数据库对象订阅发布

    4. 使用修改后的脚本重新创建发布和订阅。

    有关代理所需权限的信息,请参阅复制代理安全性模式;有关管理登录名和密码的信息,请参阅管理复制中的登录名和密码。升级后创建的新复制配置要求每一个复制代理具有特定的帐户配置。

    注意注意

    任何配置为使用 SQL Server 身份验证进行本地数据库连接的代理都改用 Windows 身份验证。本地连接是指代理与它所在的同一台计算机上运行的 SQL Server 实例之间建立的连接。例如,请求订阅的合并代理运行在订阅服务器上,因此它与订阅服务器建立的连接是本地连接。

  • 对于运行 SQL Server 早期版本的复制拓扑的参与者,原复制安全模式保持不变。例如:

    • 因为合并代理或分发是在订阅服务器上创建的,所以对运行 SQL Server 2000 的订阅服务器的请求订阅不使用新的安全模式。

    • 因为合并代理或分发是在分发服务器上创建的,所以从运行 SQL Server 2008 的分发服务器到运行 SQL Server 2000 的订阅服务器的推送订阅使用新的安全模式。

    • 因为代理是在发布数据库的上下文中创建的,所以运行 SQL Server 2000 的发布服务器与运行 SQL Server 2008 的分发服务器不使用新安全模式(对于快照代理、日志读取器代理或队列读取器代理)。

  • SQL Server 2005 和 SQL Server 2008 使用相同的安全模式。

合并复制的 Web 同步

合并复制的 Web 同步选项要求将 SQL Server 复制侦听器 (replisapi.dll) 复制到用于同步的 Internet Information Services (IIS) 服务器上的虚拟目录中。配置 Web 同步时,该文件被配置 Web 同步向导复制到虚拟目录中。若要升级安装在 IIS 服务器上的 SQL Server 组件,必须将 replisapi.dll 从 COM 目录手动复制到 IIS 服务器上的虚拟目录。有关配置 Web 同步的详细信息,请参阅配置 Web 同步

从早期版本还原复制的数据库

在从早期版本还原复制数据库的备份时,若要确保保留复制设置:请还原到与创建备份的服务器和数据库同名的服务器和数据库。