SQL Сервер "CREATE PROCEDURE" не выполняется, если процедура содержит соединение с несуществующей SEQUENCE? - PullRequest
0 голосов
/ 18 февраля 2020

Кто-нибудь знает, почему следующий оператор 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).

1 Ответ

0 голосов
/ 18 февраля 2020

Похоже, что эта проблема была исправлена ​​накопительным обновлением 19 для SQL Сервер 2017 https://support.microsoft.com/en-us/help/4535007/cumulative-update-19-for-sql-server-2017

Хотя мне не совсем очевидно, какое из документированных исправлений относится (если есть), я обновил свою локальную установку для разработчиков, и теперь процедура создается, как и ожидалось.

Спасибо @Larnu и @ [Jeroen Mostert] за указание в правильном направлении.

...