Delen via


SQL Server Agent

van toepassing op:SQL ServerAzure SQL Managed Instance

Dit artikel bevat een overzicht van de SQL Server Agent, een Microsoft Windows-service waarmee geplande beheertaken (ook wel takengenoemd) worden uitgevoerd in SQL Server en Azure SQL Managed Instance.

Belangrijk

Op Azure SQL Managed Instanceworden de meeste, maar niet alle FUNCTIES van SQL Server Agent momenteel ondersteund. Zie T-SQL-verschillen tussen Azure SQL Managed Instance en SQL Server voor meer informatie.

Voordelen van SQL Server Agent

SQL Server Agent gebruikt SQL Server om taakgegevens op te slaan. Taken bevatten een of meer taakstappen. Elke stap bevat een eigen taak, bijvoorbeeld een back-up van een database.

SQL Server Agent kan een taak volgens een planning uitvoeren, in reactie op een specifieke gebeurtenis of op aanvraag. Als u bijvoorbeeld elke weekdag na kantooruren een back-up wilt maken van alle bedrijfsservers, kunt u deze taak automatiseren. Plan de backup in om na 22:00 uur, maandag tot en met vrijdag, plaats te vinden. Als de back-up een probleem ondervindt, kan SQL Server Agent de gebeurtenis vastleggen en u hiervan op de hoogte stellen.

Notitie

De SQL Server Agent-service is standaard uitgeschakeld wanneer SQL Server is geïnstalleerd, tenzij de gebruiker expliciet ervoor kiest om de service automatisch te starten.

SQL Server Agent-onderdelen

SQL Server Agent gebruikt de volgende onderdelen om de taken te definiëren die moeten worden uitgevoerd, wanneer de taken moeten worden uitgevoerd en hoe u het slagen of mislukken van de taken rapporteert.

Gebruik de SQL Server Configuration Manager- om de SQL Server Agent-service te beheren en gebruik SSMS- (SQL Server Management Studio) om eenvoudig eigenschappen, taken, waarschuwingen, operators en proxy's in een grafische gebruikersinterface te beheren.

Banen

Een taak is een opgegeven reeks acties die door SQL Server Agent worden uitgevoerd. Gebruik jobs om een beheertaak te definiëren die een of meerdere keren kan worden uitgevoerd en gecontroleerd op succes of mislukking. Een taak kan worden uitgevoerd op één lokale server of op meerdere externe servers.

Belangrijk

SQL Server Agent-taken die worden uitgevoerd op het moment van een failover-gebeurtenis op een exemplaar van een SQL Server-failovercluster, worden niet hervat na een failover naar een ander failoverclusterknooppunt. SQL Server Agent-taken die worden uitgevoerd op het moment dat een Hyper-V knooppunt wordt onderbroken, worden niet hervat als de onderbreking een failover naar een ander knooppunt veroorzaakt. Taken die beginnen maar niet kunnen worden voltooid vanwege een failovergebeurtenis, worden geregistreerd als gestart, maar bevatten geen extra logboekvermeldingen voor voltooiing of fout. SQL Server Agent-taken in deze scenario's lijken nooit te zijn beëindigd.

U kunt taken op verschillende manieren uitvoeren:

  • Volgens een of meer planningen.

  • In reactie op een of meer waarschuwingen.

  • Door de sp_start_job opgeslagen procedure uit te voeren.

Elke actie in een taak is een taakstap. Een taakstap kan bijvoorbeeld bestaan uit het uitvoeren van een Transact-SQL-instructie, het uitvoeren van een SSIS-pakket of het uitgeven van een opdracht aan een Analysis Services-server. Taakstappen worden beheerd als onderdeel van een taak.

Elke taakstap wordt uitgevoerd in een specifieke beveiligingscontext. Voor taakstappen die Gebruikmaken van Transact-SQL, gebruikt u de INSTRUCTIE EXECUTE AS om de beveiligingscontext voor de taakstap in te stellen. Voor andere typen taakstappen gebruikt u een proxyaccount om de beveiligingscontext voor de taakstap in te stellen.

Gebruik de sp_help_job systeem opgeslagen procedure om informatie over een specifieke taak te achterhalen. Gebruik de dbo.sysjobs systeemtabel om informatie over taken weer te geven. Gebruik bijvoorbeeld de volgende Transact-SQL -instructie (T-SQL) om informatie over alle taken op een server weer te geven:

USE MSDB
GO
SELECT job_id, [name] FROM dbo.sysjobs;

Planningen

Een planning geeft aan wanneer een taak wordt uitgevoerd. Meerdere taken kunnen volgens hetzelfde schema worden uitgevoerd en meer dan één planning kan worden toegepast op dezelfde taak. Een schema kan de volgende voorwaarden definiëren voor het tijdstip waarop een taak wordt uitgevoerd:

  • Wanneer SQL Server Agent wordt gestart.

  • Wanneer het CPU-gebruik van de computer zich op een niveau bevindt dat u hebt gedefinieerd als niet-actief.

  • Eén keer, op een specifieke datum en tijd.

  • Volgens een terugkerend schema.

Zie Planningen maken en koppelen aan takenvoor meer informatie.

