sp_add_jobstep (Transact-SQL)

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

Lägger till ett steg (operation) till ett SQL Server Agent-jobb.

Transact-SQL syntaxkonventioner

Viktigt!

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

Syntax

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'

Identifieringsnumret för jobbet som ska läggas till steget. @job_id är unik identifierare, med standardvärdet .NULL

Antingen @job_id eller @job_name måste specificeras, men båda kan inte specificeras.

[ @job_name = ] N'job_name'

Namnet på jobbet som ska läggas till steget. @job_name är sysname, med standardvärdet .NULL

Antingen @job_id eller @job_name måste specificeras, men båda kan inte specificeras.

[ @step_id = ] step_id

Sekvensidentifieringsnumret för jobbsteget. @step_id är int, med standardvärdet .NULL Stegidentifieringsnummer börjar vid 1 och ökar utan luckor. Om ett steg infogas i den befintliga sekvensen justeras sekvensnumren automatiskt. Ett värde anges om @step_id inte specificeras.

[ @step_name = ] N'step_name'

Namnet på trappsteget. @step_name är sysname, utan standard.

[ @subsystem = ] N'delsystem'

Delsystemet som används av SQL Server Agent-tjänsten för att köra @command. @subsystem är nvarchar(40) och kan vara ett av dessa värden.

Värde Description
ActiveScripting Aktivt skript

Viktig: Denna funktion kommer att tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.
CmdExec Operativsystemkommando eller körbart program
Distribution Replikationsdistributionsagentens jobb
Snapshot Replikationssnapshot-agentjobbet
LogReader Replikationsloggläsaragentens jobb
Merge Replikationssammanslagningsagent-jobbet
QueueReader Replikationskö-läsaragentjobbet
ANALYSISQUERY Analystjänst-fråga (MDX, DMX)
ANALYSISCOMMAND Analysis Services-kommandot (XMLA)
SSIS Integration Services-paketexekvering
PowerShell PowerShell-skript
TSQL (standardinställning) Transact-SQL uttalande

[ @command = ] N'command'

Kommandon som ska utföras av SQL Server Agent-tjänsten via @subsystem. @command är nvarchar(max), med en standard på NULL. SQL Server Agent erbjuder tokensubstitution, vilket ger dig samma flexibilitet som variabler ger när du skriver mjukvaruprogram.

Ett escape-makro måste följa med alla tokens som används i jobbsteg, annars misslyckas dessa jobbsteg. Dessutom måste du nu omsluta tokennamn inom parentes och placera ett dollartecken ($) i början av tokensyntaxen. Till exempel: $(ESCAPE_<macro name>(DATE)).

För mer information om dessa tokens och uppdatering av dina jobbsteg för att använda den nya tokensyntaxen, se Använd tokens i jobbsteg.

Alla Windows-användare med skrivbehörighet på Windows Event Log kan komma åt jobbsteg som aktiveras av SQL Server Agent-varningar eller WMI-varningar. För att undvika denna säkerhetsrisk inaktiveras SQL Server Agent-tokens som kan användas i jobb aktiverade av varningar som standard. Dessa tokens är: A-DBN, , , A-ERR, A-SEV, A-MSG, och WMI(<property>)A-SVR. I denna version utökas användningen av tokens till att omfatta alla varningar.

Om du behöver använda dessa tokens, se först till att endast medlemmar i betrodda Windows-säkerhetsgrupper, såsom Administratörsgruppen, har skrivbehörigheter på händelseloggen för datorn där SQL Server finns. Högerklicka sedan på SQL Server Agent i Object Explorer, välj Egenskaper, och på sidan Alert System , välj Ersätt tokens för alla jobbsvar på varningar för att aktivera dessa tokens.

[ @additional_parameters = ] N'additional_parameters'

Identifieras endast i informationssyfte. Stöds inte. Framtida kompatibilitet garanteras inte.

[ @cmdexec_success_code = ] cmdexec_success_code

Värdet returneras av ett CmdExec delsystemkommando för att indikera att @command kört framgångsrikt. @cmdexec_success_code är int, med en standard på 0.

[ @on_success_action = ] on_success_action

Handlingen som ska utföras om steget lyckas. @on_success_action är pyttelitet och kan vara ett av dessa värden.

Värde Beskrivning (åtgärd)
1 (standardinställning) Sluta med framgång
2 Sluta med misslyckande
3 Gå till nästa steg
4 Gå till steg @on_success_step_id

[ @on_success_step_id = ] on_success_step_id

ID:t för steget i detta jobb som ska utföras om steget lyckas och @on_success_action är 4. @on_success_step_id är int, med standardvärdet .0

[ @on_fail_action = ] on_fail_action

Åtgärden som ska utföras om steget misslyckas. @on_fail_action är pyttelitet och kan vara ett av dessa värden.

