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
Mapeamentos de tipos de dados gerenciados (SQL Server Compact)