2017-02-28 81 views
0

我在Visual Studio解决方案中有两个SQL Server数据库项目。其中之一是遗留数据库,我只是在我的主数据库项目中使用数据库引用。我有我得到类似在数据库项目的每个文件基础上抑制SQL警告

SELECT * 
FROM [$(ReferenceDb)].[dbo].[Table1] t 
WHERE t.IndexedColumnId IN (1, 55, 99) 

在我的主数据库项目视图

SR0004:Microsoft.Rules.Data:没有被用来作为 一个IN谓词测试表达式索引中的列可能会降低性能。

参考数据库在此列上有一个索引。请注意,这是用于演示目的的简化代码。我实际上将参考数据库中的表加入到我的主数据库中的表中。如果我将这个简单的代码移动到参考数据库项目,我不会收到任何警告。看起来好像主数据库项目没有选择参考数据库中的索引。

我想要做的就是压制这个警告;但我不想为整个主数据库项目做这件事。我只想抑制它对于某些SQL视图/存储过程等。

我正在寻找类似于C#文件中可用的警告消息的源代码。

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "args")] 

但我需要能够在主数据库项目中的.sql文件中执行此操作。

我辩论关闭整个项目的警告,但真的不想走这条路。

对此问题有何建议?

回答

1

转到您的项目属性。你显然已经开启了代码分析。您仍然可以关闭整个项目,但可以关闭该特定警告。

我不认为有可能关闭这个特定的警告只是一个文件,因为它是一个项目级别的分析。

+0

这正是我想要避免的。我知道如何关闭项目,但我想让它留下,但只是忽略它在特定的点。类似于通过使用“#pragma警告禁用xxxx”功能或“System.Diagnostics.CodeAnalysis.SuppressMessage”元数据标记在C#中的文件抑制。 看起来像这个问题可能没有一个有效的答案,直到潜在的更高版本。 –

+0

很确定它不可能关闭每个文件。您可以禁止警告,但不能进行规则检查。我知道这不是你正在寻找的,但没有意识到有什么方法可以完成你现在想要的。 –

+1

尝试......的+1,但以不接受的方式离开。也许在几年后,随着新版本的发布,它们将成为一种解决方案。我基本上得出了同样的结论。只有我想到的解决办法是在他们自己的项目中拥有这些“特殊”跨数据库视图,我可以关闭警告。然后将其作为附加参考添加到我的主数据库项目中。似乎在截止日期临近的时候是过度的;(我将不得不忍受引入的技术债务。 –