Строки электронной почты 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) применить его (в основном это попытка и ошибка)

Другие вопросы по тегам