Usar varias versiones de SQL Server en una topología de replicación

La replicación admite la replicación de datos en diferentes versiones de SQL Server. Este tema proporciona información acerca de las áreas siguientes:

  • Versiones de SQL Server admitidas

  • Asignar tipos de datos de SQL Server 2008 para versiones anteriores

  • Restaurar una base de datos replicada a partir de una versión anterior

  • Nivel de compatibilidad para publicaciones de combinación

Para obtener información sobre cómo se replican datos en SQL Server Express y SQL Server Compact 3.5 SP1, vea Replicar datos en SQL Server Express y Replicar datos en SQL Server Compact. Para obtener información sobre las características admitidas en cada edición de SQL Server, vea Características compatibles con las ediciones de SQL Server 2008.

Versiones admitidas de SQL Server

SQL Server 2000 y SQL Server 2005 pueden participar en topologías de replicación con SQL Server 2008. Para SQL Server 2000, la versión mínima es Service Pack 3 (SP3). Para SQL Server 2005, la versión mínima es Service Pack 2 (SP2).

Cuando se utiliza la replicación entre versiones diferentes de SQL Server, normalmente se está limitado por las funciones de la versión más antigua. Por ejemplo, si actualiza un distribuidor a una instancia de SQL Server 2008, pero tiene un publicador en el que se ejecuta una instancia de SQL Server 2005 y un suscriptor en el que se ejecuta una instancia de SQL Server 2000, estará limitado a las funciones generales y a las funciones de replicación de SQL Server 2000.

[!NOTA]

Dado que el formato de almacenamiento en disco de SQL Server es el mismo en los entornos de 64 bits y de 32 bits, una topología de replicación puede combinar instancias del servidor que se ejecutan en un entorno de 32 bits e instancias del servidor que se ejecutan en un entorno de 64 bits.

Para todos los tipos de replicación, la versión del distribuidor no debe ser anterior a la versión del publicador. (Con frecuencia, el distribuidor es la misma instancia que el publicador).

Para la replicación transaccional, un suscriptor de una publicación transaccional puede ser de cualquiera de las dos versiones del publicador. Por ejemplo, un publicador de SQL Server 2000 puede tener suscriptores de SQL Server 2008 y un publicador de SQL Server 2008 puede tener suscriptores de SQL Server 2000.

Para la replicación de mezcla, un suscriptor para una publicación de combinación puede ser de cualquier versión que no sea posterior a la versión del publicador. Para obtener más información acerca de la compatibilidad con versiones anteriores, vea "Nivel de compatibilidad para publicaciones de combinación" más adelante en este tema. Para obtener más información acerca de las características de replicación admitidas en las distintas ediciones de SQL Server, vea Características compatibles con las ediciones de SQL Server 2008.

Usar un distribuidor de SQL Server 2005 o SQL Server 2008 con un publicador que ejecute SQL Server 2000

SQL Server 2005 y SQL Server 2008 se pueden usar como distribuidor remoto para publicadores que ejecuten SQL Server 2000. Para cambiar las propiedades del agente en este escenario, ejecute los siguientes procedimientos almacenados en el distribuidor. Estos procedimientos permiten cambiar propiedades que se introdujeron en SQL Server 2005:

Si tiene un publicador y un distribuidor que ejecutan SQL Server 2000, puede cambiar las credenciales bajo las cuales los agentes realizan las conexiones utilizando sp_changedistpublisher y sp_changesubscriber. Sin embargo, si actualiza el distribuidor a SQL Server 2008, estos procedimientos no se podrán utilizar para cambiar las credenciales utilizadas en trabajos de agente existentes. Los procedimientos afectan a los trabajos de agente que se crean después de llamar a dichos procedimientos. Para cambiar las credenciales de trabajos de agente existentes, llame a uno de los cuatro procedimientos enumerados anteriormente.

Asignar nuevos tipos de datos para versiones anteriores

SQL Server 2008 y SQL Server 2005 admiten varios nuevos tipos de datos. Como se muestra en la tabla siguiente, estos nuevos tipos de datos se asignan a tipos de datos compatibles del suscriptor si se utilizan suscripciones de inserción de un distribuidor de SQL Server 2005 o SQL Server 2008. Si los nuevos tipos de datos se replican en los suscriptores que ejecutan versiones anteriores de SQL Server, debe comprobar que se asignen apropiadamente.

Tipo de datos de SQL Server 2008

Tipo de datos de SQL Server 2005

Tipo de datos de SQL Server 2000

Tipo definido por el usuario (UDT) de Common Language Runtime: 8.000 bytes o menos

UDT

image

UDT: más de 8.000 bytes1

varbinary(max)

image

date2, 3

nvarchar(10)

nvarchar(10)

datetime22, 3

nvarchar(27)

nvarchar(27)

datetimeoffset2, 3

nvarchar(34)

nvarchar(34)

Atributo FILESTREAM1, 4

varbinary(max)

No se admite

geography y geometry1, 3

varbinary(max)

