Создание резервной копии баз данных
Резервная копия баз данных MS SQL создается с помощью утилиты idb.exe. Чтобы создать резервную копию, необходимо выполнить следующие действия:
- Открыть утилиту idb.exe (см. раздел Запуск и завершение работы утилиты idb.exe).
- Выбрать в раскрывающемся списке Выберите источник данных: базу данных MS SQL – Basic Data.
Примечание.
Для создания резервной копии базы данных вертикального решения следует выбрать базу данных вертикального решения, например, для ПК АТМ-Интеллект/Мониторинг источник данных MonitorSSTV.
Примечание.
- Создать на компьютере, где установлен ПК Интеллект, папку, доступную по сети. Обеспечить доступ к созданной папке с компьютера, где установлен сервер баз данных.
- Указать в окне Сохранить как путь к созданной папке.

Примечание.
Также резервную копию (MS SQL) можно создать при помощи макрокоманды.
Резервная копия базы данных MS SQL создана.
По умолчанию копия базы данных создается по адресу C:\Documents and Settings\\Мои документы\ITV\Intellect\Data\intellect.sql.bak. В случае, когда при создании резервной копии не удается изменить папку для записи копии базы данных, необходимо:

- Вызвать функцию Выполнить (Пуск ->Выполнить), в открывшемся окне ввести regedit.
- Нажать кнопку OK. В результате выполнения операции откроется окно Редактор реестра.
- Создать строковый параметр с именем BackupFolder в ветке реестра HKLM\SOFTWARE\ITV\INTELLECT (см. раздел Добавление строковых параметров в реестр ОС Windows).
- Задать значение параметра BackupFolder: ввести адрес папки для записи копии базы данных (например, С:\ Documents and Settings\AVP\Рабочий стол\Backup).
Если требуется сохранять копию базы данных на сетевой диск, необходимо указать UNC-путь к сетевой папке на данном диске, к которой открыт доступ на запись, в формате \\ServerName\ShareName. При этом следует учитывать, что все сетевые ресурсы, которые требуют дополнительной аутентификации, необходимо подключать от имени того же пользователя, от имени которого запускается служба SQL Server. Узнать и/или изменить пользователя, от имени которого запускается служба SQL Server, можно одним из следующих способов:- С помощью утилиты SQL Sever Configuration Manager.
- Выполнить Пуск — Панель управления — Администрирование — Службы, затем щелкнуть правой кнопкой мыши по службе SQL Sever и выбрать пункт Свойства в функциональном меню. В открывшемся окне свойств службы SQL Server перейти на вкладку Вход в систему.
- В результате проделанных действий будет создан строковый параметр ключа с заданным значением.
- Вызвать функцию Выполнить (Пуск ->Выполнить), в открывшемся окне ввести ключ ”C:\Program Files\Интеллект\idb.exe” /backup.
- Нажать кнопку OK.
В результате выполнения операции в папке, указанной в качестве значения параметра BackupFolder (С:\ Documents and Settings\AVP\Рабочий стол\Backup), будет создана резервная копия базы данных intellect.sql.bak.
Как создать копию базы данных ms sql
Выполните эти процедуры на компьютере с установленным WhatsUp Gold.
Для создания резервной копии базы данных из консоли администратора WhatsUp Gold:
- Откройте консоль администратора WhatsUp, затем нажмите Сервис > Служебные программы базы данных > Резервное копирование базы данных WhatsUp.

- Если у вас есть лицензия на подключаемый модуль Flow Monitor, повторите эту процедуру как для текущей базы данных FlowMonitor, так и для базы данных FlowMonitor Archive.

