Automatizace úloh správy pomocí úloh agenta SQL ve službě Azure SQL Managed Instance

Platí pro: Azure SQL Managed Instance

Pomocí agenta SQL Serveru v SQL Serveru a službě SQL Managed Instance můžete vytvářet a plánovat úlohy, které se dají pravidelně spouštět v jedné nebo mnoha databázích za účelem spouštění dotazů Jazyka Transact-SQL (T-SQL) a provádění úloh údržby. Tento článek popisuje použití agenta SQL pro spravovanou instanci SQL.

Poznámka:

Agent SQL není k dispozici ve službě Azure SQL Database ani Azure Synapse Analytics. Místo toho doporučujeme automatizaci úloh s elastickými úlohami.

Kdy použít úlohy agenta SQL

Existuje několik scénářů, kdy byste mohli použít úlohy agenta SQL:

  • Automatizujte úlohy správy a naplánujte jejich spouštění každý pracovní den, po hodinách atd.
    • Nasazování změn schématu, správa přihlašovacích údajů, shromažďování dat o výkonu nebo shromažďování telemetrických dat tenantů (zákazníků).
    • Aktualizujte referenční data (informace společné pro všechny databáze) a načtěte data ze služby Azure Blob Storage. Microsoft doporučuje k ověření ve službě Azure Blob Storage použít ověřování POMOCÍ SDÍLENÉHO PŘÍSTUPOVÉHO PODPISU.
    • Běžné úlohy údržby, včetně DBCC CHECKDB zajištění integrity dat nebo údržby indexu za účelem zlepšení výkonu dotazů. Konfigurace spouštění úloh pro kolekci databází nebo jejich opakovaného spouštění, například v době mimo špičku.
    • Průběžné shromažďování výsledků dotazů ze sady databází do centrální tabulky. Výkonové dotazy je možné spouštět průběžně a nakonfigurovat tak, aby aktivovaly další úlohy, které se mají provést.
  • Shromažďování dat pro vytváření sestav
    • Agregace dat z kolekce databází do jedné cílové tabulky
    • Spouštění dlouhotrvajících dotazů na zpracování dat pro velkou sadu databází, například shromažďování telemetrických dat uživatelů. Výsledky se pro účely další analýzy shromažďují do jedné cílové tabulky.
  • Přesuny dat
    • Vytvořte úlohy, které replikují změny provedené v databázích do jiných databází nebo shromažďují aktualizace provedené ve vzdálených databázích a aplikují změny v databázi.
    • Vytvářejte úlohy, které načítají data z databází nebo do databází pomocí služby SSIS (SQL Server Integration Services).

Úlohy agenta SQL ve službě SQL Managed Instance

Úlohy agenta SQL jsou spouštěny službou agenta SQL, která se nadále používá pro automatizaci úloh v SQL Serveru a spravované instanci SQL.

Úlohy agenta SQL jsou zadanou řadou skriptů T-SQL pro vaši databázi. 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. Úlohy agenta SQL jsou interní komponenta databázového stroje, která se spouští ve službě SQL Managed Instance.

V úlohách agenta SQL existuje několik klíčových konceptů:

  • Kroky úlohy nastaveny na jeden nebo mnoho kroků, které by se měly v rámci úlohy provést. Pro každý krok úlohy můžete definovat strategii opakování a akci, ke které by mělo dojít, pokud krok úlohy proběhne úspěšně nebo selže.
  • Plány definují, kdy se má úloha spustit.
  • Oznámení umožňují definovat pravidla, která se po dokončení úlohy použijí k oznamování operátorů e-mailem.

Kroky úlohy

Kroky úlohy agenta SQL jsou posloupnosti akcí, které by měl agent SQL spustit. Každý krok má následující krok, který by se měl provést, pokud krok proběhne úspěšně nebo selže, počet opakování v případě selhání.

Agent SQL umožňuje vytvářet různé typy kroků úlohy, jako jsou kroky úlohy Transact-SQL, které spouštějí jednu dávku Transact-SQL pro databázi, nebo příkaz operačního systému nebo kroky PowerShellu, které můžou spouštět vlastní skript operačního systému, kroky úlohy SSIS, které umožňují načíst data pomocí modulu runtime SSIS nebo kroků replikace , které můžou publikovat změny z databáze do jiných databází.

Poznámka:

Další informace o využití prostředí Azure SSIS Integration Runtime se službou SSISDB hostované službou SQL Managed Instance najdete v tématu Použití služby Azure SQL Managed Instance se službou SQL Server Integration Services (SSIS) ve službě Azure Data Factory.

