创建过程时验证引用的表是否存在

时间:2016-10-04 19:57:41

标签: sql-server

SQL Server似乎只验证过程包含有效的T-SQL,并且所有为现有表引用的列都是有效的。这意味着我可以创建一个引用不存在的表的过程。

那么,我如何验证是否只引用了现有的表?

请注意,在这种情况下,我不关心动态SQL,因为我认为这将超出范围。

5 个答案:

答案 0 :(得分:3)

你是否正确,它不验证表,视图或其他对象是否存在。这称为延迟名称解析。 https://technet.microsoft.com/en-us/library/ms190686.aspx

我知道验证实际存在的对象的唯一方法是执行该过程。

答案 1 :(得分:1)

答案 2 :(得分:1)

您实际上可以在visual studio中使用SSDT工具,这样一旦您创建了一个实际引用不存在的表的过程,那么Visual Studio会发出警告

答案 3 :(得分:1)

延迟名称解析是一个SQL Server“功能”,为方便起见,因为它允许开发“乱序”。但它确实允许无效对象在那里滑动。

Redgate SQL Prompt(商业工具)具有“查找无效对象”功能,该功能将列出引用不存在的对象的对象。

它有一个为期14天的试用版,所以请随意下载并试一试。如果它没有发现您期望的物体,请告诉我们!

答案 4 :(得分:0)

查询数据库系统"表"表

连接到数据库后,使用它来查看数据库中的所有表。

SELECT * FROM sys.tables

使用此选项查看特定表格。

SELECT * FROM sys.tables WHERE name='<YourTableName>'