Oracle Transaction under MS SSIS - sql-server

I'm trying to get transactions working under SSIS (SQL Server Integration Services 2005) and Oracle with no luck. I'm using Oracle 10g.
I have created a Sequence Container, set its TransactionOption to "Required" and put inside it a DataFlow Task with TransactionOption = "Supported".
The server running SSIS has the MSDTC service running.
The DataFlow Task has, as source, a SQL Server OLEDB connection and as target an Oracle OLEDB connection.
When trying to execute it, I get the following errors:
Error: 0xC001402C at MediaMarketAnnullamento, Connection manager "ITMASORASVIL:1521/SVILUPPO.EDP": 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 MediaMarketAnnullamento, Connection manager "ITMASORASVIL:1521/SVILUPPO.EDP": SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x8004D01B.
Error: 0xC020801C at 9999 - Insert_MAGAZZZINO_MM_SHOW, MAGAZZINO_MM_SHOW_SSIS [2187]: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "ITMASORASVIL:1521/SVILUPPO.EDP" failed with error code 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method call failed.
Error: 0xC004701A at 9999 - Insert_MAGAZZZINO_MM_SHOW, DTS.Pipeline: component "MAGAZZINO_MM_SHOW_SSIS" (2187) failed the pre-execute phase and returned error code 0xC020801C.
Information: 0x40043009 at 9999 - Insert_MAGAZZZINO_MM_SHOW, DTS.Pipeline: Cleanup phase is beginning.
Information: 0x4004300B at 9999 - Insert_MAGAZZZINO_MM_SHOW, DTS.Pipeline: "component "MAGAZZINO_MM_SHOW_SSIS" (2187)" wrote 0 rows.
Task failed: 9999 - Insert_MAGAZZZINO_MM_SHOW
Information: 0x4001100C at 9999 - Insert_MAGAZZZINO_MM_SHOW: Aborting the current distributed transaction.
Information: 0x4001100C at Insert su Oracle: Aborting the current distributed transaction.
SSIS package "MediaMarketAnnullamento.dtsx" finished: Failure.
Any help?
Thanks
EDIT:
I just discovered that the server running Oracle is not, as I thought, Windows based but IBM ICS. I don't know if this is relevant.

Looks like it may be a problem with MSDTC permissions this MS blog post might help to debug it. Also I'm assuming that the permissions on the Oracle server are set correctly see this MS kb article for help with this.

Is this doc of any use?
http://msdn.microsoft.com/en-us/library/aa344212.aspx

Related

The requested OLE DB provider Microsoft.ACE.OLEDB.12.0 is not registered (SSIS to populate SQL table from Access source)

I created an SSIS package last week (my first one) using a guide and it parsed correctly and populated my SQL table. I then consulted another guide to create a job to automate the updating of this table but I discovered this morning that this job has been failing. I exported the log and below is the error. Can someone help me pinpoint what the issue is? I think it may be something along the lines of needing to install Microsoft.ACE.OLEDB.12.0, but I really don't know. I initially checked the box to run in 32bit runtime, but it failed on that as well as when I tried unchecking it, in case that is important.
09/03/2019
10:50:14,Update_Equipment_table,Error,1,SERVER,Update_Equipment_table,Update
Equipment Table,,Executed as user: SERVER\SYSTEM. Microsoft (R)
SQL Server Execute Package Utility Version 13.0.1601.5 for 64-bit
Copyright (C) 2016 Microsoft. All rights reserved. Started:
10:50:14 AM Error: 2019-09-03 10:50:15.94 Code: 0xC0209303
Source: Package Connection manager
"\SERVERPATH\ricochet_tanks.mdb"
Description: The requested OLE DB provider Microsoft.ACE.OLEDB.12.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:
2019-09-03 10:50:15.94 Code: 0xC001002B Source: Package
Connection manager
"\SERVERPATH\ricochet_tanks.mdb"
Description: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered
on the local machine. For more information see
http://go.microsoft.com/fwlink/?LinkId=219816 End Error Error:
2019-09-03 10:50:15.94 Code: 0xC020801C Source: Data Flow Task
OLE DB Source 1 Description: SSIS Error Code
DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The
AcquireConnection method call to the connection manager
"\SERVERPATH\ricochet_tanks.mdb"
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: 2019-09-03 10:50:15.94 Code:
0xC0047017 Source: Data Flow Task SSIS.Pipeline Description:
OLE DB Source failed validation and returned error code 0xC020801C.
End Error Error: 2019-09-03 10:50:15.94 Code: 0xC004700C
Source: Data Flow Task SSIS.Pipeline Description: One or more
component failed validation. End Error Error: 2019-09-03 10:50:15.94
Code: 0xC0024107 Source: Data Flow Task Description: There
were errors during task validation. End Error DTExec: The package
execution returned DTSER_FAILURE (1). Started: 10:50:14 AM
Finished: 10:50:15 AM Elapsed: 1.422 seconds. The package execution
failed. The step failed.,00:00:01,0,0,,,,0
Here is a screenshot of the job details. I believe because I'm using File system as the package source, I have no option to select server credentials or credential type.
The 64 bit SQL server requires 64 bit ACE driver. If you have the correct driver installed already, need to set the following properties:
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1;
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1;
GO

SSIS Lookup Transformation error: The EXECUTE permission was denied on the object 'sp_describe_undeclared_parameters'

I'm upgrading SSIS packages from SQL Server 2008 R2 to 2017. After upgrading one of the packages, the parameterized query in the Advanced tab of a Lookup Transformation is now throwing a validation error. It is possible that this is the only package in the collection that uses a Partial Cache, since I couldn't find any successfully upgraded examples to compare it to.
When I tried to run the package, it logged these errors:
Error: 2019-02-11 10:49:40.11
Code: 0xC0202009
Source: Anonymized DFT [209]
Description: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "The EXECUTE permission was denied on the object 'sp_describe_undeclared_parameters', database 'mssqlsystemresource', schema 'sys'.".
End Error
Error: 2019-02-11 10:49:40.15
Code: 0xC020824C
Source: Anonymized DFT [209]
Description: OLE DB error occurred while loading column metadata. Check SQLCommand and SqlCommandParam properties.
End Error
Error: 2019-02-11 10:49:40.18
Code: 0xC004706B
Source: Anonymized DFT SSIS.Pipeline
Description: "Anonymized DFT" failed validation and returned validation status "VS_ISBROKEN".
End Error
Error: 2019-02-11 10:49:40.22
Code: 0xC004700C
Source: Anonymized DFT SSIS.Pipeline
Description: One or more component failed validation.
End Error
Error: 2019-02-11 10:49:40.27
Code: 0xC0024107
Source: Anonymized DFT
Description: There were errors during task validation.
End Error
I was hoping to just re-map the parameters, but I get about the same set of errors by trying to open the Parameters dialog on the Advanced tab of the Lookup Transformation.
The obvious answer, based on the messaging, is that it's a permissions issue, but according to the documentation for sp_describe_undeclared_parameters:
Permissions
Requires permission to execute the #tsql argument.
Both I and the service account that the job runs under have permission to execute the parameterized query.
I did a side-by-side comparison of the both the Lookup Transformations and their corresponding Properties windows between the 2008 R2 package, which runs fine on the 2008 R2 server, and the new 2017 package. The only new property value I found was TreatDuplicateKeysAsError, but changing that has no effect on my situation.
Looking at the Advanced Editor, the column references in the ParameterMap appear to be correct, but the query isn't picking them up.
Is there more to the permissions issue than I'm seeing, or is there something else that I'm missing here?
I can't point to a specific source that suggested this as a possibility, but in the end I added an additional Connection Manager pointing to the same server and database as the original, but instead of using the SQL Server Native Client 11.0 provider, I changed it to Microsoft OLE DB Provider for SQL Server.
Boom. Validation error cleared; package is running.
While that's a solution, it's not a explanation, so if anyone wants to chime in, have at it. I've wasted most of a day chasing this ghost, so for the time being I'm going to take my running package and call it good enough for a Tuesday.

SSIS Oracle 32 bit error "Invalid access to memory location."

My SSIS extracts data from Oracle DB and loads into the excel file. I am running this package via SQL Job. Now to use Excel providers I have to use 32 bit environment. So I've changed the SQL JOB execution to "Use 32bit runtime".
But now my oracle task is failing with error "Invalid access to memory location."
When I don't use 32bit runtime in job, the oracle task works but the excel task fails.
We have both 32bit and 64bit Oracle installed on the server. So not sure why oracle task is failing in 32bit environment.
Any help will be appreciated. Thanks in advance.
Detailed error message..
Error code: 0x800703E6. An OLE DB record is available. Source: "Microsoft OLE DB Service Components" Hresult: 0x800703E6 Description: "Invalid access to memory location.". End Error Error: 2017-05-09 08:45:31.48 Code: 0xC00291EC Description: Failed to acquire connection. Connection may not be configured correctly or you may not have the right permissions on this connection. End Error DTExec: The package execution returned DTSER_FAILURE (1). Started: 8:45:30 AM Finished: 8:45:31 AM Elapsed: 1.435 seconds. The package execution failed. The step failed.
I always use TOAD "export to excel" [no coding] option

BIDS 2008 SSIS Package Data Flow Task fails validation and returns "VS_ISBROKEN" Error