- Если конечный сервер Microsoft SQL установлен на удаленном компьютере, скопируйте файлы резервных копий ( WhatsUp.bak , NetFlow.bak и NFArchive.bak ), созданные в процессе резервного копирования, на удаленный компьютер. Эти файлы находятся в месте, указанном ранее.
Для создания резервной копии базы данных при помощи интерфейса командной строки:
Примечание В примерах ниже предполагается, что базы данных WhatsUp Gold созданы с именами по умолчанию. Если использовались другие имена, замените их там, где указаны имена по умолчанию.
Примечание Имена баз данных должны точно совпадать с именами баз данных из исходного Microsoft SQL Server: WhatsUp, NetFlow, и NFArchive.
- Откройте окно ввода команды:
- В Windows щелкните Пуск > Выполнить. Откроется диалоговое окно «Запуск программы».
- Введите cmd и нажмите ENTER. Появится командная строка.
- Создание резервной копии базы данных WhatsUp Gold. Примечание В следующих командах, замените [имя SQL server] на имя узла Microsoft SQL Server. Если Microsoft SQL Server использует именованный экземпляр (а не экземпляр по умолчанию), введите имя_SQL_server\имя_экземпляра для [имени SQL server] . Примечание Значения [имя пользователя] и [пароль] следует заменить на имя пользователя и пароль вашей учетной записи администратора SQL.
- Для создания резервной копии базы данных WhatsUp выполните следующую команду с учетом регистра: sqlcmd -S [имя сервера SQL] -U [имя пользователя] -P [пароль] -Q «BACKUP DATABASE WhatsUp TO DISK=’WhatsUp.bak'»
- Если у вас есть лицензия на подключаемый модуль Flow Monitor, создайте резервные копии баз данных Netflow и NFArchive.
- Для создания резервной копии базы данных Netflow выполните следующую команду с учетом регистра: sqlcmd -S [имя сервера SQL] -U [имя пользователя] -P [пароль] -Q «BACKUP DATABASE NetFlow TO DISK=’NetFlow.bak'»
- Для создания резервной копии базы данных NFArchive выполните следующую команду с учетом регистра: sqlcmd -S [имя сервера SQL] -U [имя пользователя] -P [пароль] -Q «BACKUP DATABASE NFArchive TO DISK=’NFArchive.bak'»
- Если конечный сервер Microsoft SQL установлен на удаленном компьютере, скопируйте файлы резервных копий ( WhatsUp.bak , NetFlow.bak и NFArchive.bak ), созданные в процессе резервного копирования, на удаленный компьютер.
Создание копии рабочей базы
Статья предназначена, прежде всего, для компаний, обслуживающих значительные по объему базы данных (БД), от 0.5 ТБ и более. Тестовые среды для поддержки и разработки, как правило, ограничены. Потребность развернуть в тестовой среде 15-20 копий рабочей БД – вполне реальна, и вполне может быть, что рабочая БД – не одна. Также для тестов и разработки лучше использовать максимально актуальную копию рабочей БД.
Таким образом, задачу создания тестовой БД можно разделить на 2 этапа. На 1 этапе требуется понять, каким образом из рабочей базы объемом 0.5 ТБ получить тестовую базу объемом 50 ГБ.
В моей практике были в основном задачи подготовки тестовых БД на MS SQL, поэтому в части запросов к СУБД будем рассматривать запросы к СУБД MS SQL (что не мешает адаптировать Вам всё под Oracle)
Сперва следует оценить, какие таблицы в Вашей рабочей БД обладают наибольшим объёмом, и обладают ли эти таблицы ценностью в тестовой среде. Для определения наибольших по объёму таблиц можно использовать отчет в Management Studio MS SQL (Disk Usage by top tables):

Примечание: никто не запрещает Вам использовать многочисленные «базопузомеры» с инфостарта для этого также.
Для понимания ценности данных в таблицах можно использовать встроенные в платформу 1С средства – метод ПолучитьСтруктуруХраненияБазыДанных().
Сопоставив имена таблиц БД с именами таблиц 1С станет понятно, какие таблицы в тестовой базе не нужны. Пример таких таблиц:
- Справочники «Присоединенные файлы»
- Регистр сведений «Версии объектов»
- Регистр сведений «Двоичные данные файлов»
- Таблицы регистрации изменений для обмена
Выбрав наиболее объемные и малоценные для тестовой БД таблицы, можно написать скрипт их очистки: «USE ;
|TRUNCATE TABLE dbo.SomeDBName;»
В обработке, приложенной к статье, текст скрипта по указанным таблицам формируется автоматически.
Вторым шагом для значительного снижения объема тестовой БД является сжатие БД. Сжимаются все таблицы и индексы. Текст скрипта для сжатия БД также приложен к статье.
Теперь остался один вопрос – как транспортировать рабочую БД на тестовый сервер, чтобы каждое утро получать максимально уменьшенную свежую копию рабочей БД. Для этого можно использовать различные механизмы ( SQL DTS ), мастер Copy DB в Management Studio :

