Чтобы получить полную копию базы с возможностью беспроблемного подключения на любом другом сервере, совсем не обязательно углубляться в настройки. Для запуска бэкапа достаточно выполнить элементарный sql-скрипт:
DECLARE @pathName NVARCHAR(512)
SET @pathName = ‘D:BACKUPSNAME-OF-THE-BASE_‘ + Convert(varchar(8), GETDATE(), 112) + ‘.bak’
BACKUP DATABASE [NAME-OF-THE-BASE] TO DISK = @pathName WITH NOFORMAT, NOINIT, NAME = N’db_backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
Где D:BACKUPS — это папка для сохранения резервных копий, а NAME-OF-THE-BASE — имя целевой базы данных. Далее необходимо поместить bat-ник для запуска скрипта в Планировщик задач Windows — и все. Каждый день в обозначенное время будет создаваться полный бэкап нужной базы. Разумеется, сама папка для бэкапов должна находиться не на самом сервере, а на внешнем диске, файловом хранилище или другом компьютере сети.
sqlcmd -S SERVERNAME -U sa -P YOUR-PASSWORD -i «c:ackups.sql»
В данном случае SERVERNAME — это имя сервера (например, SERVERSQLEXPRESS), YOUR-PASSWORD — пароль учетной записи sa, а c:ackups.sql — путь к скрипту, созданному на первом шаге. При наличии WinRAR, полученные файлы можно упаковывать для экономии места:
«c:Program FilesWinRARRar.exe» a -m2 D:BACKUPS1C_backup_%date%.rar D:BACKUPSNAME-OF-THE-BASE_*.bak
del D:BACKUPSNAME-OF-THE-BASE_*.bak
Простой и надежный способ бэкапа без углубления в тонкости настройки SQL Server Management Studio.
ИМХО, лучше углубиться, там много полезного.
Во-первых, настоятельно рекомендую явно указывать параметр COMPRESSION или NO_COMPRESSION. Если резервные копии в последствии будут сжиматься архиватором, то лучше встроенную компрессию SQL отключить. Экономия места составит около 30%. Если же резервные копии архивировать не планируется, то встроенная компрессия на нормальном железе существенно сокращает время резервного копирования по сети, даже на гигабитке. То есть, скорость встроенной компресси на SQL существенно быстрее скрости локальной сети.
Во-вторых, использовать Планировщик для этой цели неудобно. Слабоваты его возможности, да и журнал нормально вести не умеет. Я рекомендовал бы все же использовать SQL Server Agent. Он ведь именно для этого предназначен. А задача может быть существенно сложнее, чем просто резервное копирование.
Для примера, я настоятельно рекомендую иметь клиентам базу минус день. То есть ночью автоматически переписывать конфигурацию и БД на некую тестовую базу. Когда пользователь не уверен, как что-то правильно проводить или обрабатывать — он без страха может сам поэкспериментировать на такой БД.
(2), спасибо за толковый комментарий! Возможности SQL Server Agent, действительно, позволяют очень тонко настроить бэкапы. Но практика показывает, что неопытные администраторы часто ошибаются при выборе способа копирования — и полученные bak-и становятся бесполезными в случае полного краха сервера.
А как будет выглядеть SQL-скрипт для автоматического разворачивания этого бэкапа в базу-копию?
Спасибо за bat-ник. Это упростило жизнь.
Спасибо, взял на заметку.
Было бы интересно узнать. Есть ли скрипт для восстановления наиболее свежего бекапа?
А КАК ВОССТАНОВИТЬ БД
DECLARE @pathName NVARCHAR(512)
SET @pathName = ‘D:HotBackupasebackup.bak’
RESTORE DATABASE NAME-OF-THE-BASE FROM DISK = @pathName