我已经尝试了每个该死的论坛上的每条大道,但无济于事!
需要将已存储在表格中的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
答案 0 :(得分:10)
您无法使用数据库邮件从临时表进行查询。您用于创建临时表的会话(我假设您的工作的第1步)已关闭,并且在第2步开始时启动了新会话。由于会话已关闭,因此表已被删除(即使表未被删除,因为它是新会话,您无权访问其他会话临时表)。
创建一个物理表并使用它(在tempdb数据库或数据库中)或者在@query中使用select * from #TempForLogSpace将创建输出的代码放在最后(存储过程将会很多)在这种情况下更容易处理。)
答案 1 :(得分:5)
我知道这个帖子有点旧,但万一有人偶然发现,问题就像mrdenny说sp_send_dbmail存储过程在它自己的会话中运行,但是你可以通过使用全局临时表来解决这个问题(在表格前加上两个符号(##))。
答案 2 :(得分:0)
只需使用##temp_table
等全局临时表即可。所有会话都可以访问此表,并且将保留在数据库中,直到所有引用它的会话都已关闭。