Waarschuwingen

Een waarschuwing is een automatisch antwoord op een specifieke gebeurtenis. Een gebeurtenis kan bijvoorbeeld een taak zijn die wordt gestart of systeembronnen die een specifieke drempelwaarde bereiken. U definieert de voorwaarden waaronder een waarschuwing plaatsvindt.

Een waarschuwing kan reageren op een van de volgende voorwaarden:

  • SQL Server-gebeurtenissen

  • Prestatievoorwaarden van SQL Server

  • WMI-gebeurtenissen (Microsoft Windows Management Instrumentation) op de computer waarop SQL Server Agent wordt uitgevoerd

Een waarschuwing kan de volgende acties uitvoeren:

  • Waarschuw een of meer operators

  • Een taak uitvoeren

Zie Waarschuwingenvoor meer informatie.

Beheerders

Een -operator definieert contactgegevens voor een persoon die verantwoordelijk is voor het onderhoud van een of meer exemplaren van SQL Server. In sommige ondernemingen worden operatorverantwoordelijkheden toegewezen aan één persoon. In ondernemingen met meerdere servers kunnen veel personen operatorverantwoordelijkheden delen. Een operator bevat geen beveiligingsgegevens en definieert geen beveiligingsprincipaal.

SQL Server kan operators op de hoogte stellen van waarschuwingen via...

  • E-mail

  • Pager (via e-mail)

  • net send

Notitie

Als u meldingen wilt verzenden met behulp van net send, moet de Windows Messenger-service worden gestart op de computer waarop SQL Server Agent zich bevindt.

Belangrijk

De opties Pager en net send worden in een toekomstige versie van SQL Server uit SQL Server Agent verwijderd. Vermijd het gebruik van deze functies in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functies.

Als u meldingen wilt verzenden naar operators met behulp van e-mail of pagers, moet u SQL Server Agent configureren voor het gebruik van Database Mail. Zie Database Mail-voor meer informatie.

U kunt een operator definiëren als de alias voor een groep personen. Op deze manier worden alle leden van die alias niet tegelijkertijd geverifieerd. Zie Operatorsvoor meer informatie.

Beveiliging voor SQL Server Agent-beheer

SQL Server Agent maakt gebruik van de SQLAgentUserRole, SQLAgentReaderRoleen SQLAgentOperatorRole vaste databaserollen in de msdb-database om de toegang tot SQL Server Agent te beheren voor gebruikers die geen lid zijn van de sysadmin vaste serverrol. Naast deze vaste databaserollen helpen subsystemen en proxy's databasebeheerders ervoor te zorgen dat elke taakstap wordt uitgevoerd met de minimale machtigingen die nodig zijn om de taak uit te voeren.

Rollen

Leden van de SQLAgentUserRole, SQLAgentReaderRoleen SQLAgentOperatorRole vaste databaserollen in msdben leden van de sysadmin vaste serverrol hebben toegang tot SQL Server Agent. Een gebruiker die niet tot een van deze rollen behoort, kan SQL Server Agent niet gebruiken. Zie SQL Server Agent Securityimplementeren voor meer informatie over de rollen die door SQL Server Agent Agent worden gebruikt.

Subsystemen

Een subsysteem is een vooraf gedefinieerd object dat de functionaliteit vertegenwoordigt die beschikbaar is voor een taakstap. Elke proxy heeft toegang tot een of meer subsystemen. Subsystemen bieden beveiliging omdat ze de toegang tot de functionaliteit scheiden die beschikbaar is voor een proxy. Elke taakstap wordt uitgevoerd in de context van een proxy, met uitzondering van Transact-SQL taakstappen. Transact-SQL taakstappen gebruiken de EXECUTE AS-opdracht om de beveiligingscontext in te stellen op de eigenaar van de taak.

SQL Server definieert de subsystemen die worden vermeld in de volgende tabel:

Subsysteemnaam Beschrijving
Microsoft ActiveX-Script Voer een ActiveX-scripttaakstap uit.

Waarschuwing Het subsysteem ActiveX-scripting wordt verwijderd uit SQL Server Agent in een toekomstige versie van Microsoft SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie.
Besturingssysteem (CmdExec) Voer een uitvoerbaar programma uit.
PowerShell Voer een PowerShell-scripttaakstap uit.
Replicatiedistributeur Voer een taakstap uit waarmee de replicatiedistributieagent wordt geactiveerd.
Replicatie samenvoegen Voer een taakstap uit waarmee de replicatiesamenvoegagent wordt geactiveerd.
Replicatiewachtrijlezer Voer een taakstap uit waarmee de agent voor replicatiewachtrijlezer wordt geactiveerd.
Momentopname van replicatie Voer een taakstap uit waarmee de replicatie-snapshotagent wordt geactiveerd.
Lezer van replicatietransactielogboek Voer een taakstap uit waarmee de agent voor replicatielogboeklezer wordt geactiveerd.
Analysis Services-opdracht Voer een Analysis Services-opdracht uit.
Analysis Services-opdracht Voer een Analysis Services-query uit.
Uitvoering van SSIS-pakket Voer een SSIS-pakket uit.

