【发布时间】:2017-10-31 22:23:31
【问题描述】:
我使用视图(我后来发现视图需要永远运行)作为数据源,使用向导创建了一个导出以访问包(因为为什么要重新发明轮子)。我做了一些研究,发现如果我只使用构建视图的查询并将其用作源,它会运行得更快。这在 2008 年的投标中运行得很快(3 秒对近 30 分钟)。所以我把它放在 sql server 的作业代理上,这样我们就可以自动导出数据,运行它来测试它,但它失败了。
Microsoft (R) SQL Server Execute Package Utility Version 10.50.6000.34 for 64-bit 版权所有 (C) Microsoft Corporation 2010。保留所有权利。开始时间:上午 11:43:31 错误:2017-10-31 12:04:09.50 代码:0xC0202009 源:数据流任务 1 目标 - Etching_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 Input”(122) 时,组件“Destination - Etching_LookupView_Sink1Temperature”(109) 上的 ProcessInput 方法失败,错误代码为 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
【问题讨论】:
-
首先:视图的运行时间不会超过它们内部的 SQL。还有其他事情发生。其次:您的错误消息中没有任何有用的线索可以提供任何线索(除了实际失败的内容)。在 BIDS 中运行和在 SQL Agent 中运行有三个主要区别: 1. 它运行的用户帐户可能不同; 2. 它在 SQL 服务器上运行,而不是在任何安装 BIDS 的地方。 3. BIDS 总是 32 位的,SQL Agent 可能是 64 位的。
-
错误信息是在抱怨目的地。你要出口到什么地方?擅长?首先在这里尝试页面底部的屏幕截图以强制它以 32 位运行:sqlblog.com/blogs/john_paul_cook/archive/2010/03/24/…
-
尼克,当我在投标中进行测试时,我花了大约 30 分钟来验证指向视图的来源,我做了一些研究,还发现了一个帖子 connect.microsoft.com/SQLServer/feedback/details/258901/…,该帐户是running for SQL agent 是域管理员。 sql 代理是 64 位的。目的地正在运行 ace 12.0 引擎,要将其切换到 32 位,我将不得不更改为 jet 4.0 引擎。 (好的,现在它抱怨权限)