从Microsoft SQL Server 2008到Microsoft Access的SSIS ETL在OLE DB目



我们的一台服务器上有普通的Microsoft SQL Server 2008

这里是关于我们服务器上其他组件的版本:

    Microsoft SQL Server Management Studio 10.0.5512.0
  • Microsoft Analysis Services Client Tools 10.0.5500.0
  • Microsoft Data Access Components (MDAC) 3.85.1132
  • Microsoft MSXML 2.6 3.0 4.0 6.0
  • Microsoft Internet Explorer 8.0.6001.18702
  • Microsoft .NET Framework 2.0.50727.3655操作系统5.1.2600

我们决定将Microsoft SQL Server 2000的提取-转换-加载DTS包迁移到Microsoft SQL Server 2008的SSIS包

我们决定在文件系统上创建DTSX文件,这样我们就可以使用BIDS 2008来打开DTSX文件。

Migration通过了所有测试。

然而,当我从BIDS 2008中运行DTSX文件时,我有许多错误消息。

我们的最终目的是对于从Microsoft SQL Server 2008数据库中提取选定数据的数据流组件之一,并将其放置在Microsoft Access数据库MDB文件中,我得到以下错误:

Diagnostic,,"OLE DB Source" (1),{00000001- 0000000 -0000000 -0000000 -000000000000},{4901FE69-78A3-4280-8989-45ABC5743A18},6/19/2014 1:53:08 AM,6/19/2014 1:53:08 AM,0,0x,ExternalRequest_post: 'ICommandWithParameters::GetParameterInfo succeeded'。外部请求已完成。OnProgress, DTSTask_DTSDataPumpTask_24,{D1E141EB-593C-4016-90C8-6AA0C33661AA},{4901FE69-78A3-4280-8989-45ABC5743A18},6/19/2014 1:53:08 AM,6/19/2014 1:53:08 AM,33,0x,Pre-ExecuteOnError, DTSTask_DTSDataPumpTask_24,{D1E141EB-593C-4016-90C8-6AA0C33661AA},{4901FE69-78A3-4280-8989-45ABC5743A18},6/19/2014 1:53:08 AM,-1071636471,0x,SSIS错误码DTS_E_OLEDBERROR。发生OLE DB错误。错误码:0x80040E21。OnError, Generic_Application_Data_Export_SSIS,{177dc585 - 3b2e - 4e9d - a80e - 07d49b1a30e9},{4901FE69-78A3-4280-8989-45ABC5743A18},6/19/2014 1:53:08 AM,6/19/2014 1:53:08 AM,-1071636471,0x,SSIS错误码DTS_E_OLEDBERROR。发生OLE DB错误。错误码:0x80040E21。OnError,,DTSTask_DTSDataPumpTask_24,{d1e141eb - 593a -4016- 90c8 - 6aa0c33661aa},{4901FE69-78A3-4280-8989-45ABC5743A18},6/19/2014 1:53:08 AM,6/19/2014 1:53:08 AM,-1071636443,0x,无法创建OLE DB访问器。验证列元数据是否有效。OnError,,Generic_Application_Data_Export_SSIS,{177dc585 - 3b2e - 4e9d - a80e - 07d49b1a30e9},{4901FE69-78A3-4280-8989-45ABC5743A18},6/19/2014 1:53:08 AM,6/19/2014 1:53:08 AM,-1071636443,0x,无法创建OLE DB访问器。验证列元数据是否有效。OnError,,DTSTask_DTSDataPumpTask_24,{d1e141eb - 591c -4016- 90c8 - 6aa0c33661aa},{4901FE69-78A3-4280-8989-45ABC5743A18},6/19/2014 1:53:08 AM,-1073450982,0x,组件"OLE DB Destination"(70)预执行阶段失败,返回错误码0xC0202025。OnError,,Generic_Application_Data_Export_SSIS,{177DC585-3B2B-4E9D-A80E-07D49B1A30E9},{4901FE69-78A3-4280-8989-45ABC5743A18},6/19/2014 1:53:08 AM,6/19/2014 1:53:08 AM,-1073450982,0x,组件"OLE DB Destination"(70)预执行阶段失败,返回错误码0xC0202025。OnProgress, DTSTask_DTSDataPumpTask_24,{D1E141EB-593C-4016-90C8-6AA0C33661AA},{4901FE69-78A3-4280-8989-45ABC5743A18},6/19/2014 1:53:08 AM,6/19/2014 1:53:08 AM,66,0x,Pre-ExecuteOnInformation, DTSTask_DTSDataPumpTask_24,{D1E141EB-593C-4016-90C8-6AA0C33661AA},{4901FE69-78A3-4280-8989-45ABC5743A18},6/19/2014 1:53:08 AM,6/19/2014 1:53:08 AM,1074016264,0x,Post Execute阶段开始。

编辑:

控制流组件从Microsoft SQL Server 2008 SQL选择查询中获取大约18-19列的数据,然后转换值以便将它们放置在Microsoft Access表中,抛出上述错误,我有许多列,我使用称为OLE DB Source的DataFlow组件从Microsoft SQL Server 2008表中检索。检索数据之后,我有一个数据转换器数据流组件来转换这些值。最后,转换后的值由OLE DB目的地数据流组件放置,并放置在Microsoft Access表中。

错误可能是由于某些源列和相应的目标列的数据类型和/或长度不匹配引起的。正如我前面提到的,我们从Microsoft SQL Server 2008 SQL选择查询的大约18-19列中检索数据值,这些列是源数据。前面提到的错误没有提到是哪一个导致了数据类型和/或长度之间的不匹配。我怎样才能缩小引起问题的列的范围?

是否可以使用新的OLEDB Destination并为上游的列和实际的目标列做映射?错误与元数据有关。可能是某些目标列的数据类型或长度发生了变化。

如果可能的话,尝试将派生列与类型转换表达式一起使用。

派生列变换

最新更新