Megosztás a következőn keresztül:


sp_add_jobstep (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL Managed Instance

Hozzáad egy lépést (műveletet) egy SQL Server Agent feladathoz.

Transact-SQL szintaxis konvenciók

Fontos

Azure SQL Managed Instance-on a legtöbb, de nem minden SQL Server Agent munkatípus támogatott. Részletekért lásd Azure SQL Managed Instance T-SQL különbségeit az SQL Server-től .

Szemantika

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'

A feladat azonosító száma, amelyhez a lépést hozzá kell adni. @job_idaz uniqueidentifier, alapértelmezettként NULL.

Vagy @job_id , akár @job_name meg kell határozni, de mindkettőt nem lehet meghatározni.

[ @job_name = ] N'job_name'

A feladat neve, amelyhez hozzáadni kell a lépést. @job_name a sysname, alapértelmezettként NULL.

Vagy @job_id , akár @job_name meg kell határozni, de mindkettőt nem lehet meghatározni.

[ @step_id = ] step_id

A feladatlépés szekvenciaazonosító száma. @step_idint, alapértelmezés NULL. A lépésazonosító számok a lépéssel 1 kezdődnek, és növelik, rések nélkül. Ha egy lépést beillesztenek a meglévő sorozatba, a sorozatszámok automatikusan beállítódnak. Értéket adnak, ha @step_id nincs megadva.

[ @step_name = ] N'step_name'

A lépcső neve. @step_namea sysname, alapértelmezett nélkül.

[ @subsystem = ] N'alrendszer'

Az SQL Server Agent szolgáltatás által használt alrendszer, amelyet @command végrehajtásához használ. @subsystemnvarchar(40), és lehet ezek közül az értékek.

Érték Description
ActiveScripting Aktív szkript

Fontos: Ezt a funkciót eltávolítják az SQL Server jövőbeli verziójában. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.
CmdExec Operációs rendszer parancs vagy futtatható program
Distribution Replikációs Elosztási Ügynök feladat
Snapshot Replikációs Snapshot Ügynök feladat
LogReader Replikációs naplóolvasó ügynök munka
Merge Replikáció Merge Agent munka
QueueReader Replikációs sorolvasó ügynök munka
ANALYSISQUERY Analysis Services lekérdezés (MDX, DMX)
ANALYSISCOMMAND Analysis Services parancs (XMLA)
SSIS Integrációs szolgáltatások csomagvégrehajtása
PowerShell PowerShell Script
TSQL (alapértelmezett) Transact-SQL kijelentés

[ @command = ] N'command'

A parancsokat, amelyeket az SQL Server Agent szolgáltatás hajt végre a @subsystem-n keresztül. @commandnvarchar(max), alapértelmezett értékével NULL. Az SQL Server Agent token helyettesítést biztosít, ami ugyanazt a rugalmasságot biztosítja, mint a változók szoftverek írásakor.

Egy escape makrónak kell kísérnie minden token használatát, amit a feladatlépésekben használnak, különben ezek a lépések meghibásodnak. Ezen felül most már a token neveket kell zárójelbe helyezni, és a token szintaxis elejére egy dollárjelet ($) helyezni. Például: $(ESCAPE_<macro name>(DATE)).

További információkért ezekről a tokenekről és a munkalépések frissítéséért az új token szintaxis használatához, lásd: Tokenek használata a Munkalépésekben.

Bármely Windows felhasználó, aki írási joggal rendelkezik a Windows Eseménynaplóban, hozzáférhet olyan munkalépésekhez, amelyeket SQL Server Agent riasztások vagy WMI riasztások aktiválnak. Ennek a biztonsági kockázatnak a elkerülése érdekében az SQL Server Agent tokenjei, amelyeket riasztásokkal aktivált feladatokban használhatnak, alapértelmezés szerint le vannak tiltva. Ezek a tokenek: A-DBN, A-SVR, A-ERR, A-SEVA-MSG, , és WMI(<property>). Ebben a kiadásban a tokenek használata minden riasztásra kiterjed.

Ha ezeket a tokeneket kell használni, először győződjön meg róla, hogy csak a megbízható Windows biztonsági csoportok, például az Administrators csoport tagjai rendelkeznek írási jogokkal annak a számítógépnek az Event Logjára, ahol az SQL Server található. Ezután jobb kattintással az SQL Server Agentre az Objektumkezelőben, válaszd a Tulajdonságokat, és a Alert System oldalon válaszd a Helyettesítsd a jelvényeket, amelyek minden feladatválaszhoz riasztásokra érkeztek, hogy engedélyezd ezeket a tokeneket.

[ @additional_parameters = ] N'additional_parameters'

Csak tájékoztatási célokra van meghatározva. Nem támogatott. A jövőbeli kompatibilitás nem garantált.

[ @cmdexec_success_code = ] cmdexec_success_code

Az alrendszer parancs által visszaadott érték CmdExec , amely jelzi, hogy @command sikeresen végrehajtották. @cmdexec_success_codeint, alapértelmezés 0szerint .

[ @on_success_action = ] on_success_action

Az a cselekvés, amit végrehajtani, ha a lépés sikeres. @on_success_actionapróság, és lehet ezek közé az értékek.

Érték Leírás (akció)
1 (alapértelmezett) Sikeresen hagyd abba
2 Hagyd abba a kudarcot
3 Menj a következő lépésre
4 Menj a lépéshez @on_success_step_id

[ @on_success_step_id = ] on_success_step_id

A feladat végrehajtásának azonosítója, ha a lépés sikeres és @on_success_action .4 @on_success_step_idint, alapértelmezettként 0.

[ @on_fail_action = ] on_fail_action

Az a cselekvés, amit végrehajtani, ha a lépés nem sikerül. @on_fail_actionapróság, és lehet ezek közé az értékek.

Érték Leírás (akció)
1 Sikeresen hagyd abba
2 (alapértelmezett) Hagyd abba a kudarcot
3 Menj a következő lépésre
4 Menj a lépéshez @on_fail_step_id

[ @on_fail_step_id = ] on_fail_step_id

A feladat végrehajtásának azonosítója, ha a lépés sikertelenül és @on_fail_action .4 @on_fail_step_idint, alapértelmezés 0.

[ @server = ] N'kiszolgáló'

Csak tájékoztatási célokra van meghatározva. Nem támogatott. A jövőbeli kompatibilitás nem garantált.

[ @database_name = ] N'database_name'

Az adatbázis neve, amelyben Transact-SQL lépést kell végrehajtani. @database_namea sysname, alapértelmezettként NULL, ebben az esetben az master adatbázist használják. A zárójelben ([]) szereplő nevek nem engedélyezettek. Egy ActiveX feladatlépésnél a @database_name a lépés által használt szkriptnyelv neve.

[ @database_user_name = ] N'database_user_name'

A felhasználói fiók neve, amelyet egy Transact-SQL lépés végrehajtásához kell használni. @database_user_namea sysname, alapértelmezettként NULL. Ha @database_user_name , NULLa lépés a munkatulajdonos felhasználói kontextusában fut @database_name-en. Az SQL Server Agent csak akkor tartalmazza ezt a paramétert, ha a feladat tulajdonosa SQL Server rendszergazdá. Ha igen, az adott Transact-SQL lépést az adott SQL Server felhasználónév kontextusában hajtják végre. Ha a munka tulajdonosa nem SQL Server rendszergazdá, akkor a Transact-SQL lépés mindig a bejelentkezés kontextusában történik, amely ezt a feladatot birtokolja, és a @database_user_name paramétert figyelmen kívül hagyják.

[ @retry_attempts = ] retry_attempts

Hány újrapróbálkozási kísérlet van, ha ez a lépés sikertelenül működik. @retry_attemptsint, 0alapértelmezett , ami azt jelzi, hogy nincs újrapróbálkozás.

[ @retry_interval = ] retry_interval

Az újrapróbálkozás közötti percekben eltelt idő. @retry_intervalint, alapértelmezett 0érték , ami egy 0-perces intervallumot.

[ @os_run_priority = ] os_run_priority

Csak tájékoztatási célokra van meghatározva. Nem támogatott. A jövőbeli kompatibilitás nem garantált.

[ @output_file_name = ] N'output_file_name'

Az a fájl neve, amelyben ennek a lépésnek a kimenete mentődik. @output_file_namenvarchar(200), alapértelmezett értéke NULL. @output_file_name tartalmazhat egy vagy több tokent, amely a @command alatt szerepel. Ez a paraméter csak a Transact-SQL, CmdExec, PowerShell, Integrációs Szolgáltatások vagy Elemzési Szolgáltatások alrendszereken futó parancsok esetén érvényes.

[ @flags = ] zászlók

Egy olyan opció, amely irányítja a viselkedést. @flagsint, és lehet ezek közé az értékek.

Érték Description
0 (alapértelmezett) Kimeneti fájl felülírása
2 Csatolás a kimeneti fájlhoz
4 Írj Transact-SQL munkalépés kimenetet a lépéstörténetbe
8 Naplóírás táblába (felülírni a meglévő előzményeket)
16 Napló írása táblába (csatolj hozzá a meglévő történethez)
32 Minden kimenetet írj be a munkatörténetbe
64 Hozz létre egy Windows eseményt, hogy jelként jelezze a cmd munkavégzés megszakítását

[ @proxy_id = ] proxy_id

Az a proxy azonosító száma, amelyen a munkalépés fut. @proxy_idint, alapértelmezés NULLszerint . Ha nincs megadva @proxy_id , nincs @proxy_name és nincs @database_user_name , akkor a feladatlépés az SQL Server Agent szolgáltatási fiókjaként fut.

[ @proxy_name = ] N'proxy_name'

Az a proxy neve, amelyen a munkalépés fut. @proxy_namea sysname, alapértelmezettként NULL. Ha nincs megadva @proxy_id , nincs @proxy_name és nincs @database_user_name , akkor a feladatlépés az SQL Server Agent szolgáltatási fiókjaként fut.

[ @step_uid = ] 'step_uid' KIMENET

@step_uid egy OUTPUT paraméter, amely egyedi azonosító típusú.

Kódértékek visszaadása

0 (sikeres) vagy 1 (hiba).

Eredményhalmaz

Nincs.

Megjegyzések

sp_add_jobstep Le kell futtatni az msdb adatbázisból.

Az SQL Server Management Studio egyszerű, grafikus módot kínál a feladatok kezelésére, és ez a feladatinfrastruktúra létrehozásának és kezelésének ajánlott módja.

Alapértelmezés szerint egy munka lépés fut az SQL Server Agent szolgáltatási fiókjaként, hacsak nem van más proxy. Ennek a fióknak az egyik követelménye, hogy tagja legyen a rendszergazdálkodó fix biztonsági szerepnek.

Egy proxyt @proxy_name vagy @proxy_id azonosíthat.

Ez a tárolt eljárás ugyanazt a nevet sp_add_jobstep használja, amely hasonló objektumot használ az Azure SQL Database Azure Elastic Jobs szolgáltatásához. Az elastic jobs verzióról további információkért lásd a jobs.sp_add_jobstep (Azure Elastic Jobs) oldalt.

Permissions

Ezen az eljáráshoz engedélyeket adhatsz EXECUTE , de ezek az engedélyek felülbírálhatók egy SQL Server frissítés során.

Más felhasználóknak az alábbi SQL Server Agent rögzített adatbázis-szerepek egyikét kell megadniuk az msdb adatbázisban:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

Ezeknek a szerepköröknek a jogosultságairól az SQL Server Agent Fixed Database Roles oldalon találja a részleteket.

A munkalépés létrehozójának hozzáférést kell biztosítania a feladatlépés proxyjához. A rendszergazdai fix szerver tagjai hozzáférnek minden proxyhoz. Más felhasználóknak kifejezetten hozzáférést kell kapni egy proxyhoz.

Példák

A következő példa létrehoz egy feladatlépést, amely az adatbázis-hozzáférést csak olvashatóvá változtatja az értékesítési adatbázisban. Ezen felül ez a példa öt újrapróbálkozási kísérletet jelöl meg, amelyek mindegyike 5 perces várakozás után történik.

Megjegyzés:

Ez a példa feltételezi, hogy a Weekly Sales Data Backup munka már létezik.

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