Come esportare l'output di sp_AskBrent?


11

Abbiamo un'istanza che aumenta in modo casuale la CPU. Voglio creare un avviso che si attiva sulla CPU oltre il 90% e chiama automaticamente un lavoro che viene eseguito sp_AskBrente mi invia l'output tramite e-mail. Tuttavia, l'output è illeggibile nell'output di testo o HTML. Non va nemmeno bene in un foglio di calcolo Excel. Come posso ottenere le informazioni in un formato leggibile?


3
Puoi controllare la mia risposta su un'altra domanda per eseguirla in PowerShell, genererà un rapporto HTML dei dati. A seconda della versione di SQL Server, è possibile configurarlo come processo di Agente SQL (passaggio PowerShell), quindi aggiungere il codice PS per inviare via e-mail il file.

@ShawnMelton sì, sono venuto qui per pubblicare anche questo, PowerShell che esegue è abbastanza banale per fare la formattazione ad hoc.
ConstantineK,

Risposte:


13

Rendere l'avviso eseguito un lavoro che esegue il EXEC msdb.dbo.sp_send_dbmailcon il @queryparametro:

EXEC dbo.sp_send_dbmail @profile_name = 'mail_profile'
    , @recipients = 'some@mail.com'
    , @subject = 'some subject'
    , @body = 'the body text goes here'
    , @query = 'EXEC sp_AskBrent;'
    , @attach_query_result_as_file = 1;

Il @attach_query_result_as_file = 1parametro invierà i risultati come allegato in formato testo, che dovrebbe sicuramente essere leggibile. Se lo desideri, puoi esportare i risultati nel formato delimitato da virgole usando il @query_result_separatorparametro

Dalla pagina MSDN persp_send_dbmail :

Questo esempio invia un messaggio di posta elettronica a Dan Wilson utilizzando l'indirizzo di posta elettronica danw@Adventure-Works.com. Il messaggio ha l'oggetto Conteggio ordini di lavoro ed esegue una query che mostra il numero di ordini di lavoro con scadenza Due meno di due giorni dopo il 30 aprile 2004. Posta elettronica database allega il risultato come file di testo.

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Adventure Works Administrator',
    @recipients = 'danw@Adventure-Works.com',
    @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 ;

Ci sono molte opzioni per quel proc memorizzato; controlla la pagina MSDN e probabilmente otterrai l'output esattamente come lo desideri.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.