Тонкая настройка ежедневного резервного копирования базы данных 1С средствами SQL ver. 2014 (SP3) — 12.0.6024.0 (X64)
Хочу вам предложить небольшой пример, как можно реализовать резервное копирование 1С-ых баз данных средствами SQL. Данный материал не претендует на пулитцеровскую премию. Но возможно кому-то будет интересно узнать, что-то новенькое.
Данный материал для резервного копирования только одной базы данных. А именно, если у вас 20-ть баз, то вам придется создавать 20-ть планов обслуживания для каждой базы индивидуально.
(Слава разработчикам SQL, они разрешили копировать блоки из одного плана в другой, вам остается только произвести небольшую настройку для каждого скопированного блока — некоторые настройки блоков сбрасываются и выставляются значением по умолчанию и остаются неактивными)
Контрольные суммы резервных копий
SQL Server поддерживает три типа контрольных сумм: на страницах, в блоках журналов и резервных копиях. При создании контрольной суммы резервной копии инструкция BACKUP проверяет согласованность данных, считанных из базы данных, со всеми контрольными суммами или признаками обрыва страниц в этой базе.
Инструкция BACKUP может также вычислять контрольную сумму резервной копии для потока резервирования. Если на данной странице есть контрольная сумма или данные о разрыве страниц, то при резервном копировании инструкция BACKUP также проверяет для страницы контрольную сумму, идентификатор и состояние разрыва страницы. При создании контрольной суммы резервной копии операция резервного копирования не добавляет никаких контрольных сумм к страницам. Страницы копируются так, как они существуют в базе данных, они не изменяются операцией резервного копирования.
Из-за дополнительной нагрузки при проверке и создании контрольных сумм резервных копий их использование может ухудшить производительность. Может пострадать как рабочая нагрузка, так и пропускная способность резервного копирования. Поэтому использование контрольных сумм резервных копий необязательно. При принятии решения о создании контрольных сумм резервных копий необходимо тщательно проконтролировать соответствующую дополнительную загрузку ЦП и влияние на остальную рабочую нагрузку системы.
Инструкция BACKUP никогда не изменяет исходную страницу на диске и ее содержимое.
Если контрольные суммы резервных копий включены, операция резервного копирования выполняет следующие шаги:
-
Перед записью страницы на резервный носитель операция резервного копирования проверяет сведения на уровне страницы (контрольную сумму или обнаружение разрыва страницы), если они имеются. Если они отсутствуют, операция резервного копирования не может проверить страницу. Непроверенные страницы включаются «как есть», а их содержимое добавляется в общую контрольную сумму резервной копии.
Если во время проверки операция резервного копирования обнаруживает ошибку страницы, резервное копирование прерывается с ошибкой.
Примечание
Дополнительные сведения о контрольной сумме страниц и обнаружении разрывов страниц см. в описании параметра PAGE_VERIFY инструкции ALTER DATABASE. Дополнительные сведения см. в разделе Параметры ALTER DATABASE SET (Transact-SQL).
-
Независимо от того, присутствует ли контрольная сумма страницы или нет, инструкция BACKUP создает отдельные контрольные суммы резервных копий для потока резервных файлов. Дополнительно операции восстановления могут использовать контрольные суммы резервных копий для проверки наличия повреждений в резервных файлах. Контрольная сумма резервной копии хранится на носителе резервных файлов, а не на страницах базы данных. Контрольную сумму резервной копии также можно использовать во время восстановления.
-
Резервный набор данных помечен как содержащий контрольные суммы резервных копий (в столбце has_backup_checksums таблицы msdb..backupset). Дополнительные сведения см. в разделе backupset (Transact-SQL).
Во время операции восстановления, если на резервном носителе имеются контрольные суммы, по умолчанию и инструкция RESTORE, и инструкция RESTORE VERIFYONLY проверяют контрольные суммы резервных копий и страниц. Если у резервной копии нет контрольной суммы, все операции восстановления продолжаются без проверок. Данное поведение объясняется тем, что без контрольной суммы резервной копии операция восстановления не может достоверно проверять контрольные суммы страниц.
Типы резервного копирования SQL Server
Полное (Full Backup)
Полное резервное копирование делает копию всей базы данных, включая все объекты и данные системных таблиц. Полная резервная копия не будет усекать (truncate) журнал транзакций. Это основной тип резервных копий, который требуется выполнять перед другими типами резервных копий.
Полную резервную копию вы можете восстановить за 1 шаг, так как она не требует других дифференциальных/инкрементальных копий.
Если модель восстановления базы SQL данных установлена как “Полная”, то при восстановлении бекапа вы можете указать параметр “STOPAT”, где указывается время (до секунды) на котором нужно остановить восстановление данных. Например, сотрудник внёс некорректные данные в 14:46:07, с помощью параметра STOPAT вы можете восстановить данные на момент 14:46:06
Дифференциальное
Дифференциальное или разностное резервное копирование — это копирование только тех данных, которые появились с момента последней полной резервной копии.
Данный тип резервного копирования используют совместно с полной резервной копией, так как для восстановления дифференциальной копии необходима полная резервная копия.
Обычно при использовании разностного резервного копирования используют план по типу “полное раз в N дней, дифференциальное каждые N часов”. Если ежедневный оборот данных достаточно высокий, то данный тип резервных копий может быть неудобен в применении, так как копии будут весить довольно много.
Например, если полная резервная копия весит 300 GB, а дифференциальная спустя час работы 5 GB, то спустя сутки это будет 120 GB, что делает использование данного типа копий нерациональным.
Журнал транзакций
Резервное копирования журнала транзакций копирует все транзакции, которые произошли с момента последнего резервного копирования, а затем урезает журнал транзакций для освобождения дискового пространства.
Восстанавливая журнал транзакций, вы также можете указать параметр STOPAT, как и в восстановлении полной резервной копии.
Этот тип бекапа является инкрементальным, поэтому для восстановления базы данных вам потребуется вся цепочка резервных копий: Полная и все последующие инкрементальные журнала транзакций.
Tail-Log
Этот вид резервного копирования выделяют как отдельный, но фактически это обычная резервная копия журнала транзакций с NORECOVERY опцией.
Tail-Log бекап рекомендуется делать перед восстановлением копий журнала транзакций, чтобы не потерять транзакции между последним бекапом и текущим моментом времени.
Copy-only
Этот вид бекапа не может служить “базой” для дифференциальных резервных копий и для копий журнала транзакций. Copy-only бекап не нарушает текущую цепочку резервных копий (полный-> дифференциальный или полный -> копии журналов транзакций) и используется только в том случае, если вам нужно снять полную резервную копию, не задевая текущую цепочку бекапов.
За исключением этих нюансов – ничем не отличается от обычной полной копии.
Частичная резервная копия
Partial backup этот тип резервной копии используется для того, чтобы снять копии с read-only файловых групп. На практике используется редко.
Резервное копирование и восстановление базы данных в MS SQL Server
В этой статье мы рассмотрим, как настроить резервное копирование баз данных в Microsoft SQL Server, покажем, как восстановить базу данных из резервной копии с помощью SQL Server Management Studio и Transact-SQL. Первая часть статьи посвящена теоретическим аспектам резервного копирование в SQL, во второй на примере мы покажем, как настроить регулярное резервное копирование базы данных MS SQL с помощью плана обслуживания и восстановить базу из резервной копии на примере установленного Microsoft SQL Server 2019.
Требования к плану резервного копирования баз данных SQL Server устанавливает бизнес, учитывая несколько критериев:
- Допустимый объём потерянных данных (за последний день/час/минуту/секунду);
- Требования к дисковому пространству и его стоимость;
- Затраты ресурсов сервера на резервное копирование.
Следует понимать, что с помощью механизмов резервного копирования невозможно добиться резервирования данных в реальном времени. Для этой цели используются другие технологии высокой доступности SQL Server – группы доступности Always On, зеркалирование баз данных или репликация.
Проблемы, влияющие на восстановление базы данных между различными SQL Server версиями
Резервное SQL Server не может быть восстановлено в более ранней версии SQL Server, чем версия, в которой была создана резервная копия. Например, нельзя восстановить резервное копирование, которое взято на экземпляре 2019 SQL Server 2019 г. в экземпляр 2017 SQL Server 2017 г. Это приведет к следующему сообщению об ошибке:
Используйте следующий метод для копирования базы данных, которая содержится в более поздней версии SQL Server более ранней версии SQL Server.
Примечание
Следующая процедура предполагает, что у вас есть SQL Server экземпляры с именем SQL_A (более высокая версия) и SQL_B (более низкая версия).
- Скачайте и установите последнюю версию SQL Server Management Studio (SSMS) как SQL_A, так и SQL_B.
- В SQL_A выполните следующие действия:
- Щелкните правой кнопкой мыши <yourDatabase > Tasks > Generate Scripts и выберите вариант сценария всей базы данных и всех объектов базы данных.
- На экране Set Scripting Options выберите Расширенный, а затем выберите версию SQL_B в соответствии с общим > скриптом для SQL Server Версии. Кроме того, выберите вариант, который лучше всего работает для вас, чтобы сохранить созданные сценарии. Затем продолжайте мастер.
- Используйте для копирования данных из разных таблиц.
- В SQL_B выполните следующие действия:
- Используйте скрипты, созданные на сервере SQL_A, чтобы создать схему базы данных.
- На каждой из таблиц отключай все внешние ограничения и триггеры. Если в таблице есть столбцы удостоверений, введите вставку удостоверения.
- Используйте bcp для импорта данных, экспортируемых на предыдущем этапе, в соответствующие таблицы.
- После завершения импорта данных включаем внешние ограничения и триггеры и отключаем вставку удостоверений для каждой из таблиц, затронутых в шаге c.
Эта процедура обычно хорошо работает для баз данных малых и средних размеров. Для больших баз данных проблемы с памятью могут возникать в SSMS и других средствах. Чтобы создать копию базы данных из более поздней версии в более рановую версию SQL Server, следует использовать службы интеграции SQL Server (SSIS),репликацию или другие параметры.
Дополнительные сведения о том, как создавать скрипты для базы данных, см. в тексте
Резервное копирование не удается из-за проблем с разрешениями
При попытке запуска операций резервного копирования баз данных возникает одна из следующих ошибок.
-
Сценарий 1. При запуске резервного копирования из SQL Server Management Studio резервное копирование сбой и возвращает следующее сообщение об ошибке:
-
Сценарий 2. Плановые резервные копии сбой и создание сообщения об ошибке, которое вошел в историю работы неудалось задание, и это похоже на следующее:
Любой из этих сценариев может возникнуть, если у SQL Server учетной записи службы нет разрешений на чтение и запись в папку, в которую записывают резервные копии. Резервное копирование можно выполнить как в рамках задания, так и вручную из SQL Server Management Studio. В любом случае они всегда работают в контексте учетной записи SQL Server service. Поэтому, если учетная запись службы не имеет необходимых привилегий, вы получаете сообщения об ошибках, которые были отмечены ранее.
Дополнительные сведения см. в дополнительных сведениях.
Примечание
Вы можете проверить текущие разрешения учетной записи SQL службы в папке, переходя на вкладку Security в свойствах соответствующей папки, выбрав кнопку Advanced, а затем используя вкладку Эффективный доступ.
С помощью «Планировщика Windows» (для бесплатной версии)
Чтобы создать задание в «Планировщике Windows» надо:
Запустить программу «Блокнот» (Пуск->Все программы->Стандартные->Блокнот) и ввести следующие две строки, после чего сохранить их в виде командного файла (*.BAT):
где «(local)» – имя сервера (в случае установки именованного экземпляра SQL Server надо указать имя полностью: «ИМЯ_КОМПАSQLEXPRESS»), «AltaSVHDb» – имя базы данных, «D:BACKUP AltaSVHDb_monday.bak» – имя файла для создания в нем резервной копии (будет различаться по дням недели), «BACKUP_SERVER» – имя компьютера, на который будет выполняться дополнительное копирование, «Folder» – папка на этом компьютере (к ней должен быть предоставлен общий доступ).
Запустить мастер планирования заданий (Панель управления->Назначенные задания->Добавить задание) и нажать кнопку «Далее»:
Нажать кнопку «Обзор» и указать путь к командному файлу (*.BAT), созданному на шаге a):
Указать имя для задания, выбрать вариант запуска «еженедельно» и нажать кнопку «Далее»:
Поставить галочку возле нужного дня недели, а в поле «Время начала» указать время, когда должен запускаться процесс резервного копирования (обычно это делается ночью), затем нажать кнопку «Далее»:
Ввести имя пользователя и пароль (дважды) учетной записи ОС, от имени которой будет выполняться задание, и нажать кнопку «Далее»:
Внимание! Чтобы задание успешно выполнялось необходимо предоставить указанной здесь учетной записи (домена или локального компьютера) права записи в вышеупомянутую папку «\BACKUP_SERVERFolder», а также настроить доступ к самому SQL Server. Нажать кнопку «Готово»
Нажать кнопку «Готово»
Примечание. Чтобы проверить работоспособность созданного задания, необходимо в списке заданий (Панель управления->Назначенные задания) нажать правой кнопкой мыши на интересующем задании и в контекстном меню выбрать пункт «Выполнить», затем убедиться, что файл резервной копии БД успешно создался по тем путям, которые были указаны на шаге a).
Пошаговая инструкция по процедуре восстановления базы SQL. SQL Server 2008
-
- Запустить утилиту SQL Server Management Studio (из состава MS SQL Server).
- Подключиться к серверу под учетной записью администратора или владельца БД (можно использовать встроенную учетную запись «sa», пароль для которой задавался при установке SQL Server, либо выбрать вариант «Проверка подлинности Windows» в случае если текущий пользователь сеанса Windows обладает правами администратора в SQL Server, а также использовать любую другую учетную запись SQL Server или Windows, которая включена в роль «db_owner» восстанавливаемой базы при наличии таковой или серверную роль «dbcreator»):
-
- Нажать правой кнопкой мыши на разделе «Database» и выбрать в меню «Restore — > Database» как показано на рисунке:
-
- На странице «General» выполнить следующие действия:
- В поле «To database» ввести имя для восстанавливаемой базы (если будет указано имя существующей базы, то это эквивалентно тому, что сначала полностью удалить существующую базу и затем восстановить из резервной копии новую базу, т.е. все данные существующей базы будут утеряны!);
- Установить переключатель «From device» и указать путь к файлу резервной копии, нажав кнопку «…»;
- Установить галочку «Restore» в нужной строке (которых может быть несколько, если один файл *.bak содержит несколько резервных копий базы):
- На странице «General» выполнить следующие действия:
-
- На странице «Options» установить галочку «Overwrite the existing database (whith replase)» и проверить пути в списке «Restire the database files as» (должны указывать на существующую папку на SQL-сервере, к которой предоставлены права на запись – пути по умолчанию обычно должны заканчиваться папкой DATA, а не просто MSSQL):
Примечание. После восстановления базы данных на другой версии SQL Server рекомендуется в свойствах базы данных переключить параметр «Уровень совместимости» на последнюю версию.
Кроме того, после переноса базы на любой новый SQL-сервер придется заново настроить авторизацию и регулярное резервное копирование в соответствии с инструкцией по установке сетевой версии соответствующей программы.
А с автором мы вероятно через Игоря знакомы, сейчас кину ему ссылку
Обновление 23.07.12 19:36
Код открыт Не указано
Различные проблемы
Symptom/scenario | Действия по исправлению ситуации или дополнительные сведения |
---|---|
Резервное копирование может привести к сбойу, если отслеживание изменений включено в базах данных и возвращает ошибки, похожие на следующие:»Ошибка: 3999, строгость: 17, состояние: 1. <Time Stamp> spid Не удалось смыть таблицу фиксации на <spid> диск в dbid 8 из-за ошибки 2601. Проверьте журнал ошибок, чтобы получить дополнительные сведения». | См. следующие статьи базы знаний Майкрософт:
|
Проблемы восстановления резервных копий зашифрованных баз данных | Перемещение защищенной базы данных TDE в другое SQL Server |
Попытка восстановления резервного копирования CRM Enterprise выпуске не удается в стандартном выпуске | 2567984 «База данных не может быть запущена в этом выпуске SQL Server» при восстановлении Microsoft Dynamics CRM базы данных |
Общие советы по устранению неполадок
- Убедитесь в том, что в папке, в которую записывают резервные копии, необходимо SQL Server для учетной записи службы чтения и записи. Дополнительные сведения см. в «Разрешениях для резервного копирования».
- Убедитесь, что папка, в которой пишутся резервные копии, будет иметь достаточно места для размещения резервных копий баз данных. Вы можете использовать сохраненную процедуру для получения приблизительной оценки размера резервного копирования для определенной базы данных.
- Всегда используйте последнюю версию SSMS, чтобы не сталкиваться с известными вопросами, связанными с конфигурацией рабочих мест и планов обслуживания.
- Сделайте тестовый запуск заданий, чтобы убедиться, что резервные копии созданы успешно. Всегда добавляйте логику для проверки резервных копий.
- Если вы планируете переместить системные базы данных с одного сервера на другой, просмотрите перемещение системных баз данных.
- Если вы заметили периодические сбои резервного копирования, проверьте, возникли ли проблемы, которые уже устранены в последнем обновлении для SQL Server версии. Дополнительные сведения см. в SQL Server версии и обновления.
- Чтобы планировать и автоматизировать резервное копирование для SQL express, см. в руб. Расписание и автоматизация резервных копий SQL Server баз данных в SQL Server Express.
Типы резервного копирования SQL Server
Полное (Full Backup)
Полное резервное копирование делает копию всей базы данных, включая все объекты и данные системных таблиц. Полная резервная копия не будет усекать (truncate) журнал транзакций. Это основной тип резервных копий, который требуется выполнять перед другими типами резервных копий.
Полную резервную копию вы можете восстановить за 1 шаг, так как она не требует других дифференциальных/инкрементальных копий.
Если модель восстановления базы SQL данных установлена как “Полная”, то при восстановлении бекапа вы можете указать параметр “STOPAT”, где указывается время (до секунды) на котором нужно остановить восстановление данных. Например, сотрудник внёс некорректные данные в 14:46:07, с помощью параметра STOPAT вы можете восстановить данные на момент 14:46:06
Дифференциальное
Дифференциальное или разностное резервное копирование — это копирование только тех данных, которые появились с момента последней полной резервной копии.
Данный тип резервного копирования используют совместно с полной резервной копией, так как для восстановления дифференциальной копии необходима полная резервная копия.
Обычно при использовании разностного резервного копирования используют план по типу “полное раз в N дней, дифференциальное каждые N часов”. Если ежедневный оборот данных достаточно высокий, то данный тип резервных копий может быть неудобен в применении, так как копии будут весить довольно много.
Например, если полная резервная копия весит 300 GB, а дифференциальная спустя час работы 5 GB, то спустя сутки это будет 120 GB, что делает использование данного типа копий нерациональным.
Журнал транзакций
Резервное копирования журнала транзакций копирует все транзакции, которые произошли с момента последнего резервного копирования, а затем урезает журнал транзакций для освобождения дискового пространства.
Восстанавливая журнал транзакций, вы также можете указать параметр STOPAT, как и в восстановлении полной резервной копии.
Этот тип бекапа является инкрементальным, поэтому для восстановления базы данных вам потребуется вся цепочка резервных копий: Полная и все последующие инкрементальные журнала транзакций.
Tail-Log
Этот вид резервного копирования выделяют как отдельный, но фактически это обычная резервная копия журнала транзакций с NORECOVERY опцией.
Tail-Log бекап рекомендуется делать перед восстановлением копий журнала транзакций, чтобы не потерять транзакции между последним бекапом и текущим моментом времени.
Copy-only
Этот вид бекапа не может служить “базой” для дифференциальных резервных копий и для копий журнала транзакций. Copy-only бекап не нарушает текущую цепочку резервных копий (полный-> дифференциальный или полный -> копии журналов транзакций) и используется только в том случае, если вам нужно снять полную резервную копию, не задевая текущую цепочку бекапов.
За исключением этих нюансов – ничем не отличается от обычной полной копии.
Частичная резервная копия
Partial backup этот тип резервной копии используется для того, чтобы снять копии с read-only файловых групп. На практике используется редко.
1С:Предприятие Бухгалтерия переход с редакции 2.0 на 3.0. Практика перевода информационной базы для работы в управляемом приложении. Промо
Из информационного выпуска 1С № 16872 от 08.07.2013г. стало известно об относительно скором необходимом переходе на редакцию 1С:Бухгалтерия 3.0. В данной публикации будут разобраны некоторые особенности перевода нетиповой конфигурации 1С:Бухгалтерия 2.0 на редакцию 3.0, которая работает в режиме «Управляемое приложение».
Публикация будет дополняться по мере подготовки нового материала. Публикация не является «универсальной инструкцией».
Update 3. Права доступа. 14.08.2013
Update 4. Добавлен раздел 0. Дополнен раздел 4. Добавлен раздел 7. Внесены поправки, актуализирована информация. 23.11.2013.
1 стартмани
Восстановление с помощью SSMS
При восстановлении базы данных URL-адрес включается в качестве устройства, с которого следует выполнить восстановление. Следующие шаги описывают использование задачи восстановления для восстановления из службы хранилища BLOB-объектов Microsoft Azure.
-
Щелкните правой кнопкой мыши узел Базы данных и выберите команду Восстановить базу данных…
-
На странице Общие выберите пункт Устройство в разделе Источник .
-
Нажмите кнопку обзора (…), после чего откроется диалоговое окно Выбор устройств резервного копирования .
-
Выберите URL-адрес в раскрывающемся списке Тип носителя резервной копии: . Нажмите кнопку Добавить , чтобы открыть диалоговое окно Выберите расположение файла архивной копии .
-
Контейнер хранилища Azure. Полное имя контейнера хранилища Microsoft Azure для хранения файлов резервной копии. Выберите существующий контейнер в раскрывающемся списке или введите полное имя контейнера вручную.
-
Подписанный URL-адрес. Используется для ввода подписанного URL-адреса для назначенного контейнера.
-
Добавить: используется для регистрации существующего контейнера, который не имеет подписанного URL-адреса. См. раздел Соединение с подпиской Microsoft Azure.
-
ОК: SQL Server подключается к хранилищу Microsoft Azure с помощью предоставленных учетных данных SQL, и открывается диалоговое окно Поиск файла резервной копии в Microsoft Azure. На этой странице отобразятся файлы резервной копии, находящиеся в контейнере хранилища. Выберите файл, который требуется использовать для восстановления, и нажмите кнопку ОК. Вы вернетесь к диалоговому окну Выберите устройства резервного копирования , а нажав кнопку ОК в этом диалоговом окне — к главному диалоговому окну Восстановление , в котором можно будет завершить восстановление.
-
Использование Transact-SQL
Важно!
Во избежание неоднозначности в каждой инструкции WITH RECOVERY рекомендуется явное задание параметра WITH NORECOVERY или WITH RECOVERY
Это особенно важно учитывать при написании скриптов
Восстановление резервной копии журнала транзакций
Чтобы применить резервную копию журналов транзакций, выполните инструкцию RESTORE LOG, указав при этом:
Имя базы данных, к которой будет применен журнал транзакций.
устройство резервного копирования, с которого будет восстановлена резервная копия журналов транзакций;
Предложение NORECOVERY.
В этой инструкции применяется следующая основная синтаксическая конструкция:
RESTORE LOG имя_базы_данных FROM WITH NORECOVERY.
Здесь имя_базы_данных — имя базы данных, а — имя устройства, содержащего восстанавливаемую резервную копию журнала.
Повторите шаг 1 для каждой резервной копии журналов транзакций, которые необходимо применить.
После восстановления последней резервной копии из последовательности восстановления базу данных следует восстановить при помощи одной из следующих инструкций.
Восстановить базу данных в составе последней инструкции RESTORE LOG:
Подождать, а затем восстановить базу данных отдельной инструкцией RESTORE DATABASE:
В последнем случае можно проверить, восстановлены ли все нужные резервные копии журналов
Такой подход часто полезен при выполнении восстановления на момент времени.
Важно!
При создании зеркальной базы данных этап восстановления можно пропустить. Зеркальная база данных должна остаться в состоянии RESTORING.
Примеры (Transact-SQL)
По умолчанию для базы данных AdventureWorks2012 используется простая модель восстановления. В следующем примере для перехода на модель полного восстановления требуется изменить базу данных следующим образом:
A. Применение одной резервной копии журнала транзакций
В следующем примере база данных AdventureWorks2012 восстанавливается с помощью полной резервной копии базы данных, которая находится на устройстве резервного копирования с именем . Затем применяется первая резервная копия журнала транзакций, находящаяся на устройстве с именем . В заключение происходит восстановление базы данных.
Б. Применение нескольких резервных копий журналов транзакций
В следующем примере база данных AdventureWorks2012 восстанавливается с помощью полной резервной копии базы данных, которая находится на устройстве резервного копирования с именем . Затем последовательно применяются первые три копии журнала транзакций, находящиеся на устройстве с именем . В заключение происходит восстановление базы данных.
Модели восстановления базы данных SQL Server
Модель восстановления – это параметр базы данных SQL Server, который отвечает за регистрацию транзакций в журнале транзакций. Всего существует три модели восстановления:
Простая модель восстановления
Автоматически урезает журналы транзакций, освобождая место на диске. Вручную журналы транзакций обслуживать не нужно.
В случае аварии, данные могут быть восстановлены только на момент снятия резервной копии.
При использовании этой модели восстановления, следующий функционал SQL Server недоступен:
- Доставка журналов транзакций
- Always On
- Point-In-Time восстановление
- Резервные копии журнала транзакций
Полная модель восстановления
Полная модель восстановления хранит все транзакции в журнале транзакций до усечения журнала (посредством снятия резервной копии журнала).
Это самая “надежная” модель восстановления, при аварийном сбое можно вы сможете восстановить все транзакции, кроме тех, которые не успели завершиться при аварии.
Эта модель нуждается в обслуживании журналов транзакций (регулярные резервные копии), иначе журналы займут всё дисковое пространство.
Восстановление с неполным протоколированием (bulk logged)
Эта модель, также, как и полная, записывает все транзакции в журнал транзакций, за исключением таких операций как:
- SELECT INTO
- BULK INSERT и BCP
- INSERT INTO SELECT
- Операции с индексами (CREATE INDEX, ALTER INDEX REBUILD, DROP INDEX)
В остальном эта модель работает аналогично полной модели восстановления.
Часто встречающиеся ошибки 1С и общие способы их решения Промо
Статья рассчитана в первую очередь на тех, кто недостаточно много работал с 1С и не успел набить шишек при встрече с часто встречающимися ошибками. Обычно можно определить для себя несколько действий благодаря которым можно определить решится ли проблема за несколько минут или же потребует дополнительного анализа. В первое время сталкиваясь с простыми ошибками тратил уйму времени на то, чтобы с ними разобраться. Конечно, интернет сильно помогает в таких вопросах, но не всегда есть возможность им воспользоваться. Поэтому надеюсь, что эта статья поможет кому-нибудь сэкономить время.
Восстановление базы данных SQL Server из резервной копии
Теперь рассмотрим, как восстановить базы данных SQL Server из резервной копии. Для восстановления базы можно использовать графическую консоль SQL Server Management Studio или язык T-SQL.
Восстановление резервной копии с помощью SQL Server Management Studio
Запустите SSMS, щелкните по разделу Database и выберите пункт Restore Database.
Выберите базу данных. В окне появится список резервных копий, зарегистрированных в SQL Server для этой базы данных.
Для примера, воспользуемся Point-In-Time восстановлением и выберем момент, на который мы хотим восстановить базу данных. Нажмите Timeline.
Выберите опцию “Close existing connections to destination database”, если ваша база данных находится в статус Online
Нажмите ОК. После этого база данных восстановится на выбранный момент времени.
Восстановление базы данных MS SQL Server с помощью T-SQL
Рассмотрим небольшой Transact-SQL скрипт, который выполняет ту же последовательность действия для восстановления базы данных, что и мастер (скрипт был сгенерирован мастером из примера выше).
USE ALTER DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATEBACKUP LOG TO DISK = N’E:MSSQL15.NODE2MSSQLBackupTestDatabase2_LogBackup_2020-02-17_15-39-43.bak’ WITH NOFORMAT, NOINIT, NAME = N’TestDatabase2_LogBackup_2020-02-17_15-39-43′, NOSKIP, NOREWIND, NOUNLOAD, NORECOVERY, STATS = 5RESTORE DATABASE FROM DISK = N’E:MSSQL15.NODE2MSSQLBackupfull.bak’ WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 5RESTORE LOG FROM DISK = N’E:MSSQL15.NODE2MSSQLBackuptrans.bak’ WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 5RESTORE LOG FROM DISK = N’E:MSSQL15.NODE2MSSQLBackuptrans.bak’ WITH FILE = 2, NOUNLOAD, STATS = 5, STOPAT = N’2020-02-17T15:38:23′ALTER DATABASE SET MULTI_USERGO
В данном случае база данных переводится в SINGLE_USER, но нужно быть аккуратным с этим параметром, так как в некоторых ситуациях вы можете закрыть себе доступ, если кто-то откроет сессию раньше вас.
Дальше выполняется tail-log бекап, затем восстанавливается полный бекап и следом восстанавливаются бекапы журнала транзакций
Обратите внимание на параметр STOPAT, база данных восстановиться на момент 15:38:23
Восстановление резервной копии
Для восстановления базы данных выполните следующие действия.
-
Запустите среду SQL Server Management Studio (SSMS) и подключитесь к своему экземпляру SQL Server.
-
Щелкните правой кнопкой мыши узел Базы данных в обозревателе объектов и выберите Восстановить базу данных… .
-
Выберите Устройство: и нажмите кнопку с многоточием (…), чтобы найти файл резервной копии.
-
Выберите Добавить и перейдите в расположение вашего файла . Выберите файл и затем нажмите ОК.
-
Снова нажмите ОК в диалоговом окне Выбор устройств резервного копирования, чтобы закрыть его.
-
Чтобы восстановить резервную копию базы данных, нажмите ОК.
Кроме того, можно выполнить следующий скрипт Transact-SQL для восстановления базы данных:
Очистка ресурсов
Выполните следующую команду Transact-SQL, чтобы удалить базу данных, которую вы создали, а также свой журнал резервного копирования в базе данных MSDB:
Причины, лежащие в основе состояния ожидания восстановления проблемы в базе данных SQL Server
Такая ситуация возникает, когда восстановление базы данных требуется, но не может быть инициировано. Некоторые из возможных причин этой ошибки.
1. Иногда пользовательская база данных не закрывается должным образом. В случае, если есть хотя бы одна незафиксированная транзакция в то время, когда база данных закрывается.
2. Из-за повреждения файлов MDF или файлов журнала.
3. Когда раздел базы данных заполнен или из-за нехватки места в памяти.
4. Из-за сбоя питания или сбоя оборудования.
Знать, как вывести базу данных из режима ожидания восстановления в SQL Server вручную
В этом методе пользователь должен начать принудительное восстановление базы данных. Вам просто нужно выполнить SQL-запросы.
1. Выполните следующие запросы, чтобы исправить состояние ожидания восстановления при ошибке SQL-сервера.ALTER DATABASE (Your DBNAME) SET EMERGENCY;ИДТИALTER DATABASE (ваш DBNAME) установить single_userИДТИDBCC CHECKDB (, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;ИДТИALTER DATABASE (ваш DBNAME) установить multi_userИДТИ
2. После выполнения вышеуказанных запросов база данных SQL-сервера помечается как READ_ONLY в аварийном режиме, отключите ведение журнала и предоставьте доступ только системному администратору.
3. Это поможет устранить повреждение и перевести базу данных в оперативный режим.
Использование экспертного решения — лучший способ решить эту проблему. Чтобы решить эту проблему, пользователь может попробовать PCVITA Инструмент восстановления базы данных SQL. Это профессиональное программное обеспечение корпоративного уровня, которое помогает пользователю легко восстанавливать базу данных SQL-сервера. Пользователь может легко восстановить как поврежденные, так и поврежденные данные файла MDF сервера SQL. С помощью этой утилиты пользователь может легко восстановить объекты базы данных SQL Server, такие как таблицы, представления, хранимые процедуры, функции. Это программное обеспечение имеет понятный пользовательский интерфейс, поэтому каждый может легко использовать это программное обеспечение.
Это программное обеспечение позволяет пользователю восстанавливать удаленные объекты базы данных SQL, а также показывает предварительный просмотр удаленных записей таблицы SQL красным цветом.
Действия по исправлению базы данных в состоянии ожидания восстановления на сервере SQL 2019/2017/2016/2014 и ниже
- Установить и Запуск Программное обеспечение на вашем компьютере и нажмите Добавить файл.
2. Теперь выберите Файл MDF, Выбирать Расширенное сканирование вариант, а также выберите версию SQL Server. (Отметьте опцию восстановления удаленных объектов, если вы хотите восстановить удаленные данные)
3. Теперь программа будет Предварительный просмотр компоненты базы данных SQL Server.
4. Нажмите кнопку «Экспорт» и введите необходимые данные для экспорта базы данных SQL в SQL Server.
Заключительный вывод
В этой статье мы обсудили проблему того, как вывести базу данных в оперативный режим из состояния ожидания восстановления на сервере SQL. Мы также обсудили различные возможные причины этой проблемы. Чтобы решить эту проблему, пользователь может попробовать ручной процесс. Но в случае, если пользователи не уверены в ручной процедуре, пользователь может воспользоваться помощью автоматизированного решения для решения этой проблемы.