Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помощь в написании запроса  [new]
skygliderus
Member

Откуда:
Сообщений: 2
Народ,

Возник такой вопрос и никак не могу подобрать путь решения.

Собственно сабж...На SQL 2008 R2 крутятся порядка 10 баз (1С). Из которых активно используются только 4, ещё 4 используются от случая к случаю и 2 для просмотра информации.

Учитывая ограниченность дисковых ресурсов и ежедневный бэкап (модель восстановления полная) всех 10 баз с хранением в течении минимум полгода (требование заказчика) я хочу бэкапы делать не штатными средствами, а с помощью скрипта. Вот тут и встаёт вопрос. Можно ли запускать бэкап только при наличии изменений в (на выбор): размере файла, дате изменения. Т.е. чтобы бэкап делался ТОЛЬКО в случае если в базы вносились изменения?!!!
30 окт 13, 12:44    [15051867]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в написании запроса  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
skygliderus
Народ,

Возник такой вопрос и никак не могу подобрать путь решения.

Собственно сабж...На SQL 2008 R2 крутятся порядка 10 баз (1С). Из которых активно используются только 4, ещё 4 используются от случая к случаю и 2 для просмотра информации.

Учитывая ограниченность дисковых ресурсов и ежедневный бэкап (модель восстановления полная) всех 10 баз с хранением в течении минимум полгода (требование заказчика) я хочу бэкапы делать не штатными средствами, а с помощью скрипта. Вот тут и встаёт вопрос. Можно ли запускать бэкап только при наличии изменений в (на выбор): размере файла, дате изменения. Т.е. чтобы бэкап делался ТОЛЬКО в случае если в базы вносились изменения?!!!

При изменении данных в БД физический размер файла может не изменяться.
Можно, например, проверять свободное место в файле БД, если изменилось - делать бэкап. Ну эт как один из вариантов.
30 окт 13, 12:51    [15051929]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в написании запроса  [new]
Гость333
Member

Откуда:
Сообщений: 3683
skygliderus,

Вот статью почитайте, вроде должно вам подойти: New script: How much of the database has changed since the last full backup?
30 окт 13, 13:03    [15052055]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в написании запроса  [new]
skygliderus
Member

Откуда:
Сообщений: 2
Гость333
skygliderus,

Вот статью почитайте, вроде должно вам подойти: New script: How much of the database has changed since the last full backup?


Спасибо, очень познавательно! Надо попробовать на тестовой базе. НО...

автор
Note that after doing a full backup you will never see Changed Extents equal to zero. It will always be 4 + (number of online data files – 1), and around 20 or so for msdb


Используя этот скрипт, я получаю переменную Changed Extents с неким значением и использую его как триггер для запуска бэкапа в зависимости от этого значения - is it right? Но я не совсем понял как это число обрабатывать... в цитате, которую я выделил говориться, что оно будет отлично от 0, но не понимаю выражение number of online data files - это что?
30 окт 13, 14:12    [15052613]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в написании запроса  [new]
Гость333
Member

Откуда:
Сообщений: 3683
skygliderus
number of online data files - это что?

Полагаю, это файлы БД, выдаваемые запросом (см. также Состояния файла):
select * from sys.database_files where state_desc = 'ONLINE'


Как это применить? Ну, я бы сделал так (раз модель восстановления — полная):
— бэкап журналов транзакций можно делать по расписанию, без всяких условий. Если в БД не было изменений — размер бэкапа будет минимален;
— по другому расписанию, раз в сутки, анализировать процент изменившихся экстентов в каждой БД. Общий размер БД, в страницах, можно получить как сумму значений size из системного представления sys.database_files, ну и надо учесть, что один экстент равен 8 страницам;
— если процент изменившихся экстентов превысил некий порог_1, сделать дифференциальный бэкап;
— если процент изменившихся экстентов превысил некий порог_2 (который больше, чем порог_1), сделать полный бэкап.

Конкретные значения порогов не знаю, не буду тыкать пальцем в небо.
30 окт 13, 15:29    [15053414]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить