我在 SSIS 中有一个执行 SQL 步骤,该步骤与以下错误不一致:
[执行 SQL 任务] 错误:执行查询“sp name”失败,出现以下错误:“语句已终止。”。可能的失败原因:查询有问题,“ResultSet”属性设置不正确,参数设置不正确,或连接未正确建立。
存储过程会截断一个表,然后使用 tabblock 将数据插入其中。它没有参数化并且不返回记录集。
- 存储过程在 SSMS 中成功执行。
- 我在 Visual Studio 中的用户下以调试模式运行 SSIS。
- 我在这个本地桌面开发框中有系统管理员。
- 这四个任务中的任何一个都可能失败。
- 如果容器独立于包的其余部分执行,则它可以工作。
- 连接字符串是与同一框上的数据库的 ole db 连接。
发生这种情况的流程如下所示,所有四个都调用不同但相似的过程,它们都将数据从同一个表加载到四个不同的目标中:
其他信息:
- SQL Server 2016 SP1,开发者版
- 视窗 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 错误日志中有一些堆栈转储:
- 开始堆栈转储:
- 2017 年 3 月 4 日 17:39:43 spid 11668
- 位置:AllocPageRef.cpp:2436
- 表达式:IAM_START_PGID (ext_id, ext_size) == startExtId
- SPID:77
- 进程 ID:7836
- 描述:在错误的 IAM 页面中查找范围
- 输入缓冲区 70 字节 -
- 执行 my_sp
是时候运行更多 DBCC 命令了。