Die folgende Tabelle zeigt, wie entfernte SQL Anywhere- und UltraLite-Datentypen den konsolidierten Microsoft SQL Server-Datentypen zugeordnet werden. Zum Beispiel sollte eine Spalte, die in der entfernten Datenbank den Datentyp DATE hat, in der konsolidierten Datenbank den Typ DATETIME haben.
Datentyp in SQL Anywhere oder UltraLite | Microsoft SQL Server-Datentyp | Hinweise |
---|---|---|
BIGINT |
BIGINT |
|
BINARY(n<=8000) |
VARBINARY(n) |
|
BINARY(n>8000) |
VARBINARY(MAX) |
|
BIT |
BIT |
|
CHAR(n<=8000) |
VARCHAR(n) |
|
CHAR(n>8000) |
VARCHAR(MAX) |
|
DATE |
DATE |
|
DATETIME |
DATETIME2 |
DATETIME2- und TIME-Werte von Microsoft SQL Server sind bis auf 100 Nanosekunden genau. TIMESTAMP- und TIME-Werte sind dagegen nur bis auf 1 Mikrosekunde genau. Für eine einwandfreie Synchronisation von DATETIME2 und TIME sollten Sie die Sekundenbruchteile auf 1 Mikrosekunde runden. |
DECIMAL(p=<38,s) |
DECIMAL(p,s) |
Die Gesamtstellenzahl des Microsoft SQL Server-Datentyps DECIMAL/NUMERIC reicht von 1 bis 38, daher muss p kleiner als 39 sein. |
DECIMAL(p>38,s) |
Es gibt keinen entsprechenden Datentyp in Microsoft SQL Server. |
|
DOUBLE |
FLOAT(53) |
|
FLOAT(p) |
FLOAT(p) |
|
IMAGE |
VARBINARY(MAX) |
|
INTEGER |
INT |
|
LONG BINARY |
VARBINARY(MAX) |
|
LONG NVARCHAR |
NVARCHAR(MAX) |
|
LONG VARBIT |
VARCHAR(MAX) |
|
LONG VARCHAR |
VARCHAR(MAX) |
|
MONEY |
MONEY |
|
NCHAR(n<=4000) |
NVARCHAR(c) |
|
NCHAR(n>4000) |
NVARCHAR(MAX) |
|
NTEXT |
NVARCHAR(MAX) |
|
NUMERIC(p=<38,s) |
NUMERIC(p,s) |
Die Gesamtstellenzahl des Microsoft SQL Server-Datentyps DECIMAL/NUMERIC reicht von 1 bis 38, daher muss p kleiner als 39 sein. |
NUMERIC(p>38,s) |
Es gibt keinen entsprechenden Datentyp in Microsoft SQL Server. |
|
NVARCHAR(n<=4000) |
NVARCHAR(c) |
|
NVARCHAR(n>4000) |
NVARCHAR(MAX) |
|
REAL |
REAL |
|
SMALLDATETIME |
SMALLDATETIME |
In SQL Anywhere und UltraLite wird SMALLDATETIME als TIMESTAMP implementiert. SMALLDATETIME-Werte von Microsoft SQL Server sind auf die Minute genau. 29,998 Sekunden oder weniger werden auf die Minute abgerundet, und Werte mit 29,999 Sekunden oder höher werden auf die nächste Minute aufgerundet. In SQL Anywhere oder UltraLite ist SMALLDATETIME auf die Mikrosekunde genau. Für eine einwandfreie Synchronisation in SQL Anywhere oder UltraLite muss SMALLDATETIME auf die Minute gerundet werden. Das Jahr muss im Bereich von 1900 - 2078 liegen. |
SMALLINT |
SMALLINT |
|
SMALLMONEY |
SMALLMONEY |
|
TEXT |
VARCHAR(MAX) |
|
TIME |
TIME |
DATETIME2- und TIME-Werte von Microsoft SQL Server sind bis auf 100 Nanosekunden genau. TIMESTAMP- und TIME-Werte sind dagegen nur bis auf 1 Mikrosekunde genau. Für eine einwandfreie Synchronisation von DATETIME2 und TIME sollten Sie die Sekundenbruchteile auf 1 Mikrosekunde runden. |
TIMESTAMP |
DATETIME2 |
DATETIME2- und TIME-Werte von Microsoft SQL Server sind bis auf 100 Nanosekunden genau. TIMESTAMP- und TIME-Werte sind dagegen nur bis auf 1 Mikrosekunde genau. Für eine einwandfreie Synchronisation von DATETIME2 und TIME sollten Sie die Sekundenbruchteile auf 1 Mikrosekunde runden. |
TIMESTAMP WITH TIME ZONE | DATETIMEOFFSET | |
TINYINT |
TINYINT |
Bei Downloads dürfen Werte nicht negativ sein. |
UNIQUEIDENTIFIER |
UNIQUEIDENTIFIER |
|
UNIQUEIDENTIFIERSTR |
UNIQUEIDENTIFIER |
|
UNSIGNED BIGINT |
NUMERIC(20) |
Bei Downloads dürfen Werte nicht negativ sein. |
UNSIGNED INTEGER |
NUMERIC(11) |
Bei Downloads dürfen Werte nicht negativ sein. |
UNSIGNED TINYINT |
TINYINT |
Bei Downloads dürfen Werte nicht negativ sein. |
UNSIGNED SMALLINT |
INT |
Bei Downloads dürfen Werte nicht negativ sein. |
VARBINARY(n<=8000) |
VARBINARY(n) |
|
VARBINARY(n>8000) |
VARBINARY(MAX) |
|
VARBIT(n<=8000) |
VARCHAR(n) |
|
VARBIT(n>8000) |
VARCHAR(MAX) |
|
VARCHAR(n<=8000) |
VARCHAR(c) |
|
VARCHAR(n>8000) |
VARCHAR(MAX) |
|
XML |
XML oder VARCHAR(MAX) |
Verwenden Sie für Microsoft SQL Server 2005 XML. Für andere Versionen verwenden Sie VARCHAR(MAX). |
Die folgende Tabelle zeigt, wie konsolidierte Microsoft SQL Server-Datentypen entfernten SQL Anywhere- und UltraLite-Datentypen zugeordnet werden. Zum Beispiel sollte eine Spalte, die in der entfernten Datenbank den Datentyp TEXT hat, in der konsolidierten Datenbank den Typ LONG VARCHAR haben.
Microsoft SQL Server-Datentyp | Datentyp in SQL Anywhere oder UltraLite | Hinweise |
---|---|---|
BIGINT |
BIGINT |
|
BINARY(n) |
BINARY(n) |
|
BIT |
BIT |
|
CHAR(n) |
VARCHAR(n) |
Eine CHAR-Spalte von Microsoft SQL Server wird mit Leerzeichen aufgefüllt. Eine CHAR-Spalte von SQL Anywhere wird standardmäßig nicht mit Leerzeichen aufgefüllt und entspricht einer VARCHAR-Spalte. Sie sollten daher CHAR-Datentypen in Synchronisationstabellen in Microsoft SQL Server vermeiden. Wenn Sie den CHAR-Datentyp in der konsolidierten Datenbank in Microsoft SQL Server verwenden müssen, führen Sie den MobiLink-Server mit der Befehlszeilenoption -b aus, um die Unterschiede zwischen den CHAR-Datentypen in SQL Anywhere und anderen Datenbanken aufzulösen. |
DATE |
DATE |
|
DATETIME |
TIMESTAMP oder DATETIME |
DATETIME-Werte von Microsoft SQL Server sind bis auf 1/300 Sekunden genau. Die letzte Ziffer des Sekundenbruchteils ist immer 0, 3 oder 6. Andere Ziffern werden auf eine dieser Ziffern gerundet. Somit werden 0 und 1 zu 0; 2, 3 und 4 werden zu 3; 5, 6, 7 und 8 werden zu 6 und 9 wird zu 10. Bei einem Download behält SQL Anywhere die Originalwerte aus Microsoft SQL Server bei, aber bei einem Upload können die Werte geringfügig von den Originalwerten abweichen. Falls DATETIME für einen Primärschlüssel verwendet wird, könnte die Konfliktlösung fehlschlagen. Für eine einwandfreie Synchronisation von DATETIME können Sie die Sekundenbruchteile auf 10 Millisekunden runden. Das Jahr muss im Bereich von 1753 - 9999 liegen. |
DATETIME2 |
TIMESTAMP |
DATETIME2- und TIME-Werte von Microsoft SQL Server sind bis auf 100 Nanosekunden genau. TIMESTAMP- und TIME-Werte sind dagegen nur bis auf 1 Mikrosekunde genau. Für eine einwandfreie Synchronisation von DATETIME2 und TIME sollten Sie die Sekundenbruchteile auf 1 Mikrosekunde runden. |
DECIMAL(p,s) |
DECIMAL(p,s) |
|
FLOAT(p) |
FLOAT(p) |
|
IMAGE |
LONG BINARY |
|
INT |
INT |
|
MONEY |
MONEY |
|
NCHAR(n) |
NVARCHAR(c) |
In UltraLite nicht verfügbar. SQL Anywhere NCHAR und Nicht-SQL Anywhere NCHAR sind nicht äquivalent. SQL Anywhere NCHAR ist äquivalent zu NVARCHAR. Sie sollten NCHAR nicht in konsolidierten Datenbankspalten verwenden, die synchronisiert sind. Falls Sie Nicht-SQL Anywhere NCHAR verwenden müssen, führen Sie den MobiLink-Server mit der Option -b aus. |
NTEXT |
LONG NVARCHAR |
In UltraLite nicht verfügbar. |
NVARCHAR(c) |
NVARCHAR(c) |
In UltraLite nicht verfügbar. |
NVARCHAR(MAX) |
LONG NVARCHAR |
In UltraLite nicht verfügbar. |
NUMERIC(p,s) |
NUMERIC(p,s) |
|
REAL |
REAL |
REAL kann Probleme verursachen, wenn die konsolidierten und entfernten Datenbanken nicht die exakt gleichen (ungenauen) Werte erlauben. Da iAnywhere Solutions nicht alle möglichen Werte prüft, ist Vorsicht angebracht. Um Probleme zu vermeiden, sollten Sie diese Typen nicht als Teil eines Primärschlüssels verwenden. |
SMALLDATETIME |
SMALLDATETIME |
In SQL Anywhere und UltraLite wird SMALLDATETIME als TIMESTAMP implementiert. SMALLDATETIME-Werte von Microsoft SQL Server sind auf die Minute genau. 29,998 Sekunden oder weniger werden auf die Minute abgerundet, und Werte mit 29,999 Sekunden oder höher werden auf die nächste Minute aufgerundet. In SQL Anywhere oder UltraLite ist SMALLDATETIME auf die Mikrosekunde genau. Für eine einwandfreie Synchronisation in SQL Anywhere oder UltraLite muss SMALLDATETIME auf die Minute gerundet werden. Das Jahr muss im Bereich von 1900 - 2078 liegen. |
SMALLINT |
SMALLINT |
|
SMALLMONEY |
SMALLMONEY |
|
TEXT |
LONG VARCHAR |
|
TIME |
TIME |
DATETIME2- und TIME-Werte von Microsoft SQL Server sind bis auf 100 Nanosekunden genau. TIMESTAMP- und TIME-Werte sind dagegen nur bis auf 1 Mikrosekunde genau. Für eine einwandfreie Synchronisation von DATETIME2 und TIME sollten Sie die Sekundenbruchteile auf 1 Mikrosekunde runden. |
TIMESTAMP |
VARBINARY(8) |
In Microsoft SQL Server ist TIMESTAMP ein Binärzähler, der jeweils nach einer Änderung einer Zeile erhöht wird. Jede Tabelle kann daher eine TIMESTAMP-Spalte enthalten und es ist nicht sinnvoll, sie zu synchronisieren. Wenn sie in einer Synchronisation enthalten sein muss, sollten Sie sie in SQL Anywhere oder UltraLite dem Datentyp VARBINARY(8) zuordnen. Es ist nicht möglich, diese Zeitstempel-Spalte explizit einzufügen oder zu aktualisieren, da sie vom Server verwaltet wird. Berücksichtigen Sie dies, wenn Sie Uploadskripten für Tabellen implementieren, die solche Spalten enthalten. |
DATETIMEOFFSET | TIMESTAMP WITH TIME ZONE | |
TINYINT |
TINYINT |
|
UNIQUEIDENTIFIER |
UNIQUEIDENTIFIER |
|
VARBINARY(n) |
VARBINARY(n) |
|
VARBINARY(MAX) |
LONG BINARY |
|
VARCHAR(n) |
VARCHAR(n) |
|
VARCHAR(MAX) |
LONG VARCHAR |
|
XML |
XML |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |