Kiedy wysyłasz wynik zapytania jako załącznik do maila korzystając z procedury sp_send_db_mail dzieją się dwie brzydkie rzeczy:
- do wygenerowanego pliku dołaczany jest tekst np 3 row(s) affected
- między nagłówkiem a danymi pojawia się kreska rozdzielająca te dwa elementy ———————————–
Z pierwszym problemem dosyć łatwo sobie można poradzić. W przekazywanym parametrze @query zamiast samego zapytania, np.:
SELECT id, name FROM database.dbo.table
zapisz
SET NOCOUNT ON;
SELECT id, name FROM database.dbo.table
Gorzej jednak z pomijaniem kreseczek… trzeba użyć sztuczki. Po pierwsze rezygnujemy z generowania nagówka dodając do sp_send_db_mail parametr: @query_result_header = 0
A jak teraz dodać warunek? Zapytanie zmień na UNION dwóch zapytań. Pierwsze z nich wygeneruje to co ma być w załączniku, a drugie zwróci właściwe dane. W efekcie mamy więc:
SET NOCOUNT ON; SELECT 'id' AS id, 'name' AS name UNION ALL SELECT id, name FROM database.dbo.table