sql >> Database teknologi >  >> RDS >> Sqlserver

Grundlæggende om SQL Server Task Automation

Dette er en introduktionsartikel om automatisering i SQL server primært fokuseret på de grundlæggende begreber. Vi vil diskutere nogle standardpraksis og et par eksempler for at hjælpe begyndere med at komme i gang med SQL-serverautomatisering.

Denne artikel fremhæver også vigtigheden af ​​at automatisere SQL-serveropgaver for at spare tid og kræfter, der kræves for at udføre disse opgaver manuelt.

Derudover vil vi se på tilfælde, hvor det ikke er en god idé at automatisere SQL-serveropgaver på trods af, at automatisering sparer tid og kræfter.

Om automatisering af SQL Server

Lad os først stifte bekendtskab med udtrykket "automatisering", og hvad der præcist er automatisering af SQL-serveropgaver.

Hvad er automatisering?

Automatisering er et bredt begreb, som dækker en bred vifte af ting, men det betyder generelt programmeringsværktøjer og -enheder, som gør det muligt at udføre et sæt opgaver automatisk med ringe eller ingen menneskelig indgriben.

Hvad er SQL Server Automation?

SQL Server-automatisering kan også have flere betydninger, men det handler oftest om at automatisere SQL Server-administrative opgaver for at spare tid og kræfter.

Databaseadministratorer eller infrastrukturteam, der er ansvarlige for styringen af ​​SQL Server og hostede databaser, bruger ofte meget tid på at udføre databasevedligeholdelsesopgaver, som kunne automatiseres ved hjælp af forskellige metoder og planlægges til at køre med bestemte intervaller.

I denne artikel er vi hovedsageligt fokuseret på automatisering af SQL Server-administrationsopgaver.

Hvornår du bør automatisere SQL-opgaver

Automatisering af en SQL Server-administrativ opgave kræver omhyggelig planlægning, før den implementeres. Enhver SQL-administrativ opgave såsom backup, databasevedligeholdelse eller databaseovervågning bør ideelt set automatiseres, hvis den tjener formålet uden at forårsage andre problemer.

Når du ikke bør automatisere SQL-opgaver

På trods af at automatisering i de fleste tilfælde er meget nyttig, er der stadig nogle opgaver, som bedre bør udføres manuelt.

For eksempel, hvis en databaseadministrationsopgave tager 5 minutter at fuldføre, og automatisering af denne opgave kræver 15 timers skrivning og test af automatiseringsscripts, så er det mere effektivt at udføre denne opgave manuelt.bacsql

Der er visse opgaver, som ikke må automatiseres. For eksempel er det ofte en del af en DBA’s opgave at tjekke databaseændringerne, før den implementeres på en live server. Dette gøres for at sikre, at ændringerne er kompatible med måldatabasen. Automatisering af denne opgave har flere risici end fordele, så det er bedre at lade det være som det er.

Generelt set, hvis en databaseopgave kræver manuel indgriben (dvs. den skal ses eller administreres af en person/team for at gå videre til næste trin/stadie) i henhold til din virksomheds regler og forskrifter, så er fuldautomatisering af denne opgave. ikke muligt, medmindre det er godkendt af din virksomheds øverste ledelse.

Eksempler på SQL Automation

Lad os nu se på et par eksempler på SQL-automatisering.

Database Backup Scenario (DBA-perspektiv)

Databaseadministratorer (DBA'er) tager sig af virksomhedens databaser, og deres daglige opgaver omfatter servering af databaserelaterede anmodninger og administration af databaseserveren.

En DBA bruger det meste af deres tid på at administrere og implementere små ændringer i databaserne og tage sig af databaseserveren.

En DBA skal udføre følgende konsekvente opgaver:

  1. Opret en daglig backup af databasen ved slutningen af ​​hver arbejdsdag
  2. Opret en ugentlig backup i slutningen af ​​hver uge
  3. Opret en månedlig backup i slutningen af ​​hver måned.

En daglig backup tager en halv time, og det er det sidste, en DBA gør, når man tager afsted på dagen. Selvom de kan multitaske, når den daglige backup-proces er startet, skal de stadig holde øje med, hvordan det kommer til at sikre, at sikkerhedskopieringen er færdig. Dette skyldes, at sikkerhedskopien skal gemmes på backup-disken, når den er klar.

Selvom vi ignorerer den tid, der bruges på ugentlige og månedlige sikkerhedskopier, vil den tid, der kræves til at gennemføre den daglige sikkerhedskopiering, stige, jo mere du udfører denne proces, fordi databasen vil have flere og flere data. Selvom det tager en halv time at udføre en daglig backup i begyndelsen, kan denne tid stige til cirka en time på et par uger eller måneder afhængigt af datavækst i databasesystemet.

Dette er en uforanderlig opgave, som konstant skal gentages, så det er muligt for en DBA at kede sig eller miste koncentrationen og lave fejl eller gå glip af en dag eller to.

Hvis en DBA automatiserer denne SQL-opgave, så sparer de ikke kun tid og kræfter. Chancerne for at begå en fejl vil blive minimeret.

Den daglige backup-proces kan planlægges til at starte om natten, når der er lav databaseinteraktion. Dagen efter kan DBA tjekke backup og udnytte den sidste time af arbejdsdagen (som tidligere blev brugt til backup-processen) til vigtigere og presserende opgaver.

Senario for databaseudvikling og -implementering

Lad os overveje et meget almindeligt eksempel på databaseudvikling og -implementering (jeg udelukker bevidst test for at forblive inden for denne artikels omfang). En databaseudvikler bruger et databaseudviklingsværktøj såsom SQL Server Data Tools (SSDT) ​​til at tilføje nye tabeller til en database. Når dette er gjort, gemmer de ændringer i SQL-databaseprojektet. Disse ændringer sendes derefter til DBA eller infrastrukturteamet, som skal gennemgå disse ændringer og implementere dem til live-serveren.

De vigtige punkter er som følger:

  1. Databaseudviklere bør ikke offentliggøre deres databaseændringer direkte til live-serveren i henhold til standardpraksis
  2. Databaseadministratorer eller infrastrukturteamet, der administrerer live-serveren, kan ikke offentliggøre ændringer til live-databasen, før de har gennemgået disse ændringer for at sikre, at de ikke udfordrer databasens sammenhæng.

Som du kan forstå ud fra det, vi diskuterede, er fuldstændig automatisering af databaseudviklings- og implementeringsopgaverne ikke praktisk og indebærer mange sikkerhedsrisici.

Så den bedste beslutning ville være at automatisere de trin, der afhænger af en DBA eller et infrastrukturteam.

Databaseindeksvedligeholdelsesopgaver

Databaseindekser spiller en afgørende rolle i at hente resultatsættet (rækkerne) hurtigere fra databasen/databaserne. Disse indekser kræver dog vedligeholdelse med tiden. Vedligeholdelse af databaseindeks kan udføres manuelt i lavsæsonen eller automatiseret. Det kan være en meget tidskrævende opgave, så det er bedre at automatisere denne opgave, især når der er så mange andre databaseserver-relaterede ting at administrere.

Nogle af eksperterne argumenterer dog med dette synspunkt og anbefaler at begrænse indeksvedligeholdelse til en vis grad for at holde øje med processen eller endda gøre dette helt manuelt.

Når det kommer til indeksvedligeholdelse, kan følgende ting forbedre databaseindeksets ydeevne:

  1. Genopbyg indeks
  2. Omorganiser indekset
  3. Defrag indeks
  4. Opdater statistik

Sådan automatiseres SQL-opgaver

Lad os nu se på de grundlæggende krav til automatisering af en SQL-opgave efterfulgt af et meget simpelt eksempel.

Opsæt prøvedatabase

Denne gennemgang kræver følgende enkelt-tabel-eksempeldatabase kaldet UniversityV6 skal opsættes som følger:

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

Kør scriptet for at oprette eksempeldatabasen:

Start af SQL Server Agent

Automatisering af en SQL-opgave afhænger normalt af en SQL Server-agent, medmindre du beslutter dig for at vælge en alternativ rute.

Den første ting du skal bruge er at sikre dig, at en SQL Server Agent kører. Hvis den ikke kører, skal du starte den manuelt og holde den kørende.

Opret forbindelse til en SQL Server-instans, og kig efter SQL Server Agent-noden i Object Explorer. Hvis der vises et rødt "stop"-ikon ved denne node, er det ikke startet endnu:

Højreklik på SQL Server Agent node og klik på Start:

Dernæst skal du bekræfte, at du vil starte en SQL Server-agenttjeneste på din server. Klik på Ja for at gøre dette:

Når den er startet, vil SQL Server Agent have et lille grønt ikon vist ved siden af. Du kan også udvide noden nu:

Opret et nyt job

Højreklik på Jobs mappen, og klik på Nyt job... :

Skriv "Backup UniversityV6 automated task ” og klik på Trin på venstre navigationslinje:

Tilføj et nyt job trin

Klik derefter på Ny , skriv "Backup UniversityV6" som trinnavnet, tilføj følgende SQL-script, og klik på 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

Klik på OK for at afslutte opsætningen af ​​jobbet.

Se det oprettede job

Rul ned til SQL Server Agent og find det nyoprettede job:

Testkør jobbet (automatisk opgave)

Højreklik på Backup UniversityV6 automated task og klik på Start job ved trin...:

Jobbet starter og slutter:

Tjek sikkerhedskopieringsplaceringen

Gå nu til det sted, hvor denne automatiserede opgave oprettede en ny sikkerhedskopi:

Tillykke! Du har med succes automatiseret opgaven med at oprette en databasesikkerhedskopi. Du kan nu gemme det et hvilket som helst backupdrev blot ved at ændre drevbogstavets navn.

Husk, at du altid skal gemme en sikkerhedskopi på et andet backupdrev end systemdrevet C:. Du kan planlægge denne opgave til at køre med hyppige intervaller ved at højreklikke på jobbet og klikke på P egenskaber , og klik derefter på Tidsplaner :

Ting at gøre

Nu hvor du kan automatisere grundlæggende sikkerhedskopieringsopgaver, prøv venligst følgende for at forbedre dine færdigheder:

  1. Planlæg denne opgave til at køre hver dag om eftermiddagen i en uge som en test
  2. Opret en ny tabel kaldet Stats i eksempeldatabasen med følgende kolonner:
    1. StatID (INT)
    2. Statdato (DATETIME2)
    3. TotalRows (INT)

Test nu dig selv ved at oprette en automatisk opgave (nyt job) med at logge rækkeantallet for eleven tabel sammen med dato/klokkeslæt i Statistik bord. Prøv at udfylde elevtabellen ofte.

Planlæg opgaven til at køre hver time, og kontroller, om Statistik tabel afspejler dine dataindsættelser ved at vise dig rækkeantallet i tabellen hver time.


  1. Oprettelse af en webapp fra bunden ved hjælp af Python Flask og MySQL:Del 3

  2. MySQL-serverstartfejl 'Serveren afsluttede uden at opdatere PID-fil'

  3. Problemer med at åbne MDF-fil, fordi den siger SQL-fejl 5171? - Et gæsteindlæg af Andre Williams

  4. Sådan bruges ALL Logical Operator i SQL Server - SQL Server / TSQL Tutorial Del 126