Transakční replikace může replikovat změny z tabulek do jiných databází ve službě SQL Managed Instance, Azure SQL Database nebo SQL Serveru. Informace najdete v tématu Konfigurace replikace ve službě Azure SQL Managed Instance.

Jiné typy kroků úloh se v současné době nepodporují ve službě SQL Managed Instance, jako je například replikace sloučení a čtečka fronty.

Plány úlohy

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. Úloha se aktivuje po každém převzetí služeb při selhání.
  • Jednou v určitém datu a čase, což je užitečné pro zpožděné spuštění určité úlohy.
  • Podle plánu opakování.

Další informace o plánování úlohy agenta SQL naleznete v tématu Plánování úlohy.

Poznámka:

Spravovaná instance Azure SQL v současné době neumožňuje spustit úlohu, když je procesor nečinný.

Oznámení o úlohách

Úlohy agenta SQL umožňují dostávat oznámení, když se úloha úspěšně dokončí nebo selže. Oznámení můžete dostávat e-mailem.

Pokud ještě není povolená, musíte nejprve nakonfigurovat funkci Databázová pošta ve službě SQL Managed Instance:

GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Database Mail XPs', 1;
GO
RECONFIGURE

Jako příklad cvičení nastavte e-mailový účet, který se použije k odesílání e-mailových oznámení. Přiřaďte účet k e-mailovému profilu s názvem AzureManagedInstance_dbmail_profile. Pokud chcete odesílat e-maily pomocí úloh agenta SQL ve službě SQL Managed Instance, měl by existovat profil, který musí být volán AzureManagedInstance_dbmail_profile. Jinak spravovaná instance SQL nebude moct odesílat e-maily prostřednictvím agenta SQL.

Poznámka:

Pro poštovní server doporučujeme k odesílání e-mailů použít ověřené služby přenosu SMTP. Tyto předávací služby se obvykle připojují přes porty TCP 25 nebo 587 pro připojení přes PROTOKOL TLS nebo port 465 pro připojení SSL, ale Databázová pošta je možné nakonfigurovat pro použití libovolného portu. Tyto porty vyžadují nové odchozí pravidlo ve skupině zabezpečení sítě spravované instance. Tyto služby slouží k zachování reputace IP adres a domény, aby se minimalizovala možnost, že externí domény vaše zprávy zamítají nebo je umístí do složky SPAM. Zvažte ověřený předávací službu SMTP, která už je na vašich místních serverech. V Azure je SendGrid jednou z takových služeb pro přenos SMTP, ale existují i jiné.

Pomocí následujícího ukázkového skriptu vytvořte Databázová pošta účet a profil a pak je přidružte k sobě:

-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_name = 'SQL Agent Account',
    @description = 'Mail account for Azure SQL Managed Instance SQL Agent system.',
    @email_address = '$(loginEmail)',
    @display_name = 'SQL Agent Account',
    @mailserver_name = '$(mailserver)' ,
    @username = '$(loginEmail)' ,
    @password = '$(password)';

-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
    @profile_name = 'AzureManagedInstance_dbmail_profile',
    @description = 'E-mail profile used for messages sent by Managed Instance SQL Agent.';

-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = 'AzureManagedInstance_dbmail_profile',
    @account_name = 'SQL Agent Account',
    @sequence_number = 1;

Pomocí uložené procedury sp_send_db_mail systému otestujte konfiguraci Databázová pošta prostřednictvím T-SQL:

DECLARE @body VARCHAR(4000) = 'The email is sent from ' + @@SERVERNAME;
EXEC msdb.dbo.sp_send_dbmail  
    @profile_name = 'AzureManagedInstance_dbmail_profile',  
    @recipients = 'ADD YOUR EMAIL HERE',  
    @body = 'Add some text',  
    @subject = 'Azure SQL Instance - test email';  

Operátora můžete upozornit, že se něco stalo s úlohami agenta SQL. Operátor definuje kontaktní informace pro jednotlivce zodpovědného za údržbu jedné nebo více instancí ve službě SQL Managed Instance. V některých případech jsou zodpovědnosti operátora přiřazeny jednomu jednotlivci.

V systémech s více instancemi ve službě SQL Managed Instance nebo SQL Server může mnoho jednotlivců sdílet odpovědnost operátora. Operátor neobsahuje informace o zabezpečení a nedefinuje objekt zabezpečení. V ideálním případě není operátor jednotlivcem, jehož odpovědnost se může změnit, ale distribuční skupina e-mailu.

