If-Koubou

Партида скрипт за архивиране на всички ваши SQL Server бази данни

Партида скрипт за архивиране на всички ваши SQL Server бази данни (Как да)

Вече разгледахме как да архивирате SQL Server база данни от командния ред, така че какво, ако искате да архивирате всичките си бази данни наведнъж? Бихте могли да създадете партиден скрипт, който изпълнява резервната команда за всяка база данни, но този скрипт трябва да се актуализира всеки път, когато се добавя или премахва база данни. Освен това резервните копия на базата данни ще бъдат добавени към един файл, който ще нараства с размера на новото резервно копие всеки път, когато се изпълнява. Вместо това, в истинската мода "Настройте я и я забравяйте", ще създадем партиден скрипт, който ще се адаптира към вашия SQL Server, когато се добавят и премахват нови бази данни.

За да стигнете до точката, това е резервният скрипт:

@ OFF OFF
SETLOCAL

REM Вземете дата във формат YYYY-MM-DD (предполага локализация е Съединените щати)
FOR / F "символи = 1,2,3,4 delims = /" %% A IN ('Дата / T') DO SET NowDate = %% D - %% B - %% C

REM Изграждане на списък с бази данни за архивиране
SET DBList =% SystemDrive% SQLDBList.txt
SqlCmd -E -S MyServer -h-1 -W -Q "SET NoCount ON; SELECT Име от master.dbo.sysДата бази WHERE [Име] NOT IN ('master', 'model', 'msdb', 'tempdb') ">"% DBList%

REM Архивиране на всяка база данни, пренасочвайки датата към името на файла
FOR / F "символи = *" %% I IN (% DBList%) DO (
ECHO База данни за архивиране: %% I
SqlCmd -E -S MyServer -Q "BACKUP DATABASE [%% I] На диск =" D: Гръб% NowDate% _ %% I.bak ""
Хуманитарна помощ.
)

REM Почистете темп файла
АКО съществува "% DBList%" DEL / F / Q "% DBList%"

ENDLOCAL

Ако приемем, че датата е 1/13/2009 и имате 3 бази данни, наречени "MyDB", "OtherDB" и "DB Name with Spaces", скриптът ще създаде 3 файла в посоченото място за архивиране:

  • 2009-01-13_AnotherDB.bak
  • 2009-01-13_DB Име с Spaces.bak
  • 2009-01-13_MyDB.bak

Персонализиране и изпълнение на партидния скрипт

Разбира се, ще искате да персонализирате сценария за вашата среда, така че ето какво трябва да направите:

  • Ако локалът на вашата машина не е настроен на САЩ, командата 'Date / T' може да не върне датата във формата "Tue 01/13/2009". Ако случаят е такъв, променливата "NowDate" няма да даде желания формат и трябва да бъде коригирана. (1 място)
  • Променете "MyServer", за да бъде името на вашия SQL Server (добавете името на потребителския модел, ако е приложимо). (2 места)
  • Базите данни, наречени "master", "model", "msdb" и "tempdb", са бази данни, които се доставят със SQL Server. Можете да добавите допълнителни имена на базата данни в този списък, ако не искате те да бъдат архивирани. (1 място)
  • Променете местоположението за архивиране от "D: Backup" до мястото, където искате да се съхраняват архивните файлове на базата данни.

След като персонализирате партидния скрипт, планирайте го да се изпълнява чрез Windows Task Scheduler като потребител с права на администратор и всички сте настроени.