sp_add_jobstep(Transact-SQL)

적용 대상:SQL ServerAzure SQL Managed Instance

SQL Server 에이전트 작업에 단계(작업)를 추가합니다.

Transact-SQL 구문 표기 규칙

Important

Azure SQL Managed Instance에서는 대부분의 SQL Server 에이전트 작업 유형이 지원되지 않습니다. 자세한 내용은 SQL Server와 Azure SQL Managed Instance 간의 T-SQL 차이점을 참조하세요.

구문

sp_add_jobstep
    [ [ @job_id = ] 'job_id' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @step_id = ] step_id ]
    , [ @step_name = ] N'step_name'
    [ , [ @subsystem = ] N'subsystem' ]
    [ , [ @command = ] N'command' ]
    [ , [ @additional_parameters = ] N'additional_parameters' ]
    [ , [ @cmdexec_success_code = ] cmdexec_success_code ]
    [ , [ @on_success_action = ] on_success_action ]
    [ , [ @on_success_step_id = ] on_success_step_id ]
    [ , [ @on_fail_action = ] on_fail_action ]
    [ , [ @on_fail_step_id = ] on_fail_step_id ]
    [ , [ @server = ] N'server' ]
    [ , [ @database_name = ] N'database_name' ]
    [ , [ @database_user_name = ] N'database_user_name' ]
    [ , [ @retry_attempts = ] retry_attempts ]
    [ , [ @retry_interval = ] retry_interval ]
    [ , [ @os_run_priority = ] os_run_priority ]
    [ , [ @output_file_name = ] N'output_file_name' ]
    [ , [ @flags = ] flags ]
    [ , [ @proxy_id = ] proxy_id ]
    [ , [ @proxy_name = ] N'proxy_name' ]
    [ , [ @step_uid = ] 'step_uid' OUTPUT ]
[ ; ]

인수

[ @job_id = ] 'job_id'

단계를 추가할 작업의 ID 번호입니다. @job_id 기본값NULLuniqueidentifier입니다.

@job_id 또는 @job_name 지정해야 하지만 둘 다 지정할 수는 없습니다.

[ @job_name = ] N'job_name'

단계를 추가할 작업의 이름입니다. @job_name sysname이며 기본값은 .입니다NULL.

@job_id 또는 @job_name 지정해야 하지만 둘 다 지정할 수는 없습니다.

[ @step_id = ] step_id

작업 단계의 시퀀스 ID입니다. @step_id 기본값NULL인 int입니다. 단계 식별 번호는 간격 1 없이 시작하고 증가합니다. 기존 시퀀스에 단계가 삽입되면 시퀀스 번호가 자동으로 조정됩니다. @step_id 지정되지 않은 경우 값이 제공됩니다.

[ @step_name = ] N'step_name'

단계의 이름입니다. @step_name 기본값이 없는 sysname입니다.

[ @subsystem = ] N'subsystem'

SQL Server 에이전트 서비스에서 @command 실행하는 데 사용하는 하위 시스템입니다. @subsystem nvarchar(40)이며 이러한 값 중 하나일 수 있습니다.

설명
ActiveScripting 활성 스크립트

중요: 이 기능은 이후 버전의 SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요.
CmdExec 운영 체제 명령 또는 실행 프로그램
Distribution 복제 배포 에이전트 작업
Snapshot 복제 스냅샷 에이전트 작업
LogReader 복제 로그 판독기 에이전트 작업
Merge 복제 병합 에이전트 작업
QueueReader 복제 큐 판독기 에이전트 작업
ANALYSISQUERY Analysis Services 쿼리(MDX, DMX)
ANALYSISCOMMAND Analysis Services 명령(XMLA)
SSIS Integration Services 패키지 실행
PowerShell PowerShell 스크립트
TSQL (기본값) Transact-SQL 문

[ @command = ] N'command'

@subsystem 통해 SQL Server 에이전트 서비스에서 실행할 명령입니다. @command 기본값NULL인 nvarchar(max)입니다. SQL Server 에이전트 소프트웨어 프로그램을 작성할 때 변수가 제공하는 것과 동일한 유연성을 제공하는 토큰 대체를 제공합니다.

이스케이프 매크로는 작업 단계에서 사용되는 모든 토큰과 함께 제공되어야 합니다. 그렇지 않으면 해당 작업 단계가 실패합니다. 또한 이제 토큰 이름을 괄호로 묶고 토큰 구문의 시작 부분에 달러 기호($)를 사용해야 합니다. 예: $(ESCAPE_<macro name>(DATE))

이러한 토큰 및 새 토큰 구문을 사용하도록 작업 단계를 업데이트하는 방법에 대한 자세한 내용은 작업 단계에서 토큰 사용을 참조하세요.

Windows 이벤트 로그에 대한 쓰기 권한이 있는 모든 Windows 사용자는 SQL Server 에이전트 경고 또는 WMI 경고로 활성화되는 작업 단계에 액세스할 수 있습니다. 이 보안 위험을 방지하기 위해 경고에 의해 활성화된 작업에 사용할 수 있는 SQL Server 에이전트 토큰은 기본적으로 사용하지 않도록 설정됩니다. 이러한 토큰은 다음과 A-MSGWMI(<property>)A-SVRA-SEVA-ERR같습니다. A-DBN 이 릴리스에서는 토큰 사용이 모든 경고로 확장됩니다.

이러한 토큰을 사용해야 하는 경우 먼저 관리istrators 그룹과 같은 신뢰할 수 있는 Windows 보안 그룹의 멤버만 SQL Server가 있는 컴퓨터의 이벤트 로그에 대한 쓰기 권한이 있는지 확인합니다. 그런 다음 개체 탐색기 SQL Server 에이전트 마우스 오른쪽 단추로 클릭하고 속성을 선택하고 경고 시스템 페이지에서 경고대한 모든 작업 응답에 대한 토큰 바꾸기를 선택하여 이러한 토큰을 사용하도록 설정합니다.

[ @additional_parameters = ] N'additional_parameters'

정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.

[ @cmdexec_success_code = ] cmdexec_success_code

@command 성공적으로 실행되었음을 나타내기 위해 하위 시스템 명령에서 반환 CmdExec 된 값입니다. @cmdexec_success_code 기본값0인 int입니다.

[ @on_success_action = ] on_success_action

단계가 성공하면 수행할 작업입니다. @on_success_action tinyint이며 이러한 값 중 하나일 수 있습니다.

설명(동작)
1 (기본값) 성공으로 종료
2 실패로 종료
3 다음 단계로 이동
4 단계 @on_success_step_id

[ @on_success_step_id = ] on_success_step_id

단계가 성공하고 @on_success_action 경우 실행할 이 작업의 단계 ID입니다 4. @on_success_step_id 기본값0인 int입니다.

[ @on_fail_action = ] on_fail_action

단계가 실패할 경우 수행할 작업입니다. @on_fail_action tinyint이며 이러한 값 중 하나일 수 있습니다.

설명(동작)
1 성공으로 종료
2 (기본값) 실패로 종료
3 다음 단계로 이동
4 단계 @on_fail_step_id

[ @on_fail_step_id = ] on_fail_step_id

단계가 실패하고 @on_fail_action 경우 실행할 이 작업의 단계 ID입니다 4. @on_fail_step_id 기본값0int입니다.

[ @server = ] N'server'

정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.

[ @database_name = ] N'database_name'

Transact-SQL 단계를 실행할 데이터베이스의 이름입니다. @database_name 기본값NULL인 sysname이며, 이 경우 데이터베이스가 master 사용됩니다. 대괄호([])로 묶인 이름은 허용되지 않습니다. ActiveX 작업 단계의 경우 @database_name 단계에서 사용하는 스크립팅 언어의 이름입니다.

[ @database_user_name = ] N'database_user_name'

Transact-SQL 단계를 실행할 때 사용할 사용자 계정의 이름입니다. @database_user_name sysname이며 기본값은 .입니다NULL. @database_user_nameNULL경우 단계는 @database_name 작업 소유자의 사용자 컨텍스트에서 실행됩니다. SQL Server 에이전트 작업 소유자가 SQL Server sysadmin인 경우에만 이 매개 변수를 포함합니다. 이 경우 지정된 Transact-SQL 단계가 지정된 SQL Server 사용자 이름의 컨텍스트에서 실행됩니다. 작업 소유자가 SQL Server sysadmin이 아닌 경우 Transact-SQL 단계는 항상 이 작업을 소유하는 로그인의 컨텍스트에서 실행되며 @database_user_name 매개 변수는 무시됩니다.

[ @retry_attempts = ] retry_attempts

이 단계가 실패할 경우에 재시도하는 횟수입니다. @retry_attempts int이며, 기본값0은 다시 시도하지 않음을 나타냅니다.

[ @retry_interval = ] retry_interval

재시도 간격(분)입니다. @retry_interval -분 간격을 나타내는 기본값0인 int입니다0.

[ @os_run_priority = ] os_run_priority

정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.

[ @output_file_name = ] N'output_file_name'

