Share via


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

A következőre vonatkozik: Felügyelt Azure SQL-példány

Az SQL Server-ügynök sql serverben és felügyelt SQL-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 a Transact-SQL (T-SQL) lekérdezések futtatásához és karbantartási feladatok elvégzéséhez. Ez a cikk az SQL Agent felügyelt SQL-példányhoz való használatát ismerteti.

Megjegyzés:

Az SQL Agent nem érhető el az Azure SQL Database-ben vagy az Azure Synapse Analyticsben. Ehelyett azt javasoljuk, hogy rugalmas feladatokkal automatizálja a feladatokat.

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.
    • Üzembe helyezhet sémamódosításokat, kezelheti a hitelesítő adatokat, teljesítményadatokat vagy bérlői (ügyfél-) telemetriát gyűjthet.
    • Referenciaadatok frissítése (az összes adatbázisra jellemző információk), adatok betöltése az Azure Blob Storage-ból. A Microsoft a SHARED ACCESS SIGNATURE hitelesítés használatát javasolja az Azure Blob Storage-ban való hitelesítéshez.
    • Gyakori karbantartási feladatok, beleértve DBCC CHECKDB az adatintegritást vagy az indexkarbantartást a lekérdezési teljesítmény javítása érdekében. Úgy konfigurálhatja a feladatokat, hogy a rendszer egy adott adatbázis-gyűjteményen rendszeres időközönként hajtsa őket végre, például csúcsidőn kívül.
    • A lekérdezési adatokat az adatbázis-készletekből folyamatosan egy központi táblába gyűjtheti. A teljesítménylekérdezések folyamatosan végrehajthatók, illetve konfigurálhatók úgy, hogy további végrehajtandó feladatokat indítsanak el.
  • 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.
    • Olyan hosszabban futó adatfeldolgozási lekérdezéseket hajthat végre nagy adatbáziskészleteken, amilyen például az ügyfél-telemetria gyűjtése. A rendszer az eredményeket egyetlen céltáblában gyűjti össze 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 Agent-feladatokat az SQL Agent szolgáltatás hajtja végre, amely továbbra is az SQL Server és a felügyelt SQL-példány feladatautomatizálására szolgál.

Az SQL Agent Jobs az adatbázishoz tartozó T-SQL-szkriptek meghatározott sorozata. Feladatok használatával definiálhat egy olyan felügyeleti feladatot, amely egy vagy több alkalommal futtatható, és figyelhető a siker vagy a sikertelenség szempontjából.

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

Az SQL Agent-feladatokban több alapvető fogalom is van:

  • A feladat egy vagy több lépésből álló lépéskészlete , amelyet végre kell hajtani a feladaton belül. Minden feladatlépéshez meghatározhatja az újrapróbálkozás stratégiáját és azt a műveletet, amely akkor történjen, ha a feladatlépés sikeres vagy sikertelen.
  • Az ütemezések határozzák meg, hogy mikor kell végrehajtani a feladatot.
  • Az értesítések lehetővé teszik az operátorok e-mailben történő értesítésére szolgáló 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 a következő lépés, amelyet akkor kell végrehajtani, ha a lépés sikeres vagy sikertelen, az újrapróbálkozások száma sikertelenség esetén.

Az SQL Agent lehetővé teszi különböző típusú feladatlépések létrehozását, például olyan Transact-SQL-feladatlépéseket, amelyek egyetlen Transact-SQL-köteget hajtanak végre az adatbázison, vagy az operációs rendszer parancs-/PowerShell-lépései, amelyek egyéni operációsrendszer-szkripteket hajthatnak végre, az SSIS-feladatlépések lehetővé teszik az adatok SSIS-futtatókörnyezettel való betöltését, vagy olyan replikációs lépéseket, amelyek közzétehetik az adatbázis módosításait más adatbázisokban.

Megjegyzés:

Az Azure SSIS integrációs modul és a felügyelt SQL-példány által üzemeltetett SSISDB használatára vonatkozó további információkért lásd : Felügyelt Azure SQL-példány használata AZ SQL Server Integration Services (SSIS) használatával az Azure Data Factoryben.

A tranzakciós replikáció replikálhatja a táblák módosításait a felügyelt SQL-példány, az Azure SQL Database vagy az SQL Server más adatbázisaiba. 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ámogatottak a felügyelt SQL-példányokban, például az egyesítési replikációban és a várólista-olvasóban.

Feladatütemezések

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:

  • Amikor az SQL Server Agent elindul. A feladat minden feladatátvétel után aktiválódik.
  • Egy alkalommal, egy adott napon és időpontban, amely hasznos lehet egy feladat késleltetett végrehajtásához.
  • Ismétlődő ütemezés szerint.

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

Megjegyzés:

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

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 az Adatbázisposta funkciót a felügyelt SQL-példányon:

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

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

Megjegyzés:

A levelezési kiszolgáló esetében azt javasoljuk, hogy hitelesített SMTP-továbbítási szolgáltatásokkal küldjön e-maileket. Ezek a továbbító szolgáltatások általában a 25-ös vagy az 587-ös TCP-porton keresztül csatlakoznak TLS-en keresztüli kapcsolatokhoz, vagy SSL-kapcsolatok esetén 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 a 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_db_mail 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.

A felügyelt SQL-példányokban vagy SQL Serverben több példányt tartalmazó rendszerekben sok személy osztozhat az operátorok felelősségi körében. Az operátorok nem tartalmaznak biztonsági információkat, és nem határoznak meg biztonsági tagot. Ideális esetben az operátorok nem olyan személyek, akiknek a feladatköre változhat, hanem egy e-mail-terjesztési csoport.

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

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

Erősítse meg az e-mail sikerességét vagy sikertelenségét az SSMS adatbázis-levelezési naplóján keresztül.

Ezután 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 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ásokat a rendszer az összes rekord alapértelmezett beállításánál, feladatonként pedig legfeljebb 100 előzményrekordnál rögzíti.

További információt az SQL Agent feladatelőzményeinek megtekintése című témakörben talál.

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

Ha a rendszeradatbázisban a nem sysadmin bejelentkezésekhez társított felhasználókat hozzáadják a rendszeradatbázis három rögzített SQL Agent-adatbázisszerepköréhez msdb , 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 hibaüzenet The EXECUTE permission was denied on the object <object_name> (Microsoft SQL Server, Error: 229) .

Miután hozzáadta a felhasználókat az SQL Agent rögzített adatbázis-szerepköréhez (SQLAgentUserRole, SQLAgentReaderRole vagy SQLAgentOperatorRole) msdba szerepkörökhöz hozzáadott minden egyes felhasználói bejelentkezéshez, hajtsa végre az alábbi T-SQL-szkriptet, hogy explicit módon adjon VÉGREHAJTÁSI 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 a felügyelt SQL-példány közötti támogatott funkciók közötti különbségekről további információt az Azure SQL Managed Instance T-SQL-eltérései az SQL Serverről című témakörben talál.

Az SQL Serverben elérhető SQL Agent egyes funkciói 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 folyamatosan 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ós feladat lépései nem támogatottak.
  • 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.

Tudjon meg többet

További lépések