Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure 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