Автоматический backup и регламентные процедуры в SQL Server 2005 Express Edition.

12.03.09

База данных - Архивирование (backup)

Как известно, SQL Server 2005 Express Edition хорош тем что абсолютно бесплатен, а если учесть, что теперь нужно в стандартной поставке докупать лицензию на sql для каждого пользователя – вдвойне хорош. Правда у бесплатной поставки есть ограничения по объему баз данных (4 Gb), оперативной памяти (1 Gb) и использовании только одного процессора. Для баз среднего размера и небольшого количества пользователей как раз то что нужно. Еще одним из недостатков бесплатной версии является то, что в ней отсутствует встроенная возможность автоматического создания бэкапов и запуска регламентных заданий.

Если со встроенными ограничениями приходится смиряться, то последнее ограничение можно свести на нет. В интернете наткнулся на одну хранимую процедуру, с помощью которой можно удобно выполнять следующие операции:

  • Создание полных архивных копий
  • Создание разностных копий
  • Создание копий лога
  • Проверка целостности баз
  • Перестройка индексов
  • Реорганизация индексов
  • Формирование отчетов о выполнении операций

Как установить:

Извлечь из архива и поместить файл, например, в c:\expressmaint.sql , затем в Пуск-Выполнить набрать «sqlcmd -S .\SQLExpress -i c:\expressmaint.sql»

Как использовать:

Рассмотрим пример: пусть на нашем sql сервере у нас находятся 2 базы: «trade» и «buh». Необходимо настроить, чтобы каждый день в 7 утра делался полный backup баз и после этого делалась перестройка всех индексов. Также нужно, чтобы раз в час обновлялась статистика, и чистился процедурный кэш.

  1. Создаем три папки «C:\Backup\backups_sql», «C:\Backup\scripts_sql» и «C:\Backup\reports_sql». В первой будут храниться утренние бэкапы, во вторую поместим файлы скриптов, а в третью будут сохраняться отчеты о выполнении операций.
  2. Создаем следующие файлы и помещаем их в папку «C:\Backup\scripts_sql»:

Название файла Содержимое
FullDatabaseBackup.sql

exec expressmaint

   @database      = 'ALL_USER',

   @optype        = 'DB',

   @backupfldr    = 'C:\Backup\backups_sql',

   @reportfldr    = 'C:\Backup\reports_sql',

   @verify        = 1,

   @dbretainunit  = 'copies',

   @dbretainval   = 1,

   @rptretainunit = 'copies',

   @rptretainval  = 1,

   @report        = 1

Rebuild_all_indexes.sql

exec expressmaint

   @database      = 'ALL_USER',

   @optype        = 'REINDEX',

   @reportfldr    = 'C:\Backup\reports_sql',

   @rptretainunit = 'days',

   @rptretainval  = 1,

   @report        = 1

Update_statistics.sql

USE [buh]

exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'

go

 

USE [trade]

exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'

go

Free_proc_cashe.sql

USE [buh]

DBCC FREEPROCCACHE

go

 

USE [trade]

DBCC FREEPROCCACHE

go

3. После этого нужно настроить планировщик задач, чтобы каждый скрипт выполнялся в свое время

Для добавления задачи нужно (простите за подробности):

·   Дважды щелкнуть на «Добавить задание» для запуска мастера назначенных задач, а затем на  кнопку «Далее» в первом диалоговом окне.

·   Нажать кнопку «Обзор», найти SQLCMD.exe (по умолчанию, он в папке C:\Program Files\Microsoft SQL Server\90\Tools\binn), а затем нажать кнопку «Открыть».

·   Ввести имя задачи, например «FullDatabaseBackup» и в параметрах выбрать ежедневно.

·   Нажать кнопку «Далее», указать время 07:00, а затем нажать кнопку «Далее»

·   Введите имя и пароль учетной записи, которые будет выполнять эту задачу.

·   Нажмите кнопку «Далее», установите флажок, чтобы открыть дополнительные свойства для этого задачи и нажмите кнопку Готово

·   В текстовом поле «Выполнить» добавить следующее содержание:

 -S . \SQLExpress -i"C:\Backup\scripts_sql\FullDatabaseBackup.sql"

·   Нажмите кнопку ОК.

Аналогично настраиваем для остальных. Перестройку индексов можно назначить на 8 утра, а обновление статистики и чистку кэша раз в час с 09:00 до 21:00.

4. Теперь каждое утро папка «C:\Backup\backups_sql» будет очищаться и туда будут помещаться новые бэкапы. Поэтому осталось настроить какую-нибудь программу для архивирования файлов для переноса бэкапов на резервный диск, комп, ..

Подробное описание и примеры здесь.

Где взять и как установить SQL Server 2005 Express Edition.

Процедура имеет следующие параметры:

Параметр

обяз.

по умолч.

Описание

@database

да

NONE

