Megosztás a következőn keresztül:


Felügyeleti feladatok automatizálása SQL Agent-feladatok használatával a felügyelt Azure SQL-példányban

A következőkre vonatkozik:Azure SQL Kezelt példány

Az SQL Server Agent felügyelt AzureSQL-példányban való használatával létrehozhat és ütemezhet olyan feladatokat, amelyek rendszeres időközönként végrehajthatók egy vagy több adatbázison. Ezek az SQL Agent-feladatok Transact-SQL (T-SQL) lekérdezéseket futtatnak, és karbantartási feladatokat hajtanak végre. Ez a cikk az SQL Agent felügyelt SQL-példányhoz való használatát ismerteti.

Jegyzet

Az SQL Agent nem érhető el az Azure SQL Database-ben vagy az Azure Synapse Analyticsben. Ehelyett javasoljuk a Elastic Jobsfeladatautomatizálást.

Mikor érdemes SQL Agent-feladatokat használni?

Az SQL Agent-feladatok több esetben is használhatók:

  • Automatizálhatja a felügyeleti feladatokat, és ütemezheti őket hétköznaponként, órák után stb.
    • Sémamódosítások, hitelesítő adatok kezelése, teljesítményadat-gyűjtemény vagy bérlői (ügyfél-) telemetriai gyűjtemény üzembe helyezése.
    • Frissítse a referenciaadatokat (az összes adatbázisra jellemző információkat), és töltse be az adatokat az Azure Blob Storage-ból. Lásd a BULK_INSERT parancsot az Azure Blob Storage-hoz való hitelesítéshez használt argumentumokért.
    • Gyakori karbantartási feladatok, beleértve a DBCC CHECKDB az adatintegritást vagy az indexkarbantartást a lekérdezési teljesítmény javítása érdekében. A feladatokat úgy konfigurálhatja, hogy ismétlődően, például csúcsidőn kívül hajtsa végre az adatbázis-gyűjteményeket.
    • Folyamatosan gyűjtse össze egy adatbáziskészlet lekérdezési eredményeit egy központi táblába. A teljesítmény-lekérdezések folyamatosan végrehajthatók és konfigurálhatók úgy, hogy több végrehajtandó feladatot aktiváljanak.
  • Adatok gyűjtése jelentéskészítéshez
    • Adatbázisok gyűjteményéből származó adatok összesítése egyetlen céltáblába.
    • Hosszabb ideig futó adatfeldolgozási lekérdezések végrehajtása nagy adatbázisokban, például az ügyfél telemetriai adatainak gyűjtésében. Az eredmények egyetlen céltáblába kerülnek a további elemzéshez.
  • Adatmozgások
    • Olyan feladatokat hozhat létre, amelyek más adatbázisokba replikálják az adatbázisokban végrehajtott módosításokat, vagy összegyűjtik a távoli adatbázisokban végrehajtott frissítéseket, és módosításokat alkalmazhatnak az adatbázisban.
    • Sql Server Integration Services (SSIS) használatával olyan feladatokat hozhat létre, amelyek adatokat töltenek be az adatbázisokból vagy az adatbázisba.

SQL Agent-feladatok felügyelt SQL-példányban

Az SQL Server Agent végrehajtja a felügyelt SQL-példány feladatautomatizálásához használt SQL Agent-feladatokat.

Az SQL Agent-feladatok az adatbázishoz tartozó T-SQL-szkriptek meghatározott sorozatai. Feladatok segítségével határozhat meg egy adminisztratív feladatot, amely egyszer vagy többször futtatható, és figyelhető a sikeres vagy sikertelen végrehajtás szempontjából.

A feladatok egy helyi példányon vagy több távoli példányon is futtathatók. Az SQL Agent-feladat egy belső adatbázismotor-összetevő, amelyet a felügyelt SQL-példány szolgáltatásban hajtanak végre.

Az SQL Agent-feladatokban számos alapvető fogalom található:

  • A feladat lépései egy vagy több lépésből állnak, amelyeket a feladaton belül kell végrehajtani. Minden feladatlépéshez megadhatja az újrapróbálkozás stratégiáját és azt a műveletet, amelyet a feladatlépés sikeres vagy sikertelen végrehajtása esetén kell végrehajtani.
  • Ütemezések határozzák meg, hogy mikor kell a feladatot végrehajtani.
  • Az értesítések lehetővé teszik az operátorok e-mailben történő értesítésére használt szabályok meghatározását a feladat befejezése után.

Feladat lépései

Az SQL Agent feladatlépései olyan műveletek sorozatai, amelyeket az SQL Agentnek végre kell hajtania. Minden lépéshez tartozik egy következő lépés, amelyet akkor kell végrehajtani, ha a lépés sikeres vagy sikertelen, és ha nem sikerül, adja meg az újrapróbálkozások számát.

Az SQL Agent segítségével különböző típusú feladatlépéseket hozhat létre.

  • Transact-SQL feladat lépései, amelyek egyetlen Transact-SQL köteget hajtanak végre az adatbázison.
  • Egyéni operációsrendszer-szkript végrehajtására képes operációsrendszer-parancs/PowerShell-lépések.
  • Az SSIS-feladat lépései , amelyek lehetővé teszik az adatok SSIS-futtatókörnyezetben való betöltését.
  • Replikációs lépések, amelyek az adatbázis módosításait más adatbázisokba is közzétehetik.

A tranzakciós replikáció a táblák módosításait képes replikálni más adatbázisokba az SQL Felügyelt Példány, az Azure SQL Database vagy az SQL Server rendszerében. További információ: Replikáció konfigurálása felügyelt Azure SQL-példányban.

Más típusú feladatlépések jelenleg nem támogatott felügyelt SQL-példányban, például az egyesítési replikációban és a várólista-olvasóban.

Munkabeosztások

Az ütemezés meghatározza, hogy mikor fut egy feladat. Több feladat is futtatható ugyanazon az ütemezésen, és több ütemezés is vonatkozhat ugyanarra a feladatra.

Az ütemezés a következő feltételeket határozhatja meg egy feladat futtatásakor:

  • Indítsa el az SQL Server Agent indításakor. A munka minden átállás után aktiválódik.
  • Kezdjen el egy időpontot egy adott dátummal és időpontmal, ami egy feladat késleltetett végrehajtásához hasznos.
  • Kezdje ismétlődő időbeosztással.

Az SQL Agent-feladatok ütemezéséről további információt Feladat ütemezésecímű témakörben talál.

Jegyzet

A felügyelt Azure SQL-példány jelenleg nem teszi lehetővé a feladat elindítását, ha a cpu tétlen.

Feladatértesítések

Az SQL Agent-feladatok lehetővé teszik, hogy értesítéseket kapjon a feladat sikeres vagy sikertelen befejezésekor. E-mailben értesítést kaphat.

Ha még nincs engedélyezve, először konfigurálnia kell a felügyelt SQL-példányon Database Mail funkciót:

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

Példaként állítson be egy e-mail-fiókot az e-mail-értesítések küldéséhez. Rendelje hozzá a fiókot a AzureManagedInstance_dbmail_profilenevű e-mail-profilhoz. Ha SQL Agent-feladatokkal szeretne e-mailt küldeni a felügyelt SQL-példányban, rendelkeznie kell egy AzureManagedInstance_dbmail_profilenevű profillal. Ellenkező esetben a felügyelt SQL-példány nem tud e-maileket küldeni az SQL Agenten keresztül.

Jegyzet

A levelezési kiszolgáló esetében javasoljuk, hogy hitelesített Simple Mail Transfer Protocol (SMTP) továbbítási szolgáltatásokat használjon az e-mailek küldéséhez. Ezek a továbbító szolgáltatások általában a 25-ös vagy az 587-es porton keresztül csatlakoznak a Transport Layer Security (TLS) kapcsolatokhoz, vagy az SSL-kapcsolatokhoz a 465-ös porton keresztül, azonban a Database Mail bármilyen port használatára konfigurálható. Ezek a portok új kimenő szabályt igényelnek a felügyelt példány hálózati biztonsági csoportjában. Ezek a szolgáltatások az IP-cím és a tartomány hírnevének fenntartására szolgálnak, így minimalizálható annak a lehetősége, hogy a külső tartományok elutasítsák az üzeneteket, vagy a LEVÉLSZEMÉT mappába helyezjék őket. Fontolja meg egy hitelesített SMTP-továbbító szolgáltatást, amely már megtalálható a helyszíni kiszolgálókon. Az Azure-ban SendGrid egy ilyen SMTP-továbbító szolgáltatás, de vannak mások is.

A következő példaszkripttel hozzon létre egy Database Mail-fiókot és -profilt, majd társítsa őket egymáshoz:

-- 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;

Tesztelje a Database Mail konfigurációját t-SQL-en keresztül a sp_send_dbmail rendszer által tárolt eljárással:

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';

Értesítheti az operátort, hogy valami történt az SQL Agent-feladatokkal. Az operátorok egy vagy több felügyelt SQL-példány karbantartásáért felelős személy kapcsolattartási adatait határozzák meg. Néha az operátori felelősségek egy személyhez vannak rendelve.

Több felügyelt SQL-példányt vagy SQL Server-példányt tartalmazó környezetekben sok személy osztozhat az operátori felelősségekben. Az operátor nem tartalmaz biztonsági információt, és nem határoz meg biztonsági főazonosítót. Ideális esetben az operátorok nem olyan személyek, akiknek a feladatai változhatnak, hanem egy e-mail-terjesztési csoport.

Az SQL Server Management Studio (SSMS) vagy az alábbi példában látható Transact-SQL szkript használatával operátorokat létrehozni:

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

Ellenőrizze az e-mail sikerességét vagy sikertelenségét az SSMS adatbázis-naplójában.

Módosíthatja az SQL Agent-feladatokat, és hozzárendelheti azokat az operátorokat, amelyek e-mailben értesítést kapnak, ha a feladat befejeződik, sikertelen vagy sikeres lesz. Módosítsa a feladatot az SSMS vagy a következő T-SQL-szkript használatával:

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';

Feladatelőzmények

A felügyelt SQL-példány jelenleg nem teszi lehetővé az SQL Agent tulajdonságainak módosítását, mert azok a mögöttes beállításjegyzék-értékekben vannak tárolva. Ez azt jelenti, hogy a feladatelőzményrekordok ügynökmegőrzési szabályzatának módosítására szolgáló beállítások az alapértelmezett 1000 rekordnál, feladatonként pedig legfeljebb 100 előzményrekordnál vannak rögzítve.

További információ: SQL Agent feladatelőzményeinek megtekintése.

Rögzített adatbázisszerepkör-tagság

Ha a rendszeradatbázis három msdb rögzített SQL Agent-adatbázisszerepköréhez hozzáadják a nem-admin bejelentkezésekhez társított felhasználókat, akkor fennáll egy probléma, amely miatt explicit EXECUTE engedélyeket kell adni az adatbázisban három rendszer által tárolt eljáráshoz master . Ha ez a probléma jelentkezik, megjelenik a The EXECUTE permission was denied on the object <object_name> (Microsoft SQL Server, Error: 229) hibaüzenet.

Miután hozzáadta a felhasználókat az SQL Agent rögzített adatbázis-szerepköréhez (SQLAgentUserRole, SQLAgentReaderRole vagy SQLAgentOperatorRole) msdbaz egyes felhasználók ezen szerepkörökhöz hozzáadott bejelentkezéseihez, hajtsa végre a következő T-SQL-szkriptet, hogy explicit módon adjon EXECUTE engedélyeket a felsorolt rendszer által tárolt eljárásoknak. Ez a példa feltételezi, hogy a felhasználónév és a bejelentkezési név megegyezik:

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];

Sql Agent-feladatok korlátozásai a felügyelt SQL-példányban

Érdemes megjegyezni az SQL Serverben és a felügyelt SQL-példány részeként elérhető SQL Agent közötti különbségeket. Az SQL Server és az SQL Managed Instance közötti támogatott funkciók különbségeiről további információkért lásd Azure SQL Managed Instance T-SQL különbségei az SQL Serverhez képest.

Az SQL Serverben elérhető EGYES SQL Agent-funkciók nem támogatottak a felügyelt SQL-példányban:

  • Az SQL-ügynök beállításai csak olvashatók.
    • A rendszer által tárolt eljárás sp_set_agent_properties nem támogatott.
  • Az SQL Agent engedélyezése/letiltása jelenleg nem támogatott. Az SQL Agent mindig fut.
  • Bár az értesítések részben támogatottak, a következők nem támogatottak:
    • A Pager nem támogatott.
    • A NetSend nem támogatott.
    • A riasztások nem támogatottak.
  • A proxyk nem támogatottak.
  • Az eseménynapló nem támogatott.
  • Az üresjárati CPU-n alapuló feladatütemezési eseményindító nem támogatott.
  • Az egyesítési replikáció feladatlépései nincsenek támogatva.
  • A várólista-olvasó nem támogatott.
  • Az Analysis Services nem támogatott.
  • A lemezen fájlként tárolt szkriptek futtatása nem támogatott.
  • A külső modulok, például a dbatoolok és a dbacheckek importálása nem támogatott.
  • A PowerShell Core nem támogatott.