sql >> Databáze >  >> RDS >> Sqlserver

Základy automatizace úloh serveru SQL Server

Toto je úvodní článek o automatizaci na SQL serveru primárně zaměřený na základní pojmy. Probereme některé standardní postupy a několik příkladů, které začátečníkům pomohou začít s automatizací SQL serveru.

Tento článek také zdůrazňuje důležitost automatizace úloh SQL serveru, aby se ušetřil čas a úsilí potřebné k ručnímu provádění těchto úloh.

Dále se podíváme na případy, kdy není dobrý nápad automatizovat úlohy SQL serveru, přestože automatizace šetří čas a námahu.

O automatizaci SQL Server

Nejprve se seznámíme s pojmem „automatizace“ a co přesně je automatizace úloh serveru SQL.

Co je automatizace?

Automatizace je široký pojem, který pokrývá širokou škálu věcí, ale obecně znamená programovací nástroje a zařízení, která umožňují provádět sadu úkolů automaticky s malým nebo žádným zásahem člověka.

Co je SQL Server Automation?

Automatizace SQL Serveru může mít také několik významů, ale nejčastěji se týká automatizace administrativních úloh SQL Serveru, aby se ušetřil čas a úsilí.

Správci databází nebo týmy infrastruktury odpovědné za správu serveru SQL Server a hostovaných databází často tráví spoustu času prováděním úkolů údržby databáze, které lze automatizovat různými metodami a naplánovat jejich spouštění v určených intervalech.

V tomto článku se zaměřujeme především na automatizaci úloh správy SQL Serveru.

Kdy byste měli automatizovat úlohy SQL

Automatizace administrativní úlohy serveru SQL Server vyžaduje pečlivé plánování před její implementací. Jakákoli administrativní úloha SQL, jako je zálohování, údržba databáze nebo monitorování databáze, by měla být v ideálním případě automatizována, pokud slouží účelu, aniž by způsobila jakýkoli jiný problém.

Kdy byste neměli automatizovat úlohy SQL

Přestože je automatizace ve většině případů velmi užitečná, stále existují některé úkoly, které by bylo lepší provádět ručně.

Pokud například dokončení úlohy správy databáze trvá 5 minut a automatizace této úlohy vyžaduje 15 hodin psaní a testování automatizačních skriptů, pak je efektivnější provést tuto úlohu ručně.bacsql

Existují určité úkoly, které nesmí být automatizovány. Často je například součástí práce správce databází zkontrolovat změny databáze před jejím nasazením na živý server. To se provádí, aby bylo zajištěno, že změny jsou kompatibilní s cílovou databází. Automatizace tohoto úkolu s sebou nese více rizik než výhod, takže je lepší ji nechat tak, jak je.

Obecně řečeno, pokud jakákoli databázová úloha vyžaduje manuální zásah (tj. musí ji vidět nebo spravovat osoba/tým, aby mohl přejít k dalšímu kroku/fázi) v souladu s pravidly a předpisy vaší společnosti, pak je tato úloha plně automatizována. není proveditelné, pokud to neschválí nejvyšší vedení vaší společnosti.

Příklady automatizace SQL

Podívejme se nyní na několik příkladů automatizace SQL.

Scénář zálohování databáze (perspektiva DBA)

Správci databází (DBA) se starají o podnikové databáze a jejich každodenní úkoly zahrnují obsluhu požadavků souvisejících s databázemi a správu databázového serveru.

DBA tráví většinu času správou a implementací malých změn v databázích a péčí o databázový server.

DBA musí provádět následující konzistentní úkoly:

  1. Na konci každého pracovního dne vytvořte denní zálohu databáze
  2. Na konci každého týdne vytvořte týdenní zálohu
  3. Na konci každého měsíce vytvořte měsíční zálohu.

Denní zálohování trvá půl hodiny a je to poslední věc, kterou DBA dělá, když odchází. I když mohou po zahájení procesu každodenního zálohování provádět multitasking, musí stále sledovat, jak to bude, aby bylo zajištěno dokončení zálohování. Je to proto, že záloha by měla být uložena na záložním disku, až bude připravena.

