SQL Server 에이전트에서 Windows PowerShell 작업 단계 실행
적용 대상: SQL Server
Azure SQL Database
Azure Synapse Analytics
Analytics Platform System(PDW)
SQL Server 에이전트를 사용하여 일정에 따라 SQL Server PowerShell 스크립트를 실행할 수 있습니다.
참고
SQL Server PowerShell 모듈은 SqlServer와 SQLPS의 두 가지가 있습니다.
SqlServer 모듈이 사용할 현재 PowerShell 모듈입니다.
SQLPS 모듈은 이전 버전과의 호환성을 위해 SQL Server 설치에 포함되어 있지만 더 이상 업데이트되지 않습니다.
SqlServer 모듈은 SQLPS에 있는 cmdlet의 업데이트된 버전을 포함하며, 최신 SQL 기능을 지원하는 새로운 cmdlet도 포함되어 있습니다.
PowerShell 갤러리에서 SqlServer 모듈을 설치합니다.
자세한 내용은 SQL Server PowerShell을 참조하세요.
SQL Server 2019부터는 SQLPS를 사용하지 않도록 설정할 수 있습니다. PowerShell 유형 작업 단계의 첫 번째 줄에 #NOSQLPS
를 추가할 수 있습니다. 그러면 SQL 에이전트가 SQLPS 모듈을 자동으로 로드하지 않습니다. 이제 SQL 에이전트 작업이 컴퓨터에 설치된 PowerShell 버전을 실행하므로 원하는 다른 PowerShell 모듈을 사용할 수 있습니다.
SQL 에이전트 작업 단계에서 SqlServer 모듈을 사용하려면 스크립트의 처음 두 줄에 다음 코드를 배치하면 됩니다.
#NOSQLPS
Import-Module -Name SqlServer
SQL Server 에이전트에서 PowerShell 실행
SQL Server 에이전트 작업 단계 유형은 여러 가지가 있습니다. 각 유형은 복제 에이전트나 명령 프롬프트 환경과 같은 특정 환경을 구현하는 하위 시스템과 관련되어 있습니다. Windows PowerShell 스크립트를 코딩한 다음 SQL Server 에이전트를 사용하여 예약된 시간에 실행되거나 SQL Server 이벤트에 대한 응답으로 실행되는 스크립트를 작업에 포함할 수 있습니다. 명령 프롬프트 작업 단계 또는 PowerShell 작업 단계를 사용하여 Windows PowerShell 스크립트를 실행할 수 있습니다.
PowerShell 작업 단계를 사용하여 SQL Server 에이전트 하위 시스템에서 sqlps 유틸리티를 실행하게 합니다. 이 유틸리티는 PowerShell을 시작하고 sqlps 모듈을 가져옵니다. SQL Server 2019 이상을 실행한다면 SQL 에이전트 작업 단계에서 SqlServer 모듈을 사용하는 것이 좋습니다.
명령 프롬프트 작업 단계를 사용하여 PowerShell.exe를 실행하고, sqlps 모듈을 가져오는 스크립트를 지정합니다.
메모리 사용에 대한 주의 사항
PowerShell과 sqlps 모듈을 함께 실행하는 각 SQL Server 에이전트 작업 단계에서는 약 20MB의 메모리를 사용하는 프로세스를 시작합니다. 따라서 많은 수의 Windows PowerShell 작업 단계를 동시에 실행하면 성능이 저하될 수 있습니다.
PowerShell 작업 단계 만들기
PowerShell 작업 단계 만들기
SQL Server 에이전트를 확장하고 새 작업을 만들거나 기존 작업을 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다. 작업을 만드는 방법은 작업 만들기를 참조하세요.
작업 속성 대화 상자에서 단계 페이지를 선택한 다음 새로 만들기를 선택합니다.
새 작업 단계 대화 상자에서 작업 단계 이름을 입력합니다.
형식 목록에서 PowerShell을 선택합니다.
다음 계정으로 실행 목록에서 작업에 사용할 자격 증명을 가진 프록시 계정을 선택합니다.
명령 입력란에 작업 단계를 위해 실행될 PowerShell 스크립트 구문을 입력합니다. 아니면 열기를 선택한 다음 해당 스크립트 구문이 포함된 파일을 선택합니다.
고급 페이지를 선택하여 작업 단계가 성공 또는 실패할 경우에 수행할 동작, SQL Server 에이전트의 작업 단계 실행 시도 횟수, 그리고 다시 시도 간격 등 작업 단계 옵션을 설정합니다.
명령 프롬프트 작업 단계 만들기
CmdExec 작업 단계 만들기
SQL Server 에이전트를 확장하고 새 작업을 만들거나 기존 작업을 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다. 작업을 만드는 방법은 작업 만들기를 참조하세요.
작업 속성 대화 상자에서 단계 페이지를 선택한 다음 새로 만들기를 선택합니다.
새 작업 단계 대화 상자에서 작업 단계 이름을 입력합니다.
유형 목록에서 운영 체제(CmdExec) 를 선택합니다.
다음 계정으로 실행 목록에서 해당 작업이 사용할 자격 증명을 가진 프록시 계정을 선택합니다. 기본적으로 CmdExec 작업 단계는 SQL Server 에이전트 서비스 계정의 컨텍스트에서 실행됩니다.
성공한 명령의 프로세스 종료 코드 상자에 0에서 999999까지의 값을 입력합니다.
명령 입력란에 실행할 PowerShell 스크립트를 지정하는 매개 변수와 함께 PowerShell.exe로 시작하는 명령을 입력합니다. 이러한 예제는 Windows 명령 프롬프트에서 PowerShell 명령을 실행하기 위한 구문과 비슷합니다. 가능한 모든 구문 옵션은
PowerShell.exe -?
를 참조하세요.- 예제 1: 간단한 cmdlet 실행.
PowerShell.exe -Command "& { Get-Date }"
- 예제 2: 현재 서버에 대해 SQLCmd.exe 통해 쿼리 실행(이 예제에서는 SQL 에이전트 토큰 교체 사용).
PowerShell.exe -Command "& {&SQLCmd.exe -S $(ESCAPE_NONE(SRVR)) -Q 'select @@version'}"
- 예제 3: (서버에 설치해야 하는 PowerShell 7.0의 실행 파일 이름인
pwsh.exe
를 사용하여) PowerShell 스크립트 실행. 스크립트에 대한 경로는 SQL 에이전트가 실행 중인 서버의 로컬 경로입니다.PWSH.exe -ExecutionPolicy RemoteSigned -File X:\MyScripts\script001.ps1
- 예제 1: 간단한 cmdlet 실행.
고급 페이지를 선택하여 작업 단계의 성공 또는 실패 여부에 따라 수행할 동작, SQL Server 에이전트가 작업 단계를 수행할 횟수, SQL Server 에이전트가 작업 단계 출력을 쓸 파일 등의 작업 단계 옵션을 설정합니다. sysadmin 고정 서버 역할의 멤버만 운영 체제 파일에 작업 단계 출력을 쓸 수 있습니다.