확장 이벤트에 PowerShell 공급자 사용Use the PowerShell Provider for Extended Events

이 항목은 다음에 적용됩니다.예SQL Server(2014부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2014)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server PowerShell 공급자를 사용하여 SQL ServerSQL Server 확장 이벤트를 관리할 수 있습니다.You can manage SQL ServerSQL Server Extended Events by using the SQL ServerSQL Server PowerShell provider. XEvent 하위 폴더는 SQLSERVER 드라이브 아래에 있습니다.The XEvent subfolder is available under the SQLSERVER drive. 다음 방법 중 하나를 사용하여 이 폴더에 액세스할 수 있습니다.You can access the folder by using either of the following methods:

  • 명령 프롬프트에서 sqlps를 입력하고 Enter 키를 누릅니다.At a command prompt, type sqlps, and then press ENTER. cd xevent를 입력한 다음 Enter 키를 누릅니다.Type cd xevent, and then press ENTER. 여기서 cddir 명령이나 Set-LocationGet-Childitem cmdlet을 사용하여 서버 이름 및 인스턴스 이름으로 이동할 수 있습니다.From there, you can use the cd and dir commands (or Set-Location and Get-Childitem cmdlets) to navigate to the server name and instance name.

  • 개체 탐색기에서 인스턴스 이름, 관리를 차례로 확장하고 확장 이벤트를 마우스 오른쪽 단추로 클릭한 다음 PowerShell 시작을 클릭합니다.In Object Explorer, expand the instance name, expand Management, right-click Extended Events, and then click Start PowerShell. 이렇게 하면 다음 경로의 PowerShell이 시작됩니다.This starts PowerShell in the following path:

    PS SQLSERVER:\XEvent\ServerName\InstanceName>PS SQLSERVER:\XEvent\ServerName\InstanceName>

    참고

    확장 이벤트아래의 모든 노드에서 PowerShell을 시작할 수 있습니다.You can start PowerShell from any node under Extended Events. 예를 들어 세션을 마우스 오른쪽 단추로 클릭한 다음 PowerShell 시작을 클릭하면For example, you can right-click Sessions, and then click Start PowerShell. 한 수준 아래인 세션 폴더에서 PowerShell이 시작됩니다.This starts PowerShell one level deeper, at the Sessions folder.

    XEvent 폴더 트리를 탐색하여 기존 확장 이벤트 세션 및 관련된 이벤트, 대상 및 조건자를 볼 수 있습니다.You can browse the XEvent folder tree to view existing Extended Events sessions and their associated events, targets and predicates. 예를 들어 PS SQLSERVER:\XEvent\ServerName\InstanceName> 경로에서 cd sessions를 입력하고 Enter 키를 누른 다음 dir을 입력하고 다시 Enter 키를 누르면 해당 인스턴스에 저장된 세션 목록을 볼 수 있습니다.For example, from the PS SQLSERVER:\XEvent\ServerName\InstanceName> path, if you type cd sessions, press ENTER, type dir, and then press ENTER, you can see the list of sessions that are stored on that instance. 세션이 실행 중인지 여부(실행 중인 경우 실행 시간) 및 인스턴스가 시작될 때 세션이 시작되도록 구성되어 있는지 여부도 확인할 수 있습니다.You can also view whether the session is running (and if this is the case, for how long), and whether the session is configured to start when the instance starts.

    세션과 연결된 이벤트, 이벤트의 조건자 및 대상을 보려면 디렉터리를 세션 이름으로 변경한 다음 이벤트나 대상 폴더를 확인합니다.To view the events, their predictates, and the targets that are associated with a session, you can change directories to the session name, and then view either the events or targets folder. 예를 들어 기본 시스템 상태 세션과 연결된 이벤트 및 이벤트의 조건자를 보려면 PS SQLSERVER:\XEvent\ServerName\InstanceName\Sessions> 경로에서 cd system_health\events를 입력하고 Enter 키를 누른 다음 dir을 입력하고 다시 Enter 키를 누릅니다.For example, to view the events and their predicates that are associated with the default system health session, from the PS SQLSERVER:\XEvent\ServerName\InstanceName\Sessions> path, type cd system_health\events, press ENTER, type dir, and then press ENTER.

    SQL ServerSQL Server PowerShell 공급자는 확장 이벤트 세션을 생성, 변경 및 관리하는 데 사용할 수 있는 강력한 도구입니다.The SQL ServerSQL Server PowerShell provider is a powerful tool that you can use to create, alter, and manage Extended Events sessions. 다음 섹션에서는 확장 이벤트에 PowerShell 스크립트를 사용하는 몇 가지 기본적인 예를 제공합니다.The following section provides some basic examples of using PowerShell scripts with Extended Events.

