SQL Server Agent
gäller för:SQL Server
Azure SQL Managed Instance
Den här artikeln innehåller en översikt över SQL Server-agenten, som är en Microsoft Windows-tjänst som kör schemalagda administrativa uppgifter (kallas jobb) i SQL Server och Azure SQL Managed Instance.
Viktig
På Azure SQL Managed Instancestöds de flesta, men inte alla SQL Server Agent-funktioner för närvarande. Mer information finns i T-SQL-skillnader i Azure SQL Managed Instance från SQL Server.
Fördelar med SQL Server Agent
SQL Server-agenten använder SQL Server för att lagra jobbinformation. Jobb innehåller ett eller flera jobbsteg. Varje steg innehåller en egen uppgift, till exempel att säkerhetskopiera en databas.
SQL Server-agenten kan köra ett jobb enligt ett schema, som svar på en viss händelse eller på begäran. Om du till exempel vill säkerhetskopiera alla företagsservrar varje veckodag efter timmar kan du automatisera den här uppgiften. Schemalägg säkerhetskopieringen så att den körs efter 22:00 måndag till fredag. Om säkerhetskopieringen stöter på ett problem kan SQL Server Agent registrera händelsen och meddela dig.
Notera
Som standard inaktiveras SQL Server Agent-tjänsten när SQL Server installeras om inte användaren uttryckligen väljer att starta tjänsten automatiskt.
SQL Server Agent-komponenter
SQL Server-agenten använder följande komponenter för att definiera de uppgifter som ska utföras, när uppgifterna ska utföras och hur du rapporterar att uppgifterna lyckades eller misslyckades.
Använd SQL Server Configuration Manager- för att hantera SQL Server Agent-tjänsten och använd SQL Server Management Studio (SSMS) för att enkelt hantera EGENSKAPER, jobb, aviseringar, operatorer och proxyservrar i ett grafiskt användargränssnitt.
Jobb
Ett jobb är en angiven serie åtgärder som SQL Server Agent utför. Använd jobb för att definiera en administrativ uppgift som kan köras en eller flera gånger och övervakas för att lyckas eller misslyckas. Ett jobb kan köras på en lokal server eller på flera fjärrservrar.
Viktig
SQL Server Agent-jobb som körs vid tidpunkten för en redundanshändelse på en SQL Server-redundansklusterinstans återupptas inte efter redundansväxling till en annan nod för redundanskluster. SQL Server Agent-jobb som körs när en Hyper-V nod pausas återupptas inte om pausen orsakar en redundansväxling till en annan nod. Jobb som börjar men inte kan slutföras på grund av en felövergångshändelse loggas som påbörjade, men visar inte ytterligare loggposter för slutförande eller fel. SQL Server Agent-jobb i dessa scenarier verkar aldrig ha upphört.
Du kan köra jobb på flera sätt:
Enligt ett eller flera scheman.
Som svar på en eller flera aviseringar.
Genom att köra den lagrade proceduren
sp_start_job
.
Varje åtgärd i ett jobb är ett arbetssteg. Ett jobbsteg kan till exempel bestå av att köra en Transact-SQL-instruktion, köra ett SSIS-paket eller utfärda ett kommando till en Analysis Services-server. Arbetssteg hanteras som del av ett jobb.
Varje jobbsteg körs i en specifik säkerhetskontext. För jobbsteg som använder Transact-SQL använder du EXECUTE AS-instruktionen för att ange säkerhetskontexten för jobbsteget. För andra typer av jobbsteg använder du ett proxykonto för att ange säkerhetskontexten för jobbsteget.
Använd den lagrade systemproceduren sp_help_job för att ta reda på information om ett specifikt jobb. Använd dbo.sysjobs systemtabell för att visa information om jobb. Använd till exempel följande Transact-SQL-instruktion (T-SQL) för att visa information om alla jobb på en server:
USE MSDB
GO
SELECT job_id, [name] FROM dbo.sysjobs;
Scheman
Ett schema anger när ett jobb körs. Fler än ett jobb kan köras enligt samma schema och mer än ett schema kan gälla för samma jobb. Ett schema kan definiera följande villkor för den tid då ett jobb körs:
När SQL Server-agenten startar.
När processoranvändningen på datorn är på en nivå som du har definierat som inaktiv.
En gång, vid ett visst datum och en viss tid.
Enligt ett återkommande schema.
Mer information finns i Skapa och koppla scheman till jobb.
Varningar
En avisering är ett automatiskt svar på en viss händelse. En händelse kan till exempel vara ett jobb som startar eller systemresurser som når ett visst tröskelvärde. Du definierar de villkor under vilka en avisering inträffar.
En avisering kan svara på något av följande villkor:
SQL Server-händelser
Prestandavillkor för SQL Server
WMI-händelser (Microsoft Windows Management Instrumentation) på datorn där SQL Server-agenten körs
En avisering kan utföra följande åtgärder:
Meddela en eller flera operatorer
Köra ett uppdrag
För mer information, se aviseringar.
Operatörer
En -operator definierar kontaktinformation för en person som ansvarar för underhåll av en eller flera instanser av SQL Server. I vissa företag tilldelas operatörsansvar till en enskild person. I företag med flera servrar kan många personer dela operatörsansvar. En operatör innehåller inte säkerhetsinformation och definierar inte ett säkerhetsobjekt.
SQL Server kan meddela operatörer om aviseringar via...
E-post
Sökare (via e-post)
net send
Not
Om du vill skicka meddelanden med hjälp av net sendmåste Windows Messenger-tjänsten startas på den dator där SQL Server Agent finns.
Viktig
Alternativen Pager och net send tas bort från SQL Server Agent i en framtida version av SQL Server. Undvik att använda de här funktionerna i det nya utvecklingsarbetet och planera att ändra program som för närvarande använder dessa funktioner.
Om du vill skicka meddelanden till operatörer med hjälp av e-post eller sidsökare måste du konfigurera SQL Server Agent för att använda Database Mail. Mer information finns i Database Mail.
Du kan definiera en operator som alias för en grupp individer. På så sätt verifieras inte alla medlemmar i det aliaset samtidigt. Mer information finns i Operatorer.
Säkerhet för SQL Server-agentadministration
SQL Server Agent använder SQLAgentUserRole, SQLAgentReaderRoleoch SQLAgentOperatorRole fasta databasroller i msdb
-databasen för att styra åtkomsten till SQL Server Agent för användare som inte är medlemmar i sysadmin fast serverroll. Förutom dessa fasta databasroller hjälper undersystem och proxyservrar databasadministratörer att se till att varje jobbsteg körs med de minsta behörigheter som krävs för att utföra uppgiften.
Roller
Medlemmar i SQLAgentUserRole, SQLAgentReaderRoleoch SQLAgentOperatorRole fasta databasroller i msdb
och medlemmar i sysadmin fast serverroll har åtkomst till SQL Server Agent. En användare som inte tillhör någon av dessa roller kan inte använda SQL Server Agent. Mer information om de roller som används av SQL Server Agent finns i Implementera SQL Server Agent Security.
Delsystem
Ett undersystem är ett fördefinierat objekt som representerar funktioner som är tillgängliga för ett jobbsteg. Varje proxy har åtkomst till ett eller flera undersystem. Undersystem ger säkerhet eftersom de avgränsar åtkomsten till de funktioner som är tillgängliga för en proxyserver. Varje jobbsteg körs i kontexten för en proxy, förutom jobbstegen av typen Transact-SQL. Transact-SQL jobbsteg använder kommandot EXECUTE AS för att ange säkerhetskontexten till jobbets ägare.
SQL Server definierar de undersystem som anges i följande tabell:
Undersystemnamn | Beskrivning |
---|---|
Microsoft ActiveX-skript | Kör ett ActiveX-skriptjobbsteg. Varning ActiveX-skriptundersystemet tas bort från SQL Server Agent i en framtida version av Microsoft 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. |
Operativsystem (CmdExec) | Kör ett körbart program. |
PowerShell | Kör ett PowerShell-skriptjobbsteg. |
Distributör för replikering | Kör ett jobbsteg som aktiverar replikeringsdistributionsagenten. |
Replikationssammanslagning | Kör ett jobbsteg som aktiverar sammanslagningsagenten för replikering. |
Replikeringsköläsare | Kör ett jobbsteg som aktiverar replikeringsköläsaragenten. |
Replikeringsögonblicksbild | Kör ett jobbsteg som aktiverar replikeringsagenten för ögonblicksbild. |
Loggläsare för transaktionsreplikering | Kör ett jobbsteg som aktiverar replikeringsloggläsaragenten. |
Analysis Services-kommando | Kör ett Analysis Services-kommando. |
Analysis Services-fråga | Kör en Analysis Services-fråga. |
Körning av SSIS-paket | Kör ett SSIS-paket. |
Not
Eftersom Transact-SQL jobbsteg inte använder proxyservrar finns det inget SQL Server Agent-undersystem för Transact-SQL jobbsteg.
SQL Server Agent tillämpar undersystembegränsningar även när säkerhetsobjektet för proxyn normalt skulle ha behörighet att köra uppgiften i jobbsteget. En proxy för en användare som är medlem i den fasta sysadmin-serverrollen kan till exempel inte köra ett SSIS-jobbsteg om inte proxyn har åtkomst till SSIS-undersystemet, även om användaren kan köra SSIS-paket.
Proxies
SQL Server Agent använder proxyservrar för att hantera säkerhetskontexter. En proxy kan användas i mer än ett jobbsteg. Medlemmar i sysadmin fast serverroll kan skapa proxyservrar.
Varje proxy motsvarar en säkerhetsautentiseringsuppgift. Varje proxy kan associeras med en uppsättning undersystem och en uppsättning inloggningar. Proxyn kan endast användas för jobbsteg som använder ett undersystem som är associerat med proxyn. Om du vill skapa ett jobbsteg som använder en specifik proxy måste jobbägaren antingen använda en inloggning som är associerad med proxyn eller en medlem i en roll med obegränsad åtkomst till proxyservrar. Medlemmar i sysadmin fast serverroll har obegränsad åtkomst till proxyservrar. Medlemmar i SQLAgentUserRole, SQLAgentReaderRoleeller SQLAgentOperatorRole kan bara använda proxyservrar som de har beviljats specifik åtkomst till. Varje användare som är medlem i någon av dessa fasta databasroller för SQL Server Agent måste ha beviljats åtkomst till specifika proxyer så att de kan skapa jobbsteg som använder dem.
Automatisera administration
Använd följande steg för att konfigurera SQL Server Agent för att automatisera SQL Server-administration:
Fastställa vilka administrativa uppgifter eller serverhändelser som inträffar regelbundet och om dessa uppgifter eller händelser kan administreras programmatiskt. En uppgift är en bra kandidat för automatisering om den omfattar en förutsägbar sekvens med steg och inträffar vid en viss tidpunkt eller som svar på en viss händelse.
Definiera en uppsättning jobb, scheman, aviseringar och operatorer med hjälp av SQL Server Management Studio, Transact-SQL skript eller SQL Server Management Objects (SMO). Mer information finns i Skapa jobb.
Kör de SQL Server Agent-jobb som du har definierat.
Obs
För standardinstansen av SQL Server heter SQL Server-tjänsten SQLSERVERAGENT. För namngivna instanser heter SQL Server Agent-tjänsten SQLAgent$instansnamn.
Om du kör flera instanser av SQL Server kan du använda administration med flera servrar för att automatisera uppgifter som är vanliga för alla instanser. För mer information, se Automatiserad administration i en organisation.
Använd följande uppgifter för att komma igång med SQL Server Agent:
Beskrivning | Artikel |
---|---|
Beskriver hur du konfigurerar SQL Server Agent. | Konfigurera SQL Server Agent |
Beskriver hur du startar, stoppar och pausar SQL Server Agent-tjänsten. | Starta, stoppa eller pausa SQL Server Agent-tjänsten |
Beskriver överväganden för att ange ett konto för SQL Server Agent-tjänsten. | Välj ett konto för SQL Server Agent Service |
Beskriver hur du använder SQL Server Agent-felloggen. | FELlogg för SQL Server-agenten |
Beskriver hur du använder prestandaobjekt. | Använda prestandaobjekt |
Beskriver guiden Underhållsplan, som är ett verktyg som du använder för att skapa jobb, aviseringar och operatorer för att automatisera administrationen av en instans av SQL Server. | Använd Underhållsplan-guiden |
Beskriver hur du automatiserar administrativa uppgifter med SQL Server Agent. | automatiserade administrationsuppgifter (SQL Server Agent) |
NOSQLPS
Från och med SQL Server 2019 kan du inaktivera SQLPS. På den första raden i ett jobbsteg av typen PowerShell kan du lägga till #NOSQLPS
, vilket hindrar SQL Agent från att automatiskt läsa in SQLPS-modulen. Nu kör ditt SQL Agent-jobb den version av PowerShell som är installerad på datorn och sedan kan du använda andra PowerShell-moduler som du vill.
Om du vill använda SqlServer-modulen i sql-agentjobbsteget kan du placera den här koden på de två första raderna i skriptet.
#NOSQLPS
Import-Module -Name SqlServer