Служит для указания баз данных для которых будет выполняться операция. Может принимать значения

  • имя конкретной базы данных
  • ALL_USER когда нужно выполнить для всех пользовательских баз данных
  • ALL_SYSTEM для всех системных баз данных

@optype

да

NONE

Указывает на операцию, которая должны выполняться. Может принимать значения:

  • DB – создание полной резервной копии
  • DIFF – создание разностной резервной копии
  • LOG – создание копии лога
  • CHECKDB – проверка целостности
  • REINDEX – перестроить все индексы
  • REORG – реорганизовать все индексы

@backupwith

нет

NULL

Служит для указания дополнительных параметров архивации ( как в BOL для команды BACKUP WITH )

@backupfldr

нет

NULL

Основная папка для записи архивов. Для каждой базы данных будет создана подпапка

@verify

нет

1

Указывает, следует ли проверять файл резервной копии.
Допустимые значения: 1 и 0 с 1 = TRUE и 0 = FALSE

@verifywith

нет

NULL

Дополнительные параметры проверки ( как в BOL для команды VERIFY WITH)

@dbretainval

нет

1

Указывается период времени или количество копий старых архивных копий.

@dbretainunit

нет

NULL

Единица измерения для параметра @dbretainval. Допустимыми значениями являются minutes, hours, days, weeks, months and copies. Сочетание этих двух параметров определяет, как долго или каким образом будут храниться старые архивные копии.

@report

нет

1

Указывает, следует ли формировать отчет о выполнении операции.
Допустимые значения: 1 и 0 с 1 = TRUE и 0 = FALSE

 

@reportfldr

нет

NULL

Указывается папка для отчет, если @report = 1

@rptretainval

нет

1

Указывается период времени или количество копий старых отчетов.

@rptretainunit

нет

NULL

Единица измерения для параметра @rptretainval. Может принимать значения: minutes, hours, days, weeks, months and copies. Сочетание этих двух параметров определяет, как долго или каким образом будут храниться копии старых отчетов.

@delfirst

нет

0

Указывает, следует ли удалить устаревшие резервные копии до выполнения резервного копирования. Допустимые значения: 1 и 0 с 1 = TRUE и 0 = FALSE

 

 

См. также

Архивирование (backup) Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    72880    627    45    

85

Архивирование (backup) Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Программа позволяет выполнять автоматическое создание копий файловых и серверных информационных баз 1С Предприятие 8 и размещение копий в облаке Яндекс.Диск, локальном или сетевом ресурсе.

1200 руб.

03.09.2014    15740    21    6    

27

Архивирование (backup) Администрирование СУБД Системный администратор Россия Бесплатно (free)

Постараюсь объяснить, зачем нужно резервное копирование именно журнала транзакций, а не только базы данных, и почему я словно сбросил груз, настроив его - как, покажу, естественно. Кстати, будут скрипты T-SQL (с подробными комментариями) - отличный способ сделать администрирование базы более уютным.

04.12.2023    9568    n_mezentsev    15    

27

Архивирование (backup) Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной инструкции будет описано, как с помощью pgAdmin, bat-файлов и планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.

07.10.2022    28965    sapervodichka    37    

147

Архивирование (backup) Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Захотелось клиентам выгрузку архива баз, и выгрузку в дт, готовые скрипты с сети не заработали. Может, кому-то поможет. Релиз 8.3.18.1741.

1 стартмани

25.08.2022    5766    3    Gnom-Gluck    6    

7

Архивирование (backup) Системный администратор Программист Платформа 1С v8.3 Абонемент ($m)

Небольшая утилита для копирования файловых баз данных 1С.

1 стартмани

02.06.2022    4708    3    Giblarium    12    

5
Отзывы
13. Hashinger 02.12.20 18:25 Сейчас в теме
sqlmaint больше не поддерживается MS в новых версиях продуктов SQL
ExpressMaint тоже загнулся.
Долго искал и в итоге
SQL BACKUP MASTER
https://www.sqlbackupmaster.com/download на момент написания есть фри версия.
которая складывает все по папочкам,FTP, dropbox, удаляет старые архивы отправляет на почту отчеты об архивах.
То что нужно любителям окошек. Поддерживает все кроме XP
Windows 10, 8, 7, Vista and Windows Server 2008 (SP2 or R2 SP1), 2012, 2016, 2019
SQL Server 2019, 2017, 2016, 2014, 2012, 2008, and 2005.
https://www.sqlbackupmaster.com/features

