Sdílet prostřednictvím


Agent SQL Serveru

platí pro:SQL Serverazure SQL Managed Instance

Tento článek obsahuje přehled agenta SQL Serveru, což je služba Microsoft Windows, která provádí naplánované úlohy správy (označované jako úlohy) v SQL Serveru a spravované instanci Azure SQL.

Důležité

Na Azure SQL Managed Instance, většina, ale ne všechny funkce agenta SQL Serveru jsou aktuálně podporované. Podrobnosti najdete v tématu rozdíly T-SQL služby Azure SQL Managed Instance oproti SQL Serveru nebo omezení úloh agenta SQL ve službě SQL Managed Instance.

Výhody agenta SQL Serveru

Agent SQL Serveru používá SQL Server k ukládání informací o úlohách. Úlohy obsahují jeden nebo více kroků úlohy. Každý krok obsahuje vlastní úkol, například zálohování databáze.

Agent SQL Serveru může spustit úlohu podle plánu, v reakci na konkrétní událost nebo na vyžádání. Pokud například chcete zálohovat všechny firemní servery každý pracovní den po hodinách, můžete tuto úlohu automatizovat. Naplánujte spuštění zálohování po 22:00 pondělí až pátek. Pokud zálohování narazí na problém, může agent SQL Serveru zaznamenat událost a upozornit vás.

Poznámka:

Ve výchozím nastavení je služba agenta SQL Serveru při instalaci SQL Serveru zakázaná, pokud se uživatel explicitně nerozhodne službu automaticky sstartovat.

Součásti agenta SQL Serveru

Agent SQL Serveru používá následující komponenty k definování úloh, které se mají provést, kdy provádět úlohy a jak hlásit úspěch nebo selhání úloh.

Pomocí nástroje SQL Server Configuration Manager můžete spravovat službu agenta SQL Serveru a pomocí aplikace SQL Server Management Studio (SSMS) snadno spravovat vlastnosti agenta SQL Serveru, úlohy, výstrahy, operátory a proxy servery v grafickém uživatelském rozhraní.

Pracovní místa

Úloha je zadaná řada akcí, které provádí agent SQL Serveru. Pomocí úloh definujte úlohu správy, která se dá spustit jednou nebo vícekrát a monitorovat úspěšnost nebo selhání. Úloha může běžet na jednom místním serveru nebo na více vzdálených serverech.

Důležité

Úlohy agenta SQL Serveru spuštěné v době události převzetí služeb při selhání v instanci clusteru s podporou převzetí služeb při selhání SQL Serveru se po převzetí služeb při selhání neobnoví po převzetí služeb při selhání na jiný uzel clusteru s podporou převzetí služeb při selhání. Úlohy agenta služby SQL Server, které jsou spuštěné v době, kdy je pozastaven uzel Hyper-V, se neobnoví, pokud toto pozastavení způsobí převzetí služeb při selhání na jiný uzel. Úlohy, které začnou, ale nedokončí se kvůli události převzetí služeb, se zaznamenávají jako spuštěné, ale nezobrazují další položky protokolu o dokončení nebo selhání. Zdá se, že úlohy agenta SQL Serveru v těchto scénářích nebyly ukončeny.

Úlohy můžete spouštět několika způsoby:

  • Podle jednoho nebo více plánů.

  • V reakci na jednu nebo více výstrah.

  • Spuštěním sp_start_job uložené procedury.

Každá akce v úloze je krok úlohy. Například krok úlohy se může skládat ze spuštění příkazu Transact-SQL, spuštění balíčku SSIS nebo vydání příkazu serveru Analysis Services. Kroky úlohy se spravují jako součást úlohy.

Každý krok úlohy se spouští v konkrétním kontextu zabezpečení. Pro kroky úlohy, které používají Transact-SQL, použijte příkaz EXECUTE AS k nastavení kontextu zabezpečení pro krok úlohy. U jiných typů kroků úlohy použijte účet proxy k nastavení kontextu zabezpečení kroku úlohy.

Pomocí uložené procedury sp_help_job systému můžete zjistit informace o konkrétní úloze. K zobrazení informací o úlohách použijte systémovou tabulku dbo.sysjobs . Pomocí následujícího příkazu Transact-SQL (T-SQL) můžete například zobrazit informace o všech úlohách na serveru:

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

Rozvrhy

Plán určuje, kdy se úloha spustí. Ve stejném plánu může běžet více než jedna úloha a pro stejnou úlohu může platit více než jeden plán. Plán může definovat následující podmínky pro čas spuštění úlohy:

  • Pokaždé, když se spustí agent SQL Serveru.

  • Kdykoli je využití procesoru počítače na úrovni, kterou jste definovali jako nečinnou.

  • Jednou v určitém datu a čase.

  • Na opakujícím se rozvrhu.

