servers Comment configurer un serveur lié à une base de données Oracle sur SQL 2000/2005?




tsql linked servers (2)

J'ai été capable de configurer un serveur lié à une base de données Oracle distante, ce qui a fini par être un processus en plusieurs étapes:

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

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

une. 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 [directory] référencée dans le reste de cette réponse.

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

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

Remarque: Les HOST , PORT et SERVICE_NAME varient en fonction du serveur Oracle auquel vous vous connectez. Cette information peut souvent être trouvée en utilisant les outils client réseau Oracle sous les auditeurs .

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] à la variable d'environnement système PATH .

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

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

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

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

une. Ouvrez l'outil Administrateur de sources de données ODBC . [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 les éléments suivants:

  • Data Source Name : {Nom du DSN système}
  • Description : {laisser vide / vide}
  • TNS Service Name : le nom OracleTnsName vous avez défini dans le fichier tnsnames.ora doit être OracleTnsName 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 de l'utilisateur Oracle}. Si tout se passe bien, le test réussira.

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

Ouvrez une fenêtre de requête dans le serveur SQL et exécutez les opérations suivantes:

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 voulez utiliser lorsque vous faites référence au 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 DSN système, et le {Oracle User Password} doit être le même que celui que vous avez utilisé pour tester la connexion ODBC. Reportez- vous à la base de connaissances 280106 pour plus d'informations sur la résolution des problèmes de serveur lié Oracle.

Interrogation du 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 message d'erreur ORA-01652 si vous spécifiez une clause ORDER BY dans la requête directe. Déplacer la clause ORDER BY de la requête directe vers l'instruction select externe a résolu ce problème pour moi.

Je suis capable de créer et d'exécuter un package DTS qui copie des tables à partir d'une base de données Oracle distante vers un serveur SQL local, mais qui souhaite configurer la connexion à la base de données Oracle en tant que serveur lié.

Le package DTS utilise actuellement le fournisseur Microsoft OLE DB pour Oracle avec les propriétés suivantes:

  • Source de données: SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=acc)));uid=*UserName*;pwd=*UserPassword*;
  • Mot de passe: UserPassword
  • ID de l'utilisateur: UserName
  • Autoriser l'enregistrement du mot de passe: true

Comment puis-je configurer un serveur lié à une base de données Oracle à l'aide de la source de données définie ci-dessus?


J'ai eu le même problème. J'étais au téléphone avec Microsoft pendant des heures, et ils n'avaient pas de solution. Aucun de ces paramètres "timeout de connexion" ne m'a aidé.

Pour le résoudre, j'ai créé un travail DTS qui exécute un proc qui ne met à jour que l'heure sur une ligne, dans une colonne, toutes les deux minutes. Ensuite, je configure une réplication entre SQL Server et Oracle, prévue pour répliquer ce changement de cellule unique, de SQL à Oracle, toutes les 3 minutes. Cela maintient la connexion en vie!





oracle