Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:Azure SQL Managed Instance
Pomocí agenta SQL Serveru ve spravované instanci AzureSQL můžete vytvářet a plánovat úlohy, které se dají pravidelně spouštět v jedné nebo mnoha databázích. Tyto úlohy agenta SQL spouštějí dotazy Transact-SQL (T-SQL) a provádějí úlohy ú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 nebo 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.
- Nasaďte změny schématu, správu přihlašovacích údajů, shromažďování dat o výkonu nebo shromažďování telemetrických dat tenanta (zákazníka).
- Aktualizujte referenční data (informace společné pro všechny databáze) a načtěte data ze služby Azure Blob Storage. V BULK_INSERT najdete argumenty použité k ověření ve službě Azure Blob Storage.
- Běžné úlohy údržby, včetně
DBCC CHECKDBzajištění integrity dat nebo údržby indexu za účelem zlepšení výkonu dotazů. Konfigurujte úlohy ke spuštění napříč kolekcí databází na opakující se bázi, například v době mimo špičku. - Průběžně shromážděte výsledky dotazů ze sady databází do centrální tabulky. Dotazy na výkon je možné průběžně spouštět a konfigurovat tak, aby aktivovaly více úloh, které se mají spustit.
- 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
Agent SQL Serveru spouští úlohy agenta SQL, které se používají pro automatizaci úloh ve službě SQL Managed Instance.
Úlohy agenta SQL představují zadanou řadu 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 jedné místní instanci nebo v několika vzdálených instancích. Úloha agenta SQL je 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 jsou sada jednoho nebo mnoha kroků, které by se měly provést v rámci úlohy. 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žívají k oznamování operátorů e-mailem.
Kroky úlohy
Kroky úlohy agenta SQL jsou posloupnosti akcí, které by měl provést agent SQL. Každý krok má následující krok, který by se měl provést, pokud krok proběhne úspěšně nebo selže, a nastavený počet opakování, pokud selže.
Agent SQL umožňuje vytvářet různé typy kroků úlohy.
- Kroky úlohy v Transact-SQL, které provádějí jednotlivé dávky Transact-SQL proti databázi.
- Příkazy operačního systému nebo postupy PowerShellu, které mohou spouštět vlastní skripty pro operační systém.
- Kroky úlohy SSIS, které umožňují načíst data pomocí běhového prostředí SSIS.
- Kroky replikace , které můžou publikovat změny z databáze do jiných databází
Poznámka:
Další informace 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ě v SQL Managed Instance nepodporují, jako je například sloučená replikace a frontový čtenář.
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:
- Spusťte pokaždé, když se spustí agent SQL Serveru. Úloha se aktivuje po každém převzetí služeb při selhání.
- Začněte jednou v určitém datu a čase, což je užitečné pro zpožděné spuštění úlohy.
- Začněte v rámci opakujícího se plánu.
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 pro 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 nemůže odesílat e-maily prostřednictvím agenta SQL.
Poznámka:
Pro poštovní server doporučujeme používat ověřené předávací služby SMTP (Simple Mail Transfer Protocol) k odesílání e-mailů. Tyto předávací služby se obvykle připojují přes porty 25 nebo 587 pro připojení TLS (Transport Layer Security) nebo port 465 pro připojení SSL, ale databázová pošta je možné nakonfigurovat tak, aby používala libovolný port. Tyto porty vyžadují nové odchozí pravidlo ve skupině zabezpečení sítě spravované instance. Tyto služby se používají k udržování reputace IP adresy a domény, aby se minimalizovala možnost, že externí domény vaše zprávy odmítnou nebo odešlou do složky nevyžádané pošty. Zvažte ověřenou službu předávání 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 účet a profil služby Database Mail a poté je spolu přiřaďte.
-- 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;
Otestujte konfiguraci databázové pošty prostřednictvím T-SQL pomocí uložené procedury sp_send_dbmail systému:
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 prostředích s několika spravovanými instancemi SQL nebo instancemi SQL Serveru může mnoho jednotlivců sdílet odpovědnost operátora. Operátor neobsahuje informace o zabezpečení a nedefinuje bezpečnostní princip. V ideálním případě operátor není jednotlivec, 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';
Potvrďte úspěch nebo selhání e-mailu pomocí záznamu Databázová pošta v SSMS.
Můžete upravit libovolnou úlohu agenta SQL a přiřadit operátory, které jsou upozorněny e-mailem, pokud se úloha dokončí, selže nebo bude úspěšná. Upravte úlohu pomocí 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
Spravovaná instance SQL aktuálně 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ásady uchovávání agenta pro záznamy historie úloh jsou nastavené na výchozí hodnotu 1 000 celkových záznamů a maximálně 100 záznamů historie na úlohu.
Další informace naleznete v tématu Zobrazení historie úloh agenta SQL.
Pevné členství v roli databáze
Pokud jsou uživatelé propojení s přihlášeními bez sysadmin oprávnění přidáni do některé ze tří pevných rolí databáze SQL Agenta v msdb systémové databázi, existuje problém, kdy je potřeba explicitní EXECUTE oprávnění udělit 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í EXECUTE oprávnění 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
Je vhodné si uvědomit 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_propertiesnení podporovaná.
- Systémová uložená procedura
- 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á, následující možnosti se nepodporují:
- Pager není podporován.
- NetSend se nepodporuje.
- 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ém procesoru není podporována.
- Kroky úlohy v replikaci sloučení nejsou podporovány.
- Čtečka fronty není podporována.
- Služba Analysis Services není podporovaná.
- Spuštění skriptu uloženého jako soubor na disku se nepodporuje.
- Import externích modulů, jako jsou dbatools a dbachecks, se nepodporuje.
- PowerShell Core se nepodporuje.
Související obsah
- Co je Azure SQL Managed Instance?
- Co je nového ve službě Azure SQL Managed Instance?
- Rozdíly ve službě Azure SQL Managed Instance T-SQL od SQL Serveru
- Porovnání funkcí: Azure SQL Database a Azure SQL Managed Instance
- Konfigurace databázové pošty
- Odstraňování potíží s odchozím připojením SMTP v Azure