sp_send_dbmail将不发送查询结果(sp_send_dbmail will not sen

2019-07-03 14:06发布

我试着在每一个该死的论坛各种途径建议,但都无济于事! 需要发送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

Answer 1:

使用数据库邮件不能从一个临时表查询。 您用来创建临时表(你的工作的步骤1我假设)会话已关闭,一个新的会话启动时第2步开始。 由于会话已关闭的表已被删除(即使该表没有被丢弃,因为它是一个新的会话你没有访问其他会话临时表)。

无论是创建一个物理表,并使用(无论是在tempdb数据库或数据库),或者把它创建在@query的输出与代码中的SELECT * FROM末#TempForLogSpace(存储过程会更容易处理在这种情况下)。



Answer 2:

我知道这个线程是有点老了,但万一有人绊倒在此,问题是像mrdenny说,sp_send_dbmail存储过程在它自己的会话中运行,但是你可以通过使用全局临时表,而不是解决这个问题(前缀表有两个井号(##))。



Answer 3:

只需使用一个全局临时表像##temp_table 。 该表将是所有会话访问,将保留在数据库中,直到它所指的所有会话已被关闭。

在SQL Server中本地和全局临时表



文章来源: sp_send_dbmail will not send query results