Procédure : spécifier des mappages de type de données pour un serveur de publication Oracle (programmation Transact-SQL de la réplication)

Bien qu'un jeu de mappages de type de données par défaut soit fourni pour les serveurs de publication Oracle, il peut être nécessaire de spécifier des mappages différents pour une publication donnée. Vous pouvez spécifier des mappages de type de données personnalisés par programme à l'aide des procédures stockées de réplication. Vous pouvez également définir les mappages par défaut qui sont utilisés lors du mappage de types de données entre MicrosoftSQL Server et un système de gestion de base de données (SGBD) non-SQL Server. Pour plus d'informations, consultez Mappage de type de données pour les serveurs de publication Oracle.

Pour définir des mappages de type de données personnalisés lors de la création d'un article appartenant à une publication Oracle

  1. S'il n'en existe pas encore, créez une publication Oracle. Pour plus d'informations, consultez Procédure : créer une publication à partir d'une base de données Oracle (programmation Transact-SQL de la réplication).

  2. Sur le serveur de distribution, exécutez sp_addarticle. Spécifiez la valeur 0 pour @use_default_datatypes. Pour plus d'informations, consultez Procédure : définir un article (programmation Transact-SQL de la réplication).

  3. Sur le serveur de distribution, exécutez sp_helparticlecolumns pour afficher le mappage existant pour une colonne dans un article publié.

  4. Sur le serveur de distribution, exécutez sp_changearticlecolumndatatype. Spécifiez le nom du serveur de publication Oracle pour @publisher, ainsi que @publication, @article et @column pour définir la colonne publiée. Spécifiez le nom du type de données SQL Server vers lequel effectuer le mappage pour @type, ainsi que @length, @precision et @scale, le cas échéant.

  5. Sur le serveur de distribution, exécutez sp_articleview. Cela crée la vue utilisée pour générer la capture instantanée à partir de la publication Oracle.

Pour spécifier un mappage comme mappage par défaut pour un type de données

  1. (Facultatif) Exécutez sp_getdefaultdatatypemapping sur une base de données quelconque du serveur de distribution. Spécifiez @source_dbms, @source_type, @destination_dbms, @destination_version et tous les autres paramètres éventuellement requis pour identifier le SGBD source. Les informations sur le type de données actuellement mappé dans le SGBD de destination sont retournées à l'aide des paramètres de sortie.

  2. (Facultatif) Exécutez sp_helpdatatypemap sur une base de données quelconque du serveur de distribution. Spécifiez @source_dbms et tous les autres paramètres éventuellement requis pour filtrer le jeu de résultats. Notez la valeur de mapping_id pour le mappage souhaité dans le jeu de résultats.

  3. Exécutez sp_setdefaultdatatypemapping sur une base de données quelconque du serveur de distribution.

    • Si vous connaissez la valeur souhaitée de mapping_id obtenue à l'étape 2, spécifiez-la pour @mapping_id.

    • Si vous ne connaissez pas mapping_id, spécifiez les paramètres @source_dbms, @source_type, @destination_dbms, @destination_type et tous les autres paramètres éventuellement requis pour identifier un mappage existant.

Pour rechercher les types de données valides pour un type de données Oracle donné

  • Exécutez sp_helpdatatypemap sur une base de données quelconque du serveur de distribution. Spécifiez la valeur ORACLE pour @source_dbms et tous les autres paramètres éventuellement requis pour filtrer le jeu de résultats.

Exemple

Cet exemple modifie une colonne avec le type de données Oracle NUMBER afin qu'elle soit mappée vers le type de données SQL Server numeric(38,38), à la place du type de données par défaut float.

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

Cette exemple de requête retourne les mappages par défaut et de remplacement pour le type de données Oracle 9 CHAR.

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

Cet exemple de requête retourne les mappages par défaut pour le type de données Oracle 9 NUMBER lorsqu'il est spécifié sans échelle ni précision.

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