Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Auffüllen beim Senden von Abfrageergebnissen in einer E-Mail von SQL Server (T-SQL) entfernen

Wenn Sie den sp_send_dbmail verwenden gespeicherte Prozedur verwenden, um E-Mails von SQL Server zu senden, haben Sie die Möglichkeit, Abfrageergebnisse zur E-Mail hinzuzufügen.

Wenn Sie dies tun, stellen Sie möglicherweise fest, dass einigen Spalten unerwünschte Auffüllungen hinzugefügt wurden. Glücklicherweise können Sie dieses Padding mit @query_result_no_padding eliminieren Argument.

Vorher

Hier ist ein Beispiel dafür, wie die Ergebnisse mit Padding aussehen könnten.

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'Potential candidates for an Admin job, perhaps?',
    @query = 'SELECT TOP(5) * FROM Artists;',
    @execute_query_database = 'Music',
    @subject = 'Query results as discussed';

Ergebnis:

Potential candidates for an Admin job, perhaps?
ArtistId    ArtistName                                                
           ActiveFrom      
----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------- ----------------
         1 Iron Maiden                                                   
                 1975-12-25
         2 AC/DC                                                          
                 1973-01-11
         3 Allan Holdsworth                                           
                 1969-01-01
         4 Buddy Rich                                                    
                 1919-01-01
         5 Devin Townsend                                            
                 1993-01-01

(5 rows affected)

In diesem Fall wird so viel aufgefüllt, dass alles in die nächste Zeile übergeht und die Header nicht mit den Daten übereinstimmen.

Nach

Hier ist ein Beispiel dafür, wie die Ergebnisse aussehen, nachdem ich die Polsterung entfernt habe.

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'Potential candidates for an Admin job, perhaps?',
    @query = 'SELECT TOP(5) * FROM Artists;',
    @execute_query_database = 'Music',
    @subject = 'Query results as discussed';

Ergebnis:

Potential candidates for an Admin job, perhaps?
ArtistId ArtistName ActiveFrom
-------- ---------- ----------
1 Iron Maiden 1975-12-25
2 AC/DC 1973-01-11
3 Allan Holdsworth 1969-01-01
4 Buddy Rich 1919-01-01
5 Devin Townsend 1993-01-01

(5 rows affected)