webentwicklung-frage-antwort-db.com.de

Unterdrücken Sie einige Warnungen in SQL Server SSDT

In SQL Server-Datentools möchte ich einige, aber nicht alle Vorkommen von SQL71502 unterdrücken ("--- hat einen nicht aufgelösten Verweis auf das Objekt ---"). Ich weiß, dass ich durch Projekteigenschaften, Erstellen, Unterdrücken von Transact-SQL-Warnungen unterdrücken kann, dies wird jedoch global unterdrückt. Kann das gemacht werden?

30
Jason Kresowaty

Sie waren sich nicht klar, was die 71502-Nachrichten unterdrücken würde und welche nicht, aber aufgrund meines eigenen Verständnisses und meiner Recherche glaube ich, dass die Antwort dieselbe ist. Kurz gesagt, nein. 

Sie können alle Warnungen oder Warnungen, die auf einem bestimmten Code basieren (71502), unterdrücken. Dies ist jedoch so detailliert, wie es aussieht.

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

Dieser Link beschreibt die Verbreitung von Warnungen für Fehler, zeigt aber auch, wie der Unterdrückungsfilter verwendet wird - was auf der Grundlage Ihrer Frage wahrscheinlich bereits bekannt ist.

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

5
RThomas

Sie können es auf einzelner Dateiebene unterdrücken, die den Code enthält, der die Warnung generiert, wenn Sie möchten. Etwas wie das.

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

Es klingt, als würden Sie versuchen, dies auf Objekt-/Dateiebene zu tun, wie bei einem Sproc. 

Wenn dies die gewünschte Granularität ist, wählen Sie bei geöffnetem Projekt das Objekt aus. In den Eigenschaften wird eine Option zur Unterdrückung von TSql-Warnungen angezeigt. Geben Sie 71502 ein. 

Andere Warnungen für das Objekt werden weiterhin ausgegeben - ebenso wie 71502 Warnungen in anderen Objekten. 

7
Mad-Genius

Wie bereits erwähnt, ist es auf Objektebene möglich, alle Vorkommen einer Warnung/eines Fehlers zu ignorieren. Wenn Sie nur ein bestimmtes Vorkommen der Warnung innerhalb eines Objekts ignorieren möchten, ist dies nicht möglich.

Ich habe eine Problemumgehung gefunden, die Ihnen auch helfen könnte.

In meinem Fall verweise ich auf eine Tabelle innerhalb einer gespeicherten Prozedur, die von einer Anweisung "select * into ..." erstellt wird, und Visual Studio kann keinen nachfolgenden Verweis auf diese neue Tabelle verarbeiten, und ich bekomme eine Menge SQL71502-Warnungen. Zum Trick von VS habe ich am Anfang meines SP Folgendes erstellt:

IF 1=2 CREATE mytable(...)

Dadurch kann VS alle Referenzen überprüfen, aber da die Bedingung der if-Klausel immer falsch ist, hat dies keinen negativen Einfluss auf meinen SP. Denken Sie daran, die CREATE-Anweisung bei Bedarf zu aktualisieren.

1
Paul_S

Wenn die Warnungen von gespeicherten Prozeduren stammen, können Sie die Unterdrückung für bestimmte Sprocs festlegen, indem Sie den Zahlenteil der Warnung (durch Kommas getrennt, wenn Sie mehr möchten) im Abschnitt Suppress TSql Warning in den Sproc-Eigenschaften hinzufügen.

1
nicky