Operátory můžete vytvářet pomocí aplikace SQL Server Management Studio (SSMS) nebo skriptu Jazyka Transact-SQL, který je znázorněn v následujícím příkladu:

EXEC msdb.dbo.sp_add_operator
    @name=N'AzureSQLTeam',
    @enabled=1,
    @email_address=N'AzureSQLTeamn@contoso.com';

Pomocí protokolu Databázová pošta SSMS potvrďte úspěch nebo selhání e-mailu.

Potom můžete upravit libovolnou úlohu agenta SQL a přiřadit operátory, které budou upozorněny e-mailem, pokud se úloha dokončí, selže nebo bude úspěšná pomocí aplikace SSMS nebo následujícího skriptu T-SQL:

EXEC msdb.dbo.sp_update_job @job_name=N'Load data using SSIS',
    @notify_level_email=3, -- Options are: 1 on succeed, 2 on failure, 3 on complete
    @notify_email_operator_name=N'AzureSQLTeam';

Historie úlohy

Sql Managed Instance v současné době neumožňuje měnit žádné vlastnosti agenta SQL, protože jsou uložené v podkladových hodnotách registru. To znamená, že možnosti pro úpravu zásad uchovávání informací agenta pro záznamy historie úloh jsou opraveny ve výchozím nastavení 1000 záznamů a maximálních 100 záznamů historie na úlohu.

Další informace naleznete v tématu Zobrazení historie úloh agenta SQL.

Oprava členství v rolích databáze

Pokud jsou uživatelé propojení s přihlášeními správce systému přidáni do některé ze tří databázových rolí opravených agentem SQL v msdb systémové databázi, existuje problém, kdy je potřeba udělit explicitní oprávnění EXECUTE třem systémovým uloženým procedurám v master databázi. Pokud k tomuto problému dojde, zobrazí se chybová zpráva The EXECUTE permission was denied on the object <object_name> (Microsoft SQL Server, Error: 229) .

Jakmile přidáte uživatele do pevné databázové role agenta SQL (SQLAgentUserRole, SQLAgentReaderRole nebo SQLAgentOperatorRole) pro msdbkaždé přihlášení uživatele přidané do těchto rolí, spusťte následující skript T-SQL, který explicitně udělí oprávnění EXECUTE k uvedeným systémovým uloženým procedurám. Tento příklad předpokládá, že uživatelské jméno a přihlašovací jméno jsou stejné:

USE [master]
GO
CREATE USER [login_name] FOR LOGIN [login_name];
GO
GRANT EXECUTE ON master.dbo.xp_sqlagent_enum_jobs TO [login_name];
GRANT EXECUTE ON master.dbo.xp_sqlagent_is_starting TO [login_name];
GRANT EXECUTE ON master.dbo.xp_sqlagent_notify TO [login_name];

Omezení úloh agenta SQL ve službě SQL Managed Instance

Stojí za zmínku rozdíly mezi agentem SQL dostupným v SQL Serveru a jako součást služby SQL Managed Instance. Další informace o podporovaných rozdílech funkcí mezi SQL Serverem a službou SQL Managed Instance najdete v tématu Rozdíly T-SQL spravované instance Azure z SQL Serveru.

Některé funkce agenta SQL, které jsou k dispozici na SQL Serveru, nejsou podporované ve službě SQL Managed Instance:

  • Nastavení agenta SQL jsou jen pro čtení.
    • Systémová uložená procedura sp_set_agent_properties není podporována.
  • Povolení nebo zakázání agenta SQL se v současné době nepodporuje. Agent SQL je vždy spuštěný.
  • I když jsou oznámení částečně podporovaná, nejsou podporována následující:
    • Pager se nepodporuje.
    • NetSend není podporován.
    • Upozornění nejsou podporována.
  • Proxy servery se nepodporují.
  • Protokol událostí není podporován.
  • Aktivační událost plánu úloh založená na nečinných procesorech se nepodporuje.
  • Kroky úlohy sloučení replikace nejsou podporovány.
  • Čtečka fronty není podporovaná.
  • Služba Analysis Services není podporována.
  • Spuštění skriptu uloženého jako soubor na disku se nepodporuje.
  • Import externích modulů, jako jsou dbatools a dbachecks, se nepodporují.
  • PowerShell Core se nepodporuje.

Další informace

Další kroky