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

 

IBM DB2 LUW-Datentypzuordnung

Zuordnung zu konsolidierten IBM DB2 LUW-Datentypen

Die folgende Tabelle zeigt, wie entfernte SQL Anywhere- und UltraLite-Datentypen den konsolidierten IBM DB2 LUW-Datentypen zugeordnet werden. Zum Beispiel sollte eine Spalte, die in der entfernten Datenbank den Datentyp BIT hat, in der konsolidierten Datenbank den Typ SMALLINT haben.

Wenn Sie eine DB2-Tabelle erstellen, müssen Sie auf die DB2-Seitengröße achten. Für DB2 ist die maximale Zeilenlänge (MRL) von der Seitengröße abhängig: Die MRL beträgt 4005 bei einer Seitengröße von 4 KByte, 8101 bei 8 KByte, 16293 bei 16 KByte und 32677 bei 32 KByte. Die Länge der Spalten in einer Tabelle darf die obigen Grenzen nicht überschreiten. Falls eine Tabelle über eine BLOB oder CLOB-Spalte verfügt, stellen Sie die Zeilenlänge mit dem LOB Locator fest, nicht mit den BLOB oder CLOB-Daten direkt. Weitere Hinweise finden Sie in Ihrer DB2-Dokumentation.

Datentypen in SQL Anywhere oder UltraLite

IBM DB2 LUW-Datentyp

Hinweise

BIGINT

BIGINT

BINARY(n<MRL)

VARCHAR(n) FOR BIT DATA

BINARY(n>=MRL)

BLOB(n)

BIT

SMALLINT

CHAR(n<MRL)

VARCHAR(n)

CHAR(n>=MRL)

CLOB(n)

DB2-Werte können länger sein als SQL Anywhere- oder UltraLite-Werte. Stellen Sie daher sicher, dass beim Download keine zu großen Werte auftauchen.

DATE

DATE

Für SQL Anywhere und UltraLite muss die Zeitangabe das Format 00:00:00 haben.

DATETIME

TIMESTAMP

DECIMAL(p<32,s)

DECIMAL(p,s)

Die Genauigkeit von SQL Anywhere DECIMAL liegt zwischen 1 und 127. Die maximale Genauigkeit von DB2 DECIMAL beträgt 31.

DECIMAL(p>=32,s)

Daten des Typs SQL Anywhere DECIMAL mit einer Genauigkeit von über 31 können nicht mit DB2 synchronisiert werden.

DOUBLE

DOUBLE

DOUBLE ist ein ungenauer nummerischer Datentyp, der gerundet wird. Bei verschiedenen Computertypen ist die Basisspeicherung für DOUBLE oft unterschiedlich, was zu unterschiedlichem Runden führt. DOUBLE ist keine gute Wahl für einen Primärschlüssel, da bei Primärschlüsseln auf Gleichheit geprüft wird. Dies gilt besonders in einer Synchronisationsumgebung, da die konsolidierte Datenbank oft auf anderer Hardware läuft wie die entfernte Datenbank.

FLOAT(1-24)

REAL

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

FLOAT(25-53)

DOUBLE

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

IMAGE

BLOB(n)

INTEGER

INTEGER

LONG BINARY

BLOB(n)

LONG NVARCHAR

CLOB(n)

Es gibt keinen entsprechenden Datentyp in DB2. Falls es sich beim DB2-Zeichensatz um Unicode handelt, kann SQL Anywhere LONG NVARCHAR mit DB2 CLOB synchronisiert werden. UltraLite verfügt nicht über LONG NVARCHAR.

LONG VARBIT

CLOB(n)

LONG VARCHAR

CLOB(n)

MONEY

DECIMAL (19,4)

NCHAR(c)

VARCHAR(n) oder CLOB(n)

Es gibt keinen entsprechenden Datentyp in DB2. Falls es sich beim DB2-Zeichensatz um Unicode handelt, kann NCHAR mit DB2 VARCHAR oder CLOB synchronisiert werden. Bei der Größeneinheit von SQL Anywhere NCHAR handelt es sich um Zeichen und bei DB2 VARCHAR um Bytes. Falls Sie eine Zuordnung zu VARCHAR erstellen, darf die Gesamtzahl der Bytes von NCHAR nicht größer sein als MRL. Andernfalls sollte NCHAR CLOB zugeordnet werden. Es ist schwierig, die Anzahl der Bytes in NCHAR(c) zu berechnen, aber sie entspricht ungefähr c=nn/4. Allgemein gilt: Wenn c kleiner als MRL/4 ist, sollte zu VARCHAR(n) zugeordnet werden. Wenn dagegen c größer oder gleich MRL/4 ist, sollte zu CLOB(n) zugeordnet werden.

