首页 > 解决方案 > 当过程包含与不存在的序列的连接时,SQL Server“CREATE PROCEDURE”不执行?

问题描述

有谁知道为什么以下CREATE PROCEDURE语句不起作用(它说“命令已成功完成”,但未创建该过程:

CREATE PROCEDURE [dbo].[TestProc]
AS
BEGIN
    DECLARE @TV TABLE (lKey int null)

    UPDATE @TV 
    SET lKey = 0 --a.lKey
    FROM @TV
    CROSS JOIN 
        -- Joining to select from non-existant sequence.
        (SELECT NEXT VALUE FOR TestSeqDoesntExist AS lKey) a
END
GO

这似乎与数据库中不存在的序列有关 - 替换现有的序列对象会导致按预期创建过程。

我本来希望创建该过程,但由于有关序列不存在的错误而无法执行。

我正在使用 SSMS v17.9 连接到 SQL Server 2017 数据库 (v14.0.1000.169)。

标签: sql-serverstored-proceduressequence

解决方案


看来此问题已由 SQL Server 2017 的累积更新 19 修复https://support.microsoft.com/en-us/help/4535007/cumulative-update-19-for-sql-server-2017

尽管对我来说,与文档中的哪些修复相关(如果有)并不完全清楚,但我更新了我的本地 Developer 安装,并且现在按预期创建了该过程。

感谢@Larnu 和@[Jeroen Mostert] 为我指明了正确的方向。


推荐阅读