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

적용 대상: SQL Server Not supported. Azure SQL Database Azure Synapse Analytics Analytics Platform System(PDW)

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를 사용하지 않도록 설정할 수 있습니다. #NOSQLPS을(를) 추가할 수 있는 PowerShell 형식의 작업 단계 첫 번째 줄에서 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 모듈을 가져오는 스크립트를 지정합니다.

메모리 사용에 대한 주의 사항

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

PowerShell 작업 단계 만들기

PowerShell 작업 단계 만들기

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

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

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

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

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

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

  7. 고급 페이지를 선택하여 작업 단계가 성공 또는 실패할 경우에 수행할 동작, SQL Server 에이전트의 작업 단계 실행을 시도해야 하는 횟수, 그리고 다시 시도해야 하는 간격 등 작업 단계 옵션을 설정합니다.

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

CmdExec 작업 단계 만들기

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

  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 7.0의 실행 파일 이름인 pwsh.exe를 사용하여) PowerShell 스크립트 실행. 스크립트에 대한 경로는 SQL 에이전트가 실행 중인 서버의 로컬 경로입니다.
         PWSH.exe -ExecutionPolicy RemoteSigned -File X:\MyScripts\script001.ps1 
      
  8. 고급 페이지를 선택하여 작업 단계의 성공 또는 실패 여부에 따라 수행할 동작, SQL Server 에이전트가 작업 단계를 수행할 횟수, SQL Server 에이전트가 작업 단계 출력을 쓸 파일 등의 작업 단계 옵션을 설정합니다. sysadmin 고정 서버 역할의 멤버만 작업 단계 출력을 운영 체제 파일에 쓸 수 있습니다.

참고 항목