Облачное хранилище

Создаем backup всех баз даных в MSSQL 2008/2012

 

Для того что бы сделать резервные копии всех баз данных в Вашем MSSQL сервере 2008/2012 года, можно воспользоваться SQL следующим запросом:

<span class="pln">DECLARE </span><span class="lit">@name</span><span class="pln"> VARCHAR</span><span class="pun">(</span><span class="lit">50</span><span class="pun">)</span> <span class="pun">--</span><span class="pln"> database name
DECLARE </span><span class="lit">@path</span><span class="pln"> VARCHAR</span><span class="pun">(</span><span class="lit">256</span><span class="pun">)</span> <span class="pun">--</span><span class="pln"> path </span><span class="kwd">for</span><span class="pln"> backup files
DECLARE </span><span class="lit">@fileName</span><span class="pln"> VARCHAR</span><span class="pun">(</span><span class="lit">256</span><span class="pun">)</span> <span class="pun">--</span><span class="pln"> filename </span><span class="kwd">for</span><span class="pln"> backup
DECLARE </span><span class="lit">@fileDate</span><span class="pln"> VARCHAR</span><span class="pun">(</span><span class="lit">20</span><span class="pun">)</span> <span class="pun">--</span><span class="pln"> used </span><span class="kwd">for</span><span class="pln"> file name

SET </span><span class="lit">@path</span> <span class="pun">=</span> <span class="str">'c:db-backup' 
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)

DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('</span><span class="pln">master</span><span class="str">','</span><span class="pln">model</span><span class="str">','</span><span class="pln">msdb</span><span class="str">','</span><span class="pln">tempdb</span><span class="str">')

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '</span><span class="pln">_</span><span class="str">' + @fileDate + '</span><span class="pun">.</span><span class="pln">BAK</span><span class="str">'
BACKUP DATABASE @name TO DISK = @fileName

FETCH NEXT FROM db_cursor INTO @name
END

CLOSE db_cursor
DEALLOCATE db_cursor</span>

В результате выполнения запроса, резервная копия каждой базы будет лежать в отдельном файле в папке c:db-backup или в той, что укажете Вы. Естественно, перед началом нужно эту папку создать, иначе выполнение запроса закончится ошибкой.