Datentypzuordnung für Oracle-Verleger

Gilt für:SQL Server

Oracle-Datentypen und Microsoft SQL Server-Datentypen stimmen nicht immer exakt überein. Wenn möglich, wird beim Veröffentlichen einer Oracle-Tabelle der übereinstimmende Datentyp automatisch ausgewählt. In Fällen, in denen eine einzelne Datentypzuordnung unklar ist, werden alternative Datentypzuordnungen bereitgestellt. Informationen dazu, wie alternative Zuordnungen ausgewählt werden, finden Sie im Abschnitt "Angeben alternativer Datentypzuordnungen" weiter unten in diesem Thema.

In der folgenden Tabelle wird gezeigt, wie Datentypen standardmäßig zwischen Oracle und SQL Server zugeordnet werden, wenn Daten aus dem Oracle Publisher in den SQL Server-Distributor verschoben werden. Die Spalte Alternativen gibt an, ob alternative Zuordnungen verfügbar sind.

Oracle-Datentyp SQL Server-Datentyp Alternativen
BFILE VARBINARY(MAX) Ja
BLOB VARBINARY(MAX) Ja
CHAR([1-2000]) CHAR([1-2000]) Ja
CLOB VARCHAR(MAX) Ja
DATE DATETIME Ja
FLOAT FLOAT Nein
FLOAT([1-53]) FLOAT([1-53]) Nein
FLOAT([54-126]) FLOAT Nein
INT NUMERIC(38) Yes
INTERVAL DATETIME Ja
LONG VARCHAR(MAX) Ja
LONG RAW IMAGE Ja
NCHAR([1-1000]) NCHAR([1-1000]) Nein
NCLOB NVARCHAR(MAX) Ja
NUMBER FLOAT Ja
NUMBER([1-38]) NUMERIC([1-38]) Nein
NUMBER([0-38],[1-38]) NUMERIC([0-38],[1-38]) Ja
NVARCHAR2([1-2000]) NVARCHAR([1-2000]) Nein
RAW([1-2000]) VARBINARY([1-2000]) Nein
real FLOAT Nein
ROWID CHAR(18) Nein
TIMESTAMP DATETIME Ja
TIMESTAMP(0-7) DATETIME Ja
TIMESTAMP(8-9) DATETIME Ja
TIMESTAMP(0-7) WITH TIME ZONE VARCHAR(37) Ja
TIMESTAMP(8-9) WITH TIME ZONE VARCHAR(37) Nein
TIMESTAMP(0-7) WITH LOCAL TIME ZONE VARCHAR(37) Ja
TIMESTAMP(8-9) WITH LOCAL TIME ZONE VARCHAR(37) Nein
UROWID CHAR(18) Nein
VARCHAR2([1-4000]) VARCHAR([1-4000]) Ja

Überlegungen zur Datentypzuordnung

Beachten Sie beim Replizieren von Daten aus Oracle-Datenbanken in Bezug auf Datentypen Folgendes:

Nicht unterstützte Datentypen

Die folgenden Datentypen werden nicht unterstützt. Spalten, die diese Datentypen enthalten, können nicht repliziert werden:

  • Objekttypen

  • XML-Typen

  • Varray-Typen

  • Geschachtelte Tabellen

  • Spalten, die den REF-Befehl verwenden

Der DATE-Datentyp

Datumsangaben in SQL Server reichen von 1753 A.D. bis 9999 A.D., während Datumsangaben in Oracle zwischen 4712 B.C. und 4712 A.D liegen. Wenn eine Spalte vom Typ DATE Werte enthält, die außerhalb des Gültigen Bereichs für SQL Server liegen, wählen Sie den alternativen Datentyp für die Spalte aus, die VARCHAR(19) ist.

FLOAT- und NUMBER-Typen

Die Anzahl der Dezimalstellen und die Genauigkeit (Parameter 'scale' und 'precision'), die während der Zuordnung der Datentypen FLOAT und NUMBER angegeben werden, sind von den Parametern abhängig, die in der Spalte der Oracle-Datenbank angegeben wurde, die diese Datentypen verwendet. Genauigkeit gibt die Anzahl der Ziffern einer Zahl an. Dezimalstellen gibt die Anzahl der Nachkommastellen an. Die Zahl 123,45 hat z. B. eine Genauigkeit von 5 und 2 Dezimalstellen.

Oracle ermöglicht die Definition von Zahlen mit einer Skalierung, die größer als die Genauigkeit ist, z. B. ZAHL(4,5), aber SQL Server erfordert, dass die Genauigkeit gleich oder größer als die Skalierung ist. Um sicherzustellen, dass keine Daten abgeschnitten werden, wenn auf dem Oracle-Verleger 'scale' größer ist als 'precision', wird 'precision' bei der Zuordnung auf denselben Wert festgelegt wie 'scale': NUMBER(4,5) wird also beispielsweise NUMERIC(5,5) zugeordnet.

Hinweis

Wenn Sie keine Skalierung und Genauigkeit für ZAHL angeben, verwendet SQL Server standardmäßig die maximale Skalierung (8) und Genauigkeit (38). Es wird empfohlen, in Oracle eine bestimmte Anzahl von Dezimalstellen ('scale') und eine bestimmte Genauigkeit ('precision') festzulegen, um die Speicherplatzanforderungen zu reduzieren und die Leistung zu erhöhen, wenn die Daten repliziert werden.

LOB-Typen (Large Object)

Oracle unterstützt bis zu 4 Gigabyte (GB), SQL Server bis zu 2 GB. Replizierte Daten über 2 GB werden deshalb abgeschnitten.

Wenn eine Oracle-Tabelle eine BFILE-Spalte enthält, werden die Daten für die Spalte im Dateisystem gespeichert. Dem Administratorkonto für die Replikation muss Zugriff auf das Verzeichnis gewährt werden, in dem die Daten gespeichert sind. Dabei ist die folgende Syntax zu verwenden:

GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>

Weitere Informationen zu LOB-Typen finden Sie im Abschnitt „Überlegungen zu großen Objekten“ unter Überlegungen zum Entwurf und Einschränkungen für Oracle-Verleger.

Angeben alternativer Datentypzuordnungen

In der Regel ist die standardmäßige Datentypzuordnung ausreichend; für bestimmte Oracle-Datentypen können Sie jedoch Datentypzuordnungen aus einem alternativen Zuordnungssatz auswählen. Es gibt zwei Möglichkeiten zum Angeben alternativer Zuordnungen:

  • Überschreiben der Standardwerte auf Artikelbasis mithilfe von gespeicherten Prozeduren oder des Assistenten für neue Veröffentlichung.

  • Globales Ändern der Standardwerte für alle zukünftigen Artikel mithilfe von gespeicherten Prozeduren (für vorhandene Artikel werden die Standardwerte nicht geändert).

Informationen zum Angeben alternativer Datentypzuordnungen finden Sie unter Angeben von Datentypzuordnungen für einen Oracle-Verleger.

Weitere Informationen

Konfigurieren eines Oracle-Verlegers
Überlegungen zum Entwurf und Einschränkungen für Oracle-Verleger
Veröffentlichungen mit Oracle (Übersicht)