Další informace najdete v tématu Vytvoření a připojení plánů k úlohám.

Výstrahy

Výstraha je automatická odpověď na konkrétní událost. Událost může být například úloha, která se spustí, nebo systémové prostředky, které dosáhnou určité prahové hodnoty. Definujete podmínky, za kterých se výstraha vyskytuje.

Výstraha může reagovat na jednu z následujících podmínek:

  • Události SQL Serveru

  • Podmínky výkonu SQL Serveru

  • Události služby WMI (Microsoft Windows Management Instrumentation) v počítači, na kterém běží agent SQL Serveru

Výstraha může provádět následující akce:

  • Upozornit jednoho nebo více operátorů

  • Spusťte úlohu

Další informace najdete v tématu Výstrahy.

Operátoři

Operátor definuje kontaktní informace pro jednotlivce zodpovědného za údržbu jedné nebo více instancí SQL Serveru. V některých podnicích jsou povinnosti operátora přiřazeny jednomu jednotlivci. V podnicích s více servery může mnoho jednotlivců sdílet odpovědnost operátora. Operátor neobsahuje informace o zabezpečení a nedefinuje bezpečnostní princip.

SQL Server může operátory upozorňovat na výstrahy prostřednictvím...

  • E-mail

  • Pager (prostřednictvím e-mailu)

  • net send

Poznámka:

Chcete-li odesílat oznámení pomocí příkazu net send, musí být služba Windows Messenger spuštěna v počítači, kde se nachází agent SYSTÉMU SQL Server.

Důležité

Možnosti Pager a net send se z agenta SQL Serveru odeberou v budoucí verzi SQL Serveru. Vyhněte se používání těchto funkcí v nové vývojové práci a naplánujte úpravu aplikací, které tyto funkce aktuálně používají.

Chcete-li odesílat oznámení operátorům e-mailem nebo stránkováním, musíte nakonfigurovat agenta SQL Serveru tak, aby používal databázovou poštu. Další informace naleznete v tématu Databázová pošta.

Operátor můžete definovat jako alias pro skupinu jednotlivců. Tímto způsobem nejsou všichni členové tohoto aliasu ověřeni současně. Další informace naleznete v tématu Operátory.

Zabezpečení pro správu agenta SQL Serveru

Agent SQL Serveru používá pevné databázové role SQLAgentUserRole, SQLAgentReaderRole a SQLAgentOperatorRole v msdb databázi k řízení přístupu k agentovi SQL Serveru pro uživatele, kteří nejsou členy pevné role serveru správce systému . Kromě těchto pevných databázových rolí pomáhají subsystémy a proxy správcům databází zajistit, aby každý krok úlohy běžel s minimálními oprávněními potřebnými k provedení úlohy.

Seznam rolí

Členové pevných databázových rolí SQLAgentUserRole, SQLAgentReaderRole a SQLAgentOperatorRole v msdba členové pevné role serveru správce systému mají přístup k agentovi SQL Serveru. Uživatel, který nepatří do žádné z těchto rolí, nemůže používat agenta SQL Serveru. Další informace o rolích používaných agentem SQL Serveru naleznete v tématu Implementace zabezpečení agenta SQL Serveru.

Subsystémy

Subsystém je předdefinovaný objekt, který představuje funkce, které jsou k dispozici pro krok úlohy. Každý proxy server má přístup k jednomu nebo více subsystémům. Subsystémy poskytují zabezpečení, protože oddělují přístup k funkcím, které jsou k dispozici pro proxy server. Každý krok úlohy se spouští v kontextu proxy serveru s výjimkou Transact-SQL kroků úlohy. Transact-SQL kroky úlohy používají příkaz EXECUTE AS k nastavení kontextu zabezpečení na vlastníka úlohy.

SQL Server definuje subsystémy uvedené v následující tabulce:

Název subsystému Popis
Skript Microsoft ActiveX Spusťte krok úlohy skriptování ActiveX.

Varování Skriptovací subsystém ActiveX se odebere z agenta SQL Serveru v budoucí verzi Microsoft SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.
Operační systém (CmdExec) Spusťte spustitelný program.
PowerShell Spusťte krok úlohy skriptování PowerShellu.
Distributor replikace Spusťte krok úlohy, který aktivuje distribučního agenta replikace.
Sloučení replikace Spusťte krok úlohy, který aktivuje slučovací agent replikace.
Čtenář fronty replikace Spusťte krok úlohy, který aktivuje agenta pro čtení fronty replikace.
Snímek replikace Spusťte krok úlohy, který aktivuje agenta snímků replikace.
Čtenář transakčních protokolů replikace Spusťte krok úlohy, který aktivuje agenta čtenáře protokolu replikace.
Příkaz služeb analýzy Spusťte příkaz Analysis Services.
Dotaz služby Analysis Services Spusťte dotaz služby Analysis Services.
Spouštění balíčků služby SSIS Spusťte balíček SSIS.

