Fournisseur Oracle pour OLE DB

Le Fournisseur Oracle pour OLE DB (8.1.7.3.0) permet d'exécuter des requêtes distribuées sur des bases de données Oracle. Sa prise en charge est la suivante :

Oracle 32 bits

Hors processus uniquement

Oracle 64 bits

Aucun

Pour créer un serveur lié d'accès à une instance de base de données Oracle

  1. Vérifiez que logiciel client Oracle installé sur le serveur qui exécute Microsoft SQL Server est du niveau requis par le fournisseur. Le Fournisseur Oracle pour OLE DB (8.1.7.3.0) requiert le client Oracle 8.1.7.0.

  2. Créez un nom d'alias sur le serveur exécutant SQL Server qui pointe vers une instance de la base de données Oracle. Pour plus d'informations, consultez votre documentation Oracle.

  3. Exécutez sp_addlinkedserver pour créer le serveur lié en spécifiant OraOLEDB.Oracle comme provider_name et le nom d'alias pour la base de données Oracle comme data_source.

    L'exemple suivant suppose que l'alias a été défini comme DQORA8 :

    exec sp_addlinkedserver @server='OrclDB', 
        @srvproduct='Oracle',
        @provider='OraOLEDB.Oracle', 
        @datasrc='DQORA8'
    
    Remarque relative à la sécuritéRemarque relative à la sécurité

    Cet exemple n'utilise pas l'authentification Windows. Les mots de passe sont transmis sans être chiffrés. Les mots de passe peuvent être visibles dans les définitions des sources de données et dans les scripts enregistrés sur disque, dans les sauvegardes et dans les fichiers journaux. N'utilisez jamais le mot de passe d'un administrateur pour ce type de connexion. Consultez votre administrateur réseau pour des conseils de sécurité propres à votre environnement.

  4. Utilisez sp_addlinkedsrvlogin pour créer des mappages de connexion entre les connexions SQL Server et Oracle.

    Cet exemple mappe la connexion SQL ServerJoe au serveur lié qui a été défini à l'étape 3 à l'aide de la connexion Oracle et des mots de passe OrclUsr et OrclPwd :

    sp_addlinkedsrvlogin @rmtsrvname = 'OrclDB', 
       @useself = 'false', 
       @locallogin = 'Joe', 
       @rmtuser = 'OrclUsr', 
       @rmtpassword = 'OrclPwd'
    

Utilisez les règles énumérées ci-après lorsque vous faites référence à des tables situées sur un serveur lié Oracle :

  • Si les noms de table et de colonne ont été créés sous Oracle sans identificateurs entre guillemets, tapez-les en majuscules.

  • Si les noms de table et de colonne ont été créés sous Oracle avec des identificateurs entre guillemets, respectez la casse qui a été utilisée lors de leur création sous Oracle.

  • Les instructions INSERT doivent fournir des valeurs pour toutes les colonnes d’une table, même si certaines des colonnes peuvent posséder la valeur NULL ou ne pas posséder de valeur par défaut.

  • Ce fournisseur ne prend pas en charge le passage direct de littéraux datetime en tant qu'arguments au format suivant :

    EXEC 'string' '<datetime-literal>' AT <oraclelinkedserver>
    

    Par exemple, l'utilisation suivante du littéral datetime'14-sep-94' n'est pas prise en charge :

    EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) 
       VALUES (?, ?, ?, ?)', '6380', '6871', '14-sep-94', 5) AT OrclDB
    

    Vous devez créer en lieu et place une variable datetime, lui assigner la valeur littérale et appeler EXEC en spécifiant la variable comme argument :

    DECLARE @v1 datetime
    SET @v1 = CONVERT(datetime,'14-sep-94')
    EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) 
       VALUES (?, ?, ?, ?)', '6380', '6871', @v1, 5) AT OrclDB
    

Restrictions

SQL Server ne prend pas en charge l'utilisation de la fonction d'agrégation AVG sur des tables Oracle car le fournisseur Oracle retourne le type OLE DB DBTYPE_VARNUMERIC. SQL Server ne prend pas en charge DBTYPE_VARNUMERIC. Par exemple, le code suivant retourne une erreur :

SELECT AVG(QTY)
FROM ORA..RPUBS.SALES

Pour éviter cette erreur, utilisez OPENQUERY. Par exemple :

SELECT *
FROM OPENQUERY(ORA,
   'SELECT CAST (AVG(QTY) AS numeric)
   FROM ORA..RPUBS.SALES')

Entrées de Registre

Pour activer le fournisseur OLE DB pour Oracle afin de l'utiliser avec votre logiciel client Oracle, le Registre du client doit être modifié en exécutant un fichier de Registre à partir d'une ligne de commande. Plusieurs instances du logiciel client ne peuvent pas être exécutées simultanément. Ces fichiers sont répertoriés dans le tableau suivant et se trouvent dans la structure de répertoires contenant votre installation MDAC (Microsoft Data Access Component). Ces fichiers se trouvent généralement dans C:\Program Files\Common Files\System Files\OLE DB.

Client Oracle

Windows NT ou 9x

Windows 2000

7.x

mtxoci7x_winnt.reg

mtxoci7x_win2k.reg

8.0

mtxoci80_winnt.reg

mtxoci80_win2k.reg

8.1

mtxoci81_winnt.reg

mtxoci81_win2k.reg