SSIS: Making an Informix transaction local doesn't work - ssis

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?

Related

Failed to acquire connection SSIS

I am executing a SSIS package from SQL job. I am getting following error time to time.
Execute SQL Task:Error: Failed to acquire connection "<>".
Connection may not be configured correctly or you may not have the
right permissions on this connection.
When I restart the SQL server agent it works fine again. I am using proxy account to execute the SSIS package from SQL job.
The error is not occurring every time.

Commit; does not work on SSIS for DB2 OleDB connection

I'm experiencing a problem with an OleDB connection in DB2.
I need to include some blocks in a transaction (transaction in ssis = "Supported")
and I made a SQL Task that execute "SAVEPOINT A ON ROLLBACK RETAIN CURSORS;"
then an other dataflow that execute some stuffs,
on success I have to commit the exec, otherwise I have to Rollback.
But both Commit and rollback (they are SQL task) give me this error.
"Executing the query "COMMIT;" failed with the following error: "A SQL
error has occurred. Please consult the documentation for your
specific DB2 version for a description of the associated Native Error
and SQL State. SQLSTATE: 2D521, SQLCODE: -925". Possible failure
reasons: Problems with the query, "ResultSet" property not set
correctly, parameters not set correctly, or connection not established
correctly. Task failed: Commit"
I also tried with "SYNCPOINT" with no success. Can anyone help me?
Thanks.

ROLLLBACK and COMMIT transaction issue in SSIS package

I am trying to do a ROLLBACK and COMMIT transaction in SSIS package.The commit transaction is working fine.For the rollback transaction i inserted null value to a column which's data type is money.Here iam getting an error in DFT and Commit SQLtask.Please give me a solution,
I changed the CONTROLLFLOW properties--->TransactionRequired to Required
In DFT TransactionRequired---->Supported
Please help me friends
Thanks in advance
The errors are shown below
[Execute SQL Task] Error: Executing the query "Rollback tran" failed with the following error: "Distributed transaction completed. Either enlist this session in a new transaction or the NULL transaction.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
[OLE DB Destination [2]] Error: 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.".
[OLE DB Destination [2]] Error: There was an error with OLE DB Destination.Inputs[OLE DB Destination Input].Columns[CustomerAmount] on OLE DB Destination.Inputs[OLE DB Destination Input]. The column status returned was: "The value violated the integrity constraints for the column.".
[OLE DB Destination [2]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "OLE DB Destination.Inputs[OLE DB Destination Input]" failed because error code 0xC020907D 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.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "OLE DB Destination" (2) failed with error code 0xC0209029 while processing input "OLE DB Destination Input" (15). 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.
You are missing two approaches with SSIS and transaction handling. If you are using SSIS native transactions (setting TransactionRequired=Required), you do not need to call Rollback. Transaction will be rolled back automatically if an error will occur or you deliberately set an error. Important thing to notion - transaction scope, i.e. when it will commit. My recommendation - declare transaction on dedicated Sequence Container; transaction will be committed when leaving this Sequence Container.
If you want to use transaction handling with SQL Commit and Rollback, you do not use TransactionRequired=Required. It is a special case for MS SQL, for details see The implementation of Transaction with out msdtc in the design pattern and TransactionOption in SSIS.

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 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.