SQL Build缺少明显的代码错误

问题描述 投票:0回答:1

在QA中通过手动用户测试实现了代码错误,经过调查,这是一个简单的错误。

CREATE PROCEDURE ProcedureA
  @A INT
AS SELECT 1
GO
CREATE PROCEDURE ProcedureB
AS EXEC ProcedureA @B = 0

为什么MSBuild进程没有捕获这样的简单内容,有没有办法为这样的引用错误添加验证?特别是因为这会破坏我们的门禁登记构建验证过程。

此外,手动执行也不会引发任何错误。

sql-server msbuild
1个回答
2
投票

这是因为SQL Server存储过程的Deferred Name Resolution and Compilation属性。

如果它不是存储过程,函数,表或视图等,它将在编译时出错。

但是,SQL Server存储过程仅在创建时检查语法准确性,并且存储过程的定义按原样存储。

它仅在运行时,在第一次执行时,检查过程引用的对象,如果缺少任何内容,则该过程将引发错误。

© www.soinside.com 2019 - 2024. All rights reserved.