Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment configurez-vous un serveur lié à une base de données Oracle sur SQL 2000/2005 ?

J'ai pu configurer un serveur lié à une base de données Oracle distante, ce qui s'est avéré être un processus en plusieurs étapes :

  1. Installez les pilotes ODBC Oracle sur SQL Server.
  2. Créer un DSN système pour la base de données Oracle sur SQL Server.
  3. Créer un serveur lié sur le serveur SQL à l'aide du DSN système.

Étape 1 :Installez les pilotes ODBC Oracle sur le serveur

un. Téléchargez les packages Oracle Instant Client nécessaires :Basic, ODBC et SQL*Plus (facultatif)

b. Décompressez les packages dans un répertoire local sur le serveur SQL, généralement C:\Oracle . Cela devrait aboutir à un [répertoire] comme C:\Oracle\instantclient_10_2 , qui sera la valeur de [répertoire] référencé dans le reste de cette réponse.

c. Créez un fichier texte nommé tnsnames.ora dans le [répertoire] du client instantané qui contient les éléments suivants :

OracleTnsName = 
(
  DESCRIPTION=
  (
    ADDRESS = (PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521)
  )
  (
    CONNECT_DATA = (SERVICE_NAME=acc)
  )
)

Remarque :HOST réel , PORT , et SERVICE_NAME variera en fonction du serveur Oracle auquel vous établissez une connexion. Ces informations peuvent souvent être trouvées à l'aide des outils client réseau Oracle sous les auditeurs .

Le OracleTnsName peut être n'importe quel nom que vous souhaitez attribuer à la source de données Oracle et sera utilisé lors de la configuration du DSN système. Vous pouvez également utiliser la syntaxe ci-dessus pour définir plusieurs noms TNS dans le même fichier tnsnames.ora si vous le souhaitez.

ré. Ajoutez le [répertoire] au système PATH variable d'environnement.

e. Créez une nouvelle variable d'environnement système nommée TNS_Admin qui a une valeur de [répertoire]

F. Exécutez le [directory]\odbc_install.exe utilitaire pour installer les pilotes Oracle ODBC.

g. Il est recommandé de redémarrer le serveur SQL, mais ce n'est peut-être pas nécessaire. En outre, vous pouvez accorder des autorisations de sécurité à ce répertoire pour les identités utilisateur du serveur SQL et de l'agent SQL.

Étape 2 :Créer un DNS système qui utilise le pilote ODBC Oracle

un. Ouvrez l'administrateur de source de données ODBC outil. [ Outils d'administration --> Sources de données (ODBC) ]

b. Sélectionnez l'onglet DSN système, puis sélectionnez le bouton Ajouter.

c. Dans la liste des pilotes, sélectionnez Oracle dans instantclient {version} . (par exemple 'Oracle dans instantclient 10_2') puis sélectionnez le bouton Terminer.

ré. Spécifiez ce qui suit :

  • Data Source Name  :{Nom DSN système}
  • Description :{laisser vide/vide}
  • TNS Service Name :doit avoir le OracleTnsName vous avez défini dans le tnsnames.ora fichier répertorié, sélectionnez-le comme valeur.
  • ID utilisateur :{Nom d'utilisateur Oracle}

e. Sélectionnez le bouton Tester la connexion. Vous devriez être invité à fournir le {mot de passe utilisateur Oracle}. Si tout se passe bien, le test réussira.

Étape 3 :Créer un serveur lié en SQL à la base de données Oracle

Ouvrez une fenêtre de requête dans le serveur SQL et exécutez ce qui suit :

EXEC sp_addlinkedserver 
     @server        = '{Linked Server Name}'
    ,@srvproduct    = '{System DSN Name}'
    ,@provider      = 'MSDASQL'
    ,@datasrc       = '{System DSN Name}'

EXEC sp_addlinkedsrvlogin 
     @rmtsrvname    = '{Linked Server Name}'
    ,@useself       = 'False'
    ,@locallogin    = NULL
    ,@rmtuser       = '{Oracle User Name}'
    ,@rmtpassword   = '{Oracle User Password}'

Remarque :Le {Linked Server Name} peut être tout ce que vous souhaitez utiliser lors du référencement du serveur Oracle, mais le {System DNS Name} doit correspondre au nom du DSN système que vous avez créé précédemment.

Le {Oracle User Name} doit être le même que l'ID utilisateur utilisé par le système DSN, et le {Oracle User Password} doit être le même que celui que vous avez utilisé pour tester avec succès la connexion ODBC. Consultez l'article KB 280106 pour plus d'informations sur la résolution des problèmes de serveur lié Oracle.

Interroger le serveur lié Oracle

Vous pouvez utiliser OPENQUERY pour exécuter des requêtes directes sur le serveur lié Oracle, mais sachez que pour les jeux d'enregistrements très volumineux, vous pouvez recevoir un ORA-01652 message d'erreur si vous spécifiez un ORDER BY clause dans la requête directe. Déplacer le ORDER BY La clause de la requête directe à l'instruction de sélection externe a résolu ce problème pour moi.