2017-02-28 1 views
0

J'ai deux projets de base de données SQL Server dans une solution Visual Studio. L'un d'eux est une base de données héritée que j'utilise juste une référence de base de données dans mon projet principal de base de données. J'ai vue dans mon projet principal de base de données similaire àAvertissements SQL Supress sur une base par fichier dans le projet de base de données

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

Je reçois

SR0004: Microsoft.Rules.Data: Une colonne sans index qui est utilisé comme une expression de test prédicat IN pourrait dégrader les performances.

La base de données de référence a un index sur cette colonne. Veuillez noter qu'il s'agit d'un code simplifié à des fins de démonstration. Je suis en train de joindre des tables dans le DB de référence aux tables de ma base de données principale. Si je déplace ce code simple vers le projet de base de données de référence, je ne reçois aucun avertissement. Il semble que le projet de base de données principal ne soit pas détecté dans les index de la base de données de référence.

Ce que je voudrais faire est de supprimer cet avertissement; mais je ne veux pas le faire pour l'ensemble du projet de base de données principale. Je veux seulement le supprimer pour certaines vues SQL/procédures stockées, etc.

Je cherche quelque chose de similaire à la suppression de source dans les avertissements disponibles dans les fichiers C# comme.

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

mais je dois être en mesure de le faire dans les fichiers .sql du projet de base de données principal.

J'ai débattu de désactiver les avertissements pour l'ensemble du projet, mais je ne veux vraiment pas aller dans cette direction.

Des suggestions sur ce problème?

Répondre

1

Accédez à vos propriétés de projet. Vous avez apparemment activé l'analyse de code. Vous pouvez toujours l'arrêter pour l'ensemble du projet, mais vous pouvez désactiver cet avertissement particulier.

Je ne pense pas qu'il soit possible de désactiver cet avertissement particulier pour un seul fichier car il s'agit d'une analyse au niveau du projet.

+0

C'est exactement ce que j'essayais d'éviter. Je sais comment l'éteindre pour le projet mais je le veux à gauche mais juste en l'ignorant dans des endroits spécifiques. Ils sont similaires à la suppression de fichiers dans C# en utilisant la fonctionnalité "#pragma warning disable xxxx" ou les balises de métadonnées "System.Diagnostics.CodeAnalysis.SuppressMessage". Il semblerait que cette question ne puisse pas avoir de réponse valable jusqu'à potentiellement une version ultérieure. –

+0

Assurez-vous qu'il n'est pas possible de le désactiver par fichier. Vous pouvez supprimer les avertissements, mais pas les contrôles de règle. Je sais que ce n'est pas ce que vous cherchiez, mais je ne suis pas au courant de la façon d'accomplir ce que vous voulez en ce moment. –

+1

+1 pour essayer ... mais en laissant comme non accepté. Peut-être que dans quelques années avec la sortie de la nouvelle version leur sera une solution. Je suis fondamentalement arrivé à la même conclusion. Seul le travail auquel je pensais consistait à avoir ces vues "spéciales" de bases de données croisées dans leur propre projet que j'éteins les avertissements. Ajoutez-le ensuite comme référence supplémentaire dans mon projet db principal. Semble être exagéré en ce moment avec l'approche de la date limite (je vais devoir vivre avec la dette technique introduite. –