NUMERIC(p<32,s)

NUMERIC(p,s)

NUMERIC(p>=32,s)

Es gibt keinen entsprechenden Datentyp in DB2.

NTEXT

CLOB(n)

Es gibt keinen entsprechenden Datentyp in DB2. Falls es sich beim DB2-Zeichensatz um Unicode handelt, kann NTEXT mit DB2 CLOB synchronisiert werden.

NVARCHAR(c)

VARCHAR(n) oder CLOB(n)

Es gibt keinen entsprechenden Datentyp in DB2. Falls es sich beim DB2-Zeichensatz um Unicode handelt, kann NVARCHAR mit DB2 VARCHAR oder CLOB synchronisiert werden. Bei der Größeneinheit von SQL Anywhere NVARCHAR handelt es sich um Zeichen und bei DB2 VARCHAR um Bytes. Falls Sie eine Zuordnung zu VARCHAR erstellen, darf die Gesamtzahl der Bytes von NVARCHAR nicht größer sein als MRL. Andernfalls sollte NVARCHAR CLOB zugeordnet werden. Es ist schwierig, die Anzahl der Bytes in NVARCHAR(c) zu berechnen, aber sie entspricht ungefähr c=n/4. Allgemein gilt: Wenn c kleiner als MRL/4 ist, sollte zu VARCHAR(n) zugeordnet werden. Wenn dagegen c größer oder gleich MRL/4 ist, sollte zu CLOB(n) zugeordnet werden.

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

TIMESTAMP

SMALLINT

SMALLINT

SMALLMONEY

DECIMAL(10,4)

TEXT

CLOB(n)

TIME

TIMESTAMP oder TIME

TIME-Werte in SQL Anywhere und UltraLite mit Sekundenbruchteilen benötigen DB2 TIMESTAMP. TIME-Werte in SQL Anywhere und UltraLite mit Sekundenbruchteilen, die immer Null sind, können DB2 TIME verwenden.

TIMESTAMP

TIMESTAMP

TINYINT

SMALLINT

Bei Downloads dürfen DB2-Werte nicht negativ sein.

UNIQUEIDENTIFIER

CHAR(36)

UNIQUEIDENTIFIERSTR

CHAR(36)

UNIQUEIDENTIFIERSTR wird für DB2 nicht empfohlen. Verwenden Sie stattdessen UNIQUEIDENTIFIER.

UNSIGNED BIGINT

DECIMAL (20)

Bei Downloads dürfen DB2-Werte nicht negativ sein.

UNSIGNED INTEGER

DECIMAL (11)

Bei Downloads dürfen DB2-Werte nicht negativ sein.

UNSIGNED SMALLINT

DECIMAL (5)

Bei Downloads dürfen DB2-Werte nicht negativ sein.

UNSIGNED TINYINT

SMALLINT

Bei Downloads dürfen DB2-Werte nicht negativ sein.

VARBINARY(n<MRL)

VARCHAR(n) FOR BIT DATA

VARBINARY(n>=MRL)

BLOB(n)

VARBIT(n<MRL)

VARCHAR(n)

VARBIT(n>=MRL)

CLOB(n)

VARCHAR(n<MRL)

VARCHAR(n)

VARCHAR(n>=MRL)

CLOB(n)

DB2-Werte können länger sein als SQL Anywhere- oder UltraLite-Werte. Stellen Sie daher sicher, dass beim Download keine zu großen Werte auftauchen.

XML

CLOB(n)

Zuordnung zu entfernten SQL Anywhere- oder UltraLite-Datentypen

Die folgende Tabelle zeigt, wie konsolidierte IBM DB2 LUW-Datentypen entfernten SQL Anywhere- und UltraLite-Datentypen zugeordnet werden. Zum Beispiel sollte eine Spalte, die in der konsolidierten Datenbank den Datentyp INT hat, in der entfernten Datenbank den Typ INTEGER haben.

