我们正在迁移到 SQL Server 2019 RTM 版本,并注意到我们使用SET IDENTITY_INSERTON/OFF 语句的存储过程之一失败,但在 SQL Server 2017 及更早版本中正常工作。
即使将兼容性级别更改为 SQL Server 2017,在 SQL Server 2019 中的工作方式也不同。这看起来像是一个没有记录在案的错误/行为更改。
任何人遇到类似问题或知道这是否是报告的问题?我尝试搜索它,但报告该问题的另一个人是 ODBC 和 SQL Server 2019 CTP 版本的组合。
我们有很多客户在 SQL Server 2017 及更早版本上运行我们产品的早期版本,我们无法更改这些存储过程,但仍想迁移到 SQL Server 2019,现在这已成为我们 SQL Server 2019 迁移的阻碍.
这是在 SQL Server 2019 中失败但在 SQL Server 2017 及更早版本中运行良好的代码片段
如何重现行为。
CREATE PROC proc_inner
AS
BEGIN
SET IDENTITY_INSERT [#TMP_MESSAGE] ON;
INSERT INTO [#TMP_MESSAGE] (DCORP, ENTITYKEY, SEQNO, MESSAGE)
SELECT
'test', 1, 1, 'bdkfsjk';
SET IDENTITY_INSERT #TMP_MESSAGE OFF;
END;
GO
CREATE …Run Code Online (Sandbox Code Playgroud)