Tipos de datos y replicación

SQL Server Compact no es totalmente compatible con todos los tipos de datos de SQL Server. Como suscriptor a publicaciones de SQL Server, SQL Server Compact debe traducir los tipos incompatibles en aquellos que sí lo son.

Tipos de datos compatibles y asignaciones de tipos de datos

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 3.5. 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

bigint

Bigint

binary(n)

binary(n)

bit

Bit

character(n)(sinónimo: char(n)) char(n))

national character(n) o bien ntext

Si la longitud de los datos es de 4000 caracteres o menos, la replicación de SQL Server Compact asigna los datos character de SQL Server a national character de SQL Server Compact. De lo contrario, asigna los datos de caracteres a ntext de SQL Server Compact. 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 a SQL Server.

character varying(n)(sinónimo: varchar(n))

national character varying o bien ntext

Si la longitud de los datos es de 4000 caracteres o menos, la replicación de SQL Server Compact asigna los datos character varying de SQL Server a national character varying de SQL Server Compact; de lo contrario, asigna los datos de tipo character varying a ntext de SQL Server Compact. 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 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.

Computed Columns

No compatible.

Si utiliza el asistente para publicaciones e indica que se utilizarán suscripciones de SQL Server Compact, 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.

date

Valor de tipo nchar(10) con el formato 'AAAA-MM-DD'

ms171931.note(es-es,SQL.100).gifNota:
SQL Server Compact almacena caracteres anchos. La compatibilidad con la conversión de este tipo se proporcionó en la versión SQL Server Compact 3.5 SP1.

datetime

Datetime

datetime2

Valor de tipo nvarchar(27) con el formato 'AAAA-MM-DD hh:mm:ss.nnnnnnn'

ms171931.note(es-es,SQL.100).gifNota:
SQL Server Compact almacena caracteres anchos. La compatibilidad con la conversión de este tipo se proporcionó en la versión SQL Server Compact 3.5 SP1.

datetimeoffset

Valor de tipo nvarchar(34) con el formato 'AAAA-MM-DD hh:mm:ss.nnnnnnn [+/-] hh:mm'

ms171931.note(es-es,SQL.100).gifNota:
SQL Server Compact almacena caracteres anchos. La compatibilidad con la conversión de este tipo se proporcionó en la versión SQL Server Compact 3.5 SP1.

decimal

No compatible. Utilice numeric.

double precision

double precision

float

float

geography

image

ms171931.note(es-es,SQL.100).gifNota:
La compatibilidad con la conversión de este tipo se proporcionó en la versión SQL Server Compact 3.5 SP1.

geometry

image

ms171931.note(es-es,SQL.100).gifNota:
La compatibilidad con la conversión de este tipo se proporcionó en la versión SQL Server Compact 3.5 SP1.

image

image

integer(sinónimo: int)

integer

money

money

national character(n)(sinónimo: nchar(n))

national character(n)

national character varying(n)(sinónimo: nvarchar(n))

national character varying(n)

national character varying(MAX)(sinónimo: nvarchar(MAX))

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.

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 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 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.

time

Valor de tipo nvarchar(16) con el formato 'hh:mm:ss.nnnnnnn'

ms171931.note(es-es,SQL.100).gifNota:
SQL Server Compact almacena caracteres anchos. La compatibilidad con la conversión de este tipo se proporcionó en la versión SQL Server Compact 3.5 SP1.

timestamp

No compatible.

Si utiliza el asistente para publicaciones e indica que se utilizarán suscripciones de SQL Server Compact, 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. Si la columna de marca de tiempo o de versión de fila no tiene particiones verticales, los datos de la columna no se replican.

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.

varchar

Vea character varying.

XML

ntext

Siempre que sea posible, elija tipos de datos compatibles tanto con SQL Server como con SQL Server Compact, a fin de que no sea necesario que la replicación 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 para asegurarse de que la replicación pueda asignar estos valores entre SQL Server y SQL Server Compact.

Las aplicaciones existentes que no admiten de forma nativa los tipos date, datetime2, datetimeoffset y time tienen que tratar con los datos que están asignados a los tipos de datos compatibles como nchar y nvarchar. Para obtener más información acerca de los tipos de datos de SQL Server, vea Tipos de datos en los Libros en pantalla de SQL Server.

Restricciones de tipos de datos

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

  • Í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 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 deben tener un tipo de datos integer (int 4) o bigint (int 8). Las columnas de identidad de SQL Server Compact 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 (int 8), no se podrá crear la suscripción en SQL Server Compact.
    SQL Server Compact le permite modificar los valores de inicialización e incremento en el suscriptor utilizando la instrucción ALTER TABLE nombre_de_tabla ALTER COLUMN nombre_de_columna IDENTITY (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 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 2005, los tipos de datos computed column, timestamp, date, time, hierarchyid, filestream y utcdatetime no se admiten.
  • Tipos de datos CHAR y NTEXT en SQL Server y SQL Server Compact
    SQL Server permite que el tipo de datos CHAR sea mayor que el tipo de datos CHAR para SQL Server Compact. Para replicar el contenido, el tipo de datos CHAR grande se convierte en tipos de datos NTEXT en SQL Server Compact. Aunque SQL Server y SQL Server Compact 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 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 seguirá siendo ntext hasta que se reinicialice el suscriptor.

Vea también

Conceptos

Tipos de datos y RDA

Otros recursos

Asignaciones de tipos de datos administrados (SQL Server Compact)

Ayuda e información

Obtener ayuda (SQL Server Compact 3.5 Service Pack 1)