다음을 통해 공유


SQL Server 에이전트에서 Windows PowerShell 단계 실행

SQL Server 에이전트를 사용하여 예약된 시간에 SQL Server PowerShell 스크립트를 실행합니다.

비고

두 개의 SQL Server PowerShell 모듈이 있습니다. SqlServerSQLPS.

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 이벤트에 대한 응답으로 실행되는 스크립트를 작업에 포함할 수 있습니다. Windows PowerShell 스크립트는 명령 프롬프트 작업 단계 또는 PowerShell 작업 단계를 사용하여 실행할 수 있습니다.

  • PowerShell 작업 단계를 사용하여 SQL Server 에이전트 하위 시스템이 sqlps 유틸리티를 실행하도록 합니다. 이 유틸리티는 PowerShell을 시작하고 sqlps 모듈을 가져옵니다. SQL Server 2019 이상을 실행하는 경우 SQL 에이전트 작업 단계에서 SqlServer 모듈을 사용하는 것이 좋습니다.

  • 명령 프롬프트 작업 단계를 사용하여 PowerShell.exe실행하고 sqlps 모듈을 가져오는 스크립트를 지정합니다.

메모리 사용량에 대한 주의

sqlps 모듈을 사용하여 PowerShell을 실행하는 각 SQL Server 에이전트 작업 단계에서는 약 20MB의 메모리를 사용하는 프로세스를 시작합니다. 많은 수의 동시 Windows PowerShell 작업 단계를 실행하면 성능에 부정적인 영향을 줄 수 있습니다.

PowerShell 작업 단계 만들기

PowerShell 작업 단계 만들기

  1. SQL Server 에이전트를 확장하고 새 작업을 만들거나 기존 작업을 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다. 작업 만들기에 대한 자세한 내용은 /sql/ssms/agent/create-jobs를 참조하세요.

  2. 작업 속성 대화 상자에서 단계페이지를 선택한 다음 새로 만들기를 선택합니다.

  3. 새 작업 단계 대화 상자에서 작업 단계 이름입력합니다.

  4. 형식 목록에서 PowerShell을 선택합니다.

  5. 실행 목록에서 작업에서 사용할 자격 증명이 있는 프록시 계정을 선택합니다.

  6. 명령 상자에 작업 단계에 대해 실행할 PowerShell 스크립트 구문을 입력합니다. 또는 열기 를 선택하고 스크립트 구문이 포함된 파일을 선택합니다.

  7. 고급 페이지를 선택하여 다음 작업 단계 옵션을 설정합니다. 작업 단계가 성공하거나 실패할 경우 수행할 작업, SQL Server 에이전트가 작업 단계를 실행해야 하는 횟수 및 재시도 빈도를 설정합니다.

명령 프롬프트 작업 단계 만들기

CmdExec 작업 단계 만들기

  1. SQL Server 에이전트를 확장하고 새 작업을 만들거나 기존 작업을 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다. 작업 만들기에 대한 자세한 내용은 /sql/ssms/agent/create-jobs를 참조하세요.

  2. 작업 속성 대화 상자에서 단계페이지를 선택한 다음 새로 만들기를 선택합니다.

  3. 새 작업 단계 대화 상자에서 작업 단계 이름입력합니다.

  4. 형식 목록에서 운영 체제(CmdExec)선택합니다.

  5. 실행 목록에서 작업에서 사용할 자격 증명이 있는 프록시 계정을 선택합니다. 기본적으로 CmdExec 작업 단계는 SQL Server 에이전트 서비스 계정의 컨텍스트에서 실행됩니다.

  6. 성공한 명령 상자의 프로세스 종료 코드에서 0에서 999999 값을 입력합니다.

  7. 명령 상자에서 실행할 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 스크립트를 실행합니다(서버에 설치해야 하는 PowerShell 7.0의 실행 파일 이름 사용 pwsh.exe). 스크립트의 경로는 SQL 에이전트가 실행 중인 서버의 로컬 경로입니다.

         PWSH.exe -ExecutionPolicy RemoteSigned -File X:\MyScripts\script001.ps1
      
  8. 고급 페이지를 선택하여 작업 단계가 성공하거나 실패할 경우 수행할 작업, SQL Server 에이전트가 작업 단계를 실행해야 하는 횟수 및 SQL Server 에이전트가 작업 단계 출력을 작성할 수 있는 파일과 같은 작업 단계 옵션을 설정합니다. sysadmin 고정 서버 역할의 멤버만 작업 단계 출력을 운영 체제 파일에 쓸 수 있습니다.