存储过程在SSIS运行时失败

时间:2017-03-03 16:40:46

标签: sql-server stored-procedures ssis stack-dump

我在SSIS中有一个执行SQL步骤,它与以下错误不一致:

  

[执行SQL任务]错误:执行查询" sp name"失败了   以下错误:"该语句已被终止。"。可能   失败原因:查询问题," ResultSet"财产没有设定   正确,参数设置不正确,或连接未建立   正确。

存储过程截断表,然后使用tablock将数据插入其中。它没有参数化,也没有返回记录集。

  • 存储过程在SSMS中成功执行。
  • 我在Visual Studio的用户下以调试模式运行SSIS。
  • 我在本地桌面开发盒上有sysadmin。
  • 四项任务中的任何一项都可能失败。
  • 如果容器的执行独立于包的其余部分,则可以正常工作。
  • 连接字符串是与同一个盒子上的数据库的ole db连接。

发生这种情况的流程看起来像这样,所有四个调用不同,但类似的过程都将同一个表中的数据加载到四个不同的目标中:

enter image description here

其他信息:

  • SQL Server 2016 SP1,开发人员版
  • Windows 8.1

编辑:

存储过程是这样的:

create or alter myprocedure as

truncate table mytable

insert into mytable with (tablock) 
(col1,col2,col3,col4,col5 ... col30)
select 
   try_cast(col1 as something) as col1
    ,try_cast(col2 as something) as col2
    ,try_cast(col3 as something) as col3
    ,col4
    ,col5
    ...
    ,col30
from
   myothertable

编辑:我有另一个几乎相同的进程 - 除非它针对导入的不同文件。它没有问题。文件较小10Gb对15GB。

编辑:SQL错误日志中有一些堆栈转储:

  
      
  • BEGIN STACK DUMP:
  •   
  • 03/04/17 17:39:43 spid 11668
  •   
    •   
    • 地点:AllocPageRef.cpp:2436
    •   
  •   
  • 表达式:IAM_START_PGID(ext_id,ext_size)== startExtId
  •   
  • SPID:77
  •   
  • 流程ID:7836
  •   
  • 描述:在错误的IAM页面中查找范围
  •   
    •   
    • 输入缓冲区70字节 -
    •   
  •   
  • exec my_sp
  •   

运行更多DBCC命令的时间。

1 个答案:

答案 0 :(得分:0)

您是否在任何其他程序中引用“myothertable”?您是否检查了如何设置包和容器的默认事务处理?如果您正在使用tablock并且在嵌套事务中,如果它全部是默认的,那么您可能会立即陷入僵局。