Stored procedures 接收到有关更改架构的SQL存储过程错误,但未进行任何更改

Stored procedures 接收到有关更改架构的SQL存储过程错误,但未进行任何更改,stored-procedures,ssis,sql-server-2016,Stored Procedures,Ssis,Sql Server 2016,我们有几个数据源,每天晚上使用SSIS包和SQL表数据源运行。这个标准过程的一部分是我们使用存储过程构建的数据引擎,存储过程针对每个数据源运行,并根据客户的特定参数返回客户的数据。该引擎将数据转储到一个SQL表中,由包在该表中检索数据,然后一直保留到下一个晚上运行 大约两周前,我们开始间歇性地在运行这些存储过程(使用SQL代理执行)时出现以下错误: 这些存储过程已经运行了几个月,有些甚至几年,没有被更改。这些错误只是间歇性地开始发生。在存储过程中,我们确实使用了一个临时表来接收引擎数据,还有一个

我们有几个数据源,每天晚上使用SSIS包和SQL表数据源运行。这个标准过程的一部分是我们使用存储过程构建的数据引擎,存储过程针对每个数据源运行,并根据客户的特定参数返回客户的数据。该引擎将数据转储到一个SQL表中,由包在该表中检索数据,然后一直保留到下一个晚上运行

大约两周前,我们开始间歇性地在运行这些存储过程(使用SQL代理执行)时出现以下错误:

这些存储过程已经运行了几个月,有些甚至几年,没有被更改。这些错误只是间歇性地开始发生。在存储过程中,我们确实使用了一个临时表来接收引擎数据,还有一个表是使用如下语句删除和重新创建的:

    SELECT field1, field2 INTO sqlTable FROM @tempTable
我寻找了一个SQL更新或一些可能已经改变的东西,以导致这些错误的所有突然,但找不到任何东西。在几个不同的存储过程中,断断续续地出现了这样的情况:所有存储过程都具有相同的结构,但我无法确定任何特定的原因。它将发生在某个晚上而不是另一个晚上,发生在一个存储过程而不是另一个存储过程上。你知道这是什么原因吗

我们正在Windows Server 2016数据中心10.0(构建14393:)(虚拟机监控程序)上运行Microsoft SQL Server 2016标准64位(13.0.4604.0)。这都是在Azure环境中的VM上完成的。

如果您使用“插入…执行”并启用了查询存储,可能就是原因

查询数据存储定期运行自动清理

当存储过程使用“INSERT…EXEC”语法调用另一个存储过程时,这会导致问题

这只是SQL Server 2016的一个问题

有关更多详细信息和可能的解决方案,请参阅:

如果您使用的是“插入…执行”并启用了查询存储,则可能是原因

查询数据存储定期运行自动清理

当存储过程使用“INSERT…EXEC”语法调用另一个存储过程时,这会导致问题

这只是SQL Server 2016的一个问题


有关更多详细信息和可能的解决方案,请参阅:

相同的过程是否可以并行运行?或者两个不同的过程,同时运行,执行相同的逻辑,
SELECT-INTO
,我猜我们需要看到更多的过程,因为上面截取的部分不会重现错误。咖啡因开始之前的另一个问题是关于错误“INSERT EXEC”失败-该过程是否返回一个结果集,然后将其粉碎到另一个表中?您确定要将
选择字段1,字段2从@tentable
使用到sqlTable中吗?这将创建一个真正的表,而不是临时表。billinkc-我也这么想,它是否同时运行?但是只有一个进程调用它,并且它被安排为每天一次。我检查了历史记录,只有一次运行。就重新创造而言,它是断断续续的。它现在运行得很好,我每天晚上都会运行100多个这样的程序,每隔几天晚上就会有几个不同的程序失败。还没有明显的韵律或理由。最终结果保留在实际表格中。digital-aaron-目的是创建一个实际表格。我们将运行datasource作业,然后使用相同的数据运行几个包。然后,我们也喜欢让昨晚的feed持续存在,以防我们对其中的内容有疑问或问题,我们也有一些关于“昨晚的feed”的报道。引擎和处理发生,最后两行通常是最终表格的一部分,然后是最终表格中的一个SELECT[fields]。这是故意的。同一个过程可以并行运行吗?或者两个不同的过程,同时运行,执行相同的逻辑,
SELECT-INTO
,我猜我们需要看到更多的过程,因为上面截取的部分不会重现错误。咖啡因开始之前的另一个问题是关于错误“INSERT EXEC”失败-该过程是否返回一个结果集,然后将其粉碎到另一个表中?您确定要将
选择字段1,字段2从@tentable
使用到sqlTable中吗?这将创建一个真正的表,而不是临时表。billinkc-我也这么想,它是否同时运行?但是只有一个进程调用它,并且它被安排为每天一次。我检查了历史记录,只有一次运行。就重新创造而言,它是断断续续的。它现在运行得很好,我每天晚上都会运行100多个这样的程序,每隔几天晚上就会有几个不同的程序失败。还没有明显的韵律或理由。最终结果保留在实际表格中。digital-aaron-目的是创建一个实际表格。我们将运行datasource作业,然后使用相同的数据运行几个包。然后,我们也喜欢让昨晚的feed持续存在,以防我们对其中的内容有疑问或问题,我们也有一些关于“昨晚的feed”的报道。引擎和处理发生,最后两行通常是最终表格的一部分,然后是最终表格中的一个SELECT[fields]。这是故意的。
    SELECT field1, field2 INTO sqlTable FROM @tempTable