Wenn Sie eine DB2-Tabelle erstellen, müssen Sie auf die DB2-Seitengröße achten. Für DB2 ist die maximale Zeilenlänge von der Seitengröße abhängig: Die MRL beträgt 4005 bei einer Seitengröße von 4 KByte, 8101 bei 8 KByte, 16293 bei 16 KByte und 32677 bei 32 KByte. Die Länge der Spalten in einer Tabelle darf die obigen Grenzen nicht überschreiten. Falls eine Tabelle über eine BLOB oder CLOB-Spalte verfügt, stellen Sie die Zeilenlänge mit dem LOB Locator fest, nicht mit den BLOB oder CLOB-Daten direkt. Weitere Hinweise finden Sie in Ihrer DB2-Dokumentation.

IBM DB2 LUW-Datentyp Datentypen in SQL Anywhere oder UltraLite Hinweise

BLOB

LONG BINARY

BIGINT

BIGINT

CHAR(n)

VARCHAR(n)

In SQL Anywhere gibt es kein Äquivalent zu DB2 CHAR. Sie sollten CHAR nicht in konsolidierten Datenbankspalten verwenden, die synchronisiert sind. Falls Sie DB2 CHAR-Spalten synchronisieren müssen, führen Sie den MobiLink-Server mit der Option -b aus.

CHAR(n) FOR BIT DATA

BINARY(n)

CLOB(n)

LONG VARCHAR

DATE

DATE

Für SQL Anywhere und UltraLite muss die Zeitangabe das Format 00:00:00 haben.

DBCLOB(n)

LONG VARCHAR

Der Datentyp DBCLOB(n) wird nur für Doppelbyte-Zeichen verwendet. SQL Anywhere verfügt nicht über einen entsprechenden Datentyp. Falls es sich beim DB2-Zeichensatz um Unicode handelt, ist DBCLOB(n) gleichwertig mit CLOB.

DECIMAL(p,s)

DECIMAL(p,s)

DOUBLE

DOUBLE

DOUBLE ist ein ungenauer nummerischer Datentyp, der gerundet wird. Bei verschiedenen Computertypen ist die Basisspeicherung für DOUBLE oft unterschiedlich, was zu unterschiedlichem Runden führt. DOUBLE ist keine gute Wahl für einen Primärschlüssel, da bei Primärschlüsseln auf Gleichheit geprüft wird. Dies gilt besonders in einer Synchronisationsumgebung, da die konsolidierte Datenbank oft auf anderer Hardware läuft wie die entfernte Datenbank.

FLOAT

DOUBLE

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

GRAPHIC(n)

VARCHAR(2n)

DB2 GRAPHIC füllt mit Leerzeichen auf, SQL Anywhere CHAR dagegen nicht. Es wird empfohlen, diesen Datentyp nicht zu verwenden.

Der Datentyp GRAPHIC wird nur für Doppelbyte-Zeichen verwendet. SQL Anywhere verfügt nicht über einen entsprechenden Datentyp. Falls es sich beim DB2-Zeichensatz um Unicode handelt, ist GRAPHIC gleichwertig mit CHAR.

INT

INTEGER

LONG VARCHAR

VARCHAR(32700)

LONG VARCHAR FOR BIT DATA

VARBINARY(32700)

LONG VARGRAPHIC(n)

VARCHAR(32700)

Der Datentyp LONG VARGRAPHIC wird nur für Doppelbyte-Zeichen verwendet. SQL Anywhere verfügt nicht über einen entsprechenden Datentyp. Falls es sich beim DB2-Zeichensatz um Unicode handelt, ist LONG VARGRAPHIC gleichwertig mit LONG VARCHAR.

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.

SMALLINT

SMALLINT

TIME

TIME

Die Sekundenbruchteile von SQL Anywhere TIME-Werten werden beim Download weggekürzt. Um Probleme zu vermeiden, sollten Sie keine Sekundenwerte mit Bruchteilen verwenden.

TIMESTAMP

TIMESTAMP

VARCHAR(n)

VARCHAR(n)

VARCHAR(n) FOR BIT DATA

VARBINARY(n)

VARGRAPHIC(n)

VARCHAR(2n)

Der Datentyp VARGRAPHIC wird nur für Doppelbyte-Zeichen verwendet. SQL Anywhere verfügt nicht über einen entsprechenden Datentyp. Falls es sich beim DB2-Zeichensatz um Unicode handelt, ist VARGRAPHIC gleichwertig mit VARCHAR.