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.
Datentypen 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 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 Genauigkeit für SQL Server DECIMAL/NUMERIC reicht von 1 bis 38, daher muss p kleiner als 39 sein. |
DECIMAL(p>38,s) |
Es gibt keinen entsprechenden Datentyp in 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 Genauigkeit für SQL Server DECIMAL/NUMERIC reicht von 1 bis 38, daher muss p kleiner als 39 sein. |
NUMERIC(p>38,s) |
Es gibt keinen entsprechenden Datentyp in 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. SQL Server SMALLDATETIME ist 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 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 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. |
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) |
Für SQL Server 2005 verwenden Sie 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 | Datentypen 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 dem Befehlszeilenparameter -b aus, um die Unterschiede zwischen den CHAR-Datentypen in SQL Anywhere und anderen Datenbanken aufzulösen. |
DATE |
DATE |
|
DATETIME |
TIMESTAMP oder DATETIME |
SQL Server DATETIME-Werte 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 von 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 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 |
|
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 nicht alle möglichen Werte geprüft werden, 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. SQL Server SMALLDATETIME ist 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 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. |
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. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |