Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 CHECKDBaz 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.
Jegyzet
További információ: 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ó 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_propertiesnem támogatott.
- A rendszer által tárolt eljárás
- 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.