Visual Studio-Datenbankprojekt - nicht aufgelöst Verweis auf temporäre Tabelle

8

Ich habe meine SQL Server 2005-Datenbank in ein VS2010-Datenbankprojekt importiert. Eine meiner gespeicherten Prozeduren enthält eine ähnliche Anweisung wie

  

INSERT IN # myTemp ...

und Visual Studio geben eine Warnung wie

  

SQL04151: Prozedur: [dbo]. [mySproc] hat eine nicht aufgelöste Referenz auf das Objekt [#myTemp].

Gibt es eine Möglichkeit, diese Referenz zu lösen? Ich möchte so viele Projektwarnungen wie möglich löschen.

    
Nick 18.03.2011, 12:06
quelle

4 Antworten

8

Ich hatte das gleiche, wo der Elternteil es erstellt. Anstatt die Warnung durch Erstellen der Tabelle zu löschen, wenn sie nicht existiert, möchte ich eine Ausnahme auslösen können, wenn dies nicht der Fall ist. Das Setzen einer CREATE-Anweisung nach der return-Anweisung garantiert, dass sie nie ausgeführt wird, löscht aber auch die Warnung.

%Vor%     
Greg Biles 19.09.2011 18:28
quelle
1

Haben Sie versucht, drei Teile wie hier zu benennen? ( VS 2010 Build-Datenbank-Projekt erhalten SQL04151 )

Sie müssen möglicherweise auch die db ref in tempdb anstelle von master ändern. Siehe diesen Artikel ( Ссылка ). Es beschreibt sys-Objekte, aber temporäre Tabellen werden in tempdb gespeichert, so dass sie das gleiche Verhalten aufweisen.

    
ktharsis 12.04.2011 13:11
quelle
0

Wenn Sie wissen, dass Ihr Code kein Problem darstellt, können Sie die Build-Warnungen unterdrücken. Gehen Sie zu den Einstellungen Ihres Projekts und Sie werden einen Tab namens Build finden. Es gibt ein Feld, um die Codes hinzuzufügen, die du unterdrücken möchtest. Ich googelte und fand diese Seite und beschrieb die Schritte.

    
slimburrok 18.04.2011 00:52
quelle
0

Offensichtlich weiß VS nicht, dass dieser gespeicherte Proc nur innerhalb eines anderen gespeicherten Proc ausgeführt werden soll, der diese temporäre Tabelle erstellt. Eine Lösung wäre, der Prozedur, die bei Bedarf die temporäre Tabelle erstellt, Code hinzuzufügen.

%Vor%

Wenn immer vom übergeordneten Element aufgerufen, sollte der obige Code theoretisch niemals ausgeführt werden.

    
Thomas 19.04.2011 16:12
quelle