2016-04-08 25 views
0

Ich versuche, eine Verbindung zu Oracle mithilfe von SSIS-Paket (SQL Server 2008 R2) und lädt Daten in meine SQL Server-Tabelle.SSIS-Paket schlägt fehl, wenn mit Agent-Auftrag geplant

  1. Runs in einem 64-Bit 2008 R2 Maschine
  2. Hat-Setup die TNS: Listner für Oracle-Client. Ich habe sowohl 32bit als auch 64bit Oracle Client installiert. in HKEY_LOCAL_MACHINE
  3. Set Umgebungsvariable Pfad (TNS_ADMIN)
  4. Erstellt einen Registrierungseintrag "TNS_ADMIN" das TNSNAMES.ora Verzeichnis von 64-Bit-Oracle-Client zeigt -> SOFTWARE -> ORACLE

Alles funktioniert gut, wenn läuft in BIDS. Ich habe Attunity Connector und Native Oracle Provider für OLEDB verwendet. Beide arbeiten in BIDS.

Sobald ich es in einem SQL-Agent-Auftrag plane und laufe das gleiche Paket, bekomme ich folgende Fehlermeldung:

Message Executed as user: AMERICAS\ssisdata. Microsoft (R) SQL Server Execute Package Utility Version 10.50.1600.1 for 32-bit Copyright (C) Microsoft Corporation 2010. All rights reserved. Started: 3:17:23 PM Error: 2016-04-08 15:17:32.76 Code: 0xC0202009
Source: ORA OLEDB TEST Connection manager "OLEDB ORA CONN MGR"
Description: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "OraOLEDB" Hresult: 0x80004005 Description: "ORA-12541: TNS:no listener". End Error Error: 2016-04-08 15:17:32.76 Code: 0xC020801C Source: Data Flow Task OLE DB Source [209]
Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "OLEDB ORA CONN MGR" failed with error code 0xC0202009.

Ich habe in verschiedenen Maschinen versucht. Aber das ist auch der Fall. Ich habe den Kopf seit zwei Tagen gebrochen. Jede Hilfe wäre willkommen.

+0

Der Fehler "ORA-12541: TNS: no listener" ist ziemlich definitiv. Es gibt keinen Oracle-Listener-Prozess für die IP-Adresse und den Port, die vom Client angegeben wurden, der die Anforderung ausgeführt hat. Zeitraum. Punkt. Wenn Sie vom Client-Rechner ein erfolgreiches tnsping erhalten, dann ist oracle das Opfer, nicht der Täter und Sie müssen Ihre oledb-Konfiguration durchgehen. Ich weiß nicht, was du meinst "tns listener for client". Der Listener ist ein serverseitiger Prozess, kein Clientprozess. – EdStevens

+0

Auf dem Server, der Oracle hostet, geben Sie ein: lsnrctl und dann "status". Wenn Sie dort keine aktiv abhörenden Prozesse sehen, geben Sie "start" ein. Stellen Sie außerdem sicher, dass Ihr Client-tnsnames-Eintrag auf den richtigen Host und den richtigen Dienst verweist. –

+0

Danke Chris. Aber ich versuche dasselbe von derselben Maschine. Wenn in der angegebenen IP-Adresse kein Oracle-Listener-Prozess vorhanden ist, schlägt das gleiche Paket beim Ausführen von Visual Studio fehl? Es läuft gut, wenn es von VS läuft. Scheitert jedoch nur in einem SQL-Agent-Job vom selben Computer. Über "tns listener for client", mein Schlechter, meinte ich eigentlich, die TNSNAMES.ora Dateispezifikation. "tnsping" wird von meinem Computer nicht als gültiger Befehl erkannt. Ich weiß nicht, warum ich diese Nachricht bekomme, wenn ich erfolgreich Verbindung mit VS herstellen konnte. –

Antwort

0

Haben Sie das Oracle-Setup auf dem Server und Ihrem Entwicklungscomputer durchgeführt?

Wenn SSIS-Pakete als Teil eines Jobs auf dem Server ausgeführt werden, werden sie auch als SQL Server-Agent-Dienstkonto ausgeführt. Sie müssen also sicherstellen, dass Ihre gesamte Oracle-Konfiguration (Installation, Sicherheit usw.) auch für dieses Konto gültig ist. Der kritische Test besteht darin, sich beim Server als SQL Server-Agent-Konto anzumelden (Sie benötigen möglicherweise einen DBA/sysadmin, damit dieser Benutzer sich interaktiv anmelden kann, da ihm diese Berechtigung häufig nicht erteilt wird) und überprüfen Sie die gesamte Oracle-Konnektivität arbeitet unter diesem Benutzer.

Diese Art von "funktioniert in dev, nicht auf einem Server" Probleme werden in der Regel durch das SQL Server Agent-Konto nicht in der Lage, auf die gleichen Ressourcen zugreifen, die Sie als dev-Benutzer als selbstverständlich betrachten.

+0

Hallo, Für jetzt sind mein Server und die Entwicklungsmaschine beide gleich.Ich probiere beide von derselben Maschine aus (läuft von VS und richtet Agentenjob ein). Aber arbeiten Sie nur, wenn Sie von VS laufen. Der Unterschied, den ich sehe, ist, dass es bei der Ausführung von VS auf meinem Benutzerkonto ausgeführt wird und während der Ausführung von einem Agentenauftrag unter einem SSIS-Dienstkonto ausgeführt wird. Ich muss vielleicht versuchen, Ihre Option vorgeschlagen. Im Moment haben Sie dieses Privileg nicht. Muss mit dem Admin arbeiten. Grundsätzlich ist die Oracle-Konfiguration vorhanden, da es dieselbe Maschine ist. –