sp_add_job(Transact-SQL)

SQLServerAgent 서비스에서 실행하는 새 작업을 추가합니다.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

sp_add_job [ @job_name = ] 'job_name'
     [ , [ @enabled = ] enabled ] 
     [ , [ @description = ] 'description' ] 
     [ , [ @start_step_id = ] step_id ] 
     [ , [ @category_name = ] 'category' ] 
     [ , [ @category_id = ] category_id ] 
     [ , [ @owner_login_name = ] 'login' ] 
     [ , [ @notify_level_eventlog = ] eventlog_level ] 
     [ , [ @notify_level_email = ] email_level ] 
     [ , [ @notify_level_netsend = ] netsend_level ] 
     [ , [ @notify_level_page = ] page_level ] 
     [ , [ @notify_email_operator_name = ] 'email_name' ] 
          [ , [ @notify_netsend_operator_name = ] 'netsend_name' ] 
     [ , [ @notify_page_operator_name = ] 'page_name' ] 
     [ , [ @delete_level = ] delete_level ] 
     [ , [ @job_id = ] job_id OUTPUT ] 

인수

  • [ @job_name = ] 'job_name'
    작업의 이름입니다. 이 이름은 고유해야 하며 % 문자를 포함할 수 없습니다. job_name은 nvarchar(128)이며 기본값은 없습니다.

  • [ @enabled = ] enabled
    추가된 작업의 상태를 나타냅니다. enabled는 tinyint이며 기본값은 1(사용)입니다. 0으로 지정되어 있는 경우에는 작업을 사용할 수 없으며 일정에 따라 실행할 수 없습니다. 단, 수동으로 실행할 수는 있습니다.

  • [ @description = ] 'description'
    작업에 대한 설명입니다. description은 nvarchar(512)이며 기본값은 NULL입니다. description을 생략하면 "설명이 없습니다"가 사용됩니다.

  • [ @start_step_id = ] step_id
    작업을 실행하기 위한 첫 단계의 ID입니다. step_id는 int이며 기본값은 1입니다.

  • [ @category_name = ] 'category'
    작업의 범주입니다. category는 sysname이며 기본값은 NULL입니다.

  • [ @category_id = ] category_id
    작업 범주를 지정하는 데 필요한 언어 독립 메커니즘입니다. category_id는 int이며 기본값은 NULL입니다.

  • [ @owner_login_name = ] 'login'
    작업을 소유하는 로그인의 이름입니다. login은 sysname이며 기본값은 NULL로 현재 로그인 이름으로 해석됩니다. sysadmin 고정 서버 역할의 멤버만 @owner_login_name의 값을 설정하거나 변경할 수 있습니다. sysadmin 역할의 멤버가 아닌 사용자가 @owner_login_name의 값을 설정하거나 변경하면 이 저장 프로시저의 실행이 실패하고 오류가 반환됩니다.

  • [ @notify_level_eventlog = ] eventlog_level
    Microsoft Windows 응용 프로그램 로그에 이 작업에 대한 항목을 저장할 시간을 나타내는 값입니다. eventlog_level은 int이며 다음 값 중 하나일 수 있습니다.

    설명

    0

    안 함

    1

    성공한 경우

    2(기본값)

    실패한 경우

    3

    항상

  • [ @notify_level_email = ] email_level
    이 작업 완료 시 전자 메일을 보낼 시간을 나타내는 값입니다. email_level은 int이며 기본값은 0으로 안 함을 나타냅니다. email_level은 eventlog_level과 같은 값을 사용합니다.

  • [ @notify_level_netsend = ] netsend_level
    이 작업 완료 시 네트워크 메시지를 보낼 시간을 나타내는 값입니다. netsend_level은 int이며 기본값은 0으로 안 함을 나타냅니다. netsend_level은 eventlog_level과 같은 값을 사용합니다.

  • [ @notify_level_page = ] page_level
    이 작업이 완료될 때 페이지를 보낼 시간을 나타내는 값입니다. page_level은 int이며 기본값은 0으로 안 함을 나타냅니다. page_level은 eventlog_level과 같은 값을 사용합니다.

  • [ @notify_email_operator_name = ] 'email_name'
    email_level에 도달 시 전자 메일을 보낼 사람의 전자 메일 이름입니다. email_name은 sysname이며 기본값은 NULL입니다.

  • [ @notify_netsend_operator_name = ] 'netsend_name'
    이 작업 완료 시 네트워크 메시지를 보낼 운영자의 이름입니다. netsend_name은 sysname이며 기본값은 NULL입니다.

  • [ @notify_page_operator_name = ] 'page_name'
    이 작업 완료 시 호출할 사람의 이름입니다. page_name은 sysname이며 기본값은 NULL입니다.

  • [ @delete_level = ] delete_level
    작업을 삭제할 시간을 나타내는 값입니다. delete_value는 int이며 기본값은 0으로 안 함으로 나타냅니다. delete_level은 eventlog_level과 같은 값을 사용합니다.

    [!참고]

    delete_level이 3인 경우 정의된 일정에 관계없이 작업이 한 번만 실행됩니다. 또한 작업 자체를 삭제하는 경우 작업에 대한 모든 기록도 함께 삭제됩니다.

  • [ @job_id = ] job_idOUTPUT
    성공적으로 생성된 작업에 할당되는 작업 ID입니다. job_id는 uniqueidentifier 유형의 출력 변수이며 기본값은 NULL입니다.

