FJT*_*FJT 5 sql-server ssis sql-server-2008
我有一个SSIS包,失败,出现以上错误。
该数据库的查询调控器限制为300
我尝试在数据流任务执行以下语句之前将“ Execute SQL”任务添加到我的包中:
SET QUERY_GOVERNOR_COST_LIMIT 0
Run Code Online (Sandbox Code Playgroud)
这在包执行期间显示为成功,但是我的数据流任务仍然失败,并且报告限制为300。
源:“ Microsoft SQL Server本机客户端10.0”结果:0x80004005说明:“该查询已被取消,因为此查询的估计成本(336)超过配置的阈值300。请与系统管理员联系。结束错误
如何在数据流任务上覆盖此设置?
除非您在包上设置了“保留相同的连接”属性,这不是我对它的价值的偏好,否则您所经历的就是文档所述的内容。
Using SET QUERY_GOVERNOR_COST_LIMIT applies to the current connection only
and lasts the duration of the current connection
Run Code Online (Sandbox Code Playgroud)
在您的包内,为执行 SQL 任务打开了一个连接,您的查询调控器语句被发出并且该任务终止。然后在数据流任务中使用新的/不同的连接作为 OLE DB 源(或 ADO.NET 源)的一部分。该连接并未修改调速器的成本计算,因此受 QG 约束。
要解决此问题,您需要修改数据流中的源。假设您刚刚选择了所需的表,您需要将单选按钮从表源切换到查询源(名称近似)。作为此查询的来源,您将使用类似
SET QUERY_GOVERNOR_COST_LIMIT 0;
SELECT
MT.*
FROM
dbo.MyTable AS MT;
Run Code Online (Sandbox Code Playgroud)
鉴于目标表正在突破 QG 限制,快速而肮脏的方法是修改目标的连接管理器以将 RetainSameConnection 属性设置为 True。这将确保目标转换中的相同连接已经修改了成本。有一个屏幕截图显示你在我对这个问题的回答中设置的位置
SSIS:默认登录 OnError 不适用于 RetainSameConnection
其他可能有效的方法是修改数据加载以减少查询(插入)成本。
小智 5
通过SSMS中的GUI选项,可以对整个服务器进行更改。
1.在“服务器属性”对话框中,转到“连接”页面。
2.选择选项“使用查询调控器防止长时间运行的查询”。
3.在选项下方的框中,键入最大查询费用限制。有效范围是0到2,147,483,647。值0禁用查询调控器;其他任何值均设置最大查询费用限制。
4.单击确定。
来源:Technet文章:使用查询调控器来控制过多的查询执行
归档时间: |
|
查看次数: |
11417 次 |
最近记录: |