SSIS Package Works in VS but not in SSIS because o

2019-07-18 13:59发布

问题:

We have a test package that was designed using VS2017 that has one "Data Flow Task" object with "ODBC Source" and "ODBC Destination" objects within it. The package is simply trying to move records from table 'Table_1' to table 'Table_2' in the same SQL Server 2014 database named 'Test'.

When we execute the package from VS2017, it runs successfully.

However, when we import that package into SSIS, and then run the package directly from there, we get the following error messages (see screen shots below):

The version of ODBC Destination, clsid {51B271F1-3B7E-4875-870E-62A0456FE2AD} is not compatible with this version of the DataFlow.
The version of ODBC Source, clsid {F8600F4A-E321-42F4-AA59-DA00FA374EA5} is not compatible with this version of the DataFlow.
The component is missing, not registered, not upgradeable, or missing required interfaces. The contact information for this component is "ODBC Destination;Connector for Open Database Connectivity (ODBC) by Attunity; Attunity Ltd.; All Rights Reserved; http://www.attunity.com;7".

Any ideas as to what is causing these errors?

Couple side questions / interesting notes:

  1. Why is it referencing Attunity? We are not using the Attunity connectors. We are using ODBC. I don't even have Attunity installed on this machine (I did at one point but uninstalled it).
  2. If you don't use the DataFlow task with the OBDC driver and just use a simple 'Execute SQL Task' object in the package that runs a simple 'INSERT INTO Table_2...' statement, the package runs in SSIS. There is something wrong with using the Data Flow Task.

Screen shots:

Here you can see the package is running successfully in VS2017:

The package was imported into SSIS:

When you run it in SSIS, it fails with the following errors:

回答1:

Found the answer from other posts.

First, change the TargetServerVersion property for the project to the version of SQL Server you are using for SSIS as explained by the links below and the screen shot shows.

The version of ODBC source is not compatible with this version of the dataflow

SSIS: version of ODBC source is not compatible with this version of the dataflow

After you do that, you may run into an error that states something like the following:

[ODBC Destination [2]] Error: The AcquireConnection method call to the connection manager MyConnectionManager failed with error code 0xC0014009.  There may be error messages posted before this with more information on why the AcquireConnection method call failed.

If you get that error, change the Run64BitRuntime property to 'True' for the project as explained by the link below and the screen shot shows.

‌https://social.msdn.microsoft.com/Forums/sqlserver/en-US/eb9e6826-b650-433b-bab9-16da214efd99/the-acquireconnection-method-call-to-the-connection-manager-mydatabaseodbc-failed-with-error-code?forum=sqlintegrationservices