Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Основи на автоматизацията на задачите на SQL Server

Това е уводна статия за автоматизацията в SQL сървър, фокусирана основно върху основните концепции. Ще обсъдим някои стандартни практики и няколко примера, които да помогнат на начинаещите да започнат с автоматизацията на SQL сървъра.

Тази статия също така подчертава значението на автоматизирането на задачите на SQL сървъра, за да се спестят време и усилия, необходими за ръчно извършване на тези задачи.

Освен това ще разгледаме случаите, в които не е добра идея да се автоматизират задачи на SQL сървъра, въпреки факта, че автоматизацията спестява време и усилия.

Относно автоматизирането на SQL сървър

Нека първо се запознаем с термина „автоматизация“ и какво точно представлява автоматизацията на задачите на SQL сървъра.

Какво е автоматизация?

Автоматизацията е широк термин, който обхваща широк спектър от неща, но обикновено означава инструменти и устройства за програмиране, които позволяват автоматично изпълнение на набор от задачи с малка или никаква човешка намеса.

Какво е автоматизация на SQL Server?

Автоматизацията на SQL Server също може да има няколко значения, но най-често се занимава с автоматизиране на административните задачи на SQL Server, за да се спести време и усилия.

Администраторите на бази данни или инфраструктурните екипи, отговорни за управлението на SQL Server и хостваната(ите) база(и), често прекарват много време в изпълнение на задачи за поддръжка на база данни, които могат да бъдат автоматизирани чрез различни методи и планирани да се изпълняват на определени интервали.

В тази статия ние сме фокусирани основно върху автоматизацията на административните задачи на SQL Server.

Кога трябва да автоматизирате SQL задачи

Автоматизирането на административна задача на SQL Server изисква внимателно планиране, преди да бъде приложена. Всяка административна задача на SQL, като архивиране, поддръжка на база данни или мониторинг на база данни, трябва да бъде в идеалния случай автоматизирана, ако служи на целта, без да причинява друг проблем.

Когато не трябва да автоматизирате SQL задачи

Въпреки че автоматизацията е много полезна в повечето случаи, все още има някои задачи, които е по-добре да се изпълняват ръчно.

Например, ако задачата за администриране на база данни отнема 5 минути за завършване, а автоматизирането на тази задача изисква 15 часа писане и тестване на скриптове за автоматизация, тогава е по-ефективно тази задача да се изпълнява ръчно.bacsql

Има определени задачи, които не трябва да се автоматизират. Например, често е част от работата на DBA да проверява промените в базата данни, преди да я разположи на жив сървър. Това се прави, за да се гарантира, че промените са съвместими с целевата база данни. Автоматизирането на тази задача носи повече рискове, отколкото ползи, така че е по-добре да я оставите така, както е.

Най-общо казано, ако някоя задача на базата данни изисква ръчна намеса (т.е. тя трябва да бъде видяна или управлявана от човек/екип, за да се премине към следващата стъпка/етап) в съответствие с правилата и разпоредбите на вашата компания, тогава пълното автоматизиране на тази задача е не е осъществимо, освен ако не е одобрено от висшето ръководство на вашата компания.

Примери за автоматизация на SQL

Нека сега да разгледаме няколко примера за автоматизация на SQL.

Сценарий за архивиране на база данни (DBA перспектива)

Администраторите на бази данни (DBA) се грижат за корпоративните бази данни и техните ежедневни задачи включват обслужване на заявки, свързани с база данни, и управление на сървъра на базата данни.

DBA прекарва по-голямата част от времето си в управление и внедряване на малки промени в базите данни и се грижи за сървъра на базата данни.

DBA трябва да изпълнява следните последователни задачи:

  1. Създавайте ежедневно архивно копие на базата данни в края на всеки работен ден
  2. Създавайте седмично резервно копие в края на всяка седмица
  3. Създавайте месечно архивно копие в края на всеки месец.

Ежедневното архивиране отнема половин час и е последното нещо, което DBA прави, когато напуска за деня. Въпреки че могат да изпълняват много задачи, след като ежедневният процес на архивиране започне, те все още трябва да следят как ще гарантира, че архивирането е завършено. Това е така, защото архивът трябва да се съхранява на диска за архивиране, когато е готов.

Дори ако пренебрегнем времето, прекарано в седмично и месечно архивиране, времето, необходимо за завършване на ежедневното архивиране, ще се увеличава, колкото повече изпълнявате този процес, защото базата данни ще има все повече и повече данни. Дори ако отнеме половин час за ежедневно архивиране в началото, този период от време може да се увеличи до приблизително един час за няколко седмици или месеци в зависимост от нарастването на данните в системата на базата данни.

Това е неизменна задача, която трябва да се повтаря непрекъснато, така че е възможно един DBA да се отегчи или да загуби концентрация и да направи грешки или да пропусне ден или два.

Ако DBA автоматизира тази SQL задача, тогава те не само ще спестят време и усилия. Шансовете за грешка ще бъдат сведени до минимум.

Ежедневният процес на архивиране може да бъде планиран да започне през нощта, когато има слабо взаимодействие с базата данни. На следващия ден DBA може да провери архива и да използва последния час от работния ден (който преди беше използван за процеса на архивиране) за по-важни и спешни задачи.

Сценарий за разработване и внедряване на база данни

Нека разгледаме един много често срещан пример за разработване и внедряване на база данни (съзнателно изключвам тестването, за да остана в обхвата на тази статия). Разработчикът на база данни използва инструмент за разработка на база данни като SQL Server Data Tools (SSDT), за да добави нови таблици към база данни. След като това бъде направено, те запазват промените в проекта за база данни на SQL. След това тези промени се изпращат до администратора на база данни или инфраструктурния екип, който трябва да прегледа тези промени и да ги разгърне на живия сървър.

