Tipos de datos y réplica
Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) no es totalmente compatible con todos los tipos de datos de SQL Server. Como suscriptor a publicaciones de SQL Server, SQL Server Compact Edition debe traducir los tipos incompatibles en aquellos que sí lo son.
En la siguiente tabla se muestran las asignaciones de tipos de datos que se realizan al replicar entre SQL Server y Microsoft SQL Server Compact Edition. En la tabla se enumeran las asignaciones para cada tipo de datos de SQL Server y se describen las restricciones o los comportamientos especiales.
Tipo de datos de SQL Server | Tipo de datos de SQL Server Compact Edition |
---|---|
bigint |
bigint |
binary(n) |
binary(n) |
bit |
bit |
character(n)(sinónimo: char(n)) |
national character(n) o bien ntext Si la longitud de los datos es de 4000 caracteres o menos, la réplica de SQL Server Compact Edition asigna los datos character de SQL Server a national character de SQL Server Compact Edition. De lo contrario, asigna los datos de caracteres a ntext de SQL Server Compact Edition. Si la longitud de los datos ntext supera la de la columna character, no se realiza la sincronización cuando se envían los datos de SQL Server Compact Edition a SQL Server. |
character varying(n)(sinónimo: |
national character varying o bien ntext Si la longitud de los datos es de 4000 caracteres o menos, la réplica de SQL Server Compact Edition asigna los datos character varying de SQL Server a national character varying de SQL Server Compact Edition; de lo contrario, asigna los datos de tipo character varying a ntext de SQL Server Compact Edition. Si la longitud de los datos ntext supera la de la columna character varying, no se realiza la sincronización cuando se envían los datos de SQL Server Compact Edition a SQL Server. |
character varying(MAX)(sinónimo: varchar(MAX)) |
ntext Si la longitud de los datos character varying(MAX) supera la de la columna ntext, no se realiza la sincronización cuando se envían los datos de SQL Server a SQL Server Compact Edition. |
Computed Columns |
No compatible. Si utiliza el asistente para publicaciones e indica que se utilizarán suscripciones de SQL Server Compact Edition, cualquier columna del tipo de datos Computed Column se quita verticalmente de la publicación. Si no utiliza el asistente, debe excluir las columnas de este tipo de datos de la publicación. |
datetime |
datetime |
decimal |
No compatible. Utilice numeric. |
double precision |
double precision |
float |
float |
image |
image |
integer(sinónimo: int) |
integer |
money |
money |
national character(n)(sinónimo: |
national character(n) |
national character varying(n)(sinónimo: |
national character varying(n) |
national character varying(MAX)(sinónimo: |
ntext Si la longitud de los datos national character varying(MAX) supera la de la columna ntext, no se realiza la sincronización cuando se envían los datos de SQL Server a SQL Server Compact Edition. |
ntext |
ntext |
numeric(sinónimos: decimal, dec) |
numeric |
real |
real |
smalldatetime |
datetime Si la precisión de los datos datetime supera la de la columna smalldatetime, no se realiza la sincronización cuando se envían los datos de SQL Server Compact Edition a SQL Server. |
smallint (int 2) |
smallint (int 2) |
smallmoney |
money Si la precisión de los datos money supera la de la columna smallmoney, no se realiza la sincronización cuando se envían los datos de SQL Server Compact Edition a SQL Server. |
sql_variant |
ntext Si existen datos binarios en la columna sql_variant, deben ser un número par de bytes o, de lo contrario, se producirá un error de conversión. |
text |
ntext Si la longitud de los datos text supera 1.073.741.823 caracteres, no se realiza la sincronización cuando se envían los datos de SQL Server a SQL Server Compact Edition. |
timestamp |
No compatible. Si utiliza el asistente para publicaciones e indica que se utilizarán suscripciones de SQL Server Compact Edition, cualquier columna del tipo de datos timestamp se quita verticalmente de la publicación. Si no utiliza el asistente, debe excluir las columnas de este tipo de datos de la publicación. |
tinyint |
tinyint |
uniqueidentifier |
uniqueidentifier |
varbinary(n) |
varbinary(n) |
varbinary(MAX) |
image Si la longitud de los datos varbinary(MAX) supera la de la columna image, no se realiza la sincronización cuando se envían los datos de SQL Server a SQL Server Compact Edition. |
varchar |
Vea character varying. |
XML |
ntext |
Siempre que sea posible, elija tipos de datos compatibles tanto con SQL Server como con SQL Server Compact Edition, a fin de que no sea necesario que la réplica realice la asignación de datos. Si ello no es posible, la aplicación debería validar los valores almacenados en la base de datos de SQL Server Compact Edition para garantizar que la réplica pueda asignar estos valores entre SQL Server y SQL Server Compact Edition.
Para obtener más información acerca de los tipos de datos de SQL Server, vea el tema sobre tipos de datos en los Libros en pantalla de SQL Server.
Se aplican las siguientes restricciones a los suscriptores de SQL Server Compact Edition:
- Índices
No se puede publicar una tabla con un índice en las columnas varchar (MAX), nvarchar(MAX), varbinary(MAX) y XML. La creación de la suscripción de SQL Server Compact Edition no se lleva a cabo porque estos tipos de columnas se asignan a ntext o image y no se pueden crear claves principales en una columna ntext o image. - Columnas de identidad
Las columnas de identidad de SQL Server Compact Edition deben tener un tipo de datos integer (int 4) o bigint (int 8). Las columnas de identidad de SQL Server Compact Edition no pueden tener un tipo de datos smallint, tinyint, decimal o numeric. Si se suscribe a una publicación que tenga una columna de identidad diferente de integer (int 4) o bigint (int8), no se podrá crear la suscripción en SQL Server Compact Edition.
SQL Server Compact Edition le permite modificar los valores de inicialización e incremento en el suscriptor utilizando la instrucción ALTER TABLEnombre_de_tablaALTER COLUMNnombre_de_columnaIDENTITY (inicial,incremento). Esto le permite administrar los intervalos de identidad manualmente. Sin embargo, si la publicación incluye una columna de identidad y el intervalo se identidad se administra mediante el publicador, no debería modificar los valores de inicialización o incremento en el suscriptor. Si especifica una inicialización superior al intervalo de identidad asignado, SQL Server Compact Edition devolverá un error cuando intente insertar un nuevo registro en la tabla. La próxima vez que sincronice, el publicador corrige el problema al asignar al suscriptor un nuevo intervalo de identidad. - Tipos de datos no compatibles
Cuando se suscriba a una publicación de SQL Server 2000, los tipos de datos computed column y timestamp no son compatibles. Cuando se suscriba a una publicación de SQL Server 2005, los tipos de datos computed column, timestamp, date, time y utcdatetime no son compatibles. - Tipos de datos CHAR y NTEXT en SQL Server y SQL Server Compact Edition
SQL Server permite que el tipo de datos CHAR sea mayor que el tipo de datos CHAR para SQL Server Compact Edition. Para replicar el contenido, el tipo de datos CHAR grande se convierte en tipos de datos NTEXT en SQL Server Compact Edition. Aunque SQL Server y SQL Server Compact Edition permiten el cambio del tipo de datos de una columna CHAR, ninguno de ellos permite cambiar el tipo de datos de una columna NTEXT. . Por lo tanto, aunque sería posible cambiar un tipo de datos CHAR grande en SQL Server, el cambio no funcionaría en SQL Server Compact Edition porque ya no es un tipo de datos CHAR. - Tipos de datos NTEXT o IMAGE
Si se asigna una columna a ntext y SQL Server cambia el tipo de datos de la misma columna a char, nchar, etc., la columna de la base de datos de SQL Server Compact Edition seguirá siendo ntext hasta que se reinicialice el suscriptor.