Värde Beskrivning (åtgärd)
1 Sluta med framgång
2 (standardinställning) Sluta med misslyckande
3 Gå till nästa steg
4 Gå till steg @on_fail_step_id

[ @on_fail_step_id = ] on_fail_step_id

ID:t för steget i detta jobb som ska utföras om steget misslyckas och @on_fail_action är 4. @on_fail_step_id är int, med standardvärdet .0

[ @server = ] N'server'

Identifieras endast i informationssyfte. Stöds inte. Framtida kompatibilitet garanteras inte.

[ @database_name = ] N'database_name'

Namnet på databasen där ett Transact-SQL steg ska utföras. @database_name är sysname, med standard , NULLi vilket fall databasen master används. Namn som är inslutna inom parentes ([]) är inte tillåtna. För ett ActiveX-jobbsteg är @database_name namnet på skriptspråket som steget använder.

[ @database_user_name = ] N'database_user_name'

Namnet på användarkontot som ska användas vid exekvering av ett Transact-SQL steg. @database_user_name är sysname, med standardvärdet .NULL När @database_user_name är NULL, körs steget i jobbägarens användarkontext på @database_name. SQL Server Agent inkluderar denna parameter endast om jobbägaren är en SQL Server-sysadmin. Om så är fallet utförs det givna Transact-SQL steget i kontexten av det givna SQL Server-användarnamnet. Om jobbägaren inte är en SQL Server-sysadmin körs alltid Transact-SQL-steget i kontexten av inloggningen som äger detta jobb, och parametern @database_user_name ignoreras.

[ @retry_attempts = ] retry_attempts

Antalet försök att använda om detta steg misslyckas. @retry_attempts är int, med standardvärdet , 0vilket indikerar inga omförsök.

[ @retry_interval = ] retry_interval

Tiden i minuter mellan försöken till om. @retry_interval är int, med en standard på 0, vilket indikerar ett 0-minutintervall.

[ @os_run_priority = ] os_run_priority

Identifieras endast i informationssyfte. Stöds inte. Framtida kompatibilitet garanteras inte.

[ @output_file_name = ] N'output_file_name'

Namnet på filen där utdata från detta steg sparas. @output_file_name är nvarchar(200), med en standard på NULL. @output_file_name kan inkludera en eller flera av tokens som listas under @command. Denna parameter är endast giltig med kommandon som körs på Transact-SQL-, CmdExec, PowerShell, Integration Services eller Analysis Services-delsystemen.

[ @flags = ] flaggor

Ett alternativ som styr beteendet. @flags är int, och kan vara ett av dessa värden.

Värde Description
0 (standardinställning) Skriv över utdatafilen
2 Lägg till i utdatafilen
4 Skriv Transact-SQL jobbstegsutdata till steghistorik
8 Skriv logg till tabell (skriv över befintlig historik)
16 Skriv logg till tabell (lägg till befintlig historik)
32 Skriv all output till jobbhistorik
64 Skapa en Windows-händelse som används som signal för jobbsteget cmd att avbryta

[ @proxy_id = ] proxy_id

ID-numret för proxyn som jobbsteget körs som. @proxy_id är int, med standardvärdet .NULL Om ingen @proxy_id specificeras, ingen @proxy_name anges och ingen @database_user_name specificeras, körs jobbsteget som tjänstekontot för SQL Server Agent.

[ @proxy_name = ] N'proxy_name'

Namnet på proxyn som jobbsteget körs som. @proxy_name är sysname, med standardvärdet .NULL Om ingen @proxy_id specificeras, ingen @proxy_name anges och ingen @database_user_name specificeras, körs jobbsteget som tjänstekontot för SQL Server Agent.

[ @step_uid = ] 'step_uid' UTGÅNG

@step_uid är en OUTPUT-parameter av typen uniqueidentifier.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Resultatuppsättning

Ingen.

Anmärkningar

sp_add_jobstep måste köras från databasen msdb .

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

Som standard körs ett jobbsteg som tjänstekonto för SQL Server Agent om inte en annan proxy specificeras. Ett krav för detta konto är att vara medlem i sysadmin-rollen för fast säkerhet.

En proxy kan identifieras av @proxy_name eller @proxy_id.

Denna lagrade propud delar namnet på sp_add_jobstep 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_jobstep (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.

Skaparen av jobbsteget måste ha tillgång till proxyn för jobbsteget. Medlemmar i sysadmin-fastserverrollen har tillgång till alla proxyservrar. Andra användare måste uttryckligen beviljas åtkomst till en proxy.

Examples

Följande exempel skapar ett jobbsteg som ändrar databasåtkomsten till skrivskyddad för Sales-databasen. Dessutom specificerar detta exempel fem omförsök, där varje försök ska ske efter en väntan på 5 minuter.

Anmärkning

Detta exempel förutsätter att jobbet Weekly Sales Data Backup redan existerar.

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