Aufpassen bei SQL Server Compact Edition Datentypen
Da ich gerade mit dem SQL Server Compact Edition arbeite möchte ich Euch auf ein paar Besonderheiten bezüglich der Datentypen der SQL Server CE hinweisen.
Denn bei der Compact Edition fehlen leider einige Datentypen, die bei der Express- wie auch den kostenpflichtigen SQL-Server – Versionen zur Verfügung stehen.
Eigenarten bezüglich dem Visual Studio und der Compact Edtion werde ich in einem anderen Artikel weiter erläutern.
Eine praktische Einführung hierfür findet Ihr in meinem Video-Tutorial: Vb.net und SQL Server Compact Edition
Unterschiedliche Datentypen
Das Beachten der verschiedenen Datentypen ist einerseits wichtig für das Erstellen von Tabellen, aber auch für das Verhalten des Servers beim Replizieren.
Außerdem kann es vorallem beim Umstellen einer Applikation von einer „echten“ SQL-Server Anwendung auf eine Compact- Variante zu erhöhten Problemen kommen (hierfür empfehle ich Euch den bereits oben erwähnten Artikel zu lesen).
Die folgende Tabelle, die Ihr auch auf einer der msdn-Seiten von Microsoft findet, zeigt die Datentypzuordnungen, welche beim Replizieren zwischen SQL Server und Microsoft SQL Server Compact Edition ausgeführt werden.
Sie listet die Zuordnungen der SQL Server-Datentypen auf und beschreibt Einschränkungen und spezielle Verhaltensweisen.
SQL Server-Datentyp |
Datentyp von SQL Server Compact Edition |
bigint |
bigint |
binary(n) |
binary(n) |
bit |
bit |
character(n)(Synonym: char(n)) |
national character(n) – Oder – ntext Wenn die Zeichenlänge maximal 4000 Zeichen beträgt, werden die SQL Server-character-Daten durch die SQL Server Compact Edition-Replikation SQL Server Compact Edition-national character zugeordnet. Andernfalls werden die Zeichendaten SQL Server Compact Edition-ntext zugeordnet. Wenn die Länge der ntext-Daten die Länge der character-Spalte überschreitet, meldet die Synchronisierung beim Senden der Daten von SQL Server Compact Edition an SQL Server einen Fehler. |
character varying(n)(Synonym: varchar(n)) |
national character varying – Oder – ntext Wenn die Zeichenlänge maximal 4000 Zeichen beträgt, werden die SQL Server-character varying -Daten von der SQL Server Compact Edition-Replikation SQL Server Compact Edition-national character varying zugeordnet. Andernfalls werden die character varying-Daten SQL Server Compact Edition-ntext zugeordnet. Wenn die Länge der ntext-Daten die Länge der character varying-Spalte überschreitet, meldet die Synchronisierung beim Senden der Daten von SQL Server Compact Edition an SQL Server einen Fehler. |
character varying(MAX)(Synonym: varchar(MAX)) |
ntext Wenn die Länge der character varying(MAX)-Daten die Länge der ntext-Spalte überschreitet, meldet die Synchronisierung beim Senden der Daten von SQL Server an SQL Server Compact Edition einen Fehler. |
Computed Columns |
wird nicht unterstützt. Wenn Ihr den Publikations-Assistenten verwendet und angeben, dass SQL Server Compact Edition-Abonnements verwendet werden, wird jede Spalte vom Datentyp Computed Column vertikal aus der Publikation partitioniert. Wenn Sie den Assistenten nicht verwenden, müssen Sie Spalten dieses Datentyps in der Publikation ausschließen. |
datetime |
datetime |
decimal |
wird nicht unterstützt. Bitte Numeric verwenden. |
double precision |
double precision |
float |
float |
image |
image |
integer(Synonym: int) |
integer |
money |
money |
national character(n)(Synonym: nchar(n)) |
national character(n) |
national character varying(n)(Synonym: nvarchar(n)) |
national character varying(n) |
national character varying(MAX)(Synonym: nvarchar(MAX)) |
ntext Wenn die Länge der national character varying(MAX)-Daten die Länge der ntext-Spalte überschreitet, meldet die Synchronisierung beim Senden der Daten von SQL Server an SQL Server Compact Edition einen Fehler. |
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 Edition 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 Edition 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, meldet die Synchronisierung beim Senden der Daten von SQL Server an SQL Server Compact Edition einen Fehler. |
timestamp |
Nicht unterstützt. Wenn Du den Publikations-Assistenten verwendest und angibst, dass SQL Server Compact Edition-Abonnements verwendet werden, wird jede Spalte vom Datentyp timestamp vertikal aus der Publikation partitioniert. Wenn Sie den Assistenten nicht verwenden, müssen Sie Spalten dieses Datentyps in der Publikation ausschließen. |
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, meldet die Synchronisierung beim Senden der Daten von SQL Server an SQL Server Compact Edition einen Fehler. |
varchar |
Siehe Zeichenabweichung |
XML |
ntext |