Архивиране на бази данни на Microsoft SQL Server

По време на работа се занимавам с MSSQL сървъри за бази данни. Често е необходимо бързо да се настрои архивиране на база данни, както на тестови сървъри, така и в производство. В същото време в мрежата можете да намерите много различни едносрични източници, как да ги архивирате или не, но никъде няма повече или по-малко универсални готови решения. На новото място на работа отново се сблъсках с този проблем. По определени причини всички бази данни в компанията (досега) са в режим на прост модел на възстановяване, следователно решението, дадено в текста, не е пълно, но съдейки по въпросите във форумите, начинаещи и просто разработчици и администратори, които са далеч от тези задачи, то е доста подходящо като решение, но в процеса всеки може да го допълни сам. Скриптът извършва архивиране на посочените бази данни, като взема предвид в кои дни от седмицата да се правят пълни архиви, колко последни пълни и диференциални архиви да се съхраняват. Проектиран за архивиране на бази данни с прост модел за възстановяване, ако трябва да архивирате и регистрационни файлове, тогава по аналогия можете лесно да допълвате скрипта сами. Може би, когато имам нужда, ще добавя този скрипт. В края на архивирането, остарелите архиви на базата данни се изтриват от диска.

Посочваме пътищата, където ще съхраняваме нашите архиви, в момента на стартиране на архивирането ще бъдат създадени подпапки в тези папки за всяка архивирана база данни:

Ако не посочим списък с конкретни бази данни в @IncludeBase за архивиране, тогава всички бази данни се вземат и базите данни, посочени в @ExcludeBase, се изключват от тях:

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

Колко най-нови копия за всеки тип архив да се съхраняват на диска:

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

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

Ще добавя от коментара на ideatum, че процедурата xp_cmdshell е деактивирана по подразбиране в Microsoft SQL Server от съображения за сигурност.

АКТУАЛИЗАЦИЯ Скриптът е подобрен, за да създаде пълно резервно копие на базата данни при стартиране, ако липсва, дори ако днес не е денят за създаването му

АКТУАЛИЗАЦИЯ2 Добавена проверка за статус на база данни (ОНЛАЙН)

Hardcore conf в C++. Каним само професионалисти.