Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » MobiLink - Serveradministration » MobiLink-Referenz » MobiLink-Datenzuordnungen zwischen entfernten und konsolidierten Datenbanken

 

Microsoft SQL Server-Datentypzuordnung

Zuordnung zu konsolidierten Microsoft SQL Server-Datentypen

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).

Zuordnung zu entfernten SQL Anywhere- oder UltraLite-Datentypen

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