sp_AskBrent의 출력을 내보내는 방법은 무엇입니까?


11

CPU를 무작위로 급등시키는 인스턴스가 있습니다. CPU에서 90 %가 넘는 경고를 생성하고 자동으로 작업을 호출 sp_AskBrent하고 출력을 이메일로 보내는 작업을 호출하려고 합니다. 그러나 텍스트 또는 HTML 출력에서 ​​출력을 읽을 수 없습니다. 심지어 Excel 스프레드 시트에는 적합하지 않습니다. 읽을 수있는 형식으로 정보를 얻으려면 어떻게해야합니까?


3
PowerShell에서 다른 질문에 대한 답변 을 확인 하면 데이터의 HTML 보고서가 출력됩니다. SQL Server 버전에 따라 SQL 에이전트 작업 (PowerShell 단계)으로 설정 한 다음 PS 코드를 추가하여 파일을 전자 메일로 보낼 수 있습니다.

@ShawnMelton 네, 여기에 게시했습니다 .Powershell을 실행하면 임시 형식을 만드는 것이 매우 간단합니다.
ConstantineK

답변:


13

경고가 실행되는 작업을 실행합니다 EXEC msdb.dbo.sp_send_dbmail@query매개 변수를 :

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;

@attach_query_result_as_file = 1매개 변수는 결과를 텍스트 형식의 첨부 파일로 보내며 반드시 읽을 수 있어야합니다. 원하는 경우 @query_result_separator매개 변수를 사용하여 결과를 쉼표로 구분 된 형식으로 내보낼 수 있습니다 .

보내는 사람 에 대한 MSDN 페이지sp_send_dbmail :

이 예에서는 danw@Adventure-Works.com 전자 메일 주소를 사용하여 Dan Wilson에게 전자 메일 메시지를 보냅니다. 이 메시지에는 작업 주문 수라는 제목이 있으며 2004 년 4 월 30 일 이후 2 일 이내에 DueDate가있는 작업 주문 수를 표시하는 쿼리를 실행합니다. 데이터베이스 메일은 결과를 텍스트 파일로 첨부합니다.

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 ;

저장된 프로 시저에는 많은 옵션이 있습니다. MSDN 페이지를 확인하면 원하는 방식으로 결과를 얻을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.