Delen via


sp_add_jobstep (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL Managed Instance

Voegt een stap (bewerking) toe aan een SQL Server Agent-taak.

Transact-SQL syntaxis-conventies

Belangrijk

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

Syntaxis

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 ]
[ ; ]

Arguments

[ @job_id = ] 'job_id'

Het identificatienummer van de taak waaraan de stap moet worden toegevoegd. @job_id is uniqueidentifier, met als standaard .NULL

Zowel @job_id als @job_name moeten worden gespecificeerd, maar beide kunnen niet worden gespecificeerd.

[ @job_name = ] N'job_name'

De naam van de taak waaraan de stap wordt toegevoegd. @job_name is sysname, met als standaard .NULL

Zowel @job_id als @job_name moeten worden gespecificeerd, maar beide kunnen niet worden gespecificeerd.

[ @step_id = ] step_id

Het sequentieidentificatienummer voor de taakstap. @step_id is int, met als standaard .NULL Stapidentificatienummers beginnen bij 1 en nemen toe zonder gaten. Als een stap in de bestaande reeks wordt ingevoegd, worden de volgnummers automatisch aangepast. Er wordt een waarde gegeven als @step_id niet wordt gespecificeerd.

[ @step_name = ] N'step_name'

De naam van de trede. @step_name is sysname, zonder standaard.

[ @subsystem = ] N'subsysteem'

Het subsysteem dat door de SQL Server Agent-service wordt gebruikt om @command uit te voeren. @subsystem is nvarchar(40) en kan een van deze waarden zijn.

Waarde Description
ActiveScripting Actief Script

Belangrijk: Deze functie zal in een toekomstige versie van SQL Server worden verwijderd. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie.
CmdExec Besturingssysteemcommando of uitvoerbaar programma
Distribution Replicatie Distributieagent-taak
Snapshot Replicatie Snapshot Agent-job
LogReader Replicatie Log Reader Agent taak
Merge Replicatie Merge Agent-taak
QueueReader Replicatie Queue Reader Agent-taak
ANALYSISQUERY Analysediensten query (MDX, DMX)
ANALYSISCOMMAND Analysis Services-commando (XMLA)
SSIS Implementatie van het Integration Services-pakket
PowerShell PowerShell Script
TSQL (standaard) Transact-SQL verklaring

[ @command = ] N'commando'

De commando's die door de SQL Server Agent-service via @subsystem worden uitgevoerd. @command is nvarchar(max), met een standaard van NULL. SQL Server Agent biedt tokensubstitutie, wat je dezelfde flexibiliteit geeft als variabelen bij het schrijven van softwareprogramma's.

Een escape-macro moet alle tokens begeleiden die in jobstappen worden gebruikt, anders falen die jobstappen. Daarnaast moet je nu tokennamen tussen haakjes plaatsen en een dollarteken ($) aan het begin van de tokensyntaxis plaatsen. Voorbeeld: $(ESCAPE_<macro name>(DATE)).

Voor meer informatie over deze tokens en het bijwerken van je taakstappen om de nieuwe tokensyntaxis te gebruiken, zie Gebruik Tokens in Jobstappen.

Elke Windows-gebruiker met schrijfrechten op het Windows Event Log kan toegang krijgen tot taakstappen die worden geactiveerd door SQL Server Agent-waarschuwingen of WMI-waarschuwingen. Om dit beveiligingsrisico te vermijden, zijn SQL Server Agent-tokens die kunnen worden gebruikt in taken die door waarschuwingen worden geactiveerd, standaard uitgeschakeld. Deze tokens zijn: , , , , A-SEV, A-MSG, en WMI(<property>). A-ERRA-SVRA-DBN In deze release wordt het gebruik van tokens verlengd naar alle waarschuwingen.

Als je deze tokens moet gebruiken, zorg er dan eerst voor dat alleen leden van vertrouwde Windows-beveiligingsgroepen, zoals de Beheerdersgroep, schrijfrechten hebben op het Event Log van de computer waar SQL Server zich bevindt. Klik vervolgens met de rechtermuisknop op SQL Server Agent in Object Explorer, selecteer Eigenschappen, en selecteer op de pagina Alert Systemtokens vervangen voor alle taakreacties op waarschuwingen om deze tokens in te schakelen.

[ @additional_parameters = ] N'additional_parameters'

Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.

[ @cmdexec_success_code = ] cmdexec_success_code

De waarde die door een CmdExec subsysteemcommando wordt teruggegeven om aan te geven dat @command succesvol is uitgevoerd. @cmdexec_success_code is int, met als standaard .0

[ @on_success_action = ] on_success_action

De actie die uitgevoerd moet worden als de stap slaagt. @on_success_action is heel klein en kan een van deze waarden zijn.

Waarde Beschrijving (actie)
1 (standaard) Stop met succes
2 Stop met falen
3 Ga naar de volgende stap
4 Ga naar stap @on_success_step_id

[ @on_success_step_id = ] on_success_step_id

De ID van de stap in deze taak die uitgevoerd moet worden als de stap slaagt en @on_success_action is 4. @on_success_step_id is int, met als standaard .0

[ @on_fail_action = ] on_fail_action

De actie die je moet uitvoeren als de stap faalt. @on_fail_action is heel klein en kan een van deze waarden zijn.