image

hierarchyid1, 5

varbinary(max)

image

nvarchar(max)

nvarchar(max)

ntext

time2, 3

nvarchar(16)

nvarchar(16)

varchar(max)

varchar(max)

text

varbinary(max)

varbinary(max)

image

xml

xml

ntext

1 Las asignaciones para los tipos UDT, FILESTREAM, geography, geometry y hierarchyid no se admiten para las publicaciones transaccionales con suscripciones actualizables. Sólo se han de incluir estos tipos si todos los suscriptores de actualización ejecutan SQL Server 2008 o una versión posterior.

2 La replicación no comprueba el formato de los datos insertados en el suscriptor. Por consiguiente, la aplicación debe asegurarse de que el formato de dichos datos insertados sea el correcto para columnas de tipo date, datetime2, datetimeoffset y time. Esto se realiza normalmente con una restricción. Si el formato de los datos no es el correcto, las inserciones en el publicador producirán un error.

3 Los suscriptores de SQL Server Compact 3.5 convierten estos tipos una vez replicados al suscriptor. Para obtener más información acerca de las asignaciones de tipos de datos para SQL Server Compact 3.5, vea la documentación de SQL Server Compact 3.5.

Si asigna columnas de tipo geography o geometry a varbinary(max) o image, no podrá replicar las restricciones predeterminadas para estas columnas. Esto tiene las siguientes consecuencias:

4 FILESTREAM es un atributo en una columna varbinary(max). Para obtener información sobre cómo se utilizan las columnas FILESTREAM en tablas replicadas, vea la sección "Replicación" de Usar FILESTREAM con otras características de SQL Server. Las columnas que tienen el atributo FILESTREAM no deberían incluirse en publicaciones que usen una instantánea del modo de carácter.

5 La admisión de columnas de tipo hierarchyid dependerá del tipo de replicación y de las versiones de SQL Server que se utilicen. Para obtener más información, vea la sección "Usar columnas hierarchyid en tablas replicadas" de hierarchyid (Transact-SQL). Para la replicación de mezcla, hierarchyid está asignado a image cuando el nivel de compatibilidad de la publicación es 100RTM y se utiliza una instantánea del modo de carácter.

Replicar los tipos de datos XML

Al replicar los tipos de datos XML a SQL Server Compact 3.5 SP1, la replicación de mezcla los asigna a Ntext. Los datos XML en SQL Server 2008 tienen bytes de prefijo para la codificación UTF-16. Estos bytes se conservan al replicarse de SQL Server a SQL Server Compact 3.5 SP1 mediante la replicación de mezcla. SQL Server Management Studio no entiende estos bytes de prefijo cuando se ve la columna Ntext de la base de datos del SQL Server Compact 3.5 SP1. Por consiguiente, estos bytes se muestran como caracteres basura.

La colección de Esquema XML de SQL Server 2008 ha sido actualizada. Esto tiene un efecto al replicar las columnas XML enlazadas a los esquemas XML de SQL Server 2008 a SQL Server 2005.

Las zonas horarias no son obligatorias para los valores de fecha, hora y fecha y del Esquema XML en SQL Server 2008. Esto significa que, si no se especifica una zona horaria en la columna XML del Publicador de SQL Server 2008, no aplicará el cambio en los suscriptores de SQL Server 2005, porque SQL Server 2005 requiere que se especifique la zona horaria.

La información de zona horaria de los valores con tipo del Esquema XML correspondientes a la fecha, hora y fecha y hora del Publicador de SQL Server 2008 se convertirá a la zona horaria UTC-0 en SQL Server 2005. El indicador Z de zona horaria se usa para representar esto.

Los tipos de fecha, hora y fecha y hora del Esquema XML de SQL Server 2008 admiten una precisión mayor. Por consiguiente, estos valores se redondean al replicarse a SQL Server 2005.

Al replicar los valores de fecha o fecha y hora del Esquema XML desde SQL Server 2005 a SQL Server 2008, los valores con un año negativo no se aplicarán en SQL Server 2008 porque esto no se admite en SQL Server 2008.

En estas situaciones, los métodos sp_table_validation y Validate en los Agentes de replicación podrían generar un error. Para obtener más información, vea la sección "Actualizar XML con tipo de SQL Server 2005 a SQL Server 2008" la sección en Comparación de XML con tipo y XML sin tipo.

Publicar los datos comprimidos

SQL Server 2008 es compatible con la compresión de filas y páginas tanto para tablas como para índices. Para obtener información sobre la compatibilidad de la replicación para los datos comprimidos, vea "Cómo afecta la compresión a la replicación" en Crear tablas e índices comprimidos.

Restaurar una base de datos replicada a partir de una versión anterior