A BIDS 2008 SSIS package that I am working is failing validation when it reaches any Data Flow Task in the package. I am able to run the SSIS package within BIDS 2008 on my computer locally. When I run the SSIS package through an SQL Agent Job, the package fails with the error message below. I have researched error code 0x80004005 and error code 0xC004706B through Google searches, but have not found anything that is of use.
The SSIS package in question is one of several SSIS packages that run together in the same SQL Agent Job. The other SSIS packages in the original SQL Agent Job all are able to run successfully. This leads me to believe that the SQL Agent Service Account and Proxy Account are configured with the appropriate permissions. A DBA was able to confirm that the Service Account and Proxy Account do have the appropriate permissions.
The SQL Agent Job runs the SSIS package using the Operating System (CmdExec) type and the SSIS package has Run64BitRuntime set to FALSE so the SSIS Package is running under the 32-bit runtime.
For debugging purposes, I recreated the Data Flow Task, Database Connections, and related source and destination tasks in a new SSIS Package from the original SSIS package. The debugging SSIS package is able to run locally on my computer, but fails when I try to run using a new SQL Agent Job setup exactly like the original SQL Agent Job.
I have also use different Database Connections such as Native OLE DB\SQL Server Native Client 10.0, 10.1, 11.1, and Native OLE DB\Microsoft OLE DB Provider for SQL Server. All of which have failed when I test the debugging SSIS package
I have verified that the metadata for the OLE DB Source and Destinations match the datatypes and lengths in the SQL Server Database tables. I have verified that the stored procedure used by the OLE DB Source task in the Data Flow Task work when ran on SQL Server Management Studio and the Service Account has permissions to run the stored procedure.
I think that is every bit of information that I can recall from working on troubleshooting this issue.
Has anyone else come across this error before? Any possible solutions to attempt?
Any help is welcomed!
Error Message:
Executed as user: domain\SQLAgentServiceAccount. Microsoft (R) SQL Server Execute Package Utility Version 10.50.2500.0 for 64-bit
Copyright (C) Microsoft Corporation 2010. All rights reserved.
Started: 1:37:09 PM
Error: 2014-08-14 13:37:09.94 Code: 0xC0202009 Source: Data Flow Task - OLEDB Source [1]
Description: 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: "Syntax error or access violation".
End Error
Error: 2014-08-14 13:37:09.94 Code: 0xC004706B Source: Data Flow Task SSIS.Pipeline
Description: "component "OLEDB Source" (1)" failed validation and returned validation status "VS_ISBROKEN".
End Error
Error: 2014-08-14 13:37:09.94 Code: 0xC004700C Source: Data Flow Task SSIS.Pipeline
Description: One or more component failed validation.
End Error
Error: 2014-08-14 13:37:09.94 Code: 0xC0024107 Source: Data Flow task
Description: There were errors during task validation.
End Error
DTExec: The package execution returned DTSER_FAILURE (1).
Started: 1:37:09 PM Finished: 1:37:09 PM Elapsed: 0.219 seconds. Process Exit Code 1.
The step failed.
I found the this solution :
Ensure that the connection string in Connection Manager has "Provider=SQLNCLI11.1; Persist Security Info=True; Auto Translate=False;"
I did it and it worked for me on Hyperscale / SQL Server.
This is kind of strange error that I got a while ago and I used the following to resolve the problem:
Run command prompt as Administrator
Type the following command and hit Enter: regsvr32 jscript.dll
Type the following command and hit Enter: regsvr32 vbscript.dll
The solution to the problem was that the service account that is running the SQL Agent job did not have execute permissions on the stored procedure being executed through the Data Flow Task. Gave the service account execute permissions and the SSIS package was able to successfully execute.

SSIS Deployment: Connection Issue

I am facing an issue while deploying my SSIS packages to a target machine.
I have done the deployment through an indirect XML configuration. I use one parent package which invokes all the other child packages in loading a data warehouse. Child packages acquire the database connections via a parent package variable. Thus an isolated child package is not executable.
In this setup the flow works perfectly in my development machine. But when I try to deploy it to another one some packages run and populate the tables while others with the same configurations fail. I have made the "Delay Validation" property to true in all the child packages as well.
Follwing are the errors I get in order:
Error 17 Validation error. Extract and Populate Data to DimRetailer: DimRetailer: 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 ODBC Drivers" Hresult: 0x80004005 Description: "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified". DimRetailer.dtsx 0 0
Error 18 Validation error. Extract and Populate Data to DimRetailer: Extract and Populate Data to DimRetailer: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "Con_XONTRDDATAMART_OLEDB" failed with error code 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method call failed. DimRetailer.dtsx 0 0
Error 19 Validation error. DimRetailer Connection manager "Con_XONTRDDATAMART_OLEDB": 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 ODBC Drivers" Hresult: 0x80004005 Description: "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified". DimRetailer.dtsx 0 0
Error 20 Validation error. Extract and Populate Data to DimRetailer Expire Old SCD2 Rows [617]: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "Con_XONTRDDATAMART_OLEDB" failed with error code 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method call failed. DimRetailer.dtsx 0 0
What I can not realize is why some packages run alright while others fail which share the same connections.
Additionally, the final deployment will be on a server with a 64 bit OS, are there any steps I should specifically take to make the deployment run smoothly?
Thank you very much for any contribution, in advance.
I have a setup similar to yours. However, what i share to child packages is a connection string. It might be worth a try if you are still facing the same issue

Resources