我试图找到验证所有sql server存储过程的方法。我曾尝试使用sp_recompile
和,但它不起作用。检查Sql Server中存储过程的有效性
例如,这个存储过程编译没有问题,虽然表中没有存在
ALTER PROCEDURE sp_Foo
WITH RECOMPILE
AS
BEGIN
SELECT Foo, Bar
FROM Table_That_Dont_Exist
END
当我尝试执行它引发错误。
Msg 208, Level 16, State 1, Procedure sp_Foo, Line 5
Invalid object name 'Table_That_Dont_Exist'.
有没有办法来检查存储过程是否有效或可以毫无问题地执行?提前
除非您尝试访问它,否则验证某件事似乎很难; ala通过执行存储过程。为什么不执行来确定它是否有效? –
这是因为sql server有一个称为延迟名称解析的功能。这意味着一个过程可以编译,即使它引用了还不存在的对象。直到它需要生成一个执行计划,这将是一个问题。 https://technet.microsoft.com/en-US/library/ms190686.aspx –
我的主要问题是,我有一个很大的数据库存储过程。很多原因都是无效的(重命名列,删除表等)。我试图找到一种方法来验证所有数据库并检查所有程序。 @AaronMcIver,我试过了,但有存储过程接收参数。 – NioZero