sp_send_dbmail не будет отправлять результаты запроса

Мы пробовали каждую авеню на каждом предложенном форуме, но безрезультатно! Необходимо отправить результаты SQLPERF (logspace), которые были сохранены в таблице, черезsp_send_dbmail получателю.

Шаг 2 работы, где происходит сбой. Пожалуйста помоги!

EXEC msdb.dbo.sp_send_dbmail
@profile_name= 'MyDBA',
@recipients= '[email protected]',
@subject='Log Warning',
@query='SELECT * from #TempForLogSpace WHERE LogSpaceUsed >80
 jumxozizi28 сент. 2016 г., 10:16
Вы заметили отсутствующую заключительную цитату из?@query

Ответы на вопрос(3)

Просто используйте глобальную временную таблицу, такую как##temp_table, Эта таблица будет доступна всем сеансам и будет оставаться в базе данных до тех пор, пока все сеансы, на которые она ссылалась, не будут закрыты.

Локальные и глобальные временные таблицы в SQL Server

Я знаю, что этот поток немного староват, но в случае, если кто-то споткнется об этом, проблема в том, что mrdenny сказал, что хранимая процедура sp_send_dbmail запускается в нем 'Собственный сеанс, однако вы можете обойти это, используя вместо этого глобальную временную таблицу (добавьте в таблицу два знака фунта (##)).

Вы можете't запрос из временной таблицы с использованием почты базы данных. Сеанс, который вы использовали для создания временной таблицы (я полагаю, шаг 1 вашей работы), был закрыт, а новый шаг начался, когда начался шаг 2. Поскольку сеанс был закрыт, таблица была удалена (даже если таблица небыл сброшен, потому что этоэто новый сеанс вы нене иметь доступа к другим временным таблицам сеансов).

Либо создайте физическую таблицу и используйте ее (либо в базе данных tempdb, либо в вашей базе данных), либо поместите код, который создает выходные данные в @query с select * from #TempForLogSpace в конце (с хранимой процедурой будет гораздо проще справиться с в этом случае).

Ваш ответ на вопрос