web-dev-qa-db-fra.com

Supprimer certains avertissements dans SQL Server SSDT

Dans Outils de données SQL Server , je voudrais supprimer certaines occurrences de SQL71502 ("--- a une référence non résolue à l'objet ---"). Je sais que je peux supprimer par le biais de Propriétés du projet, Construire, Supprimer les avertissements Transact-SQL, mais cela supprimera globalement. Cela peut-il être fait?

30
Jason Kresowaty

Vous ne saviez pas exactement ce qui déterminerait quels messages 71502 seraient supprimés et lesquels ne le seraient pas, mais selon ma propre compréhension et mes propres recherches, je pense que la réponse est la même. Bref non. 

Vous pouvez supprimer tous les avertissements ou les avertissements basés sur un code spécifique (71502), mais cela est aussi granulaire que possible.

http://msdn.Microsoft.com/en-us/library/hh272681(v=VS.103).aspx

Ce lien parle de la promotion de l'avertissement en cas d'erreur, mais montre également comment le filtre de suppression est utilisé - ce que, d'après votre question, vous connaissez probablement déjà.

http://social.msdn.Microsoft.com/Forums/is/ssdt/thread/9b698de1-9f6d-4e51-8c73-93c57355e768

5
RThomas

Vous pouvez le supprimer au niveau du fichier individuel qui contient le code générant l'avertissement si vous le souhaitez. Quelque chose comme ça.

<Build Include="Stored Procedures\X.sql">
    <SuppressTSqlWarnings>71502</SuppressTSqlWarnings>
</Build>
44
Varun

On dirait que vous essayez de faire cela au niveau de l'objet/du fichier, comme un sproc. 

S'il s'agit du niveau de granularité souhaité, alors, avec le projet ouvert, sélectionnez l'objet et, dans les propriétés, sélectionnez l'option Supprimer les avertissements TSql, entrez 71502, qui devrait le faire. 

D'autres avertissements pour l'objet seront toujours déclenchés - de même que les avertissements 71502 dans d'autres objets. 

7
Mad-Genius

Comme déjà indiqué, il est possible au niveau de l’objet d’ignorer toutes les occurrences d’un avertissement/d’une erreur. Si vous souhaitez uniquement ignorer une certaine occurrence de l'avertissement dans un objet, ce n'est pas possible.

J'ai trouvé une solution de contournement qui pourrait également vous aider.

Dans mon cas, je fais référence à une table dans une procédure stockée créée par une instruction "select * into ..." et Visual Studio ne peut gérer aucune référence suivante sur cette nouvelle table et j'obtiens de nombreux avertissements SQL71502. ] Pour tromper VS j’ai créé en haut de mon SP ce qui suit:

IF 1=2 CREATE mytable(...)

Cela permet à VS de valider toutes les références, mais comme la condition de la clause if est toujours fausse, il n’exerce aucune influence négative sur mon SP. N'oubliez pas de mettre à jour l'instruction CREATE si nécessaire.

1
Paul_S

Si les avertissements proviennent de procédures stockées, vous pouvez définir la suppression sur des sprocs spécifiques en ajoutant le numéro de l'avertissement (délimité par des virgules si vous en voulez plus) à la section Supprimer l'avertissement TSql dans les propriétés du sproc.

1
nicky