我使用向导创建了一个导出访问包(因为为什么要重新发明轮子)使用视图(我后来发现视图需要永远运行)作为数据源。我做了一些研究,发现如果我只是采用构建视图的查询并将其用作源,它运行得更快。这在2008年的出价中很快(3秒对比近30分钟)。所以我把它放在sql server的作业代理上,这样我们就可以自动导出数据,运行它来测试它,然后就失败了。
Microsoft(R)SQL Server执行包实用程序版本10.50.6000.34(适用于64位版权所有(C)Microsoft Corporation 2010.保留所有权利。开始时间:上午11:43:31错误:2017-10-31 12:04:09.50代码:0xC0202009来源:数据流任务1目的地 - 蚀刻_LookupView_Sink1Temperature [109]描述:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80040E03。结束错误错误:2017-10-31 12:04:09.50代码:0xC0047022源:数据流任务1 SSIS.Pipeline描述:SSIS错误代码DTS_E_PROCESSINPUTFAILED。组件“Destination - Etching_LookupView_Sink1Temperature”(109)上的ProcessInput方法在处理输入“Destination Input”(122)时失败,错误代码为0xC0202009。标识的组件从ProcessInput方法返回错误。该错误特定于组件,但错误是致命的,将导致数据流任务停止运行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。结束错误DTExec:程序包执行返回DTSER_FAILURE(1)。开始时间:上午11:43:31完成时间:下午12:04:09经过:1237.81秒。包执行失败。步骤失败了。
根据我对此错误代码所做的研究,它讨论了铸造,但我没有铸造任何东西。
这是我为视图提供的查询。
SELECT dbo.Etching_Trace_Data.Etch_Date, dbo.Etching_Trace_Data.EtchLot, dbo.Etching_Trace_Data.Part_Number, dbo.Etching_Trace_Data.Lot_Number, dbo.Etching_Trace_Data.Leadbond_Lot,
dbo.Etching_Trace_Data.Acid_Batch, dbo.Etching_Trace_Data.Operator_ID, dbo.Etching_Trace_Data.WorkOrder, dbo.Etching_Trace_Data.Etch_Sink, dbo.Etching_Trace_Data.Num_Diodes,
dbo.Etching_Trace_Data.Etch_Number, AVG(dbo.Etching_Meas_Runtime.[210Temperature]) AS AvgOf210Temperature, MAX(dbo.Etching_Meas_Runtime.[210Temperature]) AS MaxOf210Temperature,
MIN(dbo.Etching_Meas_Runtime.[210Temperature]) AS MinOf210Temperature, AVG(dbo.Etching_Meas_Runtime.NitricTemperature) AS AvgOfNitricTemperature,
MAX(dbo.Etching_Meas_Runtime.NitricTemperature) AS MaxOfNitricTemperature, MIN(dbo.Etching_Meas_Runtime.NitricTemperature) AS MinOfNitricTemperature,
AVG(dbo.Etching_Meas_Runtime.LeftRinseWaterTemperature) AS AvgOfLeftRinseWaterTemperature, MAX(dbo.Etching_Meas_Runtime.LeftRinseWaterTemperature)
AS MaxOfLeftRinseWaterTemperature, MIN(dbo.Etching_Meas_Runtime.LeftRinseWaterTemperature) AS MinOfLeftRinseWaterTemperature,
AVG(dbo.Etching_Meas_Runtime.RightRinseWaterTemperature) AS AvgOfRightRinseWaterTemperature, MAX(dbo.Etching_Meas_Runtime.RightRinseWaterTemperature)
AS MaxOfRightRinseWaterTemperature, MIN(dbo.Etching_Meas_Runtime.RightRinseWaterTemperature) AS MinOfRightRinseWaterTemperature,
AVG(dbo.Etching_Meas_Runtime.RightRinseWaterResistivity) AS AvgOfRightRinseWaterResistivity, dbo.Etching_LookupView_LeadbondLots.RecipeName,
dbo.Etching_Trace_Data.Etch_Time_210_1, dbo.Etching_Trace_Data.Etch_Time_210_2, dbo.Etching_Trace_Data.Etch_Time_210_3, dbo.Etching_Trace_Data.Etch_Time_210_4,
dbo.Etching_Trace_Data.Etch_Time_Nitric_1, dbo.Etching_Trace_Data.Etch_Time_Nitric_2
FROM dbo.Etching_Trace_Data INNER JOIN
dbo.Etching_Meas_Runtime ON dbo.Etching_Trace_Data.Leadbond_Lot = dbo.Etching_Meas_Runtime.LotNumber INNER JOIN
dbo.Etching_LookupView_LeadbondLots ON dbo.Etching_Trace_Data.Leadbond_Lot = dbo.Etching_LookupView_LeadbondLots.Leadbond_lot
WHERE (dbo.Etching_Trace_Data.Etch_Date > '2017-08-01 00:00:00')
GROUP BY dbo.Etching_Trace_Data.Etch_Date, dbo.Etching_Trace_Data.EtchLot, dbo.Etching_Trace_Data.Part_Number, dbo.Etching_Trace_Data.Lot_Number, dbo.Etching_Trace_Data.Leadbond_Lot,
dbo.Etching_Trace_Data.Acid_Batch, dbo.Etching_Trace_Data.Operator_ID, dbo.Etching_Trace_Data.WorkOrder, dbo.Etching_Trace_Data.Etch_Sink, dbo.Etching_Trace_Data.Num_Diodes,
dbo.Etching_Trace_Data.Etch_Number, dbo.Etching_Trace_Data.Etch_Time_210_1, dbo.Etching_Trace_Data.Etch_Time_210_2, dbo.Etching_Trace_Data.Etch_Time_210_3,
dbo.Etching_Trace_Data.Etch_Time_210_4, dbo.Etching_Trace_Data.Etch_Time_Nitric_1, dbo.Etching_Trace_Data.Etch_Time_Nitric_2, dbo.Etching_LookupView_LeadbondLots.RecipeName
答案 0 :(得分:0)
我结束了#34;修复"我的问题是重新运行导出向导并使用查询源而不是视图,它执行得很好。我的猜测是我在BIDS中搞砸了一些我不知道的东西。
查询与视图的重要性在于,当SSIS尝试验证视图时,主要的减速会导致程序包在代理程序中运行时失败,但是当您提供查询时,它会更快地验证。
详情如下:
相关部分
微软于2008年4月28日下午2:45发布 这是一个已知问题和当前设计的结果。
有两种方法可以从OLE DB源中的视图中提取数据:
使用"表格或视图"访问方法
- 中选择* 醇>
使用" SQL命令"访问方法,然后输入查询"从***"
在这两种方法中生成不同的执行计划。
前者使用的那种效率不如后者。
如果在使用第一种方法时遇到性能问题,可以切换到第二种方法作为解决方法。
我们还在博客中发布了此问题 - > http://blogs.msdn.com/sqlperf/archive/2007/04/29/set-up-ole-db-source-to-read-from-view-efficiently.aspx。
因为这是一个“设计”。项目,我们相信有一项工作,我们目前不会提供任何变更。因此,我们将结束与您提交相关的案例。如果您不同意,请随时重新提交。
感谢您对SSIS的时间,精力和支持。