web-dev-qa-db-fra.com

configurer un nouveau serveur lié de SQL Server 2016 vers Oracle 12c

J'ai du mal à créer un serveur lié dans SQL Server 2016 pour parler à une base de données Oracle distante.

J'ai installé Oracle Database Client 12c. J'ai d'abord installé InstantClient puis réalisé plus tard que j'avais besoin de plus de fonctionnalités installées Runtime. Pendant l'installation, j'ai accepté C:\Oracle\product\12.1.0\client_1 Comme répertoire de base Oracle. Pour l'utilisateur d'Oracle Home, j'ai utilisé le compte intégré Windows NT AUTHORITY\LOCAL SERVICE.

J'ai utilisé Oracle Net Configuration Assistant pour créer un fichier tnsnames.ora avec alias = MyAlias et nom du service = MyServiceName. Net Configuration Assistant a réussi à tester la connexion à la base de données après avoir fourni les informations d'identification pour la base de données distante.

Le fichier tnsnames.ora créé par Oracle Net Configuration Assistant se trouvait dans ce dossier: C:\Oracle\product\12.1.0\client_1\network\admin

À partir d'une invite Powershell, j'ai exécuté tnsping MyAlias Et obtenu OK (200 msec).

Je pense (j'espère!) Que cela signifie que j'ai le bon côté Oracle.

Côté Microsoft, j'ai installé .NET Framework 3.5. Ensuite, j'ai téléchargé et installé Oracle Data Access Components (ODAC) à partir de ici . Plus précisément, j'ai téléchargé ODAC122010Xcopy_x64.Zip et j'ai suivi les instructions du fichier Lisezmoi inclus. Les options de ligne de commande que j'ai utilisées lors de l'installation étaient:

 .\install.bat all c:\Oracle odac true true

Les paramètres de la commande ci-dessus étaient:

  • nom_composant = all (installez tous les fournisseurs Oracle)
  • Oracle_home_path = c:\Oracle (Devrait-il s'agir de la base Oracle ou du sous-dossier?)
  • Oracle_home_name = odac (détermine le chemin d'accès de la clé de registre)
  • install_dependents = true
  • machine_wide_configuration = true (ce paramètre était une supposition; je veux que cela fonctionne pour tous les utilisateurs de cette machine)

J'ai ensuite ajouté C:\Oracle et C:\Oracle\bin au début de la variable d'environnement PATH. À Powershell, c'était:

 [Environment]::SetEnvironmentVariable("Path","C:\Oracle;C:\Oracle\bin;" + $env:Path, [System.EnvironmentVariableTarget]::Machine)

Dans SQL Server Management Studio, je peux voir OraOLEDB.Oracle dans la liste des fournisseurs de serveurs liés.

Essayez maintenant de créer le serveur lié. Voici ma config:

screenshot of SSMS Linked Server wizard

Pour la sécurité, j'essaie pour l'instant avec un contexte de sécurité fixe, en utilisant les mêmes informations d'identification qui ont fonctionné lors du test de la connexion avec Oracle Net Configuration Assistant.

Ça ne marche pas. Voici l'erreur générique:

Le serveur lié a été créé mais a échoué à un test de connexion. Voulez-vous conserver le serveur lié?

Impossible d'initialiser l'objet source de données de OLE fournisseur de base de données "OraOLEDB.Oracle" pour le serveur lié "MYLINKEDSERVER". OLE fournisseur de base de données "OraOLEDB.Oracle" pour lié) le serveur "MYLINKEDSERVER" a renvoyé le message "ORA-12154: TNS: impossible de résoudre l'identificateur de connexion spécifié". (Microsoft SQL Server, erreur: 7303)

Qu'est-ce que je rate? Quels tests de diagnostic seraient utiles?

2
dlh

Essayez de remplacer votre source de données et votre chaîne de fournisseur par MYALIAS. En regardant les trois serveurs liés Oracle que j'ai sur mon serveur, c'est ainsi que je les ai configurés . enter image description here

1
Jim