2009-08-24 12 views
7

Ich habe versucht jede Möglichkeit auf jedem verdammten Forum vorgeschlagen, aber ohne Erfolg! Sie müssen Ergebnisse von SQLPERF (logspace), die in einer Tabelle gespeichert wurden, über sp_send_dbmail an den Empfänger senden.sp_send_dbmail wird keine Abfrageergebnisse senden

In Schritt 2 des Jobs tritt ein Fehler auf. Bitte helfen Sie!

EXEC msdb.dbo.sp_send_dbmail 
@profile_name= 'MyDBA', 
@recipients= '[email protected]', 
@subject='Log Warning', 
@query='SELECT * from #TempForLogSpace WHERE LogSpaceUsed >80 
+0

Haben Sie den fehlenden Schlusskurs von '@ query'? – jumxozizi

Antwort

10

Sie können keine Abfrage aus einer temporären Tabelle mit Datenbank-Mail durchführen. Die Sitzung, die Sie zum Erstellen der temporären Tabelle verwendet haben (Schritt 1 Ihres Jobs, den ich annehme), wurde geschlossen und eine neue Sitzung wurde gestartet, als Schritt 2 gestartet wurde. Da die Sitzung geschlossen wurde, wurde die Tabelle gelöscht (auch wenn die Tabelle nicht gelöscht wurde, da es sich um eine neue Sitzung handelt, haben Sie keinen Zugriff auf die temporäre Tabelle der anderen Sitzungen).

Erstellen Sie entweder eine physische Tabelle und verwenden Sie diese (entweder in der Datenbank tempdb oder Ihrer Datenbank) oder fügen Sie den Code, der die Ausgabe in der @query mit der Auswahl * aus #TempForLogSpace am Ende erstellt (eine gespeicherte Prozedur wird viel einfacher in diesem Fall zu behandeln).

5

Ich weiß, dieser Thread ist ein bisschen alt, aber falls jemand stolpert auf diesem, das Problem wie mrdenny wird gesagt, dass sp_send_dbmail gespeicherte Prozedur in einer eigenen Sitzung läuft, aber Sie können dies umgehen, indem eine globale temporäre Tabelle anstelle (der Tabelle zwei Nummernzeichen (##) voranstellen).

0

Verwenden Sie einfach eine globale temporäre Tabelle wie ##temp_table. Diese Tabelle ist für alle Sitzungen zugänglich und verbleibt in der Datenbank, bis alle Sitzungen, die sie weitergeleitet haben, geschlossen wurden.

Local and global temporary tables in SQL Server