SSIS - MySQL source: Could not create a managed connection manager - mysql

I'm using VS 2012 with SQL Server Data Tools installed. I have an ADO NET Source, which uses the .Net Providers\MySQL Data Provider and am trying to push some data to an OLE DB Destination, which uses a normal SQL Server Native Client 11.0 provider. Everything seems ok, I can preview data from the source and columns are mapped well - but when I run the project I get the following error:
[ADO NET Source [2]] Error: ADO NET Source has failed to acquire the connection {47479EC0-98BC-4664-A8F9-0FF0278969FD} with the following error message: "Could not create a managed connection manager.".
[SSIS.Pipeline] Error: ADO NET Source failed validation and returned error code 0xC0208449.
Most Google hits talk about setting the Run64BitRuntime to false. Mine is greyed out and defaulted to false already. Any other suggestions?

I ended up using an ODBC connection and was able to follow this post step by step to get an alternative route working:
SSIS MySQL Copying Table to SQL Server

Related

SSIS ODBC Source Previews Data But Fails When Executing Package

This is really odd to me. I am using an ODBC connection as a data source in SSIS. I am able to preview data, but when I attempt to execute the package (still within Visual Studio for development), I get an error on the initial data source.
The error I am receiving is:
There was an error trying to establish an Open Database Connectivity (ODBC) connection with the database server.
The AcquireConnection method call to the connection manager xxx failed with error code 0xC0014009. There may be error messages posted before this with more information on why the AcquireConnection method call failed.
ODBC Source failed validation and returned error code 0x80004005.
Clearly I have the right username, password, and ODBC connection to some degree, because I am able to see the data. However I am failing on establishing the connection when I attempt to run the package, so I must be doing something wrong. Any idea what it might be?
It ended up being that the drivers associated with the ODBC connection (gsk8ssl.dll) installed on the machine needed to be added to the path variables on both my local and on the server. This was for connecting to a DB2 database.

SSIS Logging Throws an Error

I have programmed some ETL which works OK, the processing finishes without errors. Now I want to create a log using SSIS Loggin feature.
However, once I set this logging up (SSIS log provider for SQL Server; all events; all cotainers are checked, also the log is checked) and start the ETL, the MS Visual Studio 2008 app return error window with not error specified in it so I don't have even clue what could be the problem. The destination of ETL is SQL Server 2008 R2. The credentials are the same as my AD account, I have no problem to write the data into this DB (respectivelly it's tables).
To sum up, the whole ETL run works without problem, but once the SSIS Logging is turned on, the ETL does not even start.
One notice: the log table was created in the DB though [domain\user_name].[sysssislog]. Also the logging to e.g. text file works without any problems.
Any suggestions, please?
+++
Error I am receiving
TITLE: Package Validation Error
Package Validation Error
ADDITIONAL INFORMATION:
Error at Reporting_v3 [Log provider "SSIS log provider for SQL Server"]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E14.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E14 Description: "There is already an object named 'sysssislog' in the database.".
Error at Reporting_v3 [Log provider "SSIS log provider for SQL Server"]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E14.
There is like around 500 rows with the same error. If I delete the ssislog table and run the package with SSIS Logging turned on, the table is created again and the same error pops up.
Fixed. The solution can be found at the following link:
http://connect.microsoft.com/SQLServer/feedback/details/467794/ssis-log-provider-for-sql-server-do-not-work-when-default-schema-is-not-dbo-sysdtslog90-sysssislog

How to fix the error can not obtain the schema rowset DBSCHEMA_TABLES_INFO?

