SQL Server에서 오래 실행되는 쿼리를 모니터링하는 가장 좋은 방법은 무엇입니까?


10

내 데이터베이스에 대해 상당히 오래 실행되는 쿼리 (인덱스 다시 작성, 큰 데이터 집합 업데이트)를 실행해야합니다. SQL Server Management Studio에서 쿼리를 실행하고 매시간 정도 쿼리를 확인하는 대안이 있습니까? 완료되면 이메일을 보내거나 메시지를 보내려고하지만이를위한 최고의 도구를 모릅니다.

답변:


4

다음 Gaius 게시물 : 스크립트 앞에 db를 사용하여 필요한 작업을 수행하는 .SQL 스크립트를 생성 할 수 있습니다.-> 스크립트를 호출하는 운영 체제 유형의 SQL 에이전트 작업을 생성합니다.

sqlcmd -E -S SERVERNAME -i "c : \ YOURSCRIPT.sql"-o "C : \ YOURSCRIPT_LOG.log"

새 단계를 추가하고 msdb.dbo.sp_send_dbmail 프로 시저를 사용하여 이메일을 보내십시오. 이 기능은 스크립트 실행을 확인하기 위해 메일 내부에 SQL 테이블의 특정 쿼리를 표시하도록 사용자 정의 할 수 있습니다 (예 : 재구성 인덱스의 dbcc showcontig).


1

SQL 작업을 사용할 수있는 옵션이 있습니까? 이를 통해 알림 등을 할 수 있습니다. 간헐적 인 알림을받는 한 저장 프로 시저 등에서 일부 코드가 필요합니다.


1

예, xp_sendmail 만 사용하십시오 . 미리 설정된 메시지 나 SQL 문의 결과를 쉽게 보낼 수 있습니다. 이 기능은 SQL Server 6.5부터 사용 가능하지만 Denali 에서는 더 이상 사용되지 않을 예정입니다.이 기능이 작업의 영구적 인 부분 일 경우 훨씬 더 "엔터프라이즈"인 데이터베이스 메일 을 사용해야합니다 .


1

항상 "EventLog"테이블에 메시지를 씁니다. 많은 양의 데이터를 처리 할 때 데이터를 청크로 관리하고 매 청크마다 이벤트 로그에 상태 업데이트를 씁니다.

장기 실행 프로세스의 진행 상황을 확인하려면 EventLog 테이블을 쿼리하면됩니다.

출력 예 :

-------------------
-나의 큰 업데이트-
-------------------
시작 : 2011-05-03 10:00:00

처리 할 레코드 : 1,000,000
청크 : 200

--- 청크 1 ---
MyTable 업데이트 시도
업데이트 된 레코드 : 5000
남은 기록 : 995,000
처리량 : 초당 4210 개의 레코드

--- 청크 2--
MyTable 업데이트 시도
업데이트 된 레코드 : 5000
남은 기록 : 990,000
처리량 : 초당 3555 개의 레코드

--- 청크 3--
기타

또한 메시지가 작성된시기, 메시지를 작성한 프로세스 등을 추적하기 위해 EventLog 테이블에 열이 있습니다. 예제에 해당 정보를 포함하지 않아서 죄송합니다.

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