在复制拓扑中使用 SQL Server 的多个版本

更新日期: 2007 年 9 月 15 日

复制支持将数据复制到 Microsoft SQL Server 的不同版本。 此主题包括:

  • 支持的 SQL Server 版本
  • 为早期版本映射 SQL Server 2005 数据类型
  • 从早期版本还原复制的数据库
  • 合并发布的兼容级别

有关将数据复制到 Microsoft SQL Server 2005 Express Edition 和 Microsoft SQL Server Compact Edition 的信息,请参阅将数据复制到 SQL Server Express向 SQL Server Compact Edition 复制数据。 有关 SQL Server 各版本所支持功能的信息,请参阅 SQL Server 2005 的各种版本所支持的功能

ms143241.note(zh-cn,SQL.90).gif注意:
在“安装帮助”文档和 SQL Server 2005 联机丛书中可以查看此主题。 对于“安装帮助”文档中显示为粗体文本的主题链接,所指向的主题仅在 联机丛书中提供。

支持的 SQL Server 版本

使用 SQL Server 2005 时,SQL Server 7.0 版 Service Pack 4 (SP4) 是可参与复制拓扑的最早版本。 如果使用的是 SQL Server 2000,则需要 SP3 或更高版本。

在不同版本的 SQL Server 之间复制时,常常受限于所用的最早版本的功能。 例如,如果将分发服务器升级到 SQL Server 2005 实例,但有运行 SQL Server 2000 实例的发布服务器和运行 SQL Server 7.0 实例的订阅服务器,那么您将只能使用 SQL Server 7.0 的常规功能和复制功能。

ms143241.note(zh-cn,SQL.90).gif注意:
因为 SQL Server 磁盘存储格式在 64 位和 32 位环境中是相同的,所以一个复制拓扑可以将在 32 位环境中运行的服务器实例与在 64 位环境中运行的服务器实例组合在一起。

对于所有类型的复制,分发服务器版本不得早于发布服务器版本(在许多情况下,分发服务器是与发布服务器相同的实例)。 您可以使用 SQL Server 2005 作为 SQL Server 2005 和 SQL Server 2000 的远程分发服务器,但不能作为 SQL Server 7.0 的远程分发服务器。 下表提供了有关 SQL Server 的哪些版本可以参与同一拓扑的附加信息。 有关在 SQL Server 的各种版本中所支持的复制功能的详细信息,请参阅 SQL Server 2005 的各种版本所支持的功能

使用只读订阅服务器的事务复制和快照复制

分发服务器

SQL Server 7.0

SQL Server 2000

SQL Server 2005

发布服务器

SQL Server 7.0

SQL Server 7.0

SQL Server 2000

SQL Server 2000

SQL Server 2005

订阅服务器

SQL Server 7.0

SQL Server 2000

SQL Server 2005

SQL Server 7.0

SQL Server 2000

SQL Server 2005

SQL Server 7.0

SQL Server 2000

SQL Server 2005

上表显示了事务发布的只读订阅服务器版本可以是两个发布服务器版本中的任何一个版本。 例如,SQL Server 7.0 发布服务器可以对应 SQL Server 2005 订阅服务器,而 SQL Server 2005 发布服务器可以对应 SQL Server 7.0 订阅服务器。

使用更新订阅服务器的事务复制

分发服务器

SQL Server 7.0

SQL Server 2000

SQL Server 2005

发布服务器

SQL Server 7.01

SQL Server 7.01

SQL Server 20002

SQL Server 20002

SQL Server 20053

订阅服务器

SQL Server 7.0

SQL Server 7.0

SQL Server 2000

SQL Server 2005

SQL Server 7.0

SQL Server 2000

SQL Server 2005

1 对于 SQL Server 7.0 发布服务器,仅支持 SQL Server 7.0 订阅服务器。

2 对于 SQL Server 2000 发布服务器,支持 SQL Server 7.0、SQL Server 2000 和 SQL Server 2005 订阅服务器。

3 对于 SQL Server 2005 发布服务器,支持 SQL Server 2000 和 SQL Server 2005 订阅服务器。

合并复制

分发服务器

SQL Server 7.0

SQL Server 2000

SQL Server 2005

发布服务器

SQL Server 7.0

SQL Server 7.0

SQL Server 2000

SQL Server 2000

SQL Server 2005

订阅服务器

SQL Server 7.0

SQL Server 7.0

SQL Server 2000

SQL Server 7.0

SQL Server 2000

SQL Server 2005

上表显示用于合并发布的订阅服务器的版本不能比发布服务器版本高。 有关早期版本兼容性的详细信息,请参阅本主题中的“合并发布的兼容级别”。

SQL Server 7.0 和 SQL Server Management Studio

SQL Server Management Studio 可以连接至运行 SQL Server 2000 或更高版本的实例。 对于运行 SQL Server 7.0 的订阅服务器:

  • 可以用 SQL Server 7.0 工具、SQL Server 2000 工具、SQL 分布式管理对象 (SQL-DMO) 或存储过程创建订阅和发布。
  • 无法从 Management Studio 或复制监视器启动请求订阅代理。 可以在创建订阅时指定代理按计划运行,也可以按需从命令提示符运行代理。

运行 SQL Server 7.0 的订阅服务器的订阅在创建后确实会出现在 Management Studio 和复制监视器中。 有关创建订阅和发布以及运行代理的信息,请参阅 SQL Server 7.0 联机丛书。

与运行 SQL Server 2000 的发布服务器一起使用 SQL Server 2005 分发服务器