I když budeme ignorovat čas strávený týdenním a měsíčním zálohováním, čas potřebný k dokončení denního zálohování se bude prodlužovat, čím více budete tento proces provádět, protože databáze bude mít stále více dat. I když na začátku trvá provádění denní zálohy půl hodiny, tato doba se může během několika týdnů nebo měsíců zvýšit přibližně na jednu hodinu v závislosti na nárůstu dat v databázovém systému.

Jedná se o neměnný úkol, který se musí neustále opakovat, takže se může stát, že se DBA začne nudit nebo ztratí koncentraci a udělá chyby nebo vynechá den nebo dva.

Pokud DBA automatizuje tuto úlohu SQL, ušetří nejen čas a úsilí. Pravděpodobnost, že uděláte chybu, bude minimalizována.

Proces denního zálohování lze naplánovat tak, aby se spustil během noci, kdy je nízká interakce s databází. Následující den může DBA zkontrolovat zálohu a využít poslední hodinu pracovního dne (která se dříve používala pro proces zálohování) pro důležitější a naléhavější úkoly.

Scénář vývoje a nasazení databáze

Podívejme se na velmi běžný příklad vývoje a nasazení databáze (záměrně vylučuji testování, abych zůstal v rozsahu tohoto článku). Vývojář databáze používá nástroj pro vývoj databáze, jako je SQL Server Data Tools (SSDT), k přidávání nových tabulek do databáze. Jakmile to provedete, uloží změny v projektu databáze SQL. Tyto změny jsou poté odeslány DBA nebo týmu infrastruktury, který musí tyto změny zkontrolovat a nasadit na živý server.

Důležité body jsou následující:

  1. Vývojáři databáze by neměli publikovat své změny databáze přímo na živém serveru podle standardních postupů
  2. Správci databáze nebo tým infrastruktury, který spravuje živý server, nemohou publikovat žádné změny v živé databázi, dokud tyto změny nezkontrolují, aby se zajistilo, že nenaruší konzistenci databáze.

Jak můžete pochopit z toho, co jsme probrali, úplná automatizace úloh vývoje a nasazení databáze není praktická a představuje mnoho bezpečnostních rizik.

Nejlepším rozhodnutím by tedy bylo automatizovat kroky, které závisí na týmu DBA nebo infrastruktury.

Úlohy údržby indexu databáze

Databázové indexy hrají zásadní roli při rychlejším získávání sady výsledků (řádků) z databáze (databází). Tyto indexy však vyžadují údržbu v průběhu času. Údržba indexu databáze může být prováděna ručně mimo špičku nebo automatizovaně. Může to být velmi časově náročný úkol, takže je lepší tento úkol automatizovat, zvláště když je potřeba spravovat tolik dalších věcí souvisejících s databázovým serverem.

Někteří odborníci však s tímto úhlem pohledu argumentují a doporučují do určité míry omezit údržbu indexu, aby bylo možné sledovat proces, nebo to dokonce provádět zcela ručně.

Pokud jde o údržbu indexu, výkon indexu databáze mohou zlepšit následující věci:

  1. Znovu sestavit index
  2. Reorganizovat index
  3. Defragmentujte index
  4. Aktualizovat statistiky

Jak automatizovat úlohy SQL

Podívejme se nyní na základní požadavky na automatizaci úlohy SQL a následuje velmi jednoduchý příklad.

Nastavení ukázkové databáze

Tento návod vyžaduje následující ukázkovou databázi s jednou tabulkou s názvem UniversityV6 nastavit následovně:

-- (1) Create the UniversityV6 sample database
CREATE DATABASE UniversityV6;
GO

USE UniversityV6

CREATE TABLE [dbo].[Student] (
    [StudentId] INT           IDENTITY (1, 1) NOT NULL,
    [Name]      VARCHAR (30)  NULL,
    [Course]    VARCHAR (30)  NULL,
    [Marks]     INT           NULL,
    [ExamDate]  DATETIME2 (7) NULL,
    CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED ([StudentId] ASC)
);
GO

Spuštěním skriptu vytvořte ukázkovou databázi:

Spuštění SQL Server Agent

Automatizace úlohy SQL obvykle závisí na agentovi SQL Server, pokud se nerozhodnete zvolit alternativní cestu.

První věc, kterou potřebujete, je ujistit se, že je spuštěn SQL Server Agent. Pokud neběží, musíte jej spustit ručně a nechat spuštěný.

Připojte se k instanci SQL Server a vyhledejte uzel SQL Server Agent v Průzkumníku objektů. Pokud je u tohoto uzlu zobrazena červená ikona „stop“, není ještě spuštěn:

Klikněte pravým tlačítkem na SQL Server Agent uzel a klikněte na Start:

Dále musíte potvrdit, že chcete na svém serveru spustit službu agenta SQL Server. Klikněte na Ano jak to udělat:

Po spuštění se vedle SQL Server Agent zobrazí malá zelená ikona. Nyní můžete také rozbalit uzel:

Vytvořit novou úlohu

Klikněte pravým tlačítkem na Úlohy a klikněte na Nová úloha… :

Zadejte „Automatická úloha Backup UniversityV6 “ a klikněte na Kroky na levém navigačním panelu:

Přidat nový krok úlohy

Dále klikněte na Nový , jako název kroku zadejte „Backup UniversityV6“, přidejte následující skript SQL a klikněte na OK :

-- Backup the UniversityV6 sample database using the date time stamp
DECLARE @BackupName VARCHAR(100)
SET @BackupName=CONCAT('C:\Backup\UniversityV6-',FORMAT(GETDATE(),'yyyy-MM-dd-hh-mm-tt'),'.bak')
BACKUP DATABASE UniversityV6 TO [email protected] WITH COMPRESSION, INIT;
GO

Klikněte na OK dokončete nastavení úlohy.

Zobrazit vytvořenou úlohu

Přejděte dolů na SQL Server Agent a vyhledejte nově vytvořenou úlohu:

Testovací spuštění úlohy (automatická úloha)

Klikněte pravým tlačítkem na Automatická úloha Backup UniversityV6 a klikněte na Spustit úlohu v kroku…:

Úloha začne a skončí:

Zkontrolujte umístění zálohy

Nyní přejděte do umístění, kde tato automatická úloha vytvořila novou zálohu:

Gratulujeme! Úspěšně jste zautomatizovali úlohu vytvoření zálohy databáze. Nyní jej můžete uložit na jakýkoli záložní disk jednoduše změnou názvu písmene disku.

Pamatujte, že zálohu byste měli vždy uložit na jiný záložní disk, než je systémový disk C:. Tuto úlohu můžete naplánovat tak, aby se spouštěla ​​v častých intervalech, kliknutím pravým tlačítkem na úlohu a kliknutím na P vlastnosti a poté kliknutím na Plány :

Co dělat

Nyní, když můžete automatizovat základní úlohy zálohování databáze, vyzkoušejte následující, abyste zlepšili své dovednosti:

  1. Naplánujte si spouštění této úlohy každý den odpoledne po dobu jednoho týdne jako test
  2. Vytvořte novou tabulku s názvem Statistiky ve vzorové databázi s následujícími sloupci:
    1. StatID (INT)
    2. StatDate (DATETIME2)
    3. TotalRows (INT)

Nyní se otestujte vytvořením automatizovaného úkolu (nové úlohy) protokolování počtu řádků pro Studenta tabulky spolu s datem/časem ve Statistiky stůl. Zkuste často zaplňovat tabulku Student.

Naplánujte spouštění úlohy každou hodinu a zkontrolujte, zda Statistiky tabulka odráží vaše vložení dat tím, že zobrazuje počet řádků v tabulce každou hodinu.


  1. Primární klíč v SQL:Vše, co potřebujete vědět o operacích primárního klíče

  2. Mělo by mít MySQL nastavené časové pásmo na UTC?

  3. Jak použít MAX() na výsledek dílčího dotazu?

  4. Nelze se připojit k localDB ve VS2012 – Při navazování připojení k serveru SQL došlo k chybě související se sítí nebo specifickou instancí...