Datentypzuordnung für Oracle-Verleger
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 zum Auswählen alternativer Zuordnungen finden Sie im Abschnitt zum Angeben alternativer Datentypzuordnungen weiter unten in diesem Thema.
Die folgende Tabelle zeigt die standardmäßige Zuordnung von Datentypen zwischen Oracle und SQL Server, die für den Datenfluss von einem Oracle-Verleger zu einem SQL Server-Verteiler gültig ist. 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) |
Ja |
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 |
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
- Verschachtelte Tabellen
- Spalten, die den REF-Befehl verwenden
Der DATE-Datentyp
In SQL Server können Datumsangaben von 1753 bis 9999 unserer Zeitrechnung ausgedrückt werden, während der Datumsbereich in Oracle von 4712 v. Chr. bis 4712 n. Chr. reicht. Wenn eine Spalte vom DATE-Typ Werte enthält, die außerhalb des von SQL Server unterstützten Datumsbereichs liegen, wählen Sie den alternativen Datentyp für die Spalte aus: VARCHAR(19).
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.
Bei Oracle können Zahlen mit Werten für 'scale' größer als 'precision' definiert werden, z. B. NUMBER(4,5), in SQL Server muss jedoch 'precision' größer oder gleich 'scale' sein. 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 für NUMBER weder 'scale' noch 'precision' angeben, verwendet SQL Server standardmäßig die maximalen Werte für 'scale' (8) und 'precision' (38). Es wird empfohlen, in Oracle spezifische Werte für Ziffern ('precision') und Dezimalstellen ('scale') festzulegen, um den Speicherplatz 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 finden Sie unter den Überlegungen zu großen Objekten im Thema Ü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:
- Außerkraftsetzen der Standardwerte auf Artikelbasis mithilfe von gespeicherten Prozeduren oder des Assistenten für neue Publikation.
- Globales Ändern der Standardwerte für alle zukünftigen Artikel mithilfe von gespeicherten Prozeduren (für vorhandene Artikel werden die Standardwerte nicht geändert).
So geben Sie alternative Datentypzuordnungen an
- SQL Server Management Studio: Vorgehensweise: Angeben der Datentypzuordnungen für einen Oracle-Verleger (SQL Server Management Studio)
- Replikationsprogrammierung: How to: Specify Data Type Mappings for an Oracle Publisher (Replication Transact-SQL Programming)
Siehe auch
Konzepte
Konfigurieren eines Oracle-Verlegers
Überlegungen zum Entwurf und Einschränkungen für Oracle-Verleger
Veröffentlichungen mit Oracle (Übersicht)