Puede mantener la configuración de replicación cuando restaure una copia de seguridad de una base de datos replicada a partir de una versión anterior. Si restaura las copias de seguridad en un servidor y una base de datos que tengan los mismos nombres que el servidor y la base de datos en que se creó la copia de seguridad, o si especifica la opción KEEP_REPLICATION, se mantiene la configuración de replicación. Para obtener más información, vea RESTORE (Transact-SQL). Después de restaurar la base de datos, ejecute sp_vupgrade_replication para actualizar el esquema y los datos del sistema con el fin de que la replicación se admita en el nivel de producto actual.

Aunque es posible mantener la replicación después de restaurar a partir de la copia de seguridad de una versión anterior, se utiliza en ocasiones poco comunes como opción de actualización. Es más común actualizar la base de datos replicada como parte de una actualización de producto o crear de nuevo la base de datos y la configuración de replicación a partir de un conjunto de scripts.

Nivel de compatibilidad para publicaciones de combinación

La replicación de mezcla utiliza el nivel de compatibilidad de publicación para determinar qué características utilizan las aplicaciones en una determinada base de datos. Los valores van de 80RTM (SQL Server 2000 sin ningún Service Pack instalado) a 100RTM para SQL Server 2008. El nivel de compatibilidad se especifica mediante uno de los métodos siguientes:

Las siguientes características requieren un nivel de compatibilidad de 90RTM o superior:

Las características siguientes no dependen del nivel de compatibilidad; sin embargo, requieren el Agente de mezclas que se incluye con SQL Server 2005 y versiones posteriores. Los suscriptores que ejecutan versiones anteriores de SQL Server funcionan como si la característica no estuviese habilitada.

Comportamiento del nivel de compatibilidad de la publicación en SQL Server 2008

A continuación se enumeran algunos comportamientos importantes del nivel de compatibilidad de la publicación que se han de tener en cuenta:

  • El nivel de compatibilidad de la publicación no está relacionado con el nivel de compatibilidad de la base de datos.

  • Si crea una publicación utilizando sp_addmergepublication o mediante Objetos de administración de replicación (RMO), el nivel de compatibilidad de la publicación se establece en 80RTM de forma predeterminada. Si crea una publicación en el Asistente para nueva publicación, el nivel de compatibilidad de la publicación vendrá determinado por las opciones que se seleccionen en la página Tipos de suscriptor del asistente.

  • En versiones de SQL Server anteriores a SQL Server 2005, el nivel de compatibilidad de la publicación aumentaba automáticamente si se habilitaba una característica que necesitase un nivel superior. A partir de SQL Server 2005, se debe establecer manualmente el nivel de compatibilidad de la publicación en 90RTM o superior antes de habilitar funciones que requieran dicho nivel de compatibilidad.

  • El nivel de compatibilidad de la publicación sólo puede disminuir si el Agente de instantáneas no se ha iniciado y no existen suscripciones a la publicación.

  • Todas las publicaciones de la misma base de datos deben tener el mismo nivel de compatibilidad. Este requisito tiene las siguientes consecuencias:

    • Si una base de datos contiene una publicación con un nivel de compatibilidad inferior (como 80RTM) y se desea agregar otra publicación a la misma base de datos que tenga un nivel de 90RTM o superior, se debe aumentar manualmente el nivel de la primera publicación antes de que se agregue la nueva publicación.

    • Si una base de datos contiene dos o más publicaciones con niveles de compatibilidad inferiores y desea agregar otra publicación a la misma base de datos que tenga un nivel de 90RTM o superior, se deben quitar todas las publicaciones existentes excepto una; aumentar el nivel de esa publicación a 90RTM o superior; crear de nuevo las publicaciones quitadas con un nivel de 90RTM o superior; y crear la nueva publicación con un nivel de 90RTM o superior.

Componentes necesarios y niveles de compatibilidad para la sincronización web

SQL Server 2008 admite la sincronización web para los suscriptores que ejecutan SQL Server 2005, SQL Server 2008 o SQL Server Compact 3.5 versiones 3.0, 3.1 y 3.5. La tabla siguiente enumera el nivel de compatibilidad de la publicación y los componentes del servidor que se requieren para cada tipo de suscriptor.

Versión del publicador

Versión del suscriptor

Nivel de compatibilidad de la publicación necesario

Componentes necesarios en el servidor IIS

SQL Server 2008

SQL Server 2008

100RTM

Componentes de IIS de SQL Server 2008

SQL Server 2008

SQL Server Compact 3.5 3.0, 3.1 y 3.5

90RTM

Componentes de SQL Server Compact 3.5 SP1 IIS y de SQL Server 2008 IIS

SQL Server 2008

SQL Server 2005

90RTM

Componentes de IIS de SQL Server 2008

SQL Server 2005

SQL Server 2005

90RTM

Componentes de IIS de SQL Server 2005

SQL Server 2005

SQL Server Compact 3.5 3.0, 3.1 y 3.5

90RTM

Componentes de SQL Server Compact 3.5 SP1 IIS y de SQL Server 2005 IIS

SQL Server 2005

SQL Server 2008

No aplicable1

No aplicable1

1  Esta configuración no se admite porque la versión del publicador debe ser igual o mayor que la versión del suscriptor.