Thursday, November 29, 2012 11:36 PM
I am connecting to Remedy system with AR ODBC driver.
1. Windows Server 2008 R2 Enterprise 64 bit, SQL Server 2008
Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (X64) Sep 16 2010 19:43:16 Copyright (c) 1988-2008 Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: ) (VM)
2. Create System DSN using the AR ODBC driver 32 bit in the ODBC 32bit data source administrator
3. Create a SSIS project in BIDS, create a package, set debuging 64bit to false. create data source (.Net provider/ODBC Data Provider) with the system dsn, create ADO.Net connetion manager using that data source.
4. in the package, create a data flow task. In the data flow task, create an ADO.net source component using the ADO.net connection manager just created. Use a query to select:
SELECT Channel, Commenced_Date, Deactivation_Date, Customer_Code, Customer_Requests, Has_Monitoring, LocalStudioSiteNo, Local_Studio,
Main_Feed, Management_Level, Modified_Date, Modulation, National_Satellite, National_Studio, NationalSatSiteNo, NationalStudioSiteNo,
Operational_Status, Output_Frequency, ParentSiteNo, Parent_Service, Parent_Site, RAC_Roundup_Group, Request_ID, Service_Class, Service_Credit_Report_Type, Service_Id, Service_Name, Service_Type, SFN_Group, Site_Class, Site_Name, Site_No, State, StateSatSiteNo,
StateStudioSiteNo, State_Satellite, State_Studio, Time_Zone, Tx_Make, Tx_Model, zTmpAssociation1, zTmpAssociation2, SNN_Group,
SNN_Availability__, Licence_No FROM THSS_NTL_THSS
I got the error below:
Error: 0xC0209029 at Data Flow Task, ADO NET Source : SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "component "ADO NET Source" (1)" failed because error code 0x80131937 occurred, and the error row disposition on "output column "Modulation" (49)" 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: 0xC02090F5 at Data Flow Task, ADO NET Source : The component "ADO NET Source" (1) was unable to process the data. Pipeline component has returned HRESULT error code 0xC0209029 from a method call.
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.
I do the same thing on a windows 7 32 machine with Microsoft SQL Server 2008 (SP3) - 10.0.5512.0 (Intel X86) Aug 22 2012 15:16:00 Copyright (c) 1988-2008 Microsoft Corporation Developer Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1) it works OK.
The package will be run from SQl Server Agent on a 64 bit machine.
Thank you for any help
- Edited by Koalass Thursday, November 29, 2012 11:37 PM
Friday, November 30, 2012 9:22 PMModerator
Based on what I remember about Remedy - it used Sybase as its backend database, did not know there even is a AR provider.
What datatype is Modulation column?
Perhaps you need to use the CAST or CONVERT to another datatype.
But the issue really is in you using the ADO provider that cannot handshake
If the above does not help try:
could be http://blogs.msdn.com/b/sqlblog/archive/2009/04/09/after-installation-of-net-framework-3-5-sp1-or-net-framework-2-0-sp2-ssis-packages-using-odbc-3rd-party-drivers-may-fail.aspx
Arthur My Blog
- Marked As Answer by Koalass Sunday, December 02, 2012 10:17 PM
Sunday, December 02, 2012 10:20 PM
Thank you for your post. It is really helpful. I can't use cast or convert as the ODBC driver can't understand them. I follow the link in your post using the redirect error option. In addition, I modified the solution a little bit. From the ADO source, let the correct rows into a table, redirect the error rows to the same table. It works well. But I am not sure if this will work 100% or not. Any idea?
Monday, December 03, 2012 2:03 PMModerator
Redirecting error rows into the same table raises my eyebrows.
So in short, I do not feel comfortable with this approach.
Regarding the conversion, you can issue a SQL command in your OLEDB source containing the appropriate syntax for the provider.
E.g. like I said, in Sybase it is the CONVERT function as follows
select <the list of columns>, convert(char(15), Modulation) from myTable
Arthur My Blog
Tuesday, December 04, 2012 5:32 AM
The backend database is Oracle. And we have to access the AR system through the ODBC driver, which don't have convert functions at all. There is no either standard functions such as coalesce. That is why I have to pull the data out using simple select first.
In the situation, the error only occurs because the ODBC driver is not compatible with SSIS. There is no actual error. I found it works well by redirect error into the same table. I can actually redirect to a flat file as the link did. ANd then I can move into the same table. The compatibility issue is solved when I allow error redirection.
I am not sure if this is 100% true or not but will try it first.
Thursday, February 21, 2013 12:22 AMYou're probably right not to be comfortable with this approach, but it may present some clues to a solution. While SSIS doesn't do a lot of implicit type conversion, there might be something going on with the range of values that are allowed into the SSIS data types (e.g. DT_I4, DT_BOOL) vs. what can directly pass into the SQL Server data types (e.g. int, bit). You might try redirecting the error output to a Data Conversion Task, then carefully examine the data types between the Error Output flow and the Normal Flow - probably starting with any columns listed in the error output. If there are differences, you may need to add a expression to make the conversion explicit.