SQL Server似乎只验证过程包含有效的T-SQL,并且所有为现有表引用的列都是有效的。这意味着我可以创建一个引用不存在的表的过程。
那么,我如何验证是否只引用了现有的表?
请注意,在这种情况下,我不关心动态SQL,因为我认为这将超出范围。
答案 0 :(得分:3)
你是否正确,它不验证表,视图或其他对象是否存在。这称为延迟名称解析。 https://technet.microsoft.com/en-us/library/ms190686.aspx
我知道验证实际存在的对象的唯一方法是执行该过程。
答案 1 :(得分:1)
是的,它不会检查,但MVP的某些功能已发布...
答案 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>'