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 Microsoft SQL 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"
Hinweis:
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"
Hinweis:
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"
Hinweis:
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
Hinweis:
Von der Version SQL Server Compact 3.5 SP1 wird die Konvertierung dieses Typs unterstützt.
|
geometry |
image
Hinweis:
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"
Hinweis:
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 (int 8) 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 TABLE table_name ALTER COLUMN column_name IDENTITY (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
Konzepte
Datentypen und Remotedatenzugriff (Remote Data Access – RDA)
Andere Ressourcen
Verwaltete Datentypzuordnungen (SQL Server Compact)