Будет теперь жить рядом и бекапить все
Прикрепленные файлы:
sbm-setup.zip
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Душелов 4018 12.03.09 12:36 Сейчас в теме
2. anbxp 12.03.09 15:55 Сейчас в теме
А я для этого взял на http://www.codeplex.com/ExpressMaint этот самый ExpressMaint, потом батник в 5 строчек с его вызовом - и все
3. ujs 12.03.09 23:35 Сейчас в теме
Бэкапчик делается проще. Батник в планировщике.
sqlmaint -S имясервера\SQLEXPRESS -U sa -P пароль -D имябазы -BkUpDB D:\Arhivs\SQL -BkUpMedia DISK -DelBkUps 4weeks
последний параметр указывает как долго хранить бэкапы
RodinMax; h00k; -ioan-; Alienvlg; waol; ValeriVP; Gilev.Vyacheslav; Душелов; +8 Ответить
4. anbxp 13.03.09 10:17 Сейчас в теме
5. ujs 13.03.09 12:44 Сейчас в теме
(4) екзешник :) лежит в папке с SQLEXPRESS
выполняет операции обслуживания баз (бэкапы, обновление статистики, перестройка индексов)
подробнее http://msdn.microsoft.com/ru-ru/library/ms162827(SQL.90).aspx
6. Dansur 262 11.08.10 22:00 Сейчас в теме
Не взлетело :cry: планировщик ничего не делает, скопировал в командную строку - вот что выдал:

C:\>"c:\Program Files\Microsoft SQL Server\90\Tools\binn\SQLCMD.EXE" -S .\SQLExp
ress -i "f:\!BackUp!\SQL\scripts_sql\FullDatabaseBackup.sql"
Msg 50000, Level 16, State 1, Server ASOFT-SERVER\SQLEXPRESS, Procedure expressm
aint, Line 176
The folder f:\!BackUp!\SQL\backups_sql\ does not exist on this server
при том что путь точно есть, даже из этого же скрипта беру путь и "cd f:\!BackUp!\SQL\backups_sql\" - успешно,
также если текст этого скрипта запускать самим SQL - то тоже успешно, и копию делает и отчеты хорошие. а вот командной строкой почему то не видит пути. не подскажешь в чем может быть дело?
7. Vladimir_D 122 19.09.11 07:40 Сейчас в теме
Автору спасибо за труд!
ujs пишет:
sqlmaint -S имясервера\SQLEXPRESS -U sa -P пароль -D имябазы -BkUpDB D:\Arhivs\SQL -BkUpMedia DISK -DelBkUps 4weeks
последний параметр указывает как долго хранить бэкапы

За этот пример вообще поклон!
8. Akpish 06.12.11 13:54 Сейчас в теме
Кто бы что ни говорил, а организация backup средствами СУБД наиболее эффективная....никаких тебе зависаний планировщика, никакой головной боли с отключением пользователей, все ровненько и просто. Спасибо за публикацию.
9. DoctorRoza 07.01.15 21:43 Сейчас в теме
Отмечусь, пригодится! :)
10. ssa 05.06.15 13:15 Сейчас в теме
Спасибо автору за тему, а
ujs за это:
ujs пишет:
sqlmaint -S имясервера\SQLEXPRESS -U sa -P пароль -D имябазы -BkUpDB D:\Arhivs\SQL -BkUpMedia DISK -DelBkUps 4weeks
последний параметр указывает как долго хранить бэкапы

Пригодилось!
11. dage 6 03.12.17 00:21 Сейчас в теме
Оживим тему надеюсь )).
sqlmaint хорошо, но в sql express 2017 его нет более, что делать?
Кто может что подсказать, а то не эстетично как-то сейчас резервные копии делаются ))
12. ZiMaK 27.10.20 14:23 Сейчас в теме
поддерживаю, давайте оживим, с недавних пор стал адимнистратор БД)))) использую експрес 2012, с бэкапированием и резервной копией разобрался, надо допилить архивацию 7Zip

SQLCMD -S имя_сервера -E -Q "BACKUP DATABASE имя_датабазе TO DISK = 'C:\DataBase\Backup\имя_датабазе%date%.bak' WITH INIT, NOFORMAT, SKIP, NOUNLOAD"
XCOPY C:\DataBase\Backup\имя_датабазе%date%.bak \\файлохранилище\шара_бэкапа\*.* /Y
13. Hashinger 02.12.20 18:25 Сейчас в теме
sqlmaint больше не поддерживается MS в новых версиях продуктов SQL
ExpressMaint тоже загнулся.
Долго искал и в итоге
SQL BACKUP MASTER
https://www.sqlbackupmaster.com/download на момент написания есть фри версия.
которая складывает все по папочкам,FTP, dropbox, удаляет старые архивы отправляет на почту отчеты об архивах.
То что нужно любителям окошек. Поддерживает все кроме XP
Windows 10, 8, 7, Vista and Windows Server 2008 (SP2 or R2 SP1), 2012, 2016, 2019
SQL Server 2019, 2017, 2016, 2014, 2012, 2008, and 2005.
https://www.sqlbackupmaster.com/features

Будет теперь жить рядом и бекапить все
Прикрепленные файлы:
sbm-setup.zip
Оставьте свое сообщение