MySQL as ADO NET Destination causing System.NullReferenceException - mysql

I am a newbie with SSDT. I am trying to import data from a SQL Server database to MYSQL with certain transformations.
If I use a flat file destination, it executes perfectly. As soon as I use the ADO NET destination pointing to MySQL database, it does not work. It works fine if I reverse the direction (putting data from MySQL to SQL Server).
Here is the stack trace of output:
SSIS package "E:\Project MMA\MPS Module\OLD Db Files\TestMigration\TestMigration\Package.dtsx" starting.
Information: 0x4004300A at Simple Test, SSIS.Pipeline: Validation phase is beginning.
Information: 0x4004300A at Simple Test, SSIS.Pipeline: Validation phase is beginning.
Information: 0x40043006 at Simple Test, SSIS.Pipeline: Prepare for Execute phase is beginning.
Information: 0x40043007 at Simple Test, SSIS.Pipeline: Pre-Execute phase is beginning.
Error: 0xC0047062 at Simple Test, ADO NET Destination [2]: System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.SqlServer.Dts.Pipeline.ADONETDestination.PreExecute()
at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPreExecute(IDTSManagedComponentWrapper100 wrapper)
Error: 0xC004701A at Simple Test, SSIS.Pipeline: ADO NET Destination failed the pre-execute phase and returned error code 0x80004003.
Information: 0x4004300B at Simple Test, SSIS.Pipeline: "ADO NET Destination" wrote 0 rows.
Information: 0x40043009 at Simple Test, SSIS.Pipeline: Cleanup phase is beginning.
Task failed: Simple Test
Warning: 0x80019002 at Package: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (2) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
SSIS package "E:\Project MMA\MPS Module\OLD Db Files\TestMigration\TestMigration\Package.dtsx" finished: Failure.

Related

Error while executing SSIS package to data migration from SQL 2012 server to MySql

I'm trying to migrate data from MS Sql server 2012 to MySql server (5.1) using SSIS packages
Here is my data flow task which retrieves data using query from SQL Server and pumps to Mysql (one of its columns contains blob type)
and properties
Tried with ODBC connection manager and ADO.net(odbc driver) manager for destination.
The following is the error I'm facing, it is failing after inserting some records into MySql which I'm not able figure out the reason/ solution:
Error: 0xC020844B at DFT Finding Attachment, ADO NET Destination 2: An exception has occurred during data insertion, the message returned from the provider is: The connection has been disabled.
Error: 0xC0047022 at DFT Finding Attachment, SSIS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "ADO NET Destination" (2) failed with error code 0xC020844B while processing input "ADO NET Destination Input" (9). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.
The issue is with MySql max_allowed_packet, it set to 1MB so it's failing while iserting large blobs, so the answer is icreate it to 64MB
set global max_allowed_packet=64M
I'd suggest to add a Data Conversion task into the Data Flow, between Source and Destination and make sure all the data types are converted properly, before inserting into the MySQL table.
I often experienced that SSIS cannot convert the datatypes by default.

SSIS: Making an Informix transaction local doesn't work

For a single SSIS task I'm trying to make its transaction local.
To simplify things, I'm trying to do it like this:
create the new package
create just one Execute SQL Task
inside that task I delete some rows from destination table and issue a ROLLBACK:
DELETE FROM SOME_TABLE WHERE SOME_COLUMN = 'ABCD';
ROLLBACK;
I create a new Connection Manager for that task (IBM Informix OLE DB Provider) and make sure it passes Test Connection
after adding the task, I change its TransactionOption property to Required
after that, I change the RetainSameConnection property of Connection Manager to True
As I understand, the task should start a local transaction without using DTC. However, this is the output when I run the package:
SSIS package "Package1.dtsx" starting.
Information: 0x4001100A at ROLLBACK: Starting distributed transaction
for this container.
Error: 0xC001402C at Package1, Connection manager
"xxx#yyy": The SSIS Runtime has failed to
enlist the OLE DB connection in a distributed transaction with error
0x8004D01B "The Transaction Manager is not available.".
Error: 0xC0202009 at Package1, Connection manager
"xxx#yyy": SSIS Error Code DTS_E_OLEDBERROR.
An OLE DB error has occurred. Error code: 0x8004D01B.
Error: 0xC00291EC at ROLLBACK, Execute SQL Task: Failed to acquire
connection "xxx#yyy". Connection may not be
configured correctly or you may not have the right permissions on this
connection.
Task failed: ROLLBACK
Information: 0x4001100C at ROLLBACK: Aborting the current distributed
transaction.
Warning: 0x80019002 at Package1: SSIS Warning Code
DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but
the number of errors raised (1) reached the maximum allowed (1);
resulting in failure. This occurs when the number of errors reaches
the number specified in MaximumErrorCount. Change the
MaximumErrorCount or fix the errors. SSIS package "Package1.dtsx"
finished: Failure.
Does anyone know what's happening here?

