在SQL Server Data Tools中,我想禁止出现 SQL71502(“--- 对对象 --- 有未解析的引用”)的一些但不是全部出现。我知道我可以通过项目属性、构建、抑制 Transact-SQL 警告来抑制,但这将全局抑制。这可以做到吗?
5 回答
如果需要,您可以在包含生成警告的代码的单个文件级别禁止它。像这样的东西。
<Build Include="Stored Procedures\X.sql">
<SuppressTSqlWarnings>71502</SuppressTSqlWarnings>
</Build>
您不清楚什么会决定哪些 71502 消息会被抑制,哪些不会,但根据我自己的理解和研究,我认为答案是相同的。简而言之,没有。
您可以禁止所有警告或基于特定代码 ( 71502 ) 的警告,但这会尽可能细化。
http://msdn.microsoft.com/en-us/library/hh272681(v=VS.103).aspx
此链接讨论了将警告提升为错误,但也演示了如何使用抑制过滤器 - 基于您可能已经知道的问题。
http://social.msdn.microsoft.com/Forums/is/ssdt/thread/9b698de1-9f6d-4e51-8c73-93c57355e768
听起来您正在尝试在对象/文件级别执行此操作,例如存储过程。
如果这是您想要的粒度级别,那么在打开项目的情况下,选择对象,然后在属性中选择抑制 TSql 警告,输入 71502 就可以了。
该对象的其他警告仍将引发 - 其他对象中的 71502 警告也将引发。
如果警告来自存储过程,您可以通过将警告的数字部分(如果需要更多信息,以逗号分隔)添加到 sproc 属性中的 Suppress TSql 警告部分来设置特定 sproc 的 Suppress。
如前所述,可以在对象级别忽略所有出现的警告/错误。如果您只想忽略不可能的对象中出现的某种警告。
我找到了一种可能对您也有帮助的解决方法。
在我的例子中,我在存储过程中引用了一个由“select * into ...”语句创建的表,Visual Studio 无法处理这个新表上的任何后续引用,并且我收到很多 SQL71502 警告。为了欺骗 VS,我在我的 SP 顶部创建了以下内容:
IF 1=2 CREATE mytable(...)
这样做 VS 可以验证所有引用,但是因为 if 子句的条件总是错误的,所以对我的 SP 没有负面影响。请记住在必要时更新 CREATE 语句。