Limitaciones de la replicación

Cuando se utiliza la replicación de mezcla con suscriptores de Microsoft SQL Server Compact 3.5, existen varias limitaciones en la publicación. En esta sección se describen esas limitaciones.

Restricciones de cambio de esquema en el suscriptor

Se pueden realizar algunos cambios de esquema en el suscriptor, pero no todos. En la tabla siguiente, se describen los cambios de esquema que pueden y no pueden realizarse en el suscriptor.

Acción

Permitido en una tabla replicada

Eliminar una tabla

No

Cambiar de nombre una tabla

No

Agregar, quitar o eliminar una columna

No

Cambiar el valor de inicialización o incremento de una columna de identidad

Agregar o eliminar un valor predeterminado

Agregar o eliminar la clave principal

No

Agregar o eliminar la clave externa

No

Agregar o eliminar el índice

Nota

No se recomienda agregar o eliminar índices en columnas de replicación de tablas de usuario. Esto produce errores de sincronización, ya que las columnas de replicación se tratan como columnas del sistema.

Cambiar de nombre el índice

Importante

No se pueden realizar cambios de esquema en tablas del sistema.

Requisitos adicionales

Se aplican las siguientes reglas a los suscriptores de SQL Server Compact 3.5:

  • Utilización de memoria

    Durante la sincronización, después de haber solicitado la reinicialización, es posible que la base de datos de SQL Server Compact 3.5 duplique su tamaño temporalmente, pero se reducirá cuando se complete la sincronización (de acuerdo con la directiva de reducción automática que haya establecido).

  • Validación del filtro de suscripciones

    La validación del filtro permite al publicador comprobar el valor de filtro de un suscriptor antes de sincronizar los datos. Si el valor de filtro ha cambiado en el suscriptor, el publicador requiere una reinicialización en el suscriptor. Al sincronizar datos con SQL Server 2008 R2, SQL Server Compact 3.5 puede utilizar la validación de filtro.

    Nota

    La propiedad HostName especifica el valor de filtro dinámico de la suscripción. Si desea cambiar este valor para el suscriptor especificando una nueva propiedad HostName, debe llamar al método Reinitialize antes de sincronizar.

  • Distinción entre mayúsculas y minúsculas

    A partir de la versión SQL Server Compact 3.5 Service Pack 1, SQL Server Compact admite la configuración de intercalaciones con distinción de mayúsculas y minúsculas en el nivel de base de datos. Sin embargo, los nombres de objeto, como los nombres de tabla, las palabras clave del lenguaje, las funciones y las vistas, no se tratan como si distinguieran mayúsculas y minúsculas en una base de datos de SQL Server Compact, aun cuando la intercalación distinga mayúsculas y minúsculas.

    En otras palabras, los objetos se tratan de manera diferente en una base de datos de SQL Server Compact a como se tratan en una base de datos de SQL Server. Por ejemplo, dos tablas, MYTABLE y mytable, se tratan como objetos diferentes en una base de datos de SQL Server que distingue entre mayúsculas y minúsculas. Los mismos nombres de tabla provocan un conflicto de nomenclatura en una base de datos de SQL Server Compact. Por otro lado, dos valores, MYVALUE y myvalue, ya no causarían una infracción de clave principal en SQL Server Compact, ya que ambos se tratan como si fueran un valor diferente, al igual que no se produciría una infracción en una base de datos de SQL Server que distingue entre mayúsculas y minúsculas.

  • Número de columnas en una tabla

    SQL Server Compact 3.5 asigna siete columnas del sistema para seguimiento. No obstante, estas tablas del sistema no cuentan para el límite del número de columnas.

  • Restricciones NOT FOR REPLICATION

    SQL Server Compact 3.5 no admite la opción NOT FOR REPLICATION. No cree restricciones utilizando esta opción. Si las restricciones de una base de datos tienen la opción NOT FOR REPLICATION, quite la restricción y vuelva a crearla. Si se especifica la opción NOT FOR REPLICATION, la restricción se crea de todas maneras en el suscriptor de SQL Server Compact 3.5, pero no incluye la sintaxis NOT FOR REPLICATION.

  • Tiempo de espera para conexión

    Las suscripciones a SQL Server Compact 3.5 se recuperan de los errores de comunicación reiniciándose desde el último bloque de datos transmitido correctamente, siempre que la conexión se restaure dentro del período de tiempo de espera configurado por el usuario. Esto hace posible la sincronización aun cuando el transporte subyacente no sea de confianza o no esté disponible temporalmente.

  • Instantáneas

    SQL Server Compact 3.5 admite la opción de ubicación de instantáneas tanto predeterminada como alternativa. Para especificar una ubicación de instantáneas alternativa, establezca esta opción mediante el procedimiento almacenado sp_addmergepublication, o bien mediante SQL ServerManagement Studio, para cambiar las propiedades de una publicación existente.

    • Para utilizar el procedimiento almacenado sp_addmergepublication

      Establezca la opción @snapshot\_in\_defaultfolder en FALSE y @alt\_snapshot\_folder= ubicación de la carpeta alternativa de la instantánea.

    • Para cambiar las propiedades de publicación de una publicación existente

      En la sección Instantáneadel cuadro de diálogo Propiedades de la publicación, desactive la casilla de verificación Poner los archivos en la carpeta predeterminada, active la casilla de verificación Poner los archivos en la siguiente carpeta y, a continuación, especifique la nueva ubicación.

    Nota

    SQL Server Compact 3.5 no admite la opción de instantánea comprimida.

Para obtener más información acerca de las instantáneas, vea Configurar la carpeta de instantáneas.

Información que no se propaga a un suscriptor de SQL Server Compact 3.5

Puede incluir los elementos siguientes en una publicación de SQL Server, pero no se propagarán al suscriptor de SQL Server Compact 3.5:

  • Restricciones CHECK

  • Propiedades extendidas

  • Procedimientos almacenados

  • Vistas

  • Funciones definidas por el usuario

  • Desencadenadores

Debido a que estos elementos no se propagan en la replicación de SQL Server Compact 3.5, deberá implementar la lógica equivalente en una aplicación basada en SQL Server Compact 3.5. Así, se asegurará de que la base de datos de SQL Server Compact 3.5 mantenga la coherencia con la base de datos de SQL Server. Por ejemplo, si la base de datos de SQL Server incluye una restricción CHECK, la aplicación basada en SQL Server Compact 3.5 debería implementarla en el código de la aplicación.

Crear índices en una base de datos local de SQL Server Compact 3.5

Se pueden crear índices únicos en una base de datos local de SQL Server Compact 3.5, incluso si esa base de datos es un suscriptor de una publicación. Esto es de utilidad, aunque puede causar problemas si el publicador, que no tiene ninguna restricción UNIQUE en una columna, envía datos no únicos al suscriptor. Por ejemplo, podría tener una tabla T con columnas C1 y C2; y estando la clave principal en C1.

C1

C2

A

1

B

2

C

3

Se produce una sincronización inicial en la base de datos de SQL Server Compact 3.5. Después de esta sincronización, se agrega un índice único a C2 en la base de datos de suscripciones. No se realiza ningún cambio en la base de datos de publicación.

Durante la siguiente sincronización, SQL Server inserta estas filas:

D

3

E

3

En este caso, se produce un error en la sincronización, porque el publicador intentó insertar valores no únicos para C2. Se seguirán produciendo errores de sincronización hasta que se quite la restricción UNIQUE de la base de datos de suscripciones.