Tipi di dati e replica
Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 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 Edition 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 Edition. 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 | Tipo di dati di SQL Server Compact Edition |
---|---|
bigint |
bigint |
binary(n) |
binary(n) |
bit |
bit |
character(n)(sinonimo: 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 Edition viene eseguito il mapping dei dati character di SQL Server ai dati national character di SQL Server Compact Edition. In caso contrario, viene eseguito il mapping dei dati di tipo carattere ai dati ntext di SQL Server Compact Edition. 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 Edition a SQL Server. |
character varying(n)(sinonimo: varchar(n)) |
national character varying oppure ntext Se la lunghezza dei dati è pari o inferiore a 4000 caratteri, durante la replica SQL Server Compact Edition viene eseguito il mapping dei dati character varying di SQL Server ai dati national character varying di SQL Server Compact Edition. In caso contrario, viene eseguito il mapping dei dati character varying ai dati ntext di SQL Server Compact Edition. 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 Edition 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 Edition. |
Computed Columns |
Non supportato. Se si utilizza la Creazione guidata nuova pubblicazione e si indica che verranno utilizzate sottoscrizioni di SQL Server Compact Edition, 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. |
datetime |
datetime |
decimal |
Non supportato. Utilizzare il tipo di dati numeric. |
double precision |
double precision |
float |
float |
image |
image |
integer(sinonimo: int) |
integer |
money |
money |
national character(n)(sinonimo: nchar(n)) |
national character(n) |
national character varying(n)(sinonimo: nvarchar(n)) |
national character varying(n) |
national character varying(MAX)(sinonimo: 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 Edition. |
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 Edition 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 Edition 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 Edition. |
timestamp |
Non supportato. Se si utilizza la Creazione guidata nuova pubblicazione e si indica che verranno utilizzate sottoscrizioni di SQL Server Compact Edition, 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. |
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 Edition. |
varchar |
Vedere character varying |
XML |
ntext |
Quando possibile, scegliere tipi di dati supportati sia da SQL Server che da SQL Server Compact Edition, 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 Edition per assicurarsi che la replica possa eseguire il mapping di tali valori tra SQL Server e SQL Server Compact Edition.
Per ulteriori informazioni sui tipi di dati di SQL Server, vedere la sezione relativa ai tipi di dati nella documentazione in linea di SQL Server.
Restrizioni dei tipi di dati
Le regole seguenti si applicano ai Sottoscrittori di SQL Server Compact Edition:
- 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 Edition 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 Edition sia associato il tipo di dati integer (int 4) o bigint (int 8). Non è possibile associare alle colonne Identity di SQL Server Compact Edition il tipo di dati smallint, tinyint, decimal o numeric. Se si sottoscrive una pubblicazione con colonna Identity diversa da integer (int 4) o bigint (int8), non sarà possibile creare tale sottoscrizione in SQL Server Compact Edition.
SQL Server Compact Edition consente di modificare il valore di inizializzazione e il valore di incremento nel Sottoscrittore mediante l'istruzione ALTER TABLEtable_nameALTER COLUMNcolumn_nameIDENTITY (seed,increment). 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 Edition 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 2000, i tipi di dati computed column e timestamp non sono supportati. Quando si sottoscrive una pubblicazione di SQL Server 2005, i tipi di dati computed column, timestamp, date, time e utcdatetime non sono supportati. - Tipi di dati CHAR e NTEXT in SQL Server e SQL Server Compact Edition
SQL Server consente una lunghezza maggiore per il tipo di dati CHAR rispetto al tipo di dati CHAR in SQL Server Compact Edition. 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 Edition. Benché SQL Server e SQL Server Compact Edition 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 Edition, 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 Edition rimarrà Ntext fino alla reinizializzazione del Sottoscrittore.
Vedere anche
Concetti
Altre risorse
Mapping dei tipi di dati (SQL Server Compact Edition)