반환 코드 값

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

결과 집합

없음

주의

@originating_serversp_add_job에 있지만 인수 항목에 나열되어 있지 않습니다. @originating_server는 내부 사용을 위해 예약되어 있습니다.

sp_add_job을 실행하여 작업을 추가한 다음 sp_add_jobstep을 사용하여 작업에 대한 동작을 수행하는 단계를 추가할 수 있습니다. 또한 sp_add_jobschedule을 사용하여 SQL Server 에이전트 서비스가 작업을 실행하는 데 사용하는 일정을 만들 수 있습니다. sp_add_jobserver를 사용하여 작업이 실행되는 SQL Server 인스턴스를 설정하고 sp_delete_jobserver를 사용하여 SQL Server 인스턴스에서 작업을 제거합니다.

작업이 다중 서버 환경에 있는 하나 이상의 대상 서버에서 실행되면 sp_apply_job_to_targets를 사용하여 작업에 대한 대상 서버 또는 대상 서버 그룹을 설정합니다. 대상 서버 또는 대상 서버 그룹에서 작업을 제거하려면 sp_remove_job_from_targets를 사용합니다.

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

사용 권한

이 저장 프로시저를 실행하려면 사용자는 sysadmin 고정 서버 역할의 멤버이거나 msdb 데이터베이스에 있는 다음 SQL Server 에이전트 고정 데이터베이스 역할 중 하나를 부여 받아야 합니다.

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

이러한 각 고정 데이터베이스 역할과 관련된 특정 사용 권한에 대한 자세한 내용은 SQL Server 에이전트 고정 데이터베이스 역할를 참조하십시오.

sysadmin 고정 서버 역할의 멤버만 @owner_login_name의 값을 설정하거나 변경할 수 있습니다. sysadmin 역할의 멤버가 아닌 사용자가 @owner_login_name의 값을 설정하거나 변경하면 이 저장 프로시저의 실행이 실패하고 오류가 반환됩니다.

1.작업 추가

다음 예에서는 NightlyBackups라는 새 작업을 추가합니다.

USE msdb ;
GO

EXEC dbo.sp_add_job
    @job_name = N'NightlyBackups' ;
GO

2.호출기, 전자 메일 및 Net Send 정보를 사용한 작업 추가

다음 예에서는 호출기, 전자 메일 또는 네트워크 팝업 메시지를 사용하여 François Ajenstat에게 알리는 Ad hoc Sales Data Backup이라는 작업을 만들고 성공적으로 완료되면 해당 작업을 삭제합니다.

[!참고]

다음 예에서는 François Ajenstat라는 운영자와 françoisa라는 로그인이 이미 있는 것으로 가정합니다.

USE msdb ;
GO

EXEC dbo.sp_add_job
    @job_name = N'Ad hoc Sales Data Backup', 
    @enabled = 1,
    @description = N'Ad hoc backup of sales data',
    @owner_login_name = N'françoisa',
    @notify_level_eventlog = 2,
    @notify_level_email = 2,
    @notify_level_netsend = 2,
    @notify_level_page = 2,
    @notify_email_operator_name = N'François Ajenstat',
    @notify_netsend_operator_name = N'François Ajenstat', 
    @notify_page_operator_name = N'François Ajenstat',
    @delete_level = 1 ;
GO

참고 항목

참조

sp_add_schedule(Transact-SQL)

sp_add_jobstep(Transact-SQL)

sp_add_jobserver(Transact-SQL)

sp_apply_job_to_targets(Transact-SQL)

sp_delete_job(Transact-SQL)

sp_delete_jobserver(Transact-SQL)

sp_remove_job_from_targets(Transact-SQL)

sp_help_job(Transact-SQL)

sp_help_jobstep(Transact-SQL)

sp_update_job(Transact-SQL)

시스템 저장 프로시저(Transact-SQL)