ssis error code 0xC0209029 while processing input "OLE DB Destination Input" (4416)

I have package which have sequence container and inside that sequence container there is 10 child sequence container each container represents the single table. When I execute that Package to through the SQL Server Job all eight or nine container execute successfully but only one or two container give error which has given below. But when we go to the package and right click on error container and execute them it executes success fully. Please help me to solve this mystery.
"OLE DB Destination" (4403) failed with error code 0xC0209029 while
processing input "OLE DB Destination Input" (4416). The identified
component returned an error from the ProcessInput method. The error is
specific to the component, but the error is fatal and will cause the
Data Flow task to stop running. There may be error messages posted
before this with more information about the failure. End Error
DTExec: The package execution returned DTSER_FAILURE (1). Started:
12:30:00 AM Finished: 3:01:13 AM Elapsed: 9072.95 seconds. The
package execution failed. The step failed.
My case is that implicit conversion is failing. This occurs when attempting to import different uppercase and lowercase value field. So you could check the fields match values into SSIS and find differences (upper & lower case)
Check the user(login and password) of the connection you use in your OLEDB.
If the user you configured in the connection does not have rights on ther server it wont work.
Do not forget to check the "save password" option if you'd entered a specific user.
This is a connection timeout error.
Solution: Use fast load mode, i.e. Table or view - fast load.
Check following:
Check if there is proper mapping between source and destination.
Login is working.
Connection is not broken.
Check if the SQL server has short connection timeout.
Check if the destination is not using a connection manager added for the source.

Error: 0xC0202009 at Data Flow Task, OLE DB Destination [43]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E21