Notitie

Omdat Transact-SQL taakstappen geen proxy's gebruiken, is er geen SQL Server Agent-subsysteem voor Transact-SQL taakstappen.

SQL Server Agent dwingt subsysteembeperkingen af, zelfs wanneer de beveiligingsprincipaal voor de proxy normaal gesproken gemachtigd is om de taak uit te voeren in de taakstap. Een proxy voor een gebruiker die lid is van de vaste serverfunctie sysadmin kan bijvoorbeeld geen SSIS-taakstap uitvoeren, tenzij de proxy toegang heeft tot het SSIS-subsysteem, ook al kan de gebruiker SSIS-pakketten uitvoeren.

Proxy's

SQL Server Agent maakt gebruik van proxy's voor het beheren van beveiligingscontexten. Een proxy kan in meer dan één taakstap worden gebruikt. Leden van de sysadmin vaste serverfunctie kunnen proxy's maken.

Elke proxy komt overeen met een beveiligingsreferentie. Elke proxy kan worden gekoppeld aan een set subsystemen en een set aanmeldingen. De proxy kan alleen worden gebruikt voor taakstappen die gebruikmaken van een subsysteem dat is gekoppeld aan de proxy. Als u een taakstap wilt maken die gebruikmaakt van een specifieke proxy, moet de eigenaar van de taak een aanmelding gebruiken die is gekoppeld aan die proxy of een lid van een rol met onbeperkte toegang tot proxy's. Leden van de sysadmin vaste serverfunctie hebben onbeperkte toegang tot proxy's. Leden van SQLAgentUserRole, SQLAgentReaderRoleof SQLAgentOperatorRole kunnen alleen proxy's gebruiken waaraan ze specifieke toegang hebben verleend. Elke gebruiker die lid is van een van deze vaste SQL Server Agent-databaserollen, moet toegang krijgen tot specifieke proxy's, zodat de gebruiker taakstappen kan maken die gebruikmaken van deze proxy's.

Beheer automatiseren

Gebruik de volgende stappen om SQL Server Agent te configureren om SQL Server-beheer te automatiseren:

  1. Bepaal welke beheertaken of servergebeurtenissen regelmatig plaatsvinden en of deze taken of gebeurtenissen programmatisch kunnen worden beheerd. Een taak is een goede kandidaat voor automatisering als deze een voorspelbare reeks stappen omvat en zich op een bepaald tijdstip voordoet of als reactie op een specifieke gebeurtenis.

  2. Definieer een set taken, planningen, waarschuwingen en operators met behulp van SQL Server Management Studio, Transact-SQL scripts of SMO (SQL Server Management Objects). Zie Banen aanmakenvoor meer informatie.

  3. Voer de SQL Server Agent-taken uit die u hebt gedefinieerd.

Notitie

Voor het standaardexemplaar van SQL Server wordt de SQL Server-service SQLSERVERAGENT genoemd. Voor benoemde exemplaren heeft de SQL Server Agent-service de naam SQLAgent$exemplaarnaam.

Als u meerdere exemplaren van SQL Server uitvoert, kunt u beheer met meerdere servers gebruiken om taken voor alle exemplaren te automatiseren. Voor meer informatie, zie Geautomatiseerd beheer in een onderneming.

Gebruik de volgende taken om aan de slag te gaan met SQL Server Agent:

Beschrijving Artikel
Hierin wordt beschreven hoe u SQL Server Agent configureert. SQL Server Agent configureren
Hierin wordt beschreven hoe u de SQL Server Agent-service start, stopt en onderbreekt. de SQL Server Agent-service starten, stoppen of onderbreken
Hierin worden overwegingen beschreven voor het opgeven van een account voor de SQL Server Agent-service. Selecteer een account voor de SQL Server Agent-service
Hierin wordt beschreven hoe u het foutenlogboek van de SQL Server Agent gebruikt. sql Server Agent-foutenlogboek
Hierin wordt beschreven hoe u prestatieobjecten gebruikt. Prestatieobjecten gebruiken
Hierin wordt de wizard Onderhoudsplannen beschreven. Dit is een hulpprogramma dat u gebruikt voor het maken van taken, waarschuwingen en operators om het beheer van een exemplaar van SQL Server te automatiseren. De Wizard Onderhoudsplan Gebruiken
Hierin wordt beschreven hoe u beheertaken automatiseert met behulp van SQL Server Agent. geautomatiseerde beheertaken (SQL Server Agent)

NOSQLPS

Vanaf SQL Server 2019 kunt u SQLPS uitschakelen. Op de eerste regel van een taakstap van het type PowerShell kunt u #NOSQLPStoevoegen, waardoor de SQL Agent de SQLPS-module niet automatisch laadt. Uw SQL Agent-taak voert nu de versie van PowerShell uit die op de computer is geïnstalleerd en vervolgens kunt u elke andere Gewenste PowerShell-module gebruiken.

Als u de SqlServer-module in uw SQL Agent-taakstap wilt gebruiken, kunt u deze code op de eerste twee regels van uw script plaatsen.

#NOSQLPS
Import-Module -Name SqlServer