可以使用 SQL Server 2005 作为运行 SQL Server 2000 的发布服务器的远程分发服务器。 若要更改此方案中的代理属性,请在分发服务器上执行以下存储过程。 用这些过程可以更改 SQL Server 2005 中的新增属性:

如果您有运行 SQL Server 2000 的发布服务器和分发服务器,则可使用 sp_changedistpublishersp_changesubscriber 更改代理建立连接时所使用的凭据。 但是,如果将分发服务器升级到 SQL Server 2005,则不能使用这些过程更改现有代理作业中使用的凭据(这些过程确实影响调用过程后创建的代理作业)。 为了更改现有代理作业的凭据,请调用上面列出的四个过程之一。

为早期版本映射 SQL Server 2005 数据类型

SQL Server 2005 引入了一些新数据类型。 如果使用来自 SQL Server 2005 分发服务器的推送订阅,则将这些新数据类型映射到订阅服务器上的兼容数据类型。

SQL Server 2005 数据类型 SQL Server 2000 或 SQL Server 7.0 数据类型

xml

ntext

CLR 用户定义类型 (UDT)

image

varchar(max)

text

nvarchar(max)

ntext

varbinary(max)

image

如果将 varchar(max)nvarchar(max)varbinary(max)xmlL 和 CLR 用户定义类型复制到运行 SQL Server 早期版本的订阅服务器(这对于合并发布中的项目是默认操作),则必须验证这些类型是否被正确映射。 这些类型的映射行为由 sp_addarticlesp_addmergearticle 的架构选项 0x200x100000000x20000000 控制。 有关设置架构选项的详细信息,请参阅如何指定架构选项 (SQL Server Management Studio)How to: Specify Schema Options (Replication Transact-SQL Programming)

SQL Server 2000 引入了两个映射到 SQL Server 7.0 兼容数据类型的数据类型。 如果使用来自 SQL Server 2005 或 SQL Server 2000 分发服务器的推送订阅,则将这些新数据类型映射到订阅服务器上的兼容数据类型。

SQL Server 2005 或 SQL Server 2000 数据类型 SQL Server 7.0 数据类型

SQL_VARIANT

IMAGE

BIGINT

DECIMAL

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

从早期版本还原复制数据库的备份时,可以保留复制设置。 如果要将备份还原到与进行备份的服务器和数据库同名的服务器和数据库,或者如果指定了 KEEP_REPLICATION 选项,则将保留复制设置。 有关详细信息,请参阅 RESTORE (Transact-SQL)。 还原数据库后,请执行 sp_vupgrade_replication (Transact-SQL) 以升级架构和系统数据,从而支持当前产品级别上的复制。

尽管在从早期版本的备份中还原后可以保留复制,但是复制很少用作升级选项。 作为产品升级的一部分升级复制的数据库或根据一组脚本重新创建数据库和复制配置较为常见。

合并发布的兼容级别

合并复制使用发布兼容级别来确定给定数据库中的发布可以使用哪些功能。 值的范围是从 70RTM(未安装 service pack 的 SQL Server 7.0)到 90RTM。 通过以下方式指定兼容级别:

下列功能要求 90RTM 或更高的兼容级别:

以下功能不依赖兼容级别,但的确需要随 SQL Server 2005 一起提供的合并代理;运行 SQL Server 早期版本的订阅服务器可以像未启用该功能一样工作:

SQL Server 2005 中的发布兼容级别行为

了解发布兼容级别的行为十分重要:

  • 发布兼容级别与数据库兼容级别无关。
  • 如果用 sp_addmergepublication 或通过复制管理对象 (RMO) 创建发布,则在默认情况下将发布兼容级别设置为 80RTM。 如果在新建发布向导中创建发布,则根据在向导的**“订阅服务器类型”**页上选择的选项来确定发布兼容级别。
  • 在 SQL Server 的早期版本中,如果启用了需要更高级别的功能,则发布兼容级别会自动增加。 在 SQL Server 2005 中,必须先将发布兼容级别手动设置为 90RTM,然后才能启用要求该兼容级别的功能。
    如果从 SQL Server 7.0 升级发布服务器,然后选择一个或多个要求 80RTM 兼容级别的功能,则兼容级别自动提高。
  • 仅当快照代理尚未启动且不存在对发布的订阅时,才能降低发布兼容级别。
  • 同一数据库中的所有发布必须具有相同的兼容级别。 此要求有下列优点:
    • 如果数据库所含发布的兼容级别较低(如 80RTM),而且要在同一数据库中添加级别为 90RTM 的另一发布,则必须在添加新发布之前手动提高第一个发布的级别。
    • 如果数据库包含两个或多个兼容级别较低的发布,并且您要在同一数据库中添加另一个级别为 90RTM 的发布,则必须执行以下操作:只保留一个现有发布,其余全部删除;将保留发布的级别提高到 90RTM,将已删除的发布重新创建为级别为 90RTM 的发布;创建级别为 90RTM 的新发布。

请参阅

概念

复制的向后兼容性
升级复制数据库

其他资源

复制增强

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2007 年 9 月 15 日

新增内容:
  • 添加了在 64 位和 32 位环境中 SQL Server 磁盘存储格式均相同的说明。

2006 年 4 月 14 日

更改的内容:
  • 添加了多个表,用于阐明可以在同一复制拓扑中使用哪些版本的 SQL Server。
  • 添加了有关用于映射数据类型架构选项的相关信息。
  • 删除了说明 SQL Server 7.0 可以使用 SQL Server 2005 的实例作为远程分发服务器的信息。 不支持此配置。