My source is a TXT Flat File Source, the Destination is of type OLE DB. (see image)
I found a very basic tutorial on Code Project to create a package. I finished the steps but when debugging I get a strange error(bellow):
Can someone give an explanation to this error? It took me hours to search the web for the error.
SSIS package
"C:\Users\USRNAME\Desktop\Projects\DataGeneratorSsis\DataGeneratorSsis\Package.dtsx"
starting. Information: 0x4004300A at Data Flow Task, SSIS.Pipeline:
Validation phase is beginning. Information: 0x4004300A at Data Flow
Task, SSIS.Pipeline: Validation phase is beginning. Warning:
0x80047076 at Data Flow Task, SSIS.Pipeline: The output column
"intApplication" (7) on output "Flat File Source Output" (6) and
component "Flat File Source" (2) is not subsequently used in the Data
Flow task. Removing this unused output column can increase Data Flow
task performance. Information: 0x40043006 at Data Flow Task,
SSIS.Pipeline: Prepare for Execute phase is beginning. Information:
0x40043007 at Data Flow Task, SSIS.Pipeline: Pre-Execute phase is
beginning. Information: 0x402090DC at Data Flow Task, Flat File Source
2: The processing of file "C:\Users\USRNAME\Desktop\ddd.txt" has
started. Information: 0x4004300C at Data Flow Task, SSIS.Pipeline:
Execute phase is beginning. Information: 0x402090DE at Data Flow Task,
Flat File Source 2: The total number of data rows processed for file
"C:\Users\USRNAME\Desktop\ddd.txt" is 2. Error: 0xC0202009 at Data
Flow Task, OLE DB Destination [43]: SSIS Error Code DTS_E_OLEDBERROR.
An OLE DB error has occurred. Error code: 0x80040E21. An OLE DB record
is available. Source: "Microsoft SQL Server Native Client 11.0"
Hresult: 0x80040E21 Description: "Multiple-step OLE DB operation
generated errors. Check each OLE DB status value, if available. No
work was done.". Error: 0xC020901C at Data Flow Task, OLE DB
Destination [43]: There was an error with OLE DB
Destination.Inputs[OLE DB Destination Input].Columns[AppID] on OLE DB
Destination.Inputs[OLE DB Destination Input]. The column status
returned was: "The value could not be converted because of a potential
loss of data.". Error: 0xC0209029 at Data Flow Task, OLE DB
Destination [43]: SSIS Error Code
DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "OLE DB
Destination.Inputs[OLE DB Destination Input]" failed because error
code 0xC0209077 occurred, and the error row disposition on "OLE DB
Destination.Inputs[OLE DB Destination Input]" specifies failure on
error. An error occurred on the specified object of the specified
component. There may be error messages posted before this with more
information about the failure. Error: 0xC0047022 at Data Flow Task,
SSIS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The
ProcessInput method on component "OLE DB Destination" (43) failed with
error code 0xC0209029 while processing input "OLE DB Destination
Input" (56). The identified component returned an error from the
ProcessInput method. The error is specific to the component, but the
error is fatal and will cause the Data Flow task to stop running.
There may be error messages posted before this with more information
about the failure. Information: 0x40043008 at Data Flow Task,
SSIS.Pipeline: Post Execute phase is beginning. Information:
0x402090DD at Data Flow Task, Flat File Source 2: The processing of
file "C:\Users\USRNAME\Desktop\ddd.txt" has ended. Information:
0x4004300B at Data Flow Task, SSIS.Pipeline: "OLE DB Destination"
wrote 0 rows. Information: 0x40043009 at Data Flow Task,
SSIS.Pipeline: Cleanup phase is beginning. Task failed: Data Flow Task
Warning: 0x80019002 at Package: SSIS Warning Code
DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but
the number of errors raised (4) reached the maximum allowed (1);
resulting in failure. This occurs when the number of errors reaches
the number specified in MaximumErrorCount. Change the
MaximumErrorCount or fix the errors. SSIS package
"C:\Users\USRNAME\Desktop\Projects\DataGeneratorSsis\DataGeneratorSsis\Package.dtsx"
finished: Failure.
The relevant error message
There was an error with OLE DB Destination.Inputs[OLE DB Destination Input].Columns[AppID] on OLE DB Destination.Inputs[OLE DB Destination Input]. The column status returned was: "The value could not be converted because of a potential loss of data."
So this error is occurring because you have a value in your source for the AppID column that is not valid for your AppID column in the destination.
Some possible examples:
You're trying to insert a 10 character value into an 8 character field.
You're trying to insert a value larger than 127 into a tinyint field.
You're trying to insert the value 6.4578 into a decimal(5,1) field.
SSIS is governed by metadata, and it expects that you've set up your inputs and outputs properly such that the acceptable values for both are within the same range.
This is usually caused by truncation (the incoming value is too large to fit in the destination column). Unfortunately SSIS will not tell you the name of the offending column. I use a third-party component to get this information: http://naseermuhammed.wordpress.com/tips-tricks/getting-error-column-name-in-ssis/
It is also possible to receive this error from a select component if the query fails in an unusual manner (eg: a sub-query returns multiple rows in an oracle oledb connection)
In my case the underlying system account through which the package was running was locked out. Once we got the system account unlocked and reran the package, it executed successfully. The developer said that he got to know of this while debugging wherein he directly tried to connect to the server and check the status of the connection.
Error jet 4 oledb It Can be possible upgrade kb4041678 kb4041681

Error code: 0x80040E37 when import Excel files in SSIS

