PDA

Показать полную графическую версию : Бэкап базы данных SQL


mcmurphy
13-05-2015, 17:04
Добрый день!

Есть БД, котораяет работает на SQL-express.
Точнее - Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64)
Aug 19 2014 12:21:34
Copyright (c) Microsoft Corporation
Express Edition with Advanced Services (64-bit) on Windows NT 6.3 <X64>
(Build 9600: ).
Экземпляр по умолчанию, единственный на сервере.

Модель восстановления - полная, размер журнала транзакций ограничен.
База создана не мной, и сейчас возникла необходимость ее бэкапить + усекать журнал (бэкапы тоже не делались).

Если у кого-нибудь есть готовый скриптик по бэкапу и шринку журнала - поделитесь, плиз.
Можно самый простой - чтобы делать полный бэкап БД, полный бэкап журнала и обрезать журнал.

Планируется выполнять через виндовый планировщик, и sqlcmd, и стандартные команды
типа "SQLCMD -S (local) -E -Q "BACKUP DATABASE My_BD TO DISK... BACKUP LOG... DBCC SHRINKFILE"
В принципе, менеджмент студио показывает, как будут выглядеть эти команды в виде кода, но как их увязать, чтобы они запускались через sqlcmd?

Заранее благодарен.

zarex
29-06-2015, 21:02
Я же использую обычно в таких задачах следующий скрипт:

DECLARE @pathName NVARCHAR(512)
SET @pathName = 'D:\Backup\db_backup_' + Convert(varchar(8), GETDATE(), 112) + '.bak'
BACKUP DATABASE [MyDataBase] TO DISK = @pathName WITH NOFORMAT, NOINIT, NAME = N'db_backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10

Этот скрипт создает бекап с именем файла db_backup_YYYYDDMM.bak где YYYYDDMM – это текущая дата. Дата в имени файла позволит нам создавать каждый день бекап в новом файле. Запустите и проверьте что бекап действительно создается такой какой вам и нужен. Этот скрипт сохраняем в какой-нибудь папке под именем schedule.sql, предположим c:\sheduled tasks\. В этой же папке создадим исполняемый файл backup.bat, следующего содержания:

sqlcmd -S SEVERNAME -U UserName -P Password -i schedule.sql
7z a -tzip D:\Backup \db_backup_%date%.zip -i! D:\Backup\db_backup_*.bak
del d:\Backup\db_backup_*.bak

Где меняем SERVERNAME – имя сервера, UserName – имя пользователя, Password – пароль пользователя, schedule.sql – имя сохраненного скрипта. Вторая и третья строка батника архивирует бекап в zip файл и удаляет сам файл бекапа. Для того чтобы работала архивация необходимо установить архиватор 7z и прописать полные пути до исполняемого файла 7z.exe либо положить 7z.exe и 7z.dll в ту же папку, где располагаются скрипты. Теперь можем запустить исполняемый файл backup.bat и проверить проработает ли он так как нужно. Последний шаг это записать schedule в задачи windows. Запускаем Task Scheduler из меню Пуск, либо набираем в командной строке taskschd.msc. В разных версиях Windows это выглядит по разному, да и информацию о том как сделать задачу можно прочитать в помощи Windows. Основное – это запускать задачу от имени пользователя с достаточными правами на используемые папки. При помощи таких действий можно так же запрограммировать и любые другие задачи. В скрипте schedule.sql можно перед бекапом вызвать какие-либо необходимые процедуры, может переиндексирование или сжатие базы данных.

--
admin@uservers.info




© OSzone.net 2001-2012