Важните точки са следните:

  1. Разработчиците на бази данни не трябва да публикуват промените си в базата данни директно на живия сървър съгласно стандартните практики
  2. Администраторите на база данни или инфраструктурният екип, който управлява сървъра на живо, не могат да публикуват никакви промени в живата база данни, преди да прегледат тези промени, за да гарантират, че няма да оспорват последователността на базата данни.

Както можете да разберете от това, което обсъдихме, пълното автоматизиране на задачите за разработване и внедряване на база данни не е практично и крие много рискове за сигурността.

Така че най-доброто решение би било да се автоматизират стъпките, които зависят от DBA или инфраструктурен екип.

Задачи за поддръжка на индекса на базата данни

Индексите на базата данни играят жизненоважна роля за по-бързото извличане на набора от резултати (редове) от базата(ите). Тези индекси обаче изискват поддръжка с времето. Поддръжката на индекса на базата данни може да се извършва ръчно по време на непиковите часове или автоматизирано. Това може да е много времеемка задача, така че е по-добре да автоматизирате тази задача, особено когато има толкова много други неща, свързани със сървъра на базата данни, за управление.

Някои от експертите обаче спорят с тази гледна точка и препоръчват да се ограничи поддръжката на индекса до известна степен, за да се следи процеса или дори да се прави това напълно ръчно.

Когато става въпрос за поддръжка на индекси, следните неща могат да подобрят производителността на индекса на базата данни:

  1. Преизграждане на индекса
  2. Реорганизиране на индекса
  3. Индекс за дефрагментиране
  4. Актуализиране на статистиката

Как да автоматизираме SQL задачи

Нека сега да разгледаме основните изисквания за автоматизиране на SQL задача, последвани от много прост пример.

Настройте примерна база данни

Това ръководство изисква следната примерна база данни с една таблица, наречена UniversityV6 да се настрои, както следва:

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

Изпълнете скрипта, за да създадете примерната база данни:

Стартиране на агента на SQL Server

Автоматизирането на SQL задача обикновено зависи от агент на SQL Server, освен ако не решите да изберете алтернативен маршрут.

Първото нещо, от което се нуждаете, е да се уверите, че SQL Server Agent работи. Ако не работи, трябва да го стартирате ръчно и да го поддържате да работи.

Свържете се с екземпляр на SQL Server и потърсете възела на SQL Server Agent в Object Explorer. Ако има червена икона „стоп“, показана на този възел, той все още не е стартиран:

Щракнете с десния бутон върху Агент на SQL сървър възел и щракнете върху Старт:

След това трябва да потвърдите, че искате да стартирате услуга на агент на SQL Server на вашия сървър. Щракнете върху Да за да направите това:

Веднъж стартиран, SQL Server Agent ще има малка зелена икона, показана до него. Можете също да разширите възела сега:

Създайте нова работа

Щракнете с десния бутон върху Работни места папка и щракнете върху Нова работа... :

Въведете „Автоматизирана задача на Backup UniversityV6 ” и щракнете върху Стъпки в лявата навигационна лента:

Добавяне на нова стъпка за работа

След това щракнете върху Ново , въведете „Backup UniversityV6“ като име на стъпка, добавете следния SQL скрипт и щракнете върху 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

Щракнете върху OK за да завършите настройката на заданието.

Преглед на създаденото задание

Превъртете надолу до агента на SQL Server и намерете новосъздаденото задание:

Пробно стартиране на заданието (автоматизирана задача)

Щракнете с десния бутон върху Автоматизирана задача Backup UniversityV6 и щракнете върху Стартиране на работа в стъпка...:

Работата ще започне и ще завърши:

Проверете местоположението за архивиране

Сега отидете на мястото, където тази автоматизирана задача създаде ново архивиране:

Честито! Успешно автоматизирахте задачата за създаване на резервно копие на база данни. Вече можете да го съхранявате на всяко резервно устройство, просто като промените името на буквата на устройството.

Моля, не забравяйте, че винаги трябва да запазвате резервно копие на резервно устройство, различно от системното устройство C:. Можете да планирате тази задача да се изпълнява на чести интервали, като щракнете с десния бутон върху заданието и щракнете върху P свойства и след това щракнете върху Графици :

Неща за правене

Сега, когато можете да автоматизирате основните задачи за архивиране на база данни, моля, опитайте следното, за да подобрите уменията си:

  1. Планирайте тази задача да се изпълнява всеки ден следобед в продължение на една седмица като тест
  2. Създайте нова таблица, наречена Статистика в примерната база данни със следните колони:
    1. StatID (INT)
    2. StatDate (DATETIME2)
    3. Общо редове (INT)

Сега се тествайте, като създадете автоматизирана задача (нова работа) за регистриране на броя на редовете за Студент таблица заедно с датата/часа в Статистика маса. Опитайте се да попълвате често таблицата Student.

Планирайте задачата да се изпълнява на всеки час и проверете дали Статистика таблицата отразява вашите вмъквания на данни, като ви показва броя на редовете в таблицата на всеки час.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да увеличите размера на файла с данни в SQL Server (T-SQL)

  2. Скрипт на цялата база данни SQL-Server

  3. Не може да се зареди DLL 'SqlServerSpatial.dll'

  4. Обединете стойностите на редовете в CSV (известен още като GROUP_CONCAT за SQL Server)

  5. Linux - PHP 7.0 и MSSQL (Microsoft SQL)