I am using SSIS 2008 (SQL 2008 R2), I am trying to import several Excel files (more than 100 files) into SQL Server using a FOREACH loop. I can successfully do this for just only the first file. But when start the second file give me that huge amount of errors describe in black letters at the end. The excel files come with multiple sheets but I need just one sheet of each excel file. The Sheet label always come with the same GSDR_XXXX_FACT$Query_from_WN7X64_XXXXX_XXXX_SG where each of the sheet has Data Connection.
edit:I am using this [link]: How do I move files to an archive folder after the files have been processed?
WHERE INSTEAD OF use CSV Connection I replaced by "EXCEL Connection".
I leave empty the expression in the Excel connection... because if I tried to use "connection string" , or "excelfilepath" or "server name"... all them give error in the "excel source" from the DataFlowComponent"...
Any advice I really appreciated it.
[Excel Source [1]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E37.
SSIS package "GTO_pull_data_to_table_multiple_excel_A.dtsx" starting.
Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning.
Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning.
Warning: 0x80049304 at Data Flow Task, SSIS.Pipeline: Warning: Could not open global shared memory to communicate with performance DLL; data flow performance counters are not available. To resolve, run this package as an administrator, or on the system's console.
Information: 0x40043006 at Data Flow Task, SSIS.Pipeline: Prepare for Execute phase is beginning.
Information: 0x40043007 at Data Flow Task, SSIS.Pipeline: Pre-Execute phase is beginning.
Information: 0x4004300C at Data Flow Task, SSIS.Pipeline: Execute phase is beginning.
Information: 0x402090DF at Data Flow Task, OLE DB Destination [576]: The final commit for the data insertion in "component "OLE DB Destination" (576)" has started.
Information: 0x402090E0 at Data Flow Task, OLE DB Destination [576]: The final commit for the data insertion in "component "OLE DB Destination" (576)" has ended.
Information: 0x40043008 at Data Flow Task, SSIS.Pipeline: Post Execute phase is beginning.
Information: 0x4004300B at Data Flow Task, SSIS.Pipeline: "component "OLE DB Destination" (576)" wrote 35096 rows.
Information: 0x40043009 at Data Flow Task, SSIS.Pipeline: Cleanup phase is beginning.
Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning.
Information: 0x40043006 at Data Flow Task, SSIS.Pipeline: Prepare for Execute phase is beginning.
Information: 0x40043007 at Data Flow Task, SSIS.Pipeline: Pre-Execute phase is beginning.
Information: 0x4004300C at Data Flow Task, SSIS.Pipeline: Execute phase is beginning.
Information: 0x402090DF at Data Flow Task, OLE DB Destination [576]: The final commit for the data insertion in "component "OLE DB Destination" (576)" has started.
Information: 0x402090E0 at Data Flow Task, OLE DB Destination [576]: The final commit for the data insertion in "component "OLE DB Destination" (576)" has ended.
Information: 0x40043008 at Data Flow Task, SSIS.Pipeline: Post Execute phase is beginning.
Information: 0x4004300B at Data Flow Task, SSIS.Pipeline: "component "OLE DB Destination" (576)" wrote 35096 rows.
Information: 0x40043009 at Data Flow Task, SSIS.Pipeline: Cleanup phase is beginning.
Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning.
******Error: 0xC0202009 at Data Flow Task, Excel Source [1]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E37.
Error: 0xC02020E8 at Data Flow Task, Excel Source [1]: Opening a rowset for "GSDR_XXXX_FACT$Query_from_WN7X64_XXXXX_XXXX_SG" failed. Check that the object exists in the database.
Error: 0xC004706B at Data Flow Task, SSIS.Pipeline: "component "Excel Source" (1)" failed validation and returned validation status "VS_ISBROKEN".
Error: 0xC004700C at Data Flow Task, SSIS.Pipeline: One or more component failed validation.
Error: 0xC0024107 at Data Flow Task: There were errors during task validation.
Warning: 0x80019002 at Foreach Loop Container: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (6) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
Warning: 0x80019002 at GTO_pull_data_to_table_multiple_excel_A: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (6) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
SSIS package "GTO_pull_data_to_table_multiple_excel_A.dtsx" finished: Failure**.
**----------------------------------------------------------------------------------------**