I'm trying to correct some errors on an SSIS job. That number of errors was 12 and know I got to 5
I am getting the following error message, which is in French.
[OLE DB Source [1]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E14. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E14 Description: "Impossible d'obtenir l'ensemble de lignes du schéma "DBSCHEMA_TABLES_INFO" pour le fournisseur OLE DB "SQLNCLI10" du serveur lié "serveur3". Le fournisseur prend en charge l'interface, mais retourne un code d'erreur lorsqu'elle est utilisée.". [SSIS.Pipeline] Error: component "OLE DB Source" (1) failed the pre-execute phase and returned error code 0xC0202009
The error message translates to the following in English.
[OLE DB Source 1] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E14. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E14 Description: "Can not obtain the schema rowset" DBSCHEMA_TABLES_INFO "for OLE DB provider" SQLNCLI10 "for linked server" server3. "Provider supports the interface, but returns a failure code when it is used. ". [SSIS.Pipeline] Error: component "OLE DB Source" (1) failed the pre-execute stage and returned error code 0xC0202009.
How do I fix the error message?
Translated error message:
The error message that you added in the comment was in French. Using Google Translate, the error message translates to the following:
[OLE DB Source 1] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E14. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E14 Description: "Can not obtain the schema rowset" DBSCHEMA_TABLES_INFO "for OLE DB provider" SQLNCLI10 "for linked server" server3. "Provider supports the interface, but returns a failure code when it is used. ". [SSIS.Pipeline] Error: component "OLE DB Source" (1) failed the pre-execute stage and returned error code 0xC0202009.
The message implies that you are probably trying to query a Linked Server using SQL Server Native Client 10.0. I am going to guess that the linked server is pointing to SQL Server 2000 based on the searches on web.
Check the following:
Read the below Microsoft Connect website bug report on how to fix your issue.
Unable to query linked SQL Server 2000
Quote from website:
The issue here seems to be that the instcat version on your SQL 2000 server is out-of-date. Following the steps in KB 906954 (http://support.microsoft.com/kb/906954) should fix that.
Other links:
Other links that might help to resolve your issue:
Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider
Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI10" for linked server "XXXXXX"
The links suggest creating the below stored procedure in master database and granting Execute permission to appropriate user account.
USE master;
GO
CREATE PROCEDURE sp_tables_info_rowset_64
#table_name SYSNAME
, #table_schema SYSNAME = NULL
, #table_type nvarchar(255) = NULL
AS
DECLARE #Result INT
SET #Result = 0
EXEC #Result = sp_tables_info_rowset #table_name, #table_schema, #table_type
GO
To run the procedure (one time only is needed)
USE master
GRANT EXEC ON sp_tables_info_rowset_64 TO PUBLIC
Steps to create a data source to connect to SQL Server instance from SSIS 2008 R2
Here are the steps to create a Data Source to connect to an SQL Server instance using Business Intelligence Development Studio (BIDS) 2008 R2.
On the BIDS project solution, right-click on the folder Data Sources and click New Data Source...
On the Data Source Wizard, click New... to create a new connection.
On the Connection Manager dialog, perform the following steps:
Select an appropriate Provider based on the SQL Server version that you would like to connect to. You will see only the providers that are installed on the machine.
For SQL Server 2000, select Microsoft OLE DB Provider for SQL Server
For SQL Server 2005 - 2008 R2, select Native OLE DB\SQL Server Native Client 10.0
For SQL Server 2012, select Native OLE DB\SQL Server Native Client 11.0
Enter the Server name or Instance name, for example MachineName\InstanceName
Select Windows authentication or SQL Server Authentication depending on how you would like to connect to the SQL Server instance. If you choose SQL Server Authentication, enter a valid user name and password.
Click Test Connection to make sure that the credentials are valid.
Select a database to connect.
Click OK
Click Next on Data Source Wizard. On the final step, give a proper name to the Data Source like OLEDB_AdventureWorks. OLEDB denotes the connection type and AdventureWorks denotes the database name. Click Finish.
The newly created data source OLEDB_AdventureWorks will show up under the Data Sources folder in the SSIS project.
To add the data source to the package, right-click on the Connection Manager tab that is displayed at the bottom of an SSIS package and then click New Connection From Data Source...
Select Data Source dialog will display all the available data sources on the SSIS project. Pick the ones that you would like to add to the package and click OK.
The new data source will appear on the package connection manager. You can now use the connection manager in your package tasks.
Other option:
Instead of creating data source, you can also directly create a Connection manager on the package itself. You right-click on the Connection Manager tab that is displayed at the bottom of an SSIS package and then choose the appropriate connection that you would like to create. This connection manager will be visible only to the package and not to the other packages in the SSIS project solution.
Word of advice:
Read the FAQ on how to post a question with enough information for others to answer.
Do not add the error messages in the comments. It is very hard to read and understand the message.
Always edit your question to explain the issue in detail or to add more information.
Translate the error message if it is not in English.

SSIS 2012 oledb connectionstring using mirroring

I am trying to configure a SSIS 2012 project on a couple of mirrored databases.
I was hoping to be able to use the OLEDB provider, but that doesn't seem to support the Failover Partner attribute in the connectionstring.
I have tried to add the keys "Failover Partner", "Failover_Partner" and "FailoverPartner", but none of them works - the connection never tries to connect to the failover parther even if that holds the principal database. All my tests have been performed with all three variants of the attribute key.
If I use the ADO.NET connection, there is a build-in setting called "Failover Partner" in the Connection Manager, and that works like a charm, and it can connect to the database with the principal being on either one of the servers... just like it should.
My question is: Is it correct that OLEDB does not work out of the box with mirrored databases, when using SSIS 2012 agains a SQL Server 2012 mirrored database?
How I test
My test is really simple: i have a "Execute SQL Task" with an OLEDB connection manager with the following connectionstring:
Data Source=srv1;Initial Catalog=MyDatabase;Provider=SQLOLEDB.1;Integrated Security=SSPI;Auto Translate=False;Application Name=My Application;
I have tried adding the different versions of Failover Partner as mentioned above:
Data Source=srv1.domain.local;Initial Catalog=MyDatabase;Provider=SQLOLEDB.1;Integrated Security=SSPI;Auto Translate=False;Application Name=My Application;Failover Partner=srv2.domain.local;
If MyDatabase is principal on srv1, then it works. If the database is principal on srv2, then SSIS fails with the following error:
Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft OLE DB Provider for SQL Server" Hresult: 0x80004005 Description: "Cannot open database "MyDatabase" requested by the login. The login failed.".
and the following is logged on srv1 in the error log:
Login failed for user 'DOMAIN\MyUser'. Reason: Failed to open the explicitly specified database 'MyDatabase'. [CLIENT: 10.0.0.3]
What am I doing wrong? Or do I need to change to ADO.NET which works 100% as expected?
Thanx,
Sjang
There is a failover partner parameter if you use OleDB/SQLNCLI11.1 connection string:
Data Source=srv1;Initial Catalog=myDB;Provider=SQLNCLI11.1;Integrated Security=SSPI;Failover Partner=failover_partner_name;

SSIS MySQL Copying Table to SQL Server

I want to copy tables from MySQL to SQL Server.
ADO.NET source using the MySQL connection.
OLE DB destination, SQL Server.
The statement is a full copy so no big deal there. When I hit the play button, after a while an error pops up. I set a DataViewer and started all over again, running it from inside the DataFlow while checking the DataViewer. After a while (this time it took longer) the error.
Error: 0xC02090F5 at Data Flow Task, ADO NET Source 1: The component
"ADO NET Source" (1) was unable to process the data. Fatal error
encountered during data read.
Error: 0xC0047038 at Data Flow Task,
SSIS.Pipeline: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The
PrimeOutput method on component "ADO NET Source" (1) returned error
code 0xC02090F5. The component returned a failure code when the
pipeline engine called PrimeOutput(). The meaning of the failure code
is defined by the component, but the error is fatal and the pipeline
stopped executing. There may be error messages posted before this
with more information about the failure.
Any idea on this error?
this took me few days to figure out...so I thought I would share my notes
How to connect and load data from MySQL to SQL Server
1 - Download the 32 bit ODBC driver.
go to the MySQL website and download: “mysql-connector-odbc-5.2.4-ansi-win32.msi” NOTE: Do not use the 64 bit driver on BIDS 2008. BIDS 2008 is 32 bit. You will get a mismatch error when creating SSIS’s connection manager: “The specified DSN contains an architecture mismatch between the Driver and Application”
2 - Create a User DSN You need to open the using windows 32 ODBC admin tool. DO NOT open the regular ODBC admin, in control panel. Open the ODBC admin located here: c:\Windows\SysWOW64\odbcad32.exe. If you use the default ODBC admin…it will not work. Additionally you must create a “User DSN” - NOT a System DSN. Otherwise it will not show up in SSIS NOTE: the screens look the same so you will have no way of knowing whether you are in 32 BIT ODBC Admin tool or not.
3 – Create a new SSIS package and create an ADO.NET connection manager AND ADO.NET SQL Server destination.
4 – Change the Source ADO.NET properties. You will get validation errors and your package will not run. You need to change the “ValidateExternalMetadata” to FALSE (in the “Advanced Editor” dialog box) of the ADO.NET source It will also give you metadata error…that’s ok…just click ok. It will still pull the metadata (column names/data types). You cannot select the tables as you would in SQL server. You need to type the SQL select statement.
5 - Run the package and should run and load normally.