sp_add_job (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Skapar ett nytt jobb som körs av SQL Server Agent-tjänsten.

Transact-SQL syntaxkonventioner

Viktigt!

Azure SQL Managed Instancestöds de flesta, men inte alla SQL Server Agent-funktioner för närvarande. Se Azure SQL Managed Instance T-SQL-skillnader från SQL Server för detaljer.

Syntax

sp_add_job
         [ @job_name = ] N'job_name'
     [ , [ @enabled = ] enabled ]
     [ , [ @description = ] N'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 ]
[ ; ]

Arguments

@job_name

Namnet på tjänsten. Namnet måste vara unikt och får inte innehålla procentuell (%) tecknet. @job_name är nvarchar(128), utan standard. Obligatoriskt.

@enabled

Indikerar statusen för det tillagda jobbet. Aktiverat är Tinyint, med standardinställningen ( 1 aktiverad). Om 0, är jobbet inte aktiverat och körs inte enligt schemat; dock kan det köras manuellt.

@description

Beskrivningen av jobbet. @description är nvarchar(512), med standardvärdet .NULL Om @description utelämnas används N'No description available' den.

@start_step_id

Identifieringsnumret för det första steget som ska utföras för jobbet. @start_step_id är int, med standardvärdet .1

@category_name

Kategorin för jobbet. @category_name är sysname, med standardvärdet .NULL

@category_id

En språkoberoende mekanism för att specificera en jobbkategori. @category_id är int, med standardvärdet .NULL

@owner_login_name

Namnet på inloggningen som äger jobbet. @owner_login_name är sysname, med standardvärdet , NULLvilket tolkas som det aktuella inloggningsnamnet. Endast medlemmar i sysadmin-fastserverrollen kan sätta eller ändra värdet för @owner_login_name. Om användare som inte är medlemmar i sysadmin-rollen sätter eller ändrar värdet på @owner_login_name, misslyckas exekveringen av denna lagrade procedur och ett fel returneras.

@notify_level_eventlog

Ett värde som anger när en post ska placeras i Microsoft Windows applikationslogg för detta jobb. @notify_level_eventlog är int, och kan vara ett av dessa värden:

Värde Description
0 Aldrig
1 Vid framgång
2 (standardinställning) Vid fel
3 Alltid

@notify_level_email

Ett värde som anger när ett e-postmeddelande ska skickas när detta jobb är slutfört. @notify_level_email är int, med standardvärdet , 0vilket indikerar aldrig. @notify_level_email använder samma värden som @notify_level_eventlog.

@notify_level_netsend

Ett värde som anger när ett nätverksmeddelande ska skickas efter att detta jobb är slutfört. @notify_level_netsend är int, med standardvärdet , 0vilket indikerar aldrig. @notify_level_netsend använder samma värden som @notify_level_eventlog.

@notify_level_page

Ett värde som anger när en sida ska skickas när detta jobb är slutfört. @notify_level_page är int, med en standard på 0, vilket indikerar aldrig. @notify_level_page använder samma värden som @notify_level_eventlog.

@notify_email_operator_name

E-postadressens namn på personen som ska skickas e-post till när @notify_email_operator_name nås. @notify_email_operator_name är sysname, med standardvärdet .NULL

@notify_netsend_operator_name

Namnet på operatören som nätverksmeddelandet skickas till efter slutförandet av detta jobb. @notify_netsend_operator_name är sysname, med standardvärdet .NULL

@notify_page_operator_name

Namnet på personen som ska ringas när detta uppdrag är slutfört. @notify_page_operator_name är sysname, med standardvärdet .NULL

@delete_level

Ett värde som anger när jobbet ska tas bort. delete_value är int, med standardvärdet , 0vilket betyder aldrig. @delete_level använder samma värden som @notify_level_eventlog.

Anmärkning

När @delete_level är 3, körs jobbet endast en gång, oavsett vilka scheman som definieras för jobbet. Dessutom, om ett jobb raderar sig självt, raderas även all historik för jobbet.

@job_id UTDATA

Jobbets identifieringsnummer tilldelats jobbet om det skapas framgångsrikt. @job_id är en utdatavariabel av typen uniqueidentifier, med standardvärdet .NULL

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Resultatuppsättning

Ingen.

Anmärkningar

@originating_server finns i sp_add_job, men listas inte under Argument. @originating_server är reserverad för internt bruk.

Efter sp_add_job att ha körts för att lägga till ett jobb sp_add_jobstep kan det användas för att lägga till steg som utför aktiviteterna för jobbet. sp_add_jobschedule kan användas för att skapa schemat som SQL Server Agent-tjänsten använder för att köra jobbet.

Använd sp_add_jobserver för att ställa in SQL Server-instansen där jobbet körs, och sp_delete_jobserver för att ta bort jobbet från SQL Server-instansen. Om jobbet körs på en eller flera målservrar i en multiservermiljö, använd sp_apply_job_to_targets för att ställa in målservrarna eller målservergrupper för jobbet. För att ta bort jobb från målservrar eller målservergrupper, använd sp_remove_job_from_targets. Funktionen Multi Server Administration (MSX/TSX) stöds inte på Azure SQL Managed Instance.

SQL Server Management Studio är ett enkelt, grafiskt sätt att hantera jobb och är det rekommenderade sättet att skapa och hantera jobbinfrastrukturen.

Denna lagrade propud delar namnet på sp_add_job med ett liknande objekt för Azure Elastic Jobs-tjänsten för Azure SQL Database. För information om elastic jobs-versionen, se jobs.sp_add_job (Azure Elastic Jobs).

Permissions

Du kan ge EXECUTE behörigheter för denna procedur, men dessa behörigheter kan åsidosättas vid en SQL Server-uppgradering.

Andra användare måste tilldelas en av följande SQL Server Agent-fasta databasroller i databasen msdb :

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

För detaljer om behörigheterna för dessa roller, se SQL Server Agent Fixed Database Roles.

Endast medlemmar i sysadmin-fastserverrollen kan sätta eller ändra värdet för @owner_login_name. Om användare som inte är medlemmar i sysadmin-rollen sätter eller ändrar värdet på @owner_login_name, misslyckas exekveringen av denna lagrade procedur och ett fel returneras.

Examples

A. Lägg till ett jobb

Detta exempel lägger till ett nytt jobb som heter NightlyBackups.

USE msdb;
GO

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

B. Lägg till ett jobb med personsökare, e-post och internetinformation

Detta exempel skapar ett jobb som Ad hoc Sales Data Backup heter och meddelar François Ajenstat (via personsökare, e-post eller nätverkspopup) om jobbet misslyckas, och raderar jobbet när det slutförs.

Anmärkning

Detta exempel antar att en operatör med namn François Ajenstat och en inloggning redan françoisa existerar.

USE msdb;
GO

EXECUTE 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