Event Session을 이용한 SQL OS Session Schedule check

   

   

-       Version : SQL Server 2012

   

SQL Server 2012에서 이벤트를 사용하여 SQL Server의 SQL OS Schedule 상태에 대한 정보를 확인하여보자.

   

다음 스크립트를 사용하여 이벤트 정보를 확인한다. 이벤트는 QUERY_PROCESSING 정보이다.

SET NOCOUNT ON

-- Fetch data for only SQL Server 2012 instances

IF (SUBSTRING(CAST(SERVERPROPERTY ('ProductVersion') AS varchar(50)),1,CHARINDEX('.',CAST(SERVERPROPERTY ('ProductVersion') AS varchar(50)))-1) >= 11)

BEGIN

    -- Get UTC time difference for reporting event times local to server time

    DECLARE @UTCDateDiff int = DATEDIFF(mi,GETUTCDATE(),GETDATE());

   

     -- Store XML data retrieved in temp table

     SELECT

        TOP 1 CAST(xet.target_data AS XML) AS XMLDATA INTO #SystemHealthSessionData

     FROM sys.dm_xe_session_targets xet

        JOIN sys.dm_xe_sessions xe ON (xe.address = xet.event_session_address)

     WHERE xe.name = 'system_health' AND xet.target_name = 'ring_buffer';

 

    WITH CTE_HealthSession (EventXML) AS (

        SELECT

            C.query('.') as EventXML

        FROM #SystemHealthSessionData a

            CROSS APPLY a.XMLDATA.nodes('/RingBufferTarget/event') as T(C)

     )

   

    SELECT

        DATEADD(mi,@UTCDateDiff,EventXML.value('(/event/@timestamp)[1]','datetime')) as [Event Time],

        EventXML.value('(/event/data/value/queryProcessing/@maxWorkers)[1]','bigint') as [Max Workers],

        EventXML.value('(/event/data/value/queryProcessing/@workersCreated)[1]','bigint') as [Workers Created],

        EventXML.value('(/event/data/value/queryProcessing/@workersIdle)[1]','bigint') as [Idle Workers],

        EventXML.value('(/event/data/value/queryProcessing/@pendingTasks)[1]','bigint') as [Pending Tasks],

        EventXML.value('(/event/data/value/queryProcessing/@hasUnresolvableDeadlockOccurred)[1]','int') as [Unresolvable Deadlock],

        EventXML.value('(/event/data/value/queryProcessing/@hasDeadlockedSchedulersOccurred)[1]','int') as [Deadlocked Schedulers]

    FROM CTE_HealthSession

    WHERE EventXML.value('(/event/@name)[1]', 'varchar(255)') = 'sp_server_diagnostics_component_result'

        AND EventXML.value('(/event/data/text)[1]','varchar(255)') = 'QUERY_PROCESSING'

    ORDER BY [Event Time];

 

    DROP TABLE #SystemHealthSessionData

 

END

   

 

   

   

[참고자료]

http://troubleshootingsql.com/2013/07/16/powerview-and-system-health-sessionscheduler-health/

   


강성욱 / jevida@naver.com

Microsoft SQL Server MVP

Blog : http://sqlmvp.kr

Facebook : http://facebook.com/sqlmvp





No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 23408
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12412
1674 복사 전용 백업(COPY ONLY BACKUP) jevida(강성욱) 2016.09.13 4005
1673 SQL Server 기본 백업 폴더 변경하기 jevida(강성욱) 2016.09.13 4145
1672 sp_helpindex 의 향상된 버전 minsouk 2016.05.17 4593
1671 Spatial Index (공간 인덱스) 생성, 수정, 삭제 jevida(강성욱) 2016.01.11 9739
1670 Spatial Indexing 개요 (공간 인덱스) jevida(강성욱) 2016.01.11 7563
1669 Event Session을 이용한 Session Health check jevida(강성욱) 2016.01.11 6953
1668 SQL Server 2012 XML 플랜을 통한 병렬화 되지 않는 이유 살펴보기 jevida(강성욱) 2016.01.11 7542
» Event Session을 이용한 SQL OS Session Schedule check jevida(강성욱) 2016.01.11 7325
1666 Event Session을 이용한 Memory Health check jevida(강성욱) 2016.01.11 6977
1665 Event Session을 이용한 CPU Health check jevida(강성욱) 2016.01.11 8486
1664 DMV를 이용한 I/O Health check jevida(강성욱) 2016.01.11 7375
1663 CONCAT 함수 (문자열 연결하기)와 주의 사항 jevida(강성욱) 2016.01.11 28160
1662 SQL Server 2012 Columnstore Index jevida(강성욱) 2016.01.11 7607
1661 SQL Server 2012 File Stream / Table 관련 DMV jevida(강성욱) 2016.01.11 4913
1660 SQL Server2012 DMV – 메모리 덤프, 서비스, 구성 확인 jevida(강성욱) 2016.01.11 4834
1659 SQL Server2012 향상된 디버깅 기능 jevida(강성욱) 2016.01.11 4416
1658 SQL Server2012 매개 변수 구성 jevida(강성욱) 2016.01.11 3527
1657 SQL Server2012 도움말 설치 jevida(강성욱) 2016.01.11 3499
1656 SQL Server2012 Checkpoint 제어 jevida(강성욱) 2016.01.11 5400
1655 SSIS 패지키의 메타데이터 유효성 검사 중지하기 jevida(강성욱) 2016.01.11 3018





XE Login