이 단계의 출력이 저장되는 파일의 이름입니다. @output_file_name 기본값NULL인 nvarchar(200)입니다. @output_file_name @command 아래에 나열된 토큰 중 하나 이상을 포함할 수 있습니다. 이 매개 변수는 Transact-SQL,, CmdExecPowerShellIntegration Services 또는 Analysis Services 하위 시스템에 실행되는 명령에서만 유효합니다.

[ @flags = ] flags

동작을 제어하는 옵션입니다. @flags int이며 이러한 값 중 하나일 수 있습니다.

설명
0(기본값) 출력 파일 덮어쓰기
2 출력 파일에 추가
4 Transact-SQL 작업 단계 출력을 단계 기록에 쓰기
8 테이블에 로그를 씁니다(기존 기록을 덮어씀).
16 테이블에 로그 작성(기존 기록에 추가)
32 작업 기록에 모든 출력 쓰기
64 작업 단계를 중단하기 위한 cmd 신호로 사용할 Windows 이벤트 만들기

[ @proxy_id = ] proxy_id

작업 단계가 실행되는 프록시의 ID 번호입니다. @proxy_id int이며 기본값은 .입니다NULL. @proxy_id 지정되지 않고 @proxy_name 지정되지 않고 @database_user_name 지정되지 않은 경우 작업 단계는 SQL Server 에이전트 대한 서비스 계정으로 실행됩니다.

[ @proxy_name = ] N'proxy_name'

작업 단계가 실행되는 프록시의 이름입니다. @proxy_name sysname이며 기본값은 .입니다NULL. @proxy_id 지정되지 않고 @proxy_name 지정되지 않고 @database_user_name 지정되지 않은 경우 작업 단계는 SQL Server 에이전트 대한 서비스 계정으로 실행됩니다.

[ @step_uid = ] 'step_uid' OUTPUT

@step_uid uniqueidentifier 형식의 OUTPUT 매개 변수입니다.

반환 코드 값

0 (성공) 또는 1 (실패).

결과 집합

없음.

설명

sp_add_jobstep 는 데이터베이스에서 msdb 실행되어야 합니다.

SQL Server Management Studio는 작업 구조를 만들고 관리할 수 있는 바람직한 방법을 제공하는데, 이는 그래픽을 사용하여 쉽게 작업을 관리할 수 있는 방법입니다.

기본적으로 작업 단계는 다른 프록시를 지정하지 않는 한 SQL Server 에이전트 대한 서비스 계정으로 실행됩니다. 이 계정의 요구 사항은 sysadmin 고정 보안 역할의 멤버여야 합니다.

프록시는 @proxy_name 또는 @proxy_id 식별할 수 있습니다.

이 저장 프로시저는 Azure SQL Database용 Azure Elastic Jobs 서비스에 대한 유사한 개체와 이름을 sp_add_jobstep 공유합니다. 탄력적 작업 버전에 대한 자세한 내용은 jobs.sp_add_jobstep(Azure 탄력적 작업)(Transact-SQL)을 참조하세요.

사용 권한

이 저장 프로시저는 db_owner 역할이 소유합니다. 모든 사용자에 대한 사용 권한을 부여 EXECUTE 할 수 있지만 SQL Server 업그레이드 중에 이러한 권한이 재정의될 수 있습니다.

다른 사용자에게는 데이터베이스에서 다음 SQL Server 에이전트 고정 데이터베이스 역할 msdb 중 하나가 부여되어야 합니다.

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

이러한 역할의 사용 권한에 대한 자세한 내용은 SQL Server 에이전트 고정 데이터베이스 역할을 참조하세요.

작업 단계의 작성자는 작업 단계의 프록시에 액세스할 수 있어야 합니다. sysadmin 고정 서버 역할의 멤버는 모든 프록시에 액세스할 수 있습니다. 다른 사용자에게는 프록시에 대한 액세스 권한이 명시적으로 부여되어야 합니다.

예제

다음 예제에서는 Sales 데이터베이스에 대한 읽기 전용으로 데이터베이스 액세스를 변경하는 작업 단계를 만듭니다. 또한 이 예제에서는 5회 재시도를 지정하며, 각 재시도는 5분 대기 후에 발생합니다.

참고 항목

이 예제에서는 Weekly Sales Data Backup 작업이 이미 있다고 가정합니다.

USE msdb;
GO
EXEC sp_add_jobstep
    @job_name = N'Weekly Sales Data Backup',
    @step_name = N'Set database to read only',
    @subsystem = N'TSQL',
    @command = N'ALTER DATABASE SALES SET READ_ONLY',
    @retry_attempts = 5,
    @retry_interval = 5;
GO