Также можно использовать скрипт, который развернёт бэкап рабочей БД в тестовой среде (на тестовом MS SQL ).
Как это работает:
1. На тестовом SQL сервере настроен план обслуживания, в котором последовательно выполняются следующие шаги:
2. Скрипт разворачивает бэкап рабочей БД на тестовом сервере в существующую эталонную тестовую БД.
3. Запускается скрипт очистки таблиц БД.
4. Запускается скрипт сжатия таблиц БД.
Описанным способом удалось размер одной из рабочих БД снизить в 8 раз, т.е. вместо 1 тестовой БД на тестовом сервере – теперь развернуто 8 тестовых БД.
Описанные в статье действия выполнялись в ознакомительных целях на платформе 1С 8.3. Скрипты, приложенные к статье, являются примером использования языка запросов MS SQL Server. Для тестов использовалась 1С 8.3.12.
Резервное копирование и восстановление MS SQL Server
4 Резервное копирование журнала транзакций базы данных.
5 Резервное копирование файловых групп базы данных.
Восстановление из резервных копий
6 Восстановление из полной резервной копии.
7 Восстановление из разностной резервной копии.
8 Восстановление журнала транзакций.
9 Восстановление файловых групп.
10 Восстановление системных баз данных.
Создадим нашу тестовую базу данных “sbase”, модель восстановления — полная:
Создание резервных копий
1Резервное копирование системных баз данных.
Список системных баз: master, model, msdb, tempdb.
Master: содержит сведения обо всех базах данных на сервере. Резервное копирование необходимо делать каждый раз, когда создаются, удаляются или изменяются пользовательские базы данных.
Model: Используется в качестве шаблона для создаваемых баз данных. Резервное копирование необходимо при изменении настройки самой базы model.
Msdb: Содержит сведения о заданиях и для агента сервера MS SQL Server. копирование необходимо делать каждый раз при добавлении задания для агента сервера MS SQL Server.
Tempdb: Хранит временные данные например для транзакций. Уничтожается и создается при перезапуске экземпляра MS SQL Server. Резервное копирование делать нет смысла.
Создадим новый запрос:
Выполним следующий запрос:
BACKUP DATABASE master
TO DISK = ‘C:\sql\master.bak’
BACKUP DATABASE model
TO DISK = ‘C:\sql\model.bak’
BACKUP DATABASE msdb
TO DISK = ‘C:\sql\msdb.bak’
Как видим, на диск ‘C’ было произведено успешное резервное копирование системных баз данных.
2Полное резервное копирование базы данных.
Включает в себя файлы данных и журнал транзакций. По сути является базой данных на момент создания резервной копии базы данный MS SQL Server.
Включает в себя:
Резервное копирование данных в базе.
Резервное копирование изменений, возникающих во время резервного копирования
Резервное копирование транзакций, не зафиксированных в журнале транзакций.
Способ 1(Графический интерфейс):
Выберем «создать резервную копию»
Указываем куда копировать и модель – полная.
Способ 2(Запрос SQL):
BACKUP DATABASE sbase
TO DISK = ‘C:\sql\sbase.bak’
3 Разностное резервное копирование базы данных.
Включает в себя все изменения базы данных с момента последнего полного резервного копирования.
Нельзя восстановить без полной резервной копии. После каждого запуска разностного копирования, размер резервной копии возрастает из-за количества транзакций с момента полного резервного копирования.
При создании разностного резервного копирования выполняются следующие действия:
Создание резервных копий баз данных, которые изменились с момента полного резервного копирования.
Создание резервных копий всех операций, выполняющихся во время разностного резервного копирования и всех транзакций не зафиксированных в журнале транзакций.
—Создадим таблицу test
CREATE TABLE test(
INSERT INTO test (id,name)
Далее по аналогии с полным запустим задачу резервного копирования, но модель выберем – разностную:
Проведем полный бэкап, добавим еще данных, проведем разностный бэкап:
—Делаем полный бэкап
BACKUP DATABASE sbase
TO DISK = ‘C:\sql\sbase_razh2’
—Добавим еще данные
INSERT INTO test (id,name)
BACKUP DATABASE sbase
TO DISK = ‘C:\sql\sbase_razh3’
А вот и результат:
Вывод, не надо доводить разностное копирование до больших объемов, иначе оно теряет свой смысл быстрого восстановления данных.
4 Резервное копирование журнала транзакций базы данных.
Содержат все изменения базы данных при первичном резервном копировании лога транзакций, или изменения с последней успешной резервной копии журнала транзакций.
Не имеет смысла, если хоть раз не выполнялось полное резервное копирование, т.к. резервную копию лога невозможно будет восстановить при отсутствии полной резервной копии.
В процессе выполняются следующие действия:
Создается копия журнала транзакций от последнего резервного копирования лога до конца текущего.
Очищаются части журнала транзакций до начала активной части и отбрасываются сведения в неактивной части.
По аналогии с полным и разностным копированием запускаем задачу, но тип выбираем – лог транзакций:
Или с помощью запроса:
BACKUP LOG sbase
TO DISK = ‘C:\sql\sbase_tran.bak’
5 Резервное копирование файловых групп базы данных.
По сути являются именованными коллекциями файлов и используются для упрощения размещения данных и выполнения задач администрирования.
Файлы журналов не входят в состав файловых групп.
Управление пространством журнала отделено от управления пространством данных, возможно только полное и разностное резервное копирование файлов и файловых групп.
Пример полного копирования:
По аналогии с другими видами копирования запускаем мастер:
Тоже, только запросом:
BACKUP DATABASE sbase
TO DISK = ‘C:\sql\primary.bak’
Про восстановление можно почитать на русском языке :
Стадия копирования данных: копирование всех страниц данных, журнала и индекса с резервного носителя в файлы базы данных.
Стадия повтора: журнальные транзакции применяются к данным, скопированным из резервной копии, чтобы произвести их накат до точки восстановления. В этой точке базы данных обычно имеются незафиксированные транзакции, и потому база находится в непригодном для работы состоянии. В этом случае следует производить в процесс восстановления базы данных стадию отмена.
Стадия отката: производит откат незафиксированных транзакций и делает базу данных доступной для пользователей. После завершения стадии отката восстановление последующих резервных копий становится невозможным. Затем в процессе восстановления база данных переводится в активный режим.
Режим WITH RECOVERY включает и стадию повтора, и стадию отката и восстанавливает базу данных. Более поздние резервные копии восстановить невозможно. Это значение по умолчанию.Если набор данных наката не был восстановлен в достаточной степени, чтобы обеспечить согласованность с базой данных, стадия отката выполнена быть не может. Компонент Database Engine выдает ошибку и прекращает восстановление. Если весь набор данных наката согласован с базой данных, то выполняется восстановление, после чего базу данных можно перевести в режим в сети.
Предложение WITH NORECOVERY позволяет пропустить стадию отката, чтобы сохранить незафиксированные транзакции. Пропуск стадии отката позволяет восстановить другие резервные копии, чтобы выполнить накат базы данных на более поздний момент времени. Иногда инструкция RESTORE WITH NORECOVERY выполняет накат данных до момента, пока они не будут согласованы с базой данных. В таких случаях компонент Database Engine выдает информационное сообщение, указывающее, что набор данных наката теперь можно восстановить при помощи параметра RECOVERY. Другими словами, параметр NORECOVERY нужно использовать, когда для восстановления базы используются несколько восстанавливаемых резервных копий, за исключением последней восстанавливаемой резервной копии. После применения параметра NORECOVERY, база данных переходит в состояние восстановления.
6 Восстановление из полной резервной копии.
Или с помощью запроса:
RESTORE DATABASE sbase
7 Восстановление из разностной резервной копии.
В начале восстанавливается полная копия(например в прошлом шаге мы это уже сделали), а далее восстановим разностную копию.
Графический интерфейс аналогичен с предыдущим примером за исключением типа выбираемой копии, а запрос будет таков на примере наших разностных копий:
RESTORE DATABASE sbase
FROM DISK = ‘C:\sql\sbase_razh2’
WITH FILE = 1, NORECOVERY, REPLACE
RESTORE DATABASE sbase
FROM DISK = ‘C:\sql\sbase_razh3’
WITH FILE = 1, RECOVERY
8 Восстановление журнала транзакций.
В начале следует восстановить базу данных из полной резервной копии, затем накатить на базу последовательно резервные копии журнала транзакций.
Графический вариант интуитивно понятен, будет продемонстрирован только SQL запрос:
Для того, чтоб все отработало корректно, вернемся разностному бэкапу 2, и после него накатим журнал транзакций:
RESTORE DATABASE sbase
FROM DISK = ‘C:\sql\sbase’
WITH FILE = 1, NORECOVERY, REPLACE
RESTORE DATABASE sbase
FROM DISK = ‘C:\sql\sbase_razh2’
WITH FILE = 1, NORECOVERY, REPLACE
RESTORE LOG sbase
FROM DISK = ‘C:\sql\tran.bak’
WITH FILE = 1, NORECOVERY
9 Восстановление файловых групп.
Графический вариант показан не будет, он довольно интуитивен, запрос SQL:
RESTORE DATABASE sbase FILEGROUP = ‘PRIMARY’
FROM DISK = ‘C:\sql\primary.bak’
WITH PARTIAL, RECOVERY, REPLACE
Так как мы восстанавливали только часть базы – файловую группу, то мы использовали параметр «PARTIAL».
10 Восстановление системных баз данных.
Если экземпляр SQL сервера доступен, то системные базы восстанавливаются согласно приведенной таблице:
Системная база данных
Запускаем экземпляр сервера в однопользовательском режиме. Восстановление базы осуществляется так же, как полное восстановление пользовательской базы данных. После восстановления следует перезапустить экземпляр SQL сервера.
Восстановление базы осуществляется так же, как полное восстановление пользовательской базы данных.
Восстановление базы осуществляется так же, как полное восстановление пользовательской базы данных.
Запускаем экземпляр сервера в однопользовательском режиме: выключим и включим экземпляр сервера с параметром запуска /m, введя в командной строке Windows (CMD):
net stop MSSQLSERVER
net start MSSQLSERVER /m
Подключимся к серверу и запустим процесс восстановления базы.
sqlcmd
RESTORE DATABASE master FROM DISK = ‘C:\sql\sbase.bak’ WITH REPLACE;
GO
Вернем экземпляр SQL в состояние «в сети».
Стартуем сервер в многопользовательском режиме:
net start MSSQLSERVER
На этом – все, желаю удач.


