Za poslední rok jsem prezentoval mnoho relací o Azure SQL Database a také jsem psal mnoho článků a blogů. Často dostávám otázku, zda je údržba databáze stále důležitým faktorem při používání Azure SQL Database. Ano – úlohy jako údržba indexu, aktualizace statistik a kontrola konzistence jsou stále důležité a je na DBA, aby tyto úlohy naplánoval. Zmatek pramení z toho, že Azure SQL Database je platforma jako služba a Microsoft je zodpovědný za infrastrukturu a také za zpracování záloh. Zatímco některé aspekty fyzického poškození mohou být zohledněny, logické poškození v databázi nikoli. Z toho důvodu stále doporučuji klientům spouštět DBCC CHECKDB
aby byla zajištěna jejich plná ochrana.
Problém, který vyvstává u jakéhokoli nového DBA pracujícího s Azure SQL Database, je ten, že neexistuje vestavěný SQL Server Agent, na jaký jsme zvyklí u SQL Server Standard a Enterprise Edition.
Chcete-li naplánovat úlohy údržby pro Azure SQL Database, máte několik možností:
- Propojené servery
- Plány údržby databáze
- Powershell
- Služby Azure
- Elastické zakázky
Následující ukázky předpokládají, že jste již nakonfigurovali přihlašovací účty, pravidla brány firewall a další nastavení zabezpečení pro vzdálený přístup k vašim Azure SQL Databases.
Propojené servery
Připojení k Azure SQL Database pomocí propojeného serveru je velmi běžný přístup, protože většina správců databází už zná vytváření a správu propojených serverů. Dva nejběžnější způsoby, které jsem viděl, že klienti používají propojené servery, jsou buď nativního klienta SQL Server nebo poskytovatele Microsoft OLE DB pro ovladače ODBC jako poskytovatele. Pokud používáte nativního klienta, budete muset jako zdroj dat zadat název serveru; pokud však používáte ovladač ODBC, budete muset získat připojovací řetězec a použít jej jako řetězec poskytovatele. Obě tyto hodnoty najdete na Azure Portal pro vaši databázi. Po kliknutí na databázi se zobrazí název serveru a možnost zobrazení připojovacích řetězců databáze. Tento název serveru, sqlperformance.database.windows.net je to, co bych použil pro zdroj dat SQL Server Native Client.
Když kliknete na „Zobrazit databázové připojovací řetězce“, máte aktuálně možnosti pro ADO.NET, JDBC, ODBC a PHP. Chcete-li zobrazit připojovací řetězec pro ODBC, klikněte na kartu ODBC.
Dále budete muset vytvořit propojený server v SSMS. V části „Objekty serveru“ klikněte pravým tlačítkem na „Propojené servery“, vyberte „Nový propojený server“ a zadejte požadované informace v závislosti na volbě poskytovatele zdroje dat.
Dále klikněte na „Zabezpečení“ a definujte své preference. Obvykle se mi zobrazuje možnost „Vytvořit pomocí tohoto kontextu zabezpečení“ se vzdáleným přihlašovacím jménem a heslem.
Jakmile máte toto vše definováno, klikněte na OK. Nyní můžete kliknout pravým tlačítkem na svůj nový propojený server a otestovat připojení.
Nyní můžete odkazovat na propojený server a volat jakékoli uložené procedury, jako je Ola Hallengren's Index Optimize a DatabaseIntegrityCheck, přímo proti Azure SQL Database v kroku úlohy SQL Agent.
Plány údržby databáze
Pokud plánujete pro údržbu použít plán údržby databáze, je tento proces o něco jednodušší. Chcete-li začít, jednoduše vytvořte plán údržby ručně nebo pomocí průvodce. Pokud používáte průvodce, po vytvoření plánu údržby můžete plán upravit a poté přidat připojení k Azure. Poté změníte každý úkol tak, aby používal nové připojení. Vaše obrazovka připojení by měla vypadat takto:
Nyní můžete naplánovat spouštění plánů údržby databáze během období údržby.
PowerShell
PowerShell je vynikající možností pro práci s opakovatelnými úlohami a používání PowerShellu s Azure SQL Database je přímočaré. Funkci Invoke-SqlCmd můžete použít k dotazování nebo provádění příkazů proti vašim databázím.
Běžným přístupem je použití skriptu podobného:
$params = @{ 'Database' = 'YourDatabase' 'ServerInstance' = 'instance.database.windows.net' 'Username' = 'UserName' 'Password' = 'ComplexP@$$word' 'Query' = 'Your Query Here' } Invoke-Sqlcmd @params
Pro svůj dotaz můžete použít optimalizaci indexu a kontroly konzistence Ola Hallengrena nebo jakýkoli vlastní skript, který jste používali. Poté budete muset naplánovat své skripty PowerShell pomocí jakéhokoli plánovače, který používáte pro vaši organizaci.
Služby Azure
Součástí platformy Azure je Azure Automation a abyste mohli začít, musíte si vytvořit účet automatizace. Budete muset zadat název účtu, vybrat předplatné, skupinu prostředků, umístění a určit, zda chcete vytvořit účet Azure Run As.
Jakmile si vytvoříte účet, můžete začít vytvářet runbooky. S runbooky můžete dělat téměř cokoliv. Existuje mnoho existujících run knih, které můžete procházet a upravovat pro vlastní použití, včetně zajišťování, monitorování, správy životního cyklu a dalších.
Runbooky můžete vytvořit offline nebo pomocí Azure Portal a jsou vytvořeny pomocí PowerShellu. V tomto příkladu znovu použijeme kód z ukázky PowerShellu a také předvedeme, jak můžeme použít vestavěný plánovač Azure Service ke spuštění našeho stávajícího kódu PowerShellu a nemusíme se spoléhat na místní plánovač, plánovač úloh nebo virtuální počítač Azure. naplánovat úlohu.
Začněte kliknutím na Runbooks
Dále klikněte na „Přidat runbook“
Klikněte na „Vytvořit nový runbook“
Zadejte název a typ sady Runbook, pro svou ukázku jsem vybral PowerShell.
Poté se ocitnete na obrazovce úprav pro svůj nový runbook. Zde můžete nakonfigurovat podrobnosti a vytvořit svůj runbook. Pro toto demo právě spouštím skript PowerShell pro volání uložené procedury proti databázi. Jakmile budete mít celý svůj kód zpracován, můžete runbook publikovat a uložit.
Odtud můžete spustit runbook a ověřit, že vše funguje podle toho, a také naplánovat spuštění runbooku v konkrétních časech. Projděte si tento proces kliknutím na „Plán“
Budeme muset kliknout na „Propojit rozvrh s vaší runbook“ a protože jsme dosud žádné plány nevytvářeli, budeme muset definovat nový kliknutím na „Vytvořit nový rozvrh“.
Podobně jako my v SQL Server Agent poskytněte název plánu, popis, pokud chcete, kdy začít a jak často by se měl spouštět. Nastavil jsem, aby se toto opakovalo každý den ve 2:00.
Nyní mám publikovaný runbook, jehož spuštění je naplánováno každou noc ve 2:00, aby bylo možné provádět údržbu indexu na jedné z mých databází.
Elastické úlohy
Elastic Jobs je stále v náhledu, takže nebudu zabíhat do velkých podrobností, protože je vysoká pravděpodobnost, že se změní obrazovky a funkce.
Použití elastických úloh vyžaduje, abyste definovali fond elastických databází a přiřadili k fondu alespoň jednu databázi, se kterou chcete spouštět úlohy. Jakmile vytvoříte elastický fond a přidáte databázi, můžete kliknout na vytvořit úlohu.
Zadejte své práci popisný název a zadejte uživatelské jméno a heslo pro připojení k databázím a také skript, který chcete spustit. Klikněte na Uložit a nyní máte elastickou úlohu.
Poté můžete zvolit spuštění úlohy, zobrazení skriptu nebo zrušení úlohy, pokud je spuštěna.
I když existují určité věci, které můžete dělat prostřednictvím Azure Portal s elastickými úlohami, skutečné možnosti napájení a konfigurace jsou dostupné prostřednictvím PowerShell API. Chcete-li naplánovat úlohu, musíte použít rutinu New-AzureSQLJobSchedule. Více podrobností o dodatečných funkcích a způsobu plánování úloh naleznete zde:
- Vytvářejte a spravujte elastické úlohy databáze SQL pomocí prostředí PowerShell
Celkově se mi funkce elastických úloh líbí a doufám, že až bude obecně dostupná, bude do Azure Portal zabudováno více funkcí, aniž byste je museli spravovat pomocí PowerShellu. Líbí se mi, že můžete spouštět T-SQL přímo, aniž byste jej museli spouštět v prostředí PowerShell a jak může běžet proti všem databázím ve fondu.
Shrnutí
Pokud jde o Azure SQL Databases, ano, stále jste odpovědní za určitou údržbu vašich databází. Máte mnoho metod plánování úloh a v závislosti na vašich potřebách a velikosti vašeho prostředí jsou některé možnosti lepšími řešeními. Propojené servery a plány údržby databází jsou rychlé a snadné metody, pokud máte místní nebo virtuální počítače Azure s již nakonfigurovaným serverem SQL a malým nasazením Azure. PowerShell je vždy dobrá volba, jen musíte najít řešení pro naplánování spouštění skriptů. Azure automation je velmi robustní řešení, které vám umožňuje vytvářet runbooky, abyste dosáhli téměř čehokoli, a snadno plánovat runbooky a elastické úlohy, je dalším skvělým řešením založeným na Azure, pokud máte úkoly, které potřebujete spouštět se skupinou databází v elastickém fondu.