Share via


sp_add_job (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL Managed Instance

Maakt een nieuwe taak aan die wordt uitgevoerd door de SQL Server Agent-service.

Transact-SQL syntaxis-conventies

Belangrijk

Op Azure SQL Managed Instanceworden de meeste, maar niet alle FUNCTIES van SQL Server Agent momenteel ondersteund. Zie de verschillen tussen Azure SQL Managed Instance T-SQL en SQL Server voor details.

Syntaxis

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

De naam van de taak. De naam moet uniek zijn en mag het percentage (%) karakter niet bevatten. @job_name is nvarchar(128), zonder standaard. Verplicht.

@enabled

Geeft de status van de toegevoegde baan aan. ingeschakeld isTinyint, met standaard 1 (ingeschakeld). Als 0, is de taak niet ingeschakeld en draait niet volgens het schema; deze kan echter handmatig worden uitgevoerd.

@description

De beschrijving van de functie. @description is nvarchar(512), met een standaard van NULL. Als @description wordt weggelaten, N'No description available' wordt gebruikt.

@start_step_id

Het identificatienummer van de eerste stap die voor de taak moet worden uitgevoerd. @start_step_id is int, met als standaard .1

@category_name

De categorie voor de baan. @category_name is sysname, met als standaard NULL.

@category_id

Een taalonafhankelijk mechanisme om een taakcategorie te specificeren. @category_id is int, met als standaard .NULL

@owner_login_name

De naam van de login die de taak bezit. @owner_login_name is systeemnaam, met standaard , NULLwat wordt geïnterpreteerd als de huidige inlognaam. Alleen leden van de sysadmin-vaste serverrol kunnen de waarde voor @owner_login_name instellen of wijzigen. Als gebruikers die geen lid zijn van de sysadmin-rol de waarde van @owner_login_name instellen of wijzigen, mislukt de uitvoering van deze opgeslagen procedure en wordt er een foutmelding teruggegeven.

@notify_level_eventlog

Een waarde die aangeeft wanneer een vermelding in het Microsoft Windows-applicatielogboek voor deze taak moet worden geplaatst. @notify_level_eventlog is int, en kan een van deze waarden zijn:

Waarde Description
0 Nooit
1 Bij succes
2 (standaard) Bij falen
3 Altijd

@notify_level_email

Een waarde die aangeeft wanneer een e-mail moet worden verzonden na het voltooien van deze klus. @notify_level_email is int, met een standaard van 0, wat aangeeft nooit. @notify_level_email gebruikt dezelfde waarden als @notify_level_eventlog.

@notify_level_netsend

Een waarde die aangeeft wanneer een netwerkbericht moet worden verzonden na voltooiing van deze taak. @notify_level_netsend is int, met een standaard van 0, wat nooit aangeeft. @notify_level_netsend gebruikt dezelfde waarden als @notify_level_eventlog.

@notify_level_page

Een waarde die aangeeft wanneer een pagina moet worden verzonden na voltooiing van deze taak. @notify_level_page is int, met een standaard van 0, wat aangeeft nooit. @notify_level_page gebruikt dezelfde waarden als @notify_level_eventlog.

@notify_email_operator_name

De e-mailnaam van de persoon naar wie je e-mail moet sturen wanneer @notify_email_operator_name wordt bereikt. @notify_email_operator_name is een systeemnaam, met als standaard .NULL

@notify_netsend_operator_name

De naam van de operator naar wie het netwerkbericht wordt gestuurd na voltooiing van deze taak. @notify_netsend_operator_name is systeemnaam, met als standaard .NULL

@notify_page_operator_name

De naam van de persoon die na voltooiing van deze klus wordt opgeroepen. @notify_page_operator_name is sysname, met als standaard .NULL

@delete_level

Een waarde die aangeeft wanneer de taak verwijderd moet worden. delete_value is int, met als standaard 0, wat betekent nooit. @delete_level gebruikt dezelfde waarden als @notify_level_eventlog.

Opmerking

Wanneer @delete_level is 3, wordt de taak slechts één keer uitgevoerd, ongeacht welke schema's voor de taak zijn gedefinieerd. Bovendien, als een taak zichzelf verwijdert, wordt ook alle geschiedenis van de job verwijderd.

uitvoer @job_id

Het functieidentificatienummer dat aan de functie is toegewezen als het succesvol is aangemaakt. @job_id is een uitvoervariabele van het type uniqueidentifier, met als standaard .NULL

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Resultaatset

Geen.

Opmerkingen

@originating_server bestaat in sp_add_job, maar wordt niet vermeld onder Argumenten. @originating_server is gereserveerd voor intern gebruik.

Nadat sp_add_job is uitgevoerd om een taak toe te voegen, sp_add_jobstep kan worden gebruikt om stappen toe te voegen die de activiteiten voor de taak uitvoeren. sp_add_jobschedule kan worden gebruikt om het schema te maken dat de SQL Server Agent-service gebruikt om de taak uit te voeren.

Gebruik sp_add_jobserver om de SQL Server-instantie in te stellen waar de taak wordt uitgevoerd, en sp_delete_jobserver om de taak uit de SQL Server-instantie te verwijderen. Als de taak wordt uitgevoerd op een of meer doelservers in een multiserveromgeving, gebruik sp_apply_job_to_targets dan om de doelservers of doelservergroepen voor de taak in te stellen. Om taken van doelservers of doelservergroepen te verwijderen, gebruik sp_remove_job_from_targetsje . De Multi Server Administration (MSX/TSX) functie wordt niet ondersteund op Azure SQL Managed Instance.

SQL Server Management Studio biedt een eenvoudige, grafische manier om taken te beheren en is de aanbevolen manier om de taakinfrastructuur te maken en te beheren.

Deze opgeslagen procedure deelt de naam van sp_add_job met een vergelijkbaar object voor de Azure Elastic Jobs-service voor Azure SQL Database. Voor informatie over de elastic jobs-versie, zie jobs.sp_add_job (Azure Elastic Jobs).

Permissions

Je kunt rechten verlenen EXECUTE op deze procedure, maar deze rechten kunnen worden overschreven tijdens een SQL Server-upgrade.

Andere gebruikers moeten een van de volgende vaste SQL Server Agent-databaserollen in de msdb database krijgen:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

Voor details over de rechten van deze rollen, zie SQL Server Agent Fixed Database Roles.

Alleen leden van de sysadmin-vaste serverrol kunnen de waarde voor @owner_login_name instellen of wijzigen. Als gebruikers die geen lid zijn van de sysadmin-rol de waarde van @owner_login_name instellen of wijzigen, mislukt de uitvoering van deze opgeslagen procedure en wordt er een foutmelding teruggegeven.

Voorbeelden

Eén. Voeg een baan toe

Dit voorbeeld voegt een nieuwe taak toe genaamd NightlyBackups.

USE msdb;
GO

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

B. Voeg een baan toe met pager, e-mail en internetinformatie

Dit voorbeeld creëert een taak met de naam Ad hoc Sales Data Backup die (via pieper, e-mail of netwerk-pop-upbericht) een melding geeft François Ajenstat als de taak faalt, en verwijdert de taak na succesvolle voltooiing.

Opmerking

Dit voorbeeld gaat ervan uit dat er al een operator met de naam François Ajenstat en een login met naam françoisa bestaan.

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