Poznámka:

Vzhledem k tomu, že kroky úlohy Transact-SQL nepoužívají proxy servery, pro kroky úlohy Transact-SQL neexistuje žádný subsystém agenta SQL Serveru.

Agent SQL Serveru vynucuje omezení subsystému i v případě, že bezpečnostní principál proxy má obvykle oprávnění ke spuštění úlohy v rámci kroku úlohy. Například proxy server pro uživatele, který je členem pevné role serveru správce systému, nemůže spustit krok úlohy SSIS, pokud proxy nemá přístup k subsystému SSIS, i když uživatel může spouštět balíčky SSIS.

Proxy

Agent SQL Serveru používá proxy servery ke správě kontextů zabezpečení. Proxy server lze použít ve více než jednom kroku úlohy. Členové pevné role serveru sysadmin mohou vytvářet proxy servery.

Každý proxy server odpovídá přihlašovacím údajům zabezpečení. Každý proxy server může být přidružený k sadě subsystémů a sadě přihlášení. Proxy lze použít pouze pro kroky úlohy, které využívají subsystém přidružený k proxy. Pokud chcete vytvořit krok úlohy, který používá konkrétní proxy server, musí vlastník úlohy buď použít přihlášení přidružené k ho proxy serveru, nebo člena role s neomezeným přístupem k proxy serverům. Členové pevné role serveru správce systému mají neomezený přístup k proxy serverům. Členové sqlAgentUserRole, SQLAgentReaderRole nebo SQLAgentOperatorRole můžou používat pouze proxy servery, ke kterým jim byl udělen specifický přístup. Každému uživateli, který je členem některé z těchto pevných databázových rolí agenta SQL Serveru, musí být udělen přístup ke konkrétním proxy serverům, aby uživatel mohl vytvořit kroky úlohy, které používají tyto proxy servery.

Automatizace správy

Pomocí následujících kroků nakonfigurujte agenta SQL Serveru pro automatizaci správy SQL Serveru:

  1. Určete, které úlohy správy nebo události serveru probíhají pravidelně a zda je možné tyto úlohy nebo události spravovat programově. Úloha je vhodným kandidátem pro automatizaci, pokud zahrnuje předvídatelné pořadí kroků a dochází v konkrétní době nebo v reakci na konkrétní událost.

  2. Definujte sadu úloh, plánů, výstrah a operátorů pomocí aplikace SQL Server Management Studio, Transact-SQL skriptů nebo objektů SMO (SQL Server Management Objects). Další informace najdete v tématu Vytváření úloh.

  3. Spusťte úlohy agenta SQL Serveru, které jste definovali.

Poznámka:

Pro výchozí instanci SQL Serveru má služba SQL Server název SQLSERVERAGENT. Pro pojmenované instance se služba agenta SQL Serveru jmenuje SQLAgent$instancename.

Pokud používáte více instancí SQL Serveru, můžete pomocí správy více serverů automatizovat úlohy společné pro všechny instance. Další informace najdete v tématu Automatizovaná správa v rámci podniku.

K zahájení práce s agentem SQL Serveru použijte následující úlohy:

Popis Článek
Popisuje, jak nakonfigurovat agenta SQL Serveru. Konfigurace agenta SQL Serveru
Popisuje, jak spustit, zastavit a pozastavit službu agenta SQL Serveru. spuštění, zastavení nebo pozastavení služby agenta SQL Serveru
Popisuje důležité informace o určení účtu pro službu agenta SQL Serveru. Vyberte účet pro službu agenta SQL Serveru.
Popisuje, jak používat protokol chyb agenta SQL Serveru. Záznam o chybách agenta SQL Serveru
Popisuje, jak používat objekty výkonu. Použití objektů výkonu
Popisuje Průvodce plánem údržby, což je nástroj, který používáte k automatizaci správy instance SYSTÉMU SQL Server pomocí úloh, výstrah a operátorů. Použít průvodce plánem údržby
Popisuje, jak automatizovat úlohy správy pomocí agenta SQL Serveru. Úlohy automatizované správy (agent SQL Serveru)

NOSQLPS

Počínaje SQL Serverem 2019 můžete SQLPS zakázat. Na prvním řádku kroku úlohy typu PowerShell můžete přidat #NOSQLPS, což zastaví SQL Agenta v automatickém načítání modulu SQLPS. Teď vaše úloha agenta SQL používá na počítači nainstalovanou verzi PowerShellu a pak můžete použít jakýkoli jiný modul PowerShellu, který se vám líbí.

Pokud chcete použít modul SqlServer v kroku úlohy agenta SQL, můžete tento kód umístit na první dva řádky skriptu.

#NOSQLPS
Import-Module -Name SqlServer