Condividi tramite


Procedura: Specifica dei mapping tra i tipi di dati di un server di pubblicazione Oracle (programmazione Transact-SQL della replica)

Anche se per i server di pubblicazione Oracle è disponibile un set di mapping predefiniti di tipi di dati, può essere necessario specificare mapping diversi per una determinata pubblicazione. È possibile specificare mapping personalizzati di tipi di dati a livello di programmazione tramite le stored procedure di replica. È inoltre possibile impostare i mapping predefiniti utilizzati per il mapping dei tipi di dati tra un sistema di gestione di database (DBMS) MicrosoftSQL Server e non-SQL Server. Per ulteriori informazioni, vedere Mapping dei tipi di dati per i server di pubblicazione Oracle.

Per definire mapping personalizzati di tipi di dati durante la creazione di un articolo appartenente a una pubblicazione Oracle

  1. Se non esiste già, creare una pubblicazione Oracle. Per ulteriori informazioni, vedere Procedura: Creazione di una pubblicazione da un database Oracle (programmazione Transact-SQL della replica).

  2. Nel server di distribuzione eseguire sp_addarticle. Specificare il valore 0 per @use_default_datatypes. Per ulteriori informazioni, vedere Procedura: Definizione di un articolo (programmazione Transact-SQL della replica).

  3. Nel server di distribuzione eseguire sp_helparticlecolumns per visualizzare il mapping esistente per una colonna in un articolo pubblicato.

  4. Nel server di distribuzione eseguire sp_changearticlecolumndatatype. Specificare il nome del server di pubblicazione Oracle per @publisher, nonché @publication, @article e @column per definire la colonna pubblicata. Specificare il nome del tipo di dati SQL Server di cui eseguire il mapping per @type, nonché @length, @precision e @scale se applicabile.

  5. Nel server di distribuzione eseguire sp_articleview. In questo modo verrà creata la vista utilizzata per generare lo snapshot dalla pubblicazione Oracle.

Per specificare un mapping come mapping predefinito per un tipo di dati

  1. (Facoltativo) In un database del server di distribuzione eseguire sp_getdefaultdatatypemapping. Specificare @source_dbms, @source_type, @destination_dbms, @destination_version e qualsiasi altro parametro necessario per identificare il sistema DBMS di origine. Le informazioni sui tipi di dati attualmente mappati nel sistema DBMS di destinazione vengono restituite tramite parametri di output.

  2. (Facoltativo) In un database del server di distribuzione eseguire sp_helpdatatypemap. Specificare @source_dbms e qualsiasi altro parametro necessario per filtrare il set di risultati. Si noti il valore di mapping_id per il mapping desiderato nel set di risultati.

  3. In un database del database di distribuzione eseguire sp_setdefaultdatatypemapping.

    • Se si conosce il valore desiderato di mapping_id ottenuto nel passaggio 2, specificarlo per @mapping_id.

    • Se non si conosce il valore di mapping_id, specificare i parametri @source_dbms, @source_type, @destination_dbms, @destination_type e qualsiasi altro parametro necessario per identificare un mapping esistente.

Per trovare tipi di dati validi per un determinato tipo di dati Oracle

  • In un database del server di distribuzione eseguire sp_helpdatatypemap. Specificare il valore ORACLE per @source_dbms e qualsiasi altro parametro necessario per filtrare il set di risultati.

Esempio

In questo esempio viene modificata una colonna con un tipo di dati NUMBER di Oracle in modo che venga mappata al tipo di dati numeric(38,38) di SQL Server anziché al tipo di dati predefinito float.

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

In questo esempio di query vengono restituiti i mapping predefiniti e alternativi per il tipo di dati CHAR di Oracle 9.

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

In questo esempio di query vengono restituiti i mapping predefiniti per il tipo di dati NUMBER di Oracle 9 quando viene specificato senza scala o precisione.

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