| Dan's profileDan English's BI BlogBlogLists | Help |
|
|
3/29/2009 SSIS 2008 ADO NET Source issue with SSAS data source - error code 0x80004002A few weeks back I upgraded a SSIS 2005 package to SSIS 2008 and ran into a issue with my Data Flow Task source. In the original package I was using a DataReader source to query information from Analysis Services (SSAS) and during the upgrade this gets converted to a ADO NET source in SSIS 2008. The reason I was using a DataReader with an ADO.NET connection manager was because you could get around the annoying about being unable to map external data properly and that it will use the DT_WSTR data type when you try to preview the results of your query for the data source. I did a blog posting last year Using Reporting Services (SSRS) with SSAS data where I went through some different options of getting SSAS data into a format to easily use with SSRS. This is when I basically decided that I would use the DataReader over the OLE DB source when using SSAS. Also, if you use the OLE DB data source and have the Data Flow Task embedded in a Loop container this could cause some issues depending on the connection manager setting (more on this later). So back to the ADO NET source issue… after I did my upgrade and ran my package I noticed a couple of things now with the ADO NET source. First you get a warning message now in regards to the data type that I did not get with the DataReader source in SSIS 2005: Warning 3 Validation warning. ADO Source: {568FF45A-6A41-43F8-A122-4BBFF40DD7BF}: The data type "System.Object" found on column "[Measures].[Reseller Sales Amount]" is not supported for the component "ADO NET Source" (1). This column will be converted to DT_NTEXT. Package2.dtsx 0 0 And then now when the package is executed the ADO NET source does not work pulling to extract the SSAS data in the Data Flow Task even though you can Preview the data just fine: And the Error messages that I got were not what I would consider helpful in resolving the issue: [ADO NET Source [43]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "component "ADO NET Source" (43)" failed because error code 0x80004002 occurred, and the error row disposition on "output column "[Measures].[Reseller Sales Amount]" (67)" 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.
I was able to find a KB Article that talks about a similar issue when using Oracle (http://support.microsoft.com/kb/959794), so I thought I just needed to install the SQL Server CU2 or higher. I went with the SQL Server 2008 CTP SP1 just to make sure I was using the latest and greatest and unfortunately this did not resolve my issue. So what do I do now… post the issue on Microsoft Connect [SSAS OLEDB Cube Source [928]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E05. [SSIS.Pipeline] Error: component "SSAS OLEDB Cube Source" (928) failed the pre-execute phase and returned error code 0xC0202009. So what do you need to get around this issue? You need to make sure that the ‘RetainSameConnection’ property on the OLE DB connection manager is set to ‘False’. I also had some initial issues after changing that property value, so I also added a Script Task to the Control Flow within the Foreach Loop Container after the Data Flow Task with a single line of code that puts the thread to sleep (yes I am a fan of Visual Basic and the code for C# is not different for this except you need to include semicolons): Public Sub Main() System.Threading.Thread.Sleep(15000) Dts.TaskResult = ScriptResults.Success End Sub Once you have verified the connection manager property and have this added to the Control Flow the package will run fine. Still get the annoying warning messages when trying to preview and work with the OLE DB source, but at least the package runs. Here is the final layout of my SSIS 2008 package: If you would like this issue with the ADO NET source resolved so that you can use this with SSAS then please vote for this bug here - SSIS 2008 ADO NET Source issue with SSAS data source - error code 0x80004002 Also, if you want to setup the SQL command for the ADO NET source so that it is dynamic you can do this within the Control Flow by using an expression on the Data Flow Task for the ADO NET source SqlCommand property (same thing for SSIS 2005 and the DataReader source). It would be nice if you could just reference a variable within the ADO NET data source editor like the OLE DB source, but oh well Trackbacks (4)The trackback URL for this entry is: http://denglishbi.spaces.live.com/blog/cns!CD3E77E793DF6178!1213.trak Weblogs that reference this entry
|
|
|