Jak wyeksportować dane wyjściowe sp_AskBrent?

11

Mamy instancję, która losowo przyspiesza procesor. Chcę utworzyć alert, który uruchamia się na procesorze powyżej 90% i automatycznie wywołuje zadanie, które uruchamia się sp_AskBrenti wysyła mi wiadomość e-mail z danymi wyjściowymi. Jednak wynik jest nieczytelny ani w tekście, ani w formacie HTML. Nie pasuje nawet do arkusza kalkulacyjnego Excel. Jak mogę uzyskać informacje w czytelnym formacie?

Mick
źródło
3
Możesz sprawdzić moją odpowiedź na inne pytanie, aby uruchomić ją w PowerShell, wyświetli raport HTML danych. W zależności od wersji programu SQL Server można skonfigurować to zadanie agenta SQL (krok PowerShell), a następnie dodać kod PS, aby wysłać plik pocztą e-mail.
@ShawnMelton tak, przyszedłem tutaj, aby również opublikować, że PowerShell jest dość trywialny, aby następnie sformatować adhoc.
ConstantineK,

Odpowiedzi:

13

Ustaw alert tak, aby uruchamiał zadanie EXEC msdb.dbo.sp_send_dbmailz @queryparametrem:

EXEC dbo.sp_send_dbmail @profile_name = 'mail_profile'
    , @recipients = '[email protected]'
    , @subject = 'some subject'
    , @body = 'the body text goes here'
    , @query = 'EXEC sp_AskBrent;'
    , @attach_query_result_as_file = 1;

Ten @attach_query_result_as_file = 1parametr wyśle ​​wyniki jako załącznik w formacie tekstowym, który z pewnością powinien być czytelny. Jeśli chcesz, możesz wyeksportować wyniki w formacie rozdzielanym przecinkami za pomocą @query_result_separatorparametru.

Ze strony MSDN dlasp_send_dbmail :

Ten przykład wysyła wiadomość e-mail do Dana Wilsona przy użyciu adresu e-mail [email protected]. Wiadomość ma temat Liczba zleceń pracy i wykonuje zapytanie, które pokazuje liczbę zleceń pracy z terminem wykonania mniej niż dwa dni po 30 kwietnia 2004 r. Poczta bazy danych dołącza wynik jako plik tekstowy.

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Adventure Works Administrator',
    @recipients = '[email protected]',
    @query = 'SELECT COUNT(*) FROM AdventureWorks2012.Production.WorkOrder
                  WHERE DueDate > ''2004-04-30''
                  AND  DATEDIFF(dd, ''2004-04-30'', DueDate) < 2' ,
    @subject = 'Work Order Count',
    @attach_query_result_as_file = 1 ;

Istnieje wiele opcji dla tego przechowywanego proc; sprawdź stronę MSDN i prawdopodobnie otrzymasz wynik dokładnie tak, jak tego chcesz.

Max Vernon
źródło