Подтвердить что ты не робот

Автоматизированные резервные копии SQL Server

Каковы рекомендации программных продуктов для создания автоматизированных резервных копий баз данных SQL Server 2008?

Резервное копирование должно происходить без использования базы данных в автономном режиме/отладки.

4b9b3361

Ответ 1

Я бы порекомендовал просто создать план обслуживания в SQL Server для обработки резервных копий, его можно настроить на резервное копирование в указанное место в указанное время без отключения баз данных и обработать инкрементную очистку резервной копии.

http://msdn.microsoft.com/en-us/library/ms189715.aspx

Ответ 2

Если вы используете SQL Server Express, вы не найдете пользовательский интерфейс для запуска периодических резервных копий.
В этом случае вам нужно запустить пакет, используя запланированные задачи Windows или что-то подобное.

Не забудьте использовать пользователя с достаточно привилегиями для доступа к SQL Server

В пакетном файле

"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" -S 
(local)\SQLExpress -i D:\dbbackups\SQLExpressBackups.sql

В SQLExpressBackups.sql

BACKUP DATABASE MyDataBase1 TO  DISK = N'D:\DBbackups\MyDataBase1.bak' 
WITH NOFORMAT, INIT,  NAME = N'MyDataBase1 Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

BACKUP DATABASE MyDataBase2 TO  DISK = N'D:\DBbackups\MyDataBase2.bak' 
WITH NOFORMAT, INIT,  NAME = N'MyDataBase2 Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

GO

Ответ 3

Я боролся с этим какое-то время, потому что не было очевидно, как работать с режимом, который создавал файлы с разными именами, чтобы один запуск не переписывал другой. В конце он создал следующий пакетный файл Windows

:: Daily Backup of SQLSERVER databases

:: AKC 30 Apr 2011

::

:: Set environment variables

SET SQLCMDPASSWORD=xxxxxx
SET BACKUPDIR=C:\backups\db\

SET SCRIPTDIR=D:\Public\DB\batch_scripts\

:: Issue backup commands from a sql script

SQLCMD -U a_backup -S SERVER\SQLEXPRESS -i %SCRIPTDIR%daily_backup.sql

:: Tidy Up Old Backup Files (keep for 5 days)

FORFILES /P %BACKUPDIR% /S /M "*.bak" /D -5 /C "cmd /c del @path"

где a_backup - это мой вход в sqlserver с привилегиями резервного копирования. Соответствующий sql

DECLARE @thistime nvarchar(25);

DECLARE @filename nvarchar(255);

SET @thistime = CONVERT(nvarchar,GETDATE(),126);

SET @filename = "$(BACKUPDIR)" + N'PASL' + SUBSTRING(@thistime,1,10) + N'_DB.bak';

BACKUP DATABASE DB_live

    TO DISK = @FILENAME

    WITH INIT;

GO

Открытие команды "FORFILES" для очистки старых файлов было ключевым для меня.

Эквиваленты журналов транзакций

:: Transaction Log Backups of SQLSERVER databases

:: AKC 30 Apr 2011

:: Run at reasonably spread out times of the day

:: Set environment variables

SET SQLCMDPASSWORD=xxxxxx
SET BACKUPDIR=C:\backups\db\
SET SCRIPTDIR=D:\Public\DB\batch_scripts\

:: Issue backup commands from a sql script

SQLCMD  -U a_backup -S SERVER\SQLEXPRESS -i %SCRIPTDIR%tlog_backup.sql

с sql файлом

DECLARE @thistime nvarchar(25);

DECLARE @filename nvarchar(255);

SET @thistime = CONVERT(nvarchar,GETDATE(),126);

SET @filename = "$(BACKUPDIR)" + N'PASL' + SUBSTRING(@thistime,1,10) + SUBSTRING(@thistime,11,3) + N'_LOG.bak';

BACKUP LOG DB_live

    TO DISK = @FILENAME

    WITH INIT;

GO

Я должен отметить, что файлы базы данных находятся на моем диске D:, поэтому я взял резервные копии на диск C:.

Ежедневное резервное копирование вводится как задание в планировщике задач Windows для ежедневного запуска в 4 часа ночи. Резервное копирование журнала транзакций запускается ежедневно в 8:00 утра с повторением каждые 4 часа после 13 часов (заставляя его работать в 8:00 пополудни, с 16:00 до 20:00 каждый день).