sp_send_dbmail不会发送查询结果

时间:2009-08-24 13:04:59

标签: sql-server temp-tables sp-send-dbmail

我已经尝试了每个该死的论坛上的每条大道,但无济于事! 需要将已存储在表格中的SQLPERF(日志空间)结果通过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

3 个答案:

答案 0 :(得分:10)

您无法使用数据库邮件从临时表进行查询。您用于创建临时表的会话(我假设您的工作的第1步)已关闭,并且在第2步开始时启动了新会话。由于会话已关闭,因此表已被删除(即使表未被删除,因为它是新会话,您无权访问其他会话临时表)。

创建一个物理表并使用它(在tempdb数据库或数据库中)或者在@query中使用select * from #TempForLogSpace将创建输出的代码放在最后(存储过程将会很多)在这种情况下更容易处理。)

答案 1 :(得分:5)

我知道这个帖子有点旧,但万一有人偶然发现,问题就像mrdenny说sp_send_dbmail存储过程在它自己的会话中运行,但是你可以通过使用全局临时表来解决这个问题(在表格前加上两个符号(##))。

答案 2 :(得分:0)

只需使用##temp_table等全局临时表即可。所有会话都可以访问此表,并且将保留在数据库中,直到所有引用它的会话都已关闭。

Local and global temporary tables in SQL Server

相关问题