SQL Build缺少明显的代码错误

时间:2018-03-01 20:57:39

标签: sql-server msbuild

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

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

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

此外,手动执行也不会抛出任何错误。

1 个答案:

答案 0 :(得分:2)

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

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

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

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