Waarde Beschrijving (actie)
1 Stop met succes
2 (standaard) Stop met falen
3 Ga naar de volgende stap
4 Ga naar stap @on_fail_step_id

[ @on_fail_step_id = ] on_fail_step_id

De ID van de stap in deze taak die moet worden uitgevoerd als de stap faalt en @on_fail_action is 4. @on_fail_step_id is int, met als standaard .0

[ @server = ] N'server'

Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.

[ @database_name = ] N'database_name'

De naam van de database waarin een Transact-SQL stap moet worden uitgevoerd. @database_name is een systeemnaam, met standaard , NULLin welk geval de master database wordt gebruikt. Namen die tussen haakjes ([]) staan, zijn niet toegestaan. Voor een ActiveX-taakstap is de @database_name de naam van de scripttaal die de stap gebruikt.

[ @database_user_name = ] N'database_user_name'

De naam van het gebruikersaccount dat gebruikt moet worden bij het uitvoeren van een Transact-SQL stap. @database_user_name is een systeemnaam, met als standaard NULL. Wanneer @database_user_name is NULL, loopt de stap in de gebruikerscontext van de jobeigenaar op @database_name. SQL Server Agent bevat deze parameter alleen als de taakeigenaar een SQL Server-sysadmin is. Als dat zo is, wordt de opgegeven Transact-SQL stap uitgevoerd in de context van de opgegeven SQL Server-gebruikersnaam. Als de taak-eigenaar geen SQL Server-sysadmin is, wordt de Transact-SQL stap altijd uitgevoerd in de context van de login die deze taak bezit, en wordt de @database_user_name-parameter genegeerd.

[ @retry_attempts = ] retry_attempts

Het aantal pogingen om opnieuw te proberen als deze stap faalt. @retry_attempts is int, met een standaard van 0, wat aangeeft dat er geen herpogingen zijn.

[ @retry_interval = ] retry_interval

De hoeveelheid tijd in minuten tussen herpogingen. @retry_interval is int, met een standaard van 0, wat een 0-minuut interval aangeeft.

[ @os_run_priority = ] os_run_priority

Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.

[ @output_file_name = ] N'output_file_name'

De naam van het bestand waarin de uitvoer van deze stap wordt opgeslagen. @output_file_name is nvarchar(200), met een standaard van NULL. @output_file_name kan een of meer van de tokens onder @command bevatten. Deze parameter is alleen geldig met commando's die draaien op de Subsystemen Transact-SQL CmdExec, , PowerShell, Integration Services of Analysis Services.

[ @flags = ] vlaggen

Een optie die gedrag aanstuurt. @flags is int, en kan een van deze waarden zijn.

Waarde Description
0 (standaard) Overschrijf uitvoerbestand
2 Toevoegen aan uitvoerbestand
4 Schrijf Transact-SQL taakstap-output naar stapgeschiedenis
8 Log schrijven naar tabel (bestaande geschiedenis overschrijven)
16 Log schrijven naar tabel (toevoegen aan bestaande geschiedenis)
32 Schrijf alle uitvoer naar de jobgeschiedenis
64 Maak een Windows-event aan om te gebruiken als signaal voor de cmd taakstap om af te breken

[ @proxy_id = ] proxy_id

Het ID-nummer van de proxy waarmee de taakstap draait. @proxy_id is int, met als standaard .NULL Als er geen @proxy_id is gespecificeerd, geen @proxy_name en geen @database_user_name is gespecificeerd, loopt de taakstap als het serviceaccount voor SQL Server Agent.

[ @proxy_name = ] N'proxy_name'

De naam van de proxy waarop de taakstap draait. @proxy_name is systeemnaam, met als standaard .NULL Als er geen @proxy_id is gespecificeerd, geen @proxy_name en geen @database_user_name is gespecificeerd, loopt de taakstap als het serviceaccount voor SQL Server Agent.

[ @step_uid = ] 'step_uid' UITVOER

@step_uid is een OUTPUT-parameter van het type uniqueidentifier.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Resultaatset

Geen.

Opmerkingen

sp_add_jobstep Moet vanuit de msdb database worden uitgevoerd.

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.

Standaard draait een taakstap als het serviceaccount voor SQL Server Agent, tenzij een andere proxy is gespecificeerd. Een vereiste voor dit account is dat je lid bent van de sysadmin vaste beveiligingsrol.

Een proxy kan worden geïdentificeerd door @proxy_name of @proxy_id.

Deze opgeslagen procedure deelt de naam van sp_add_jobstep 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_jobstep (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.

De maker van de jobstap moet toegang hebben tot de proxy voor de jobstap. Leden van de sysadmin-vaste server rol hebben toegang tot alle proxies. Andere gebruikers moeten expliciet toegang krijgen tot een proxy.

Voorbeelden

Het volgende voorbeeld creëert een taakstap die de database-toegang verandert naar alleen-lezen voor de Sales-database. Daarnaast specificeert dit voorbeeld vijf herpogingen, waarbij elke poging na een wachttijd van 5 minuten plaatsvindt.

Opmerking

Dit voorbeeld gaat ervan uit dat de Weekly Sales Data Backup baan al bestaat.

USE msdb;
GO

EXECUTE 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