Examples

다음 예에서 다음 사항에 유의하십시오.In the following examples, note the following:

  • 스크립트는 PS SQLSERVER:\> 프롬프트(명령 프롬프트에서 sqlps를 입력하면 사용할 수 있음)에서 실행해야 합니다.The scripts must be run from the PS SQLSERVER:\> prompt (available by typing sqlps at a command prompt).

  • 스크립트가 기본 SQL ServerSQL Server 인스턴스를 사용합니다.The scripts use the default instance of SQL ServerSQL Server.

  • 스크립트를 .ps1 확장명으로 저장해야 합니다.The scripts must be saved with a .ps1 extension.

  • PowerShell 실행 정책에서 스크립트 실행을 허용해야 합니다.The PowerShell execution policy must allow the script to run. 실행 정책을 설정하려면 Set-Executionpolicy cmdlet을 사용합니다.To set the execution policy, use the Set-Executionpolicy cmdlet. 자세한 내용을 보려면 get-help set-executionpolicy -detailed를 입력한 다음 Enter 키를 누릅니다.(For more information, type get-help set-executionpolicy -detailed, and then press ENTER.)

    다음 스크립트는 'TestSession'이라는 새 세션을 만듭니다.The following script creates a new session that is named 'TestSession'.

#Script for creating a session.  
cd XEvent  
$h = hostname  
cd $h  

#Use the default instance.  
$store = dir | where {$_.DisplayName -ieq 'default'}  
$session = new-object Microsoft.SqlServer.Management.XEvent.Session -argumentlist $store, "TestSession"  
$event = $session.AddEvent("sqlserver.file_written")  
$event.AddAction("package0.callstack")  
$session.Create()  

다음 스크립트는 앞의 예에서 만든 세션에 링 버퍼 대상을 추가합니다.The following script adds the ring buffer target to the session that was created in the previous example. 이 예제에서는 Alter 메서드를 사용하는 방법을 보여 줍니다.(This example shows the use of the Alter method. 세션을 처음 만들 때 대상을 추가할 수 있습니다.Be aware that you can add the target when you first create the session.)

#Script to alter a session.  
cd XEvent  
$h = hostname  
cd $h  
cd DEFAULT\Sessions  

#Used to find the specified session.  
$session = dir|where {$_.Name -eq 'TestSession'}  

#Add the ring buffer target and call the Alter method.  
$session.AddTarget("package0.ring_buffer")  
$session.Alter()  

다음 스크립트는 조건자 식을 사용하는 새 세션을 만듭니다.The following script creates a new session that uses a predicate expression. 이 경우 세션에서 sqlserver.file_written 이벤트를 통해 c:\temp.log 파일이 기록되는 시점에 대한 정보를 수집합니다.In this case, the session collects information for when the c:\temp.log file is written to (through the sqlserver.file_written event).

#Script for creating a session.  
cd XEvent  
$h = hostname  
cd $h  

#Use the default instance.  
$store = dir | where {$_.DisplayName -ieq 'default'}  
$session = new-object Microsoft.SqlServer.Management.XEvent.Session -argumentlist $store, "TestSession2"  
$event = $session.AddEvent("sqlserver.file_written")  

#Construct a predicate "equal_i_unicode_string(path, N'c:\temp.log')".  
$column = $store.SqlServerPackage.EventInfoSet["file_written"].DataEventColumnInfoSet["path"]  
$operand = new-object Microsoft.SqlServer.Management.XEvent.PredOperand -argumentlist $column  
$value = new-object Microsoft.SqlServer.Management.XEvent.PredValue -argumentlist "c:\temp.log"  
$compare = $store.Package0Package.PredCompareInfoSet["equal_i_unicode_string"]  
$predicate = new-object Microsoft.SqlServer.Management.XEvent.PredFunctionExpr -argumentlist $compare, $operand, $value  
$event.SetPredicate($predicate)  
$session.Create()  

보안Security

확장 이벤트 세션을 생성, 변경 또는 삭제하려면 ALTER ANY EVENT SESSION 권한이 있어야 합니다.To create, alter, or drop an Extended Events session, you must have the ALTER ANY EVENT SESSION permission.

참고 항목See Also

SQL Server PowerShell SQL Server PowerShell
system_health 세션 사용 Use the system_health Session
확장 이벤트 도구 Extended Events Tools