7

私は提案されたすべてのいまいましいフォーラムであらゆる手段を試しましたが、役に立ちませんでした! テーブルに格納された SQLPERF(logspace) の結果をsp_send_dbmail受信者に送信する必要があります。

ジョブのステップ 2 で障害が発生します。助けてください!

EXEC msdb.dbo.sp_send_dbmail
@profile_name= 'MyDBA',
@recipients= 'Mack@mydba.co.za',
@subject='Log Warning',
@query='SELECT * from #TempForLogSpace WHERE LogSpaceUsed >80
4

3 に答える 3

10

データベースメールを使用して一時テーブルからクエリを実行することはできません。一時テーブルの作成に使用したセッション(私が想定するジョブのステップ1)は閉じられ、ステップ2の開始時に新しいセッションが開始されました。セッションが閉じられたため、テーブルは削除されました(新しいセッションであるためにテーブルが削除されなかった場合でも、他のセッションの一時テーブルにアクセスできません)。

物理テーブルを作成してそれを使用するか(tempdbデータベースまたはデータベースのいずれかで)、出力を作成するコードを@queryに配置し、最後に#TempForLogSpaceからのselect *を指定します(ストアドプロシージャの方がはるかに簡単です)この場合は)。

于 2009-08-24T13:14:24.847 に答える
5

私はこのスレッドが少し古いことを知っていますが、誰かがこれにつまずいた場合、問題は mrdenny が sp_send_dbmail ストアド プロシージャが独自のセッションで実行されると言ったようなものですが、代わりにグローバル一時テーブルを使用することでこれを回避できます (テーブルのプレフィックス2 つのシャープ記号 (##) を使用)。

于 2011-01-31T19:14:52.013 に答える
0

のようなグローバル一時テーブルを使用するだけ##temp_tableです。このテーブルはすべてのセッションからアクセスでき、それを参照したすべてのセッションが閉じられるまでデータベースに残ります。

SQL Server のローカルおよびグローバル一時テーブル

于 2013-10-18T09:04:44.480 に答える