2013-09-04 3 views
0

При использовании sp_send_dbmail так:sp_send_dbmail отправляет пустые результаты

EXEC msdb.dbo.sp_send_dbmail 
    @profile_name = 'MY_PROFILE' 
    ,@recipients = 'MY_EMAIL_ADDRESS' 
    ,@query = 'SELECT TOP 50 FIELD1, FIELD2, FIELD3 FROM TABLE1' 
    ,@subject = 'MY_SUBJECT' 
    ,@body = 'This is a test' 
    ,@attach_query_result_as_file = 1 
    ,@query_attachment_filename = 'file.csv' 
    ,@query_result_separator = ' ' 
    ; 

Прикрепленные файлы всегда пусто. Я попробовал свой запрос за пределами sp_send_dbmail, и он отлично работает. Я также попытался заменить свой запрос на SELECT 1, а затем у моего прикрепленного файла есть данные.

Что может заставить мой запрос не возвращать данные?

+0

У меня была проблема до этого, и это привело к тому, что типы данных полей в строке @query ... понадобилась бы схема таблицы, чтобы подтвердить это. Если вы в проб и ошибок ... попробуйте: ВЫБРАТЬ TOP 50 FIELD1 ОТ TABLE1' попробуйте ВЫБЕРИТЕ TOP 50 FIELD2 ОТ TABLE1' попробуйте ВЫБРАТЬ TOP 50 field3 ОТ TABLE1' Если я прав .. один из них вернет пустой набор данных, и вы узнаете, в каком столбце создается ошибка. – Twelfth

+0

Я уже пробовал только с FIELD1, но также получил пустые результаты. Я пробовал с каждым полем индивидуально и каждый раз получал пустые результаты. Для информации FIELD1 является Int, а FIELD2 и FIELD3 - varchar (8). – Shadowxvii

ответ

1

Я нашел, как его решить. Я должен был указать базу данных до имени таблицы. Что-то больше похоже:

EXEC msdb.dbo.sp_send_dbmail 
    @profile_name = 'MY_PROFILE' 
    ,@recipients = 'MY_EMAIL_ADDRESS' 
    ,@query = 'SELECT TOP 50 FIELD1, FIELD2, FIELD3 FROM DATABADE.dbo.TABLE1' 
    ,@subject = 'MY_SUBJECT' 
    ,@body = 'This is a test' 
    ,@attach_query_result_as_file = 1 
    ,@query_attachment_filename = 'file.csv' 
    ,@query_result_separator = ' ' 
    ; 
+0

Это имеет смысл ... sp_send_dbmail будет в базе данных MSDB, а не той, которую вы запрашиваете. Вместо того, чтобы выбрасывать ошибку «table not found», он просто отправляет пустые результаты. Хорошо на вас. – Twelfth

Смежные вопросы