【发布时间】:2012-05-31 00:27:47
【问题描述】:
在SQL Server Data Tools 中,我想禁止出现 SQL71502(“--- 对对象 --- 具有未解析的引用”)的一些但不是全部出现。我知道我可以通过项目属性、构建、抑制 Transact-SQL 警告来抑制,但这将全局抑制。这个可以吗?
【问题讨论】:
标签: sql-server sql-server-data-tools
在SQL Server Data Tools 中,我想禁止出现 SQL71502(“--- 对对象 --- 具有未解析的引用”)的一些但不是全部出现。我知道我可以通过项目属性、构建、抑制 Transact-SQL 警告来抑制,但这将全局抑制。这个可以吗?
【问题讨论】:
标签: sql-server sql-server-data-tools
如果需要,您可以在包含生成警告的代码的单个文件级别禁止它。像这样的。
<Build Include="Stored Procedures\X.sql">
<SuppressTSqlWarnings>71502</SuppressTSqlWarnings>
</Build>
【讨论】:
<SuppressTSqlWarnings> 的顺序,即我将标签立即移到了<build> 标签之后。我的 Visual Studio 版本是 16.10.0。这可能对其他读者有所帮助。
<Build SuppressTSqlWarnings="71502" Include="script.sql" />
您不清楚什么会决定哪些 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 语句。
【讨论】: