Unnötige Warnings in Datenbank Projekten loswerden

19. September 2012

Warnings sind eine gute Sache. Sie weisen uns auf Dinge hin, die wir besser machen sollten. Jedoch gibt es auch Warnings die keine Hilfe sind und uns den Blick auf die wichtigen Hinweise versperren. Jeder, der ein größeres Datenbank Projekt mit Visual Studio 2010 verwendet oder verwendet hat weiß sicherlich was ich damit meine.

Es geht hierbei um Warnings, die aufkommen weil wir beispielsweise Informationen aus anderen Datenbanken (meist Master) abfragen. Aus diesem Grund ist es nur verständlich und richtig, das diese Warnings generiert werden, denn das Datenbank Projekt kennt zunächst nur die eigenen Datenstrukturen und weiß mit denen aus anderen Datenbanken nichts anzugfangen.

Warning XX SQL04151: .. contains an unresolved reference to an object. 
Either the object does not exist or the reference is ambiguous because it 
could refer to any of the following objects: ..

Aber was können wir tun, um die Warnings loszuwerden?

Hier gibt es mehrere Wege zum Ziel:

1. Für das Datenbank Projekt global die Warning unterdrücken

Dies geht über die Projekt Eigenschaften –> Reiter Build –> Suppress Warnings. Hier sind die Warnings in ihrer numerischen Ausprägung separiert durch Semikolon anzugeben. In unserem Beispiel betrifft es die Warning 4151.

Dies ist der einfachste und schnellste Weg, aber nicht der zu empfehlende. Diese Warning kann uns auf Fehler in unseren Datenbank Objekten hinweisen.

2. Für das jeweilige Datenbank Objekt die Warning unterdrücken

Um dies zu erreichen muss die Datei des betroffenen Objektes im Solution Explorer angewählt werden. Im Eigenschaften Fenster findet sich die Eigenschaft Suppress Warnings. Hier ist es wieder möglich über Semikolon getrennt mehrere Warnings anzugeben. Im Falle der oben dargestellten Warning wäre 4151 einzutragen.

Dieser Weg ist schon recht gut. Damit unterdrücken wir zwar ggf. Warnings die uns nützlich sein könnten, aber nur noch in einzelnen Dateien.

3. Das Problem an der Wurzel packen und lösen

Hierfür müssen wir die unbekannten Objekte dem Projekt bekannt machen. Dafür gehen wir wieder auf die Eigenschaften des Datenbank Projektes und dann auf den Reiter References. Dort klicken wir auf Add Database Reference. Dort öffnet sich dann ein neuer Dialog, in dem wir ein .dbSchema File oder ein anderes Datenbank Projekt auswählen können:

image

Für unser Beispiel habe ich die Referenz auf das Master Schema hinzugefügt. Wie im Screenshot zu erkennen ist befindet sich dies im Visual Studio Verzeichnis unter VSTSDBSqlServer[VERSION]DBSchemas.

 

Fazit:

In diesem Artikel habe ich mehrere Wege aufgezeigt Datenbank Warnings loszuwerden. Es gibt Situationen in denen die Lösung 3 nicht funktioniert und es nur möglich ist Warnings loszuwerden, indem man diese unterdrückt. Meine Empfehlung würde jedoch immer lauten zuerst versuchen die Ursache zu bekämpfen und erst wenn das nicht funktioniert die Symptome, sprich Lösung 3 dann Lösung 2. Generell abraten würde ich von Lösung 1.

 

Quellenangaben:

http://msdn.microsoft.com/en-us/library/dd193259(v=vs.100).aspx