Ich habe ein SSIS-Paket erstellt, das eine Excel-Datei in eine SQL Server-Tabelle importiert.
Das SSIS-Paket wird problemlos ausgeführt, wenn ich es lokal auf meinem Computer ausführe. Wenn ich es jedoch auf dem Server ausführe, auf dem das Paket geplant wird, wird der folgende Fehler angezeigt (von einer Textdatei, in der Fehler ausgegeben werden, bis zur Verwendung der SSIS-Protokollierung).
Nach der Recherche konnte ich nur die Run64BitRuntime-Eigenschaft auf false setzen, was ich tat, aber immer noch kein Glück hatte. Ich bezweifle jedoch, dass dies meinen Fehler verursacht, da der Fehler nichts in Bezug auf 64-Bit angibt (wie es in den Artikeln der Fall war, die ich gefunden habe).
Ich dachte auch, dass es sein könnte, dass der Server nicht über die entsprechenden Excel-Treiber verfügt, aber ich denke auch nicht, dass dies der Fall ist, da die Fehlermeldung normalerweise etwas über die nicht registrierten Treiber aussagt.
Ich habe derzeit keinen Zugriff auf Remote in den Server. Ich kann das Paket nur in einen Ordner hochladen und es wird dann von einer Anwendung ausgeführt, sodass nur die Fehlermeldungen angezeigt werden, die in dem von mir erstellten Textfehlerprotokoll enthalten sind.
Fehlercode DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. Der Aufruf der AcquireConnection-Methode an den Verbindungsmanager "Envision" ist mit dem Fehlercode 0xC0209303 fehlgeschlagen. Zuvor wurden möglicherweise Fehlermeldungen mit weiteren Informationen darüber veröffentlicht, warum der Methodenaufruf AcquireConnection fehlgeschlagen ist.
"Envision" ist der Name meines Excel-Verbindungsmanagers.
Ich fülle den Excel-Dateipfad und die Verbindungszeichenfolge mit Ausdrücken.
Der Verbindungszeichenfolgenausdruck sieht folgendermaßen aus:
"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =" + @ [User :: SourceFilePath] + "; Extended Properties =" EXCEL 12.0 XML; HDR = YES ";
Das SSIS Pacakge wird von einem Windows-Benutzernamen / -Konto ausgeführt. Ich denke, es könnte ein Webdienstkonto sein. (BDS_sprtIIS)
Hat jemand Lösungen oder Vorschläge, wie dieses Problem des Pakets behoben werden kann, das nur auf meinem lokalen Computer funktioniert, nicht jedoch auf dem tatsächlichen Server, auf dem das Paket bereitgestellt wird?
Ich habe die folgende Antwort in einem anderen Forum gefunden. Könnte es sein, was meine Probleme verursacht? Sie sagen im Grunde, dass der Excel-Verbindungsmanager aus irgendeinem Grund versucht, auf den temporären Ordner des Benutzers zuzugreifen. Wenn er keinen Zugriff auf diesen Ordner hat, schlägt dies fehl:
Ich habe auch festgestellt, dass der Microsoft.JET.OLEDB.4.0-Treiber versucht, das temporäre Verzeichnis unter dem Profil des angemeldeten Benutzers zu lesen.
.
... Wir führen unsere SQL Agents mit einem Domänenkonto niedrigerer Ebene und unsere SSIS-Pakete mit einem Proxy-Konto aus. Sie haben Recht, da Procmon dies auch für mich bestätigt hat. Ich habe dem Proxy-Konto Rechte für das temporäre Verzeichnis des Profils gegeben (C: \ Dokumente und Einstellungen \ SQLAgentDomainAccount \ Lokale Einstellungen \ Temp) und es hat funktioniert!
Ich verwende keine SQL Server-Jobs oder Proxy-Konten. Das Paket wird einfach von einem Windows-Konto ausgeführt, höchstwahrscheinlich über ein Befehlszeilenskript.
Das Windows-Konto hat Zugriff auf die Datei, aber ich bin nicht sicher, ob es Zugriff auf den Ordner "TEMP" hat (auf den ich im Paket nie verweise, sodass ich nicht weiß, warum es Zugriff auf diesen Ordner benötigen würde). ...
quelle