Datentypen und Replikation

SQL Server Compact unterstützt nicht alle SQL Server-Datentypen vollständig. Als Abonnent von SQL Server-Veröffentlichungen müssen von SQL Server Compact nicht unterstützte Typen in solche übersetzt werden, die unterstützt werden.

Unterstützte Datentypen und Datentypzuordnungen

Die folgende Tabelle zeigt die Datentypzuordnungen, die beim Replizieren zwischen SQL Server und MicrosoftSQL Server Compact 3.5 ausgeführt werden. Die Tabelle listet Zuordnungen für jeden SQL Server-Datentyp auf und beschreibt Einschränkungen und spezielle Verhaltensweisen.

SQL Server-Datentyp

SQL Server Compact-Datentyp

bigint

Bigint

binary(n)

binary(n)

bit

Bit

character(n)(Synonym: char(n)) char(n))

national character(n) - Oder - ntext

Wenn die Länge der Daten maximal 4000 Zeichen beträgt, werden die SQL Server-character-Daten durch die SQL Server Compact-Replikation SQL Server Compact-national character zugeordnet. Andernfalls werden die Zeichendaten SQL Server Compact-ntext zugeordnet. Wenn die Länge der ntext-Daten die Länge der character-Spalte überschreitet, schlägt die Synchronisierung beim Senden der Daten von SQL Server Compact an SQL Server fehl.

character varying(n)(Synonym: varchar(n)) varchar(n))

national character varying - Oder - ntext

Wenn die Länge der Daten maximal 4000 Zeichen beträgt, werden die SQL Server-character varying -Daten von der SQL Server Compact-Replikation SQL Server Compact-national character varying zugeordnet. Andernfalls werden die character varying-Daten SQL Server Compact-ntext zugeordnet. Wenn die Länge der ntext-Daten die Länge der character varying-Spalte überschreitet, schlägt die Synchronisierung beim Senden der Daten von SQL Server Compact an SQL Server fehl.

character varying(MAX)(Synonym: varchar(MAX))

ntext

Wenn die Länge der character varying(MAX)-Daten die Länge der ntext-Spalte überschreitet, schlägt die Synchronisierung beim Senden der Daten von SQL Server an SQL Server Compact fehl.

Computed Columns

Nicht unterstützt.

Wenn Sie den Veröffentlichungs-Assistenten verwenden und angeben, dass SQL Server Compact-Abonnements verwendet werden, wird jede Spalte vom Datentyp Computed Column vertikal aus der Veröffentlichung partitioniert. Wenn Sie den Assistenten nicht verwenden, müssen Sie Spalten dieses Datentyps in der Veröffentlichung ausschließen.

date

nchar(10)-Wert im Format "YYYY-MM-DD"

HinweisHinweis
SQL Server Compact speichert den Doppelbyte-Zeichentyp. Von der Version SQL Server Compact 3.5 SP1 wird die Konvertierung dieses Typs unterstützt.

datetime

Datetime

datetime2

nvarchar(27)-Wert des Formats "YYYY-MM-DD hh:mm:ss.nnnnnnn"

HinweisHinweis
SQL Server Compact speichert den Doppelbyte-Zeichentyp. Von der Version SQL Server Compact 3.5 SP1 wird die Konvertierung dieses Typs unterstützt.

datetimeoffset

nvarchar(34)-Wert des Formats "YYYY-MM-DD hh:mm:ss.nnnnnnn [+/-] hh:mm"

HinweisHinweis
SQL Server Compact speichert den Doppelbyte-Zeichentyp. Von der Version SQL Server Compact 3.5 SP1 wird die Konvertierung dieses Typs unterstützt.

decimal

Nicht unterstützt. Numeric verwenden.

double precision

double precision

float

float

geography

image

HinweisHinweis
Von der Version SQL Server Compact 3.5 SP1 wird die Konvertierung dieses Typs unterstützt.

geometry

image

HinweisHinweis
Von der Version SQL Server Compact 3.5 SP1 wird die Konvertierung dieses Typs unterstützt.

image

image

integer(Synonym: int)

integer

money

money

national character(n)(Synonym: nchar(n)) nchar(n))

national character(n)

national character varying(n)(Synonym: nvarchar(n)) nvarchar(n))

national character varying(n)

national character varying(MAX)(Synonym: nvarchar(MAX)) nvarchar(MAX))

ntext

Wenn die Länge der national character varying(MAX)-Daten die Länge der ntext-Spalte überschreitet, schlägt die Synchronisierung beim Senden der Daten von SQL Server an SQL Server Compact fehl.

ntext

ntext

numeric(Synonyme: decimal, dec)

numeric

real

Real

smalldatetime

datetime

Wenn die Genauigkeit der datetime-Daten die Genauigkeit der smalldatetime-Spalte überschreitet, meldet die Synchronisierung beim Senden der Daten von SQL Server Compact an SQL Server einen Fehler.

smallint (int 2)

smallint (int 2)

smallmoney

money

Wenn die Genauigkeit der money-Daten die Genauigkeit der smallmoney-Spalte überschreitet, meldet die Synchronisierung beim Senden der Daten von SQL Server Compact an SQL Server einen Fehler.

sql_variant

ntext

Wenn in der sql_variant-Spalte Binärdaten vorhanden sind, müssen diese Binärdaten aus einer geraden Anzahl von Bytes bestehen. Andernfalls kommt es zu einem Konvertierungsfehler.

text

ntext

Wenn die Länge der text-Daten 1.073.741.823 Zeichen überschreitet, schlägt die Synchronisierung beim Senden der Daten von SQL Server an SQL Server Compact fehl.

time

nvarchar(16)-Wert des Formats "hh:mm:ss.nnnnnnn"

HinweisHinweis
SQL Server Compact speichert den Doppelbyte-Zeichentyp. Von der Version SQL Server Compact 3.5 SP1 wird die Konvertierung dieses Typs unterstützt.

timestamp

Nicht unterstützt.

Wenn Sie den Veröffentlichungs-Assistenten verwenden und angeben, dass SQL Server Compact-Abonnements verwendet werden, wird jede Spalte vom Datentyp timestamp vertikal aus der Veröffentlichung partitioniert. Wenn Sie den Assistenten nicht verwenden, müssen Sie Spalten dieses Datentyps in der Veröffentlichung ausschließen. Wenn die timestamp/rowversion-Spalte nicht vertikal partitioniert ist, werden die Daten in dieser Spalte nicht repliziert.

tinyint

tinyint

uniqueidentifier

uniqueidentifier

varbinary(n)

varbinary(n)

varbinary(MAX)

image

Wenn die Länge der varbinary(MAX)-Daten die Länge der image-Spalte überschreitet, schlägt die Synchronisierung beim Senden der Daten von SQL Server an SQL Server Compact fehl.

varchar

Siehe Zeichenabweichung

XML

ntext

Wählen Sie möglichst Datentypen aus, die sowohl von SQL Server als auch SQL Server Compact unterstützt werden, sodass für die Replikation keine Datenzuordnung nötig ist. Wenn dies nicht möglich ist, sollten von der Anwendung die Werte überprüft werden, die in der SQL Server Compact-Datenbank gespeichert sind, um sicherzustellen, dass diese Werte bei der Replikation zwischen SQL Server und SQL Server Compact zugeordnet werden können.

Vorhandene Anwendungen, die date, datetime2, datetimeoffset und time nicht systemeigen unterstützen, müssen Daten verwenden, die kompatiblen Datentypen wie nchar und nvarchar zugeordnet werden. Weitere Informationen über SQL Server-Datentypen finden Sie in der SQL Server-Onlinedokumentation unter Datentypen.

Datentypeneinschränkungen

Die folgenden Einschränkungen gelten für SQL Server Compact-Abonnenten:

  • Indizes

    Sie können keine Tabellen veröffentlichen, die einen Index auf varchar (MAX)-, nvarchar(MAX)-, varbinary(MAX)- und XML-Spalten aufweisen. Das Erstellen des SQL Server Compact-Abonnements führt zu einem Fehler, weil diese Spaltentypen ntext oder image zugeordnet werden und ein Primärschlüssel nicht auf einer ntext- oder image-Spalte erstellt werden kann.

  • Identitätsspalten

    SQL Server Compact-Identitätsspalten müssen vom Datentyp integer (int 4) oder bigint (int 8) sein. SQL Server Compact-Identitätsspalten dürfen nicht vom Datentyp smallint, tinyint, decimal oder numeric sein. Wenn Sie eine Veröffentlichung abonnieren, die eine andere Identitätsspalte als integer (int 4) oder bigint(int8) besitzt, führt das Erstellen dieses Abonnements bei SQL Server Compact zu einem Fehler.

    SQL Server Compact gibt Ihnen die Möglichkeit, den Ausgangs- und den Inkrementwert auf dem Abonnenten zu ändern, indem Sie die Anweisung ALTER TABLEtable_nameALTER COLUMNcolumn_nameIDENTITY (seed,increment) verwenden. Damit können Sie Identitätsbereiche manuell verwalten. Wenn zu Ihrer Veröffentlichung allerdings eine Identitätsspalte gehört und der Identitätsbereich vom Verleger verwaltet wird, sollten Sie den Anfangs- oder Inkrementwert auf dem Abonnenten nicht ändern. Wenn Sie einen Anfangswert angeben, der größer als der zugeordnete Identitätsbereich ist, wird von SQL Server Compact ein Fehler zurückgegeben, wenn Sie versuchen, einen neuen Datensatz in die Tabelle einzufügen. Beim nächsten Synchronisieren wird das Problem vom Verleger behoben, indem Ihrem Abonnenten ein neuer Identitätsbereich zugeordnet wird.

  • Nicht unterstützte Datentypen

    Beim Abonnieren einer SQL Server 2005-Veröffentlichung werden die Datentypen computed column, timestamp, date, time, hierarchyid, filestream und utcdatetime nicht unterstützt.

  • CHAR- und NTEXT-Datentypen in SQL Server und SQL Server Compact

    In SQL Server kann der CHAR-Datentyp größer sein als der CHAR-Datentyp in SQL Server Compact. Zum Replizieren der Inhalte wird der große CHAR-Datentyp in SQL Server Compact in den NTEXT-Datentyp konvertiert. Auch wenn es in SQL Server und SQL Server Compact zulässig ist, den Datentyp einer CHAR-Spalte zu ändern, ist es in beiden Programmen nicht möglich, den Datentyp einer NTEXT-Spalte zu ändern. Obwohl es also möglich wäre, einen großen CHAR-Datentyp in SQL Server zu ändern, würde diese Änderung in SQL Server Compact fehlschlagen, weil es sich nicht mehr um einen CHAR-Datentyp handelt.

  • NTEXT- oder IMAGE-Datentypen

    Wenn eine Spalte ntext zugeordnet wird und von SQL Server der Datentyp für die gleiche Spalte in char, nchar usw. geändert wird, bleibt die Spalte in der SQL Server Compact-Datenbank vom Typ ntext, bis der Abonnent erneut initialisiert wird.

Siehe auch

Andere Ressourcen

Datentypen und Remotedatenzugriff (Remote Data Access – RDA)

Verwaltete Datentypzuordnungen (SQL Server Compact)