Строки электронной почты SQL не выравниваются
У меня есть настройка работы по электронной почте, когда дисковое пространство падает ниже 20 %. Прямо сейчас все работает отлично, за исключением случаев, когда речь идет о результатах в электронной почте. Я попытался изменить query_result_width для каждого возможного варианта. Я хочу отправить его в виде простого текста, так как некоторые из руководителей, которые почему-то получают электронное письмо, напоминают обычный текст. Строки выглядят так, как будто они сгенерированы на каждой другой строке, и результаты, приведенные ниже, являются примером результатов.
ServerName Drive
Free(MB)
MyServerName C
5,468
Должно выглядеть так:
ServerName Free(MB) Drive
MyServerName 5,468 C
Ниже приведен скрипт, любая помощь будет принята с благодарностью.
execute msdb.dbo.sp_send_dbmail
@profile_name = 'ProfileName',
@recipients = 'Emailaddress@email.com,
@subject = 'WARNING: Disk space in one or more drives is below 20 % free space',
@body_format = 'TEXT',
@Body = 'These are the servers and drives with low free space',
@query_result_width = 134,
@query_result_header = 0,
@query ='SET NOCOUNT ON;
SELECT "ServerName" as [ServerName], "Drive" as [Drive], "Total(MB)" as [Total(MB)], "Free(MB)" as [Free(MB)], "Used(MB)" as [Used(MB)], "Free(%)" as [Free(%)]
UNION ALL
SELECT [ServerName]
,[Drive]
,[Total(MB)]
,[Free(MB)]
,[Used(MB)]
,[Free(%)]
FROM [DBA].[dbo].[ServerDriveSpace]
WHERE [Free(%)] < 20'
2 ответа
Почему бы вам просто не добавить его как вложение, а не как текст в электронном письме. Размер все равно будет относительно небольшим, и он будет выглядеть намного лучше, что также решит проблему с выравниванием. Что-то вроде этого....
DECLARE @tab char(1) = CHAR(9)
execute msdb.dbo.sp_send_dbmail
@profile_name = 'ProfileName',
@recipients = 'Emailaddress@email.com',
@subject = 'WARNING: Disk space in one or more drives is below 20 % free space',
@body_format = 'TEXT',
@Body = 'These are the servers and drives with low free space',
@attach_query_result_as_file = 1,
@query_attachment_filename='DiskSpace.csv',
@query_result_width = 134,
@query_result_header = 0,
@query_result_separator=@tab,
@query_result_no_padding=1,
@query ='SET NOCOUNT ON;
SELECT "ServerName" as [ServerName], "Drive" as [Drive], "Total(MB)" as [Total(MB)], "Free(MB)" as [Free(MB)], "Used(MB)" as [Used(MB)], "Free(%)" as [Free(%)]
UNION ALL
SELECT [ServerName]
,[Drive]
,[Total(MB)]
,[Free(MB)]
,[Used(MB)]
,[Free(%)]
FROM [DBA].[dbo].[ServerDriveSpace]
WHERE [Free(%)] < 20'
ОБЪЯВИТЬ @NewLineChar AS CHAR(2) = CHAR(13) + CHAR(10) применить его (в основном это попытка и ошибка)