2016-06-17 54 views
1

Ich arbeite an einem SSIS-Paket, das eine Verbindung zum Server herstellt und Daten in eine Excel-Datei speichert und diese Excel-Datei dann per E-Mail an den Client sendet. Ich verwende ADO.net (Provider:. Net Providers \ Odbc Data Provider) -Treiber, um eine Verbindung mit Server herzustellen, und das 64-Bit- und Excel-Ziel ist, um die Datei auf meinem lokalen zu verbinden. Wenn ich das Paket in meinem SSDT mit der Eigenschaft Run64BitRUNtime = true ausführen, erhalte ich folgenden Fehler.SSIS: Zwei verschiedene Fehler bei verschiedenen Treibern. Einer ist 32 Bit und ein anderer ist 64 Bit. Das Ausführen in 32 Bit führt dazu, dass ein anderer Treiber fehlschlägt

Source: CFEReport Connection manager "Excel Connection Manager"  Description: The requested OLE DB provider Microsoft.Jet.OLEDB.4.0 is not registered. If the 64-bit driver is not installed, run the package in 32-bit mode. Error code: 0x00000000. An OLE DB record is available. Source: "Microsoft OLE DB Service Components" Hresult: 0x80040154 Description: "Class not registered". End Error Error: 2016-06-17 13:27:56.81  Code: 0xC020801C  Source: CFE Report Generation Excel Destination [32]  Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "Excel Connection Manager" failed with error code 0xC0209303. There may be error messages posted before this with more information on why the AcquireConnection method call failed. End Error Error: 2016-06-17 13:27:56.82  Code: 0xC0047017  Source: CFE Report Generation SSIS.Pipeline  Description: Excel Destination failed validation and returned error code 0xC020801C. End Error Error: 2016-06-17 13:27:56.82  Code: 0xC004700C  Source: CFE Report Generation SSIS.Pipeline  Description: One or more component failed validation. End Error Error: 2016-06-17 13:27:56.82  Code: 0xC0024107  Source: CFE Report Generation  Description: There were errors during task validation. 

Also suchte ich über das Internet und finden, dass ich Run64BitRUNtime = false diese Eigenschaft sollte und es in 32-Bit laufen. Ich versuche das und ich kann es erfolgreich ausführen. Aber als ich versuchte, es in SQL Server 2012 als Erstellen von Job auszuführen und es täglich auszuführen, erhalte ich folgenden Fehler. (Ich habe auch die Eigenschaft in SQL Job durch Überprüfung Use 32 Bit runtime Option in Ausführung Option in 32-Bit-Umgebung ausgeführt werden)

Microsoft (R) SQL Server Execute Package Utility Version 11.0.6020.0 for 32-bit Copyright (C) Microsoft Corporation. All rights reserved. Started: 1:19:17 PM Error: 2016-06-17 13:19:17.98  Code: 0xC0208449  Source: CFE Report Generation RAR TableQuery [93]  Description: ADO NET Source has failed to acquire the connection {F2DAE648-B39C-4F43-8EBE-BBA6E11EC7AA} with the following error message: "ERROR [IM014] [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application". End Error Error: 2016-06-17 13:19:17.98  Code: 0xC0047017  Source: CFE Report Generation SSIS.Pipeline  Description: RAR TableQuery failed validation and returned error code 0xC0208449. End Error Error: 2016-06-17 13:19:17.98  Code: 0xC004700C  Source: CFE Report Generation SSIS.Pipeline  Description: One or more component failed validation. End Error Error: 2016-06-17 13:19:17.98  Code: 0xC0024107  Source: CFE Report Generation  Description: There were errors during task validation. End Error DTExec: The package execution returned DTSER_FAILURE (1). Started: 1:19:17 PM Finished: 1:19:17 PM Elapsed: 0.78 seconds. The package execution failed. The step failed. 

Können Sie mir helfen, dieses Problem zu lösen? Vielen Dank im Voraus Ich möchte dieses Paket in 64 Bit ausführen, was ich tun soll, um es zu verwenden.

Antwort

3

Ein Treiber existiert im 32-Bit-Bereich, einer in 64 und die Twain werden sich nie treffen. Sie können entweder einen Treiber auf der gegenüberliegenden Seite finden oder Ihr Paket in zwei separate Pakete aufteilen, so dass Sie eines mit dem 32bit dtexec und eines als 64 bit dtexec ausführen können. Die RAW-Datei Ziel/Quelle kann in dieser Situation hilfreich sein.

+0

Danke. Ich habe 64 Bit von MS Access Database Engine 2010 Redistributable auf dem Server installiert. Ich öffne mein SSIS-Paket in SSDT und versuche es erneut mit Excel. Wenn ich es in 32bit (Run64BitRUNtime = false) dann läuft es funktioniert sonst gibt es mir den gleichen Fehler. Jetzt teile ich Paket in zwei Teile (eine in RAW-Datei und eine andere RAW-Datei in Excel) und es funktioniert, indem ein Paket in 32 Bit und ein anderes in 64bit – Mytroy2050

0

Eine einfache Lösung wäre, die Dateien als CSV zu speichern und dann mit Excel zu öffnen. Das würde es Ihnen ermöglichen, 64 Bit zu verwenden. Ein anderer Ansatz wäre, die 64-Bit-ODBC-Treiber zu verwenden.

Microsoft Access Database Engine 2010 Redistributable

(Es heißt es, der Zugang DB Engine ist, aber wenn Sie an der ‚Zusätzliche Informationen‘ sehen es listet Excel als Teil dieses Pakets auch)

ich neugierig wäre, zu wissen, wie Das klappt für dich.

+0

Ich kann CSV nicht verwenden, weil meine Daten viel Komma (,) hat. Wenn ich CSV verwende, fallen einige Daten in andere Spalten. Ich habe 64 Bit von MS Access Database Engine 2010 Redistributable auf dem Server installiert. Ich öffne mein SSIS-Paket in SSDT und versuche es erneut mit Excel. Wenn ich es in 32bit (Run64BitRUNtime = false) dann läuft es funktioniert sonst gibt es mir den gleichen Fehler. – Mytroy2050

+0

Ich hatte ein ähnliches Problem, wo ich Kommas in meinen Tabellendaten hatte und es mit einem '|' Pipe-Zeichen für den Spaltenbegrenzer. In SSIS können Sie angeben, mit welchem ​​Zeichen Sie Ihre Spalten trennen möchten. Suchen Sie einfach nach einem Zeichen, das nicht in Ihren Daten enthalten ist. [Changing Column Deliminators] (http://stackoverflow.com/questions/20356180/how-do-i-change-the-exported-flat-file-colum-delimiter-vs2012-ssis) – DBADon

+0

ja ich kann diese Optionen nicht verwenden too :) – Mytroy2050

1

Ich habe dieses Problem vor kurzem bei der Bereitstellung meiner SSIS-Pakete auf DEV SQL-Server, die 64-bit waren.

Die Lösung ist die 64-bit Version des Microsoft Access Database Engine 2010 Redistributable auf dem 64-bitSQL Server Server installieren

Stellen Sie sicher diejenige auswählen, die die _64 im exe Namen wie unten gezeigt hat.

enter image description here

Diese verteilbar ist derjenige, der die 64-bit Version des Microsoft.Jet.OLEDB.4.0 Treiber von allen Office-Dateien wie MS Access, MS Excel und MS Word verwendet hat. Also mach dir keine Sorgen um seinen Namen.

+0

Ich installierte 64 Bit von MS Access Database Engine 2010 Redistributable auf dem Server. Ich öffne mein SSIS-Paket in SSDT und versuche es erneut mit Excel. Wenn ich es in 32bit (Run64BitRUNtime = false) dann läuft es funktioniert sonst gibt es mir den gleichen Fehler. – Mytroy2050

+0

Jetzt teile ich das Paket in zwei Teile (eine in RAW-Datei und eine andere RAW-Datei in Excel) und es funktioniert, indem ich ein Paket in 32 Bit und ein anderes in 64 Bit ausführe, aber trotzdem möchte ich wissen, was ich falsch mache IE 64-Bit-Version installieren) – Mytroy2050

+1

Wenn Sie das Paket in SSDT ausführen, ist es auf Ihrem lokalen Rechner, richtig? Das hat den 32-Bit-Treiber und das wird verwendet, wenn Sie 'Run64BitRUNtime = false' im Debug-Modus auf Ihrem lokalen Rechner setzen. Wenn Sie dasselbe implementierte Paket auf dem SQL Server ausführen, bei dem es sich um 64-Bit handelt, benötigen Sie den 64-Bit-Treiber. Macht Sinn? Ich bin bei Ihrer zweiten Bemerkung nicht klar. – Shiva

0

Alle Antworten sind grundsätzlich richtig, die Artikel, die Sie auf die 32-Bit-Ausführung zeigen, helfen nicht, wenn Sie tatsächlich den 64-Bit-Treiber ausführen, der überhaupt nicht installiert ist. Als @Shiva weist Sie auf den richtigen Treiber für die meisten Ihrer Excel-Arbeit, die Sie benötigen. Wenn Sie 32 Bit ausführen möchten, wählen Sie die AccessDatabaseEngine, die 32 ist. Wenn Sie möchten, erhalten Sie 64 die 64-Version.Um dies jedoch noch weiter zu erschweren, wenn Sie ein älteres Dateiformat als Office 2010 speichern möchten, benötigen Sie den Access 2007-Treiber, der vor der Installation der 2010-Version installiert werden muss. Dann, wenn Sie 2013 und neuere Versionen von Excel verwenden möchten, benötigen Sie tatsächlich auch die neueren AccessDatabaseEngine-Treiber.

Also was ich mache, weil ich Excel-Dateien aus vielen verschiedenen Quellen bekomme, bekomme ich alle Access-Datenbank-Engine-Treiber und installiere sie alle in der Reihenfolge der ältesten bis neuesten, die ich für den Job ich am besten auswählen konnte arbeite mit. In Ihrem Fall, weil Sie die Excel-Datei erstellen, haben Sie mehr Flexibilität in Bezug auf die Wahl des gewünschten Treibers.

Nur ein letztes Stück davon. Sie benötigen die Treiber auf Ihrem Entwicklungssystem und den Server, auf dem der SSIS-Job ausgeführt wird.