Partilhar via


Tipos e replicação de dados

O SQL Server Compact não dá suporte total a todos os tipos de dados do SQL Server. Como um assinante de publicações do SQL Server, o SQL Server Compact deve converter tipos sem suporte em tipos com suporte.

Mapeamentos de tipos de dados e tipos de dados com suporte

A tabela a seguir mostra os mapeamentos dos tipos de dados executados durante a replicação entre o SQL Server e o MicrosoftSQL Server Compact 3.5. A tabela lista os mapeamentos para cada tipo de dados do SQL Server e descreve restrições ou comportamentos especiais.

Tipos de dados do SQL Server

Tipos de dados do SQL Server Compact

bigint

Bigint

binary(n)

binary(n)

bit

Bit

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

national character(n) ou ntext

Se o comprimento dos dados for 4.000 caracteres ou menos, a replicação do SQL Server Compact mapeará os dados do SQL Servercharacter para o SQL Server Compactnational character. Caso contrário, mapeará os dados de caracteres para o SQL Server Compactntext. Se o comprimento dos dados ntext exceder o comprimento da coluna character, a sincronização falhará quando os dados forem enviados do SQL Server Compact para o SQL Server.

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

national character varying ou ntext

Se o comprimento dos dados for 4.000 caracteres ou menos, a replicação do SQL Server Compact mapeará os dados do SQL Servercharacter varying para o SQL Server Compactnational character varying; caso contrário, mapeará os dados com variação de caractere para o SQL Server Compactntext. Se o comprimento dos dados ntext exceder o comprimento da coluna character varying, a sincronização falhará quando os dados forem enviados do SQL Server Compact para o SQL Server.

character varying(MAX)(sinônimo: varchar(MAX))

ntext

Se o comprimento dos dados character varying(MAX) exceder o comprimento da coluna ntext, a sincronização falhará quando os dados forem enviados do SQL Server para o SQL Server Compact.

Computed Columns

Não há suporte.

Se você usar o Assistente de Publicação e indicar que as assinaturas do SQL Server Compact serão usadas, todas as colunas dos tipos de dados Computed Column serão verticalmente particionadas fora da publicação. Se você não usar o assistente, deverá excluir as colunas desses tipos de dados na publicação.

date

valor nchar(10) da forma 'AAAA-MM-DD'

Observação

O SQL Server Compact armazena caracteres largos. O suporte de conversões a este tipo foi oferecido pelo SQL Server Compact versão 3.5 SP1.

datetime

Datetime

datetime2

Valor nvarchar(27) da forma 'AAAA-MM-DD hh:mm:ss.nnnnnnn'

Observação

O SQL Server Compact armazena caracteres largos. O suporte de conversões a este tipo foi oferecido pelo SQL Server Compact versão 3.5 SP1.

datetimeoffset

Valor nvarchar(34) da forma 'AAAA-MM-DD hh:mm:ss.nnnnnnn [+/-] hh:mm'

Observação

O SQL Server Compact armazena caracteres largos. O suporte de conversões a este tipo foi oferecido pelo SQL Server Compact versão 3.5 SP1.

decimal

Não há suporte. Use o tipo numeric.

double precision

double precision

float

float

geography

image

Observação

O suporte de conversões a este tipo foi oferecido pelo SQL Server Compact versão 3.5 SP1.

geometry

image

Observação

O suporte de conversões a este tipo foi oferecido pelo SQL Server Compact versão 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

Se o comprimento dos dados national character varying(MAX) exceder o comprimento da coluna ntext, a sincronização falhará quando os dados forem enviados do SQL Server para o SQL Server Compact.

ntext

ntext

numeric(sinônimos: decimal, dec)

numeric

real

Real

smalldatetime

datetime

Se a precisão dos dados datetime exceder a precisão da coluna smalldatetime, ocorrerá falha na sincronização quando os dados forem enviados do SQL Server Compact para o SQL Server.

smallint (int 2)

smallint (int 2)

smallmoney

money

Se a precisão dos dados money exceder a precisão da coluna smallmoney, a sincronização falhará quando os dados forem enviados do SQL Server Compact para o SQL Server.

sql_variant

ntext

Se existirem dados binários na coluna sql_variant, eles deverão ser um número par de bytes ou ocorrerá um erro na conversão.

text

ntext

Se o comprimento dos dados text exceder 1.073.741.823 caracteres, a sincronização falhará quando os dados forem enviados do SQL Server para o SQL Server Compact.

time

Valor nvarchar(16) da forma 'hh:mm:ss.nnnnnnn'

Observação

O SQL Server Compact armazena caracteres largos. O suporte de conversões a este tipo foi oferecido pelo SQL Server Compact versão 3.5 SP1.

timestamp

Não há suporte.

Se você usar o Assistente de Publicação e indicar que as assinaturas do SQL Server Compact serão usadas, todas as colunas dos tipos de dados timestamp serão verticalmente particionadas fora da publicação. Se você não usar o assistente, deverá excluir as colunas desses tipos de dados na publicação. Se a coluna timestamp/rowversion não for particionada verticalmente, os dados dessa coluna não serão replicados.

tinyint

tinyint

uniqueidentifier

uniqueidentifier

varbinary(n)

varbinary(n)

varbinary(MAX)

image

Se o comprimento dos dados varbinary(MAX) exceder o comprimento da coluna image, a sincronização falhará quando os dados forem enviados do SQL Server para o SQL Server Compact.

varchar

Consulte a variação de caracteres

XML

ntext

Sempre que possível, escolha tipos de dados que tenham suporte no SQL Server e no SQL Server Compact, para que não haja necessidade de execução de mapeamento de dados pela replicação. Quando isso não for possível, seu aplicativo deverá validar os valores armazenados no banco de dados SQL Server Compact para garantir que a replicação possa mapear esses valores entre o SQL Server e o SQL Server Compact.

Os aplicativos existentes que não suportam nativamente date, datetime2, datetimeoffset e time precisam lidar com dados que são mapeados para tipos de dados compatíveis como nchar e nvarchar. Para obter mais informações sobre os tipos de dados no SQL Server, consulte Tipos de dados nos Manuais Online do SQL Server.

Restrições de tipos de dados

As seguintes restrições se aplicam a assinantes do SQL Server Compact:

  • Índices

    Não é possível publicar uma tabela com um índice nas colunas varchar (MAX), nvarchar(MAX), varbinary(MAX) e XML. A criação de assinatura do SQL Server Compact falha porque esses tipos de colunas são mapeados para ntext ou image e uma chave primária não pode ser criada em uma coluna ntext ou image.

  • Colunas de identidade

    As colunas de identidade do SQL Server Compact devem ter tipos de dados integer (int 4) ou bigint (int 8). As colunas de identidade do SQL Server Compact não podem ter tipos de dados smallint, tinyint, decimal ou numeric. Se você assina uma publicação com uma coluna de identidade diferente de integer (int 4) ou bigint(int8), a criação dessa assinatura falha no SQL Server Compact.

    O SQL Server Compact permite que você modifique os valores de semente e incremento no Assinante usando a instrução ALTER TABLEnome_da_tabelaALTER COLUMNnome_da_colunaIDENTITY (partida,incremento). Isso permite que você gerencie intervalos de identidade manualmente. No entanto, se sua publicação incluir uma coluna de identidade e o intervalo de identidade estiver sendo gerenciado pelo Editor, você não deverá modificar os valores de partida ou incremento no Assinante. Se você especificar um valor de semente maior que sua identidade de intervalo alocada, o SQL Server Compact retornará um erro ao tentar inserir um novo registro na tabela. Na próxima sincronização, o Editor corrigirá o problema atribuindo ao Assinante um novo intervalo de identidade.

  • Tipos de dados sem suporte

    Ao assinar uma publicação do SQL Server 2005, os tipos de dados computed column, timestamp, date, time, hierarchyid, filestream e utcdatetime ficam sem suporte.

  • Tipos de dados CHAR e NTEXT no SQL Server e no SQL Server Compact

    O SQL Server permite que os tipos de dados CHAR sejam maiores que os tipos de dados CHAR do SQL Server Compact. Para replicar o conteúdo, os tipos de dados CHAR maiores são convertidos nos tipos de dados NTEXT no SQL Server Compact. Embora o SQL Server e o SQL Server Compact permitam alterar os tipos de dados de uma coluna CHAR, nenhum deles permite alterar os tipos de dados de uma coluna NTEXT. Dessa forma, embora fosse possível alterar um tipo de dados CHAR grande no SQL Server, a alteração falharia no SQL Server Compact porque não é mais um tipo de dados CHAR.

  • Tipos de dados NTEXT ou IMAGE

    Se uma coluna for mapeada para ntext e o SQL Server alterar os tipos de dados da mesma coluna para char, nchar, etc, a coluna no banco de dados SQL Server Compact permanecerá ntext até que o assinante seja reiniciado.

Consulte também

Outros recursos

Tipos de dados e RDA

Mapeamentos de tipos de dados gerenciados (SQL Server Compact)