Я пытаюсь использовать sp_send_dbmail для отправки вложения. Вложение хранится в столбце varbinary(MAX) в таблице. Вот мой запрос:
EXEC msdb.dbo.sp_send_dbmail
@recipients='[email protected]',
@subject = 'Test Attachment',
@body = 'Test',
@body_format = 'HTML',
@profile_name = 'intranetadmin',
@query = 'Select DocumentData from [myDB].[dbo].[Documents] Where DocumentID = 8',
@query_result_header = 0,
@attach_query_result_as_file = 1,
@query_attachment_filename = 'Test.pdf',
@exclude_query_output = 1,
@query_no_truncate = 0;
Письмо успешно отправлено с вложением в формате PDF. Однако, когда дело доходит до открытия вложения, я получаю сообщение об ошибке. Я думаю, что размер файла усекается, хотя я прямо не указываю в своем запросе.
Я проверил максимально допустимый размер сообщения в настройках Database Mail, и в настоящее время он составляет 104857600 байт (100 МБ), файлы, которые я пытаюсь отправить, далеки от этого размера, поэтому я немного озадачен.
\n(1 rows affected)
добавляется к файлу. Исправьте это с помощьюSET NOCOUNT ON
перед вашим фактическим запросом. (Хотя это по-прежнему оставляет\n
в конце.) Во-вторых, данные в текстовом формате, а не в двоичном формате. В моем столбце varbinary(max) есть следующие данные:0x255044462D312E340A3120...
Они записываются в файл вложения в виде обычного текста, а не двоичного. Я не знаю, как это исправить. - person Eric   schedule 12.11.2019