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 MicrosoftSQL 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(int8), 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 TABLEnome_tabellaALTER COLUMNnome_colonnaIDENTITY (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

Altre risorse

Tipi di dati e RDA

Mapping dei tipi di dati gestiti (SQL Server Compact)