收到有关更改架构的 SQL 存储过程错误,但没有更改已疯狂

Receiving a SQL stored procedure error about changing schema but no changes have been mad

我们有几个数据源,每天晚上 运行 使用带有 SQL table 数据源的 SSIS 包。这个标准流程的一部分是我们使用存储过程构建的数据引擎,运行 用于每个数据馈送,returns 客户数据基于他们的特定参数。该引擎将数据转储到 SQL table 中,由包检索数据,然后一直保留到下一个晚上 运行.

也许两周前我们开始间歇性地得到以下错误 运行ning 这些存储过程(使用 SQL 代理执行):

    "INSERT EXEC failed because the stored procedure altered the schema of the target table. [SQLSTATE 42000] (Error 556).  The step failed."

这些存储过程 运行 几个月,有些甚至几年都没有改变。这些错误刚刚开始间歇性发生。在存储过程中,我们确实有一个临时 table 被用来接收引擎数据,还有一个 table 被删除并使用如下语句重新创建:

    SELECT field1, field2 INTO sqlTable FROM @tempTable

我寻找 SQL 更新或可能已更改的内容突然导致这些错误,但找不到任何内容。断断续续地发生在几个不同的存储过程中,它们都具有相同类型的结构,但我无法确定任何特定原因。它会发生在一个晚上而不是另一个晚上,一个存储过程而不是另一个类似的存储过程。知道是什么原因造成的吗?

我们在 Windows Server 2016 Datacenter 10.0(内部版本 14393:)(管理程序)上 运行ning Microsoft SQL Server 2016 Standard 64 位 (13.0.4604.0)。这一切都在 Azure 环境中的虚拟机上。

如果您正在使用“INSERT ... EXEC”并启用了查询存储,这可能就是原因。

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

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

这只是 SQL Server 2016

的一个问题

有关更多详细信息和可能的解决方案,请参阅:https://support.microsoft.com/en-us/help/4465511/error-556-insert-exec-failed-stored-procedure-altered-table-schema