Vorgehensweise: Angeben der Datentypzuordnungen für einen Oracle-Verleger (Replikationsprogrammierung mit Transact-SQL)

Obwohl eine Gruppe von Standard-Datentypzuordnungen für Oracle-Verleger bereitgestellt wird, ist es möglicherweise erforderlich, für eine bestimmte Veröffentlichung andere Zuordnungen anzugeben. Sie können benutzerdefinierte Datentypzuordnungen programmgesteuert mithilfe von gespeicherten Replikationsprozeduren angeben. Sie können auch die Standardzuordnungen festlegen, die beim Zuordnen von Datentypen zwischen Microsoft SQL Server und einem Nicht-SQL Server-Datenbank-Managementsystem (DBMS) verwendet werden. Weitere Informationen finden Sie unter Datentypzuordnung für Oracle-Verleger.

So definieren Sie benutzerdefinierte Datentypzuordnungen beim Erstellen eines Artikels, der zu einer Oracle-Veröffentlichung gehört

  1. Erstellen Sie eine Oracle-Veröffentlichung, sofern noch nicht vorhanden. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen einer Veröffentlichung aus einer Oracle-Datenbank (Replikationsprogrammierung mit Transact-SQL).

  2. Führen Sie auf dem Verteiler sp_addarticle aus. Geben Sie den Wert 0 für @use_default_datatypes an. Weitere Informationen finden Sie unter Vorgehensweise: Definieren eines Artikels (Replikationsprogrammierung mit Transact-SQL).

  3. Führen Sie auf dem Verteiler sp_helparticlecolumns aus, um die vorhandene Zuordnung für eine Spalte in einem veröffentlichten Artikel anzuzeigen.

  4. Führen Sie auf dem Verteiler sp_changearticlecolumndatatype aus. Geben Sie den Namen des Oracle-Verlegers für @publisher sowie @publication, @article und @column an, um die veröffentlichte Spalte zu definieren. Geben Sie den Namen des SQL Server-Datentyps, der zugeordnet werden soll, für @type sowie nach Bedarf @length, @precision und @scale an.

  5. Führen Sie auf dem Verteiler sp_articleview aus. Dies erstellt die Sicht, mit der der Snapshot der Oracle-Veröffentlichung generiert wird.

So geben Sie eine Zuordnung als Standardzuordnung für einen Datentyp an

  1. (Optional) Führen Sie auf dem Verteiler für eine beliebige Datenbank sp_getdefaultdatatypemapping aus. Geben Sie @source_dbms, @source_type, @destination_dbms, @destination_version und andere Parameter an, die zum Identifizieren des Quell-DBMS erforderlich sind. Informationen über den gerade zugeordneten Datentyp im Ziel-DBMS werden mit den Ausgabeparametern zurückgegeben.

  2. (Optional) Führen Sie auf dem Verteiler für eine beliebige Datenbank sp_helpdatatypemap aus. Geben Sie @source_dbms und alle anderen Parameter an, die zum Filtern des Resultsets benötigt werden. Notieren Sie den Wert von mapping_id für die gewünschte Zuordnung im Resultset.

  3. Führen Sie auf dem Verteiler für eine beliebige Datenbank sp_setdefaultdatatypemapping aus.

    • Wenn Sie den gewünschten Wert von mapping_id kennen, der in Schritt 2 ermittelt wurde, geben Sie diesen Wert für @mapping_id an.

    • Wenn Sie den Wert für mapping_id nicht kennen, geben Sie die Parameter @source_dbms, @source_type, @destination_dbms, @destination_type sowie alle anderen Parameter an, die zum Identifizieren einer vorhandenen Zuordnung erforderlich sind.

So suchen Sie gültige Datentypen für einen bestimmten Oracle-Datentyp

  • Führen Sie auf dem Verteiler für eine beliebige Datenbank sp_helpdatatypemap aus. Geben Sie den Wert ORACLE für @source_dbms sowie alle anderen Parameter an, die zum Filtern des Resultsets benötigt werden.

Beispiel

In diesem Beispiel wird eine Spalte mit dem Oracle-Datentyp NUMBER geändert, sodass er dem SQL Server-Datentyp numeric(38,38) anstelle des Standarddatentyps float zugeordnet wird.

EXEC sp_changearticlecolumndatatype 
    @publication = 'OraPublication', 
    @publisher = 'OraPublisher', 
    @article = 'OraArticle', 
    @column = 'OraArticleCol', 
    @type = 'numeric', 
    @scale = 38, 
    @precision = 38;
GO

Diese Beispielabfrage gibt die Standardzuordnungen sowie die alternativen Zuordnungen für den Oracle 9-Datentyp CHAR zurück.

EXEC sp_helpdatatypemap 
    @source_dbms = N'ORACLE', 
    @source_version = 9,
    @source_type = N'CHAR';
GO

Diese Beispielabfrage gibt die Standardzuordnungen für den Oracle 9-Datentyp NUMBER zurück, wenn er ohne Dezimalstellenangabe oder Genauigkeit angegeben wird.

EXEC sp_helpdatatypemap 
    @source_dbms = N'ORACLE', 
    @source_version = 9,
    @source_type = N'NUMBER',
    @defaults_only = 1;
GO