Tipi di dati e replica
SQL Server Compact non supporta completamente tutti i tipi di dati di SQL Server. In qualità di Sottoscrittore delle pubblicazioni di SQL Server, è necessario che SQL Server Compact esegua la conversione dei tipi di dati non supportati in tipi di dati supportati.
Tipi di dati supportati e mapping dei tipi di dati
Nella tabella seguente sono illustrati i mapping dei tipi di dati eseguiti durante la replica tra SQL Server e Microsoft SQL Server Compact 3.5. Nella tabella vengono elencati i mapping per ogni tipo di dati di SQL Server e vengono illustrate eventuali restrizioni o comportamenti speciali.
Tipo di dati di SQL Server | Tipi di dati di SQL Server Compact |
---|---|
bigint |
Bigint |
binary(n) |
binary(n) |
bit |
Bit |
character(n)(sinonimo: char(n)) char(n)) |
national character(n) oppure ntext Se la lunghezza dei dati è pari o inferiore a 4000 caratteri, durante la replica di SQL Server Compact viene eseguito il mapping dei dati character di SQL Server ai dati national character di SQL Server Compact. In caso contrario, viene eseguito il mapping dei dati di tipo carattere ai dati ntext di SQL Server Compact. Se la lunghezza dei dati ntext supera la lunghezza della colonna character, non sarà possibile eseguire la sincronizzazione quando i dati vengono inviati da SQL Server Compact a SQL Server. |
character varying(n)(sinonimo: varchar(n)) varchar(n)) |
national character varying oppure ntext Se la lunghezza dei dati è pari o inferiore a 4000 caratteri, durante la replica SQL Server Compact viene eseguito il mapping dei dati character varying di SQL Server ai dati national character varying di SQL Server Compact. In caso contrario, viene eseguito il mapping dei dati character varying ai dati ntext di SQL Server Compact. Se la lunghezza dei dati ntext supera la lunghezza della colonna character varying, non sarà possibile eseguire la sincronizzazione quando i dati vengono inviati da SQL Server Compact a SQL Server. |
character varying(MAX)(sinonimo: varchar(MAX)) |
ntext Se la lunghezza dei dati character varying(MAX) supera la lunghezza della colonna ntext, non sarà possibile eseguire la sincronizzazione quando i dati vengono inviati da SQL Server a SQL Server Compact. |
Computed Columns |
Non supportato. Se si utilizza la Creazione guidata nuova pubblicazione e si indica che verranno utilizzate sottoscrizioni di SQL Server Compact, tutte le colonne del tipo di dati Computed Column verranno partizionate verticalmente per la pubblicazione. Se non si utilizza la procedura guidata, sarà necessario escludere le colonne di questo tipo di dati dalla pubblicazione. |
date |
Valore nchar(10) nella forma 'YYYY-MM-DD'
Nota:
In SQL Server Compact vengono archiviati caratteri di tipo esteso. Il supporto per la conversione di questo tipo è fornito da SQL Server Compact versione 3.5 SP1.
|
datetime |
Datetime |
datetime2 |
Valore nvarchar(27) nella forma 'YYYY-MM-DD hh:mm:ss.nnnnnnn'
Nota:
In SQL Server Compact vengono archiviati caratteri di tipo esteso. Il supporto per la conversione di questo tipo è fornito da SQL Server Compact versione 3.5 SP1.
|
datetimeoffset |
Valore nvarchar(34) nella forma 'YYYY-MM-DD hh:mm:ss.nnnnnnn [+/-] hh:mm'
Nota:
In SQL Server Compact vengono archiviati caratteri di tipo esteso. Il supporto per la conversione di questo tipo è fornito da SQL Server Compact versione 3.5 SP1.
|
decimal |
Non supportato. Utilizzare il tipo di dati numeric. |
double precision |
double precision |
float |
float |
geography |
image
Nota:
Il supporto per la conversione di questo tipo è fornito da SQL Server Compact versione 3.5 SP1.
|
geometry |
image
Nota:
Il supporto per la conversione di questo tipo è fornito da SQL Server Compact versione 3.5 SP1.
|
image |
image |
integer(sinonimo: int) |
integer |
money |
money |
national character(n)(sinonimo: nchar(n)) nchar(n)) |
national character(n) |
national character varying(n)(sinonimo: nvarchar(n)) nvarchar(n)) |
national character varying(n) |
national character varying(MAX)(sinonimo: nvarchar(MAX)) nvarchar(MAX)) |
ntext Se la lunghezza dei dati national character varying(MAX) supera la lunghezza della colonna ntext, non sarà possibile eseguire la sincronizzazione quando i dati vengono inviati da SQL Server a SQL Server Compact. |
ntext |
ntext |
numeric(sinonimi: decimal, dec) |
numeric |
real |
Real |
smalldatetime |
datetime Se la precisione dei dati datetime supera la precisione della colonna smalldatetime, non sarà possibile eseguire la sincronizzazione quando i dati vengono inviati da SQL Server Compact a SQL Server. |
smallint (int 2) |
smallint (int 2) |
smallmoney |
money Se la precisione dei dati money supera la precisione della colonna smallmoney, non sarà possibile eseguire la sincronizzazione quando i dati vengono inviati da SQL Server Compact a SQL Server. |
sql_variant |
ntext Se nella colonna sql_variant sono presenti dati binari, è necessario che il numero di byte di tali dati binari sia pari. In caso contrario, si verificherà un errore di conversione. |
text |
ntext Se la lunghezza dei dati text supera i 1.073.741.823 caratteri, non sarà possibile eseguire la sincronizzazione quando i dati vengono inviati da SQL Server a SQL Server Compact. |
time |
Valore nvarchar(16) nella forma 'hh:mm:ss.nnnnnnn'
Nota:
In SQL Server Compact vengono archiviati caratteri di tipo esteso. Il supporto per la conversione di questo tipo è fornito da SQL Server Compact versione 3.5 SP1.
|
timestamp |
Non supportato. Se si utilizza la Creazione guidata nuova pubblicazione e si indica che verranno utilizzate sottoscrizioni di SQL Server Compact, tutte le colonne del tipo di dati timestamp verranno partizionate verticalmente per la pubblicazione. Se non si utilizza la procedura guidata, sarà necessario escludere le colonne di questo tipo di dati dalla pubblicazione. Se la colonna di tipo TIMESTAMP/ROWVERSION non è partizionata verticalmente, i dati che contiene non vengono replicati. |
tinyint |
tinyint |
uniqueidentifier |
uniqueidentifier |
varbinary(n) |
varbinary(n) |
varbinary(MAX) |
image Se la lunghezza dei dati varbinary(MAX) supera la lunghezza della colonna image, non sarà possibile eseguire la sincronizzazione quando i dati vengono inviati da SQL Server a SQL Server Compact. |
varchar |
Vedere character varying |
XML |
ntext |
Quando possibile, scegliere tipi di dati supportati sia da SQL Server che da SQL Server Compact, in modo da evitare la necessità di eseguire il mapping dei dati durante la replica. Se tale soluzione non è possibile, è necessario che l'applicazione convalidi i valori archiviati nel database di SQL Server Compact per assicurarsi che la replica possa eseguire il mapping di tali valori tra SQL Server e SQL Server Compact.
Applicazioni esistenti che non supportano date, datetime2, datetimeoffset e time a livello nativo devono utilizzare dati mappati a tipi di dati compatibili, ad esempio nchar e nvarchar. Per ulteriori informazioni sui tipi di dati di SQL Server, vedere Tipi di dati nella documentazione in linea di SQL Server.
Restrizioni dei tipi di dati
Le regole seguenti si applicano ai Sottoscrittori SQL Server Compact:
- Indici
Non è possibile pubblicare una tabella con un indice su varchar (MAX), nvarchar(MAX), varbinary(MAX) e colonne XML. La creazione della sottoscrizione di SQL Server Compact non riesce poiché tali tipi di colonna sono associati a Ntext o Image e non è possibile creare una chiave primaria su una colonna Ntext o Image. - Colonne Identity
È necessario che alle colonne Identity di SQL Server Compact sia associato il tipo di dati integer (int 4) o bigint (int 8). Non è possibile associare alle colonne Identity di SQL Server Compact il tipo di dati smallint, tinyint, decimal o numeric. Se si sottoscrive una pubblicazione con colonna Identity diversa da integer (int 4) o bigint (int 8), non sarà possibile creare tale sottoscrizione in SQL Server Compact.
SQL Server Compact consente di modificare il valore di inizializzazione e il valore di incremento nel Sottoscrittore mediante l'istruzione ALTER TABLE nome_tabella ALTER COLUMN nome_colonna IDENTITY (valore inizializzazione,incremento). In questo modo è possibile gestire manualmente gli intervalli di valori Identity. Tuttavia, se la pubblicazione include una colonna Identity e l'intervallo di valori Identity viene gestito dal server di pubblicazione, è consigliabile non modificare il valore di inizializzazione o il valore di incremento sul Sottoscrittore. Se si specifica un valore di inizializzazione superiore rispetto al valore Identity dell'intervallo allocato, SQL Server Compact restituirà un errore quando si tenta di inserire un nuovo record nella tabella. Alla successiva sincronizzazione, il problema verrà corretto dal server di pubblicazione mediante l'assegnazione di un nuovo intervallo di valori Identity al Sottoscrittore. - Tipi di dati non supportati
Quando si sottoscrive una pubblicazione di SQL Server 2005, i tipi di dati computed column, timestamp, date, time, hierarchyid, filestream e utcdatetime non sono supportati. - Tipi di dati CHAR e NTEXT in SQL Server e SQL Server Compact
SQL Server consente una lunghezza maggiore per il tipo di dati CHAR rispetto al tipo di dati CHAR in SQL Server Compact. Ai fini della replica dei contenuti, il tipo di dati CHAR di grandi dimensioni viene convertito nel tipo di dati NTEXT in SQL Server Compact. Benché SQL Server e SQL Server Compact consentano la modifica del tipo di dati di una colonna CHAR, non consentono la modifica del tipo di dati di una colonna NTEXT. Anche se è possibile modificare un tipo di dati CHAR di grandi dimensioni in SQL Server, tale modifica non verrebbe quindi accettata in SQL Server Compact, poiché il tipo di dati risulta diverso da CHAR. - Tipi di dati NTEXT o IMAGE
Se una colonna è mappata a Ntext e il tipo di dati per la stessa colonna in SQL Server viene modificato in Char, Nchar e così via, la colonna del database di SQL Server Compact rimarrà Ntext fino alla reinizializzazione del Sottoscrittore.
Vedere anche
Concetti
Altre risorse
Mapping dei tipi di dati gestiti (SQL Server Compact)