Моментальные снимки базы данных (SQL Server)
Область применения:SQL Server
Моментальный снимок базы данных — это только для чтения статичное представление базы данных SQL Server (исходная база данных). Транзакционная согласованность поддерживается с исходной базой данных на момент создания снимка, и она всегда размещается на том же экземпляре сервера, что и исходная база данных. Моментальный снимок базы данных предоставляет представление данных только для чтения в состоянии на момент создания моментального снимка. Размер файла моментального снимка увеличивается по мере внесения изменений в базу данных-источник.
Хотя моментальные снимки базы данных могут быть полезны во время основных обновлений схемы и позволяют вернуться к предыдущему состоянию, важно понимать, что моментальные снимки не заменяют необходимость регулярного резервного копирования. Моментальные снимки базы данных нельзя отдельно копировать или восстанавливать, что означает их нужно использовать в сочетании с надежной стратегией резервного копирования для обеспечения защиты данных и их восстановления в случае потери или повреждения данных.
Моментальные снимки базы данных создаются с помощью синтаксиса CREATE DATABASE T-SQL с помощью синтаксиса AS SNAPSHOT OF
.
Может существовать несколько моментальных снимков одной и той же базы данных-источника. Каждый моментальный снимок базы данных сохраняется до тех пор, пока владелец базы данных явно не удаляет его.
Примечание.
Моментальные снимки базы данных не связаны с резервными копиями моментальных снимков, резервными копиями моментальных снимков Transact-SQL, изоляцией моментальных снимков транзакций или репликацией моментальных снимков.
Общие сведения о функциях
Снимки базы данных работают на уровне страниц данных. Перед первым изменением базы данных-источника исходная страница копируется из нее в моментальный снимок. Моментальный снимок хранит исходную страницу, оставляя записи данных в том виде, в котором они существовали на момент создания моментального снимка. Один и тот же процесс повторяется для каждой страницы, изменяемой в первый раз. Для пользователя моментальный снимок базы данных не изменяется, так как операции чтения с моментального снимка базы данных всегда обращаются к исходным страницам данных независимо от того, где они находятся.
Моментальный снимок сохраняет скопированные исходные страницы, используя один или несколько разреженных файлов . Изначально разреженный файл является пустым файлом, который не содержит пользовательских данных и еще не был выделен место на диске для пользовательских данных. Размер файла увеличивается по мере обновления дополнительных страниц в исходной базе данных. На этом рисунке показано действие двух различных конфигураций обновления на размер моментального снимка. Конфигурация обновления А отражает условия, при которых в течение жизни моментального снимка обновляется только 30% всех исходных страниц. Конфигурация обновления Б отражает условия, при которых в течение жизни моментального снимка обновляется только 80% всех исходных страниц.
Преимущества
Моментальные снимки можно использовать для составления отчетов.
- Клиенты могут запрашивать моментальный снимок базы данных, который помогает записывать отчеты на основе данных при создании моментального снимка.
Поддержка хронологических данных для создания отчетов.
- Моментальный снимок позволяет пользователю получить доступ к данным по состоянию на определенный момент времени. Например, можно создать моментальный снимок базы данных для последующего отчета в конце заданного периода (например, финансовый квартал). Отчеты о каждом таком периоде будут создаваться на основе данных из моментального снимка. Если позволяет дисковое пространство, вы можете также хранить моментальные снимки конца периода на неограниченное время, позволяя выполнять запросы к результатам из этих периодов, например, для изучения производительности организации.
Использование зеркальной базы данных, поддерживаемой для целей доступности, для разгрузки отчетов.
- Применение моментальных снимков с зеркальным отображением баз данных позволяет сделать данные на зеркальном сервере доступными для отчетов. Кроме того, выполнение запросов в реплицированной базе данных может освободить ресурсы для основной базы данных. Дополнительные сведения см. в разделе "Зеркальное отображение базы данных" и "Моментальные снимки базы данных" (SQL Server).
Защита данных от административных ошибок.
Если в исходной базе данных произошла ошибка пользователя, ее можно вернуть в состояние, в котором она находилась на момент создания моментального снимка базы данных. Потеря данных затронет только изменения в базе данных, произведенные после создания моментального снимка.
Например, перед выполнением основных обновлений, таких как массовое обновление или изменение схемы, создайте моментальный снимок базы данных в базе данных для защиты данных. В случае ошибки можно будет восстановить базу данных путем возврата ее в предыдущее состояние с помощью моментального снимка. Откат выполняется быстрее, чем восстановление из резервной копии; однако вы не сможете восстановить изменения после этого.
Внимание
Восстановление неприменимо к поврежденной базе данных и к базе данных, находящейся в режиме вне сети. Поэтому для защиты базы данных необходимы регулярные резервные копии и тестирование плана восстановления.
Примечание.
Моментальные снимки базы данных зависят от базы данных-источника. Поэтому использование моментальных снимков для восстановления базы данных не является заменой стратегии резервного копирования и восстановления. Плановое создание резервных копий остается основным действием. Если необходимо восстановить исходную базу данных до точки создания моментального снимка базы данных, реализуйте политику резервного копирования, которая позволяет это сделать.
Защита данных от пользовательских ошибок.
Регулярно создавая моментальные снимки базы данных, можно снизить влияние крупной ошибки пользователя, например, удаление таблицы. Чтобы обеспечить высокий уровень защиты можно создать несколько моментальных снимков баз данных, охватывающих период времени, достаточный, чтобы распознать большинство пользовательских ошибок и устранить их последствия. Например, в зависимости от ресурсов диска можно поддерживать от 6 до 12 скользячих моментальных снимков, охватывающих 24-часовой интервал. При создании следующего моментального снимка самый ранний будет удаляться.
Для устранения ошибки пользователя можно с помощью моментального снимка вернуть базу данных в состояние непосредственно перед этой ошибкой. Восстановление потенциально гораздо быстрее, чем восстановление из резервной копии; тем не менее, вы не можете выполнить перекат после этого.
В качестве альтернативы, можно вручную восстановить удаленную таблицу или другие потерянные данные из информации в мгновенном снимке. Например, можно скопировать данные массово из моментального снимка в базу данных и затем вручную объединить их обратно в базу данных.
Примечание.
От причины использования моментальных снимков зависит число параллельных снимков для одной базы данных, частота создания новых снимков и срок их хранения.
Управление тестовой базой данных.
- В тестовой среде база данных может содержать идентичные данные в начале каждого раунда тестирования при многократном выполнении протокола тестирования. Перед выполнением первого раунда разработчик приложения или средство тестирования может создать моментальный снимок тестовой базы данных. После каждого запуска тестирования базу данных можно быстро вернуть в предыдущее состояние путем возврата моментального снимка базы данных.
Термины и определения
Снимки состояния базы данных в SQL Server включают несколько ключевых терминов и определений. Моментальный снимок базы данных — это доступное только для чтения статичное представление базы данных (называемое исходной базой данных) в определенный момент времени. База данных-источник — это исходная база данных, на которой основан моментальный снимок, и она должна оставаться в сети и быть доступной для использования моментального снимка. разреженные файлы хранят страницы исходной базы данных, которые были изменены с момента создания снимка. Эти файлы изначально пусты и растут по мере изменения в исходной базе данных. Понимание этих терминов важно для эффективного управления моментальными снимками базы данных и их использования в SQL Server.
Моментальный снимок базы данных
Согласованное на уровне транзакций, доступное только для чтения статическое представление базы данных (базы данных-источника).
База данных-источник
Для моментального снимка базы данных — база данных, в которой создан моментальный снимок. Моментальные снимки базы данных зависят от базы данных-источника. Они должны находиться на одном экземпляре сервера вместе с базой данных. Кроме того, если эта база данных становится недоступной по любой причине, её моментальные снимки также становятся недоступными.
Разреженный файл
Файловая система NTFS предоставляет файл, требующий гораздо меньше места на диске, чем в противном случае. Разреженный файл используется для хранения страниц, помещенных в моментальный снимок базы данных. После создания разреженный файл занимает немного места на диске. По мере занесения данных в моментальный снимок базы данных файловая система NTFS постепенно выделяет место на диске для соответствующего разреженного файла.
Необходимые условия
База данных-источник, в которой может применяться любая модель восстановления, должна соответствовать следующим предварительным требованиям.
Экземпляр сервера должен выполняться на версии SQL Server, поддерживающей моментальные снимки базы данных.
- Дополнительные сведения см. в разделе Функции, поддерживаемые различными выпусками SQL Server 2016.
Исходная база данных должна быть в сети, если она не является зеркальной базой данных в сеансе зеркального отображения базы данных.
Моментальный снимок базы данных можно создать в группе доступности в любой базе данных-источнике или базе данных-получателе. Ролью реплики должна быть PRIMARY или SECONDARY, она не может находиться в состоянии RESOLVING.
Для создания моментального снимка рекомендуется, чтобы состояние синхронизации базы данных было SYNCHRONIZING или SYNCHRONIZED. Однако моментальные снимки базы данных можно создать, если режим не синхронизируется.
- Дополнительные сведения см. в статье Моментальные снимки баз данных для групп доступности AlwaysOn (SQL Server).
Для создания моментального снимка в зеркальной базе данных эта база данных должна быть в состоянии зеркального отображения SYNCHRONIZED.
Исходная база данных не может быть настроена как масштабируемая общая база данных.
До SQL Server 2019 база данных-источник не могла содержать файловую группу MEMORY_OPTIMIZED_DATA. Поддержка моментальных снимков базы данных в памяти была добавлена в SQL Server 2019.
Все модели восстановления поддерживают моментальные снимки базы данных.
Ограничения базы данных-источника
В течение всего периода существования моментального снимка базы данных имеются следующие ограничения по базе данных-источнику моментального снимка.
Невозможно удалить, отсоединить или восстановить базу данных.
Резервное копирование исходной базы данных обычно работает, но на него не влияют моментальные снимки базы данных.
Производительность снижается из-за увеличения операций ввода-вывода в исходной базе данных, вызванной операцией копирования в моментальный снимок при каждом обновлении страницы.
Файлы нельзя переместить из исходной базы данных или снепшотов.
Ограничения моментальных снимков базы данных
Моментальные снимки базы данных зависят от исходной базы данных и не защищают от ошибок диска или повреждения. Поэтому, хотя они могут быть полезны для создания отчетов или во время изменений схемы, они должны дополнять, а не заменять, регулярные методики резервного копирования. Если необходимо восстановить исходную базу данных до точки создания моментального снимка базы данных, реализуйте политику резервного копирования, которая позволяет это сделать.
Следующие ограничения применяются к моментальным снимкам базы данных.
Моментальный снимок базы данных должен создаваться и оставаться на том же экземпляре сервера, что и база данных-источник.
Моментальные снимки базы данных всегда применяются на всей базе данных.
Снимки базы данных зависят от исходной базы данных и не являются избыточным хранилищем. Они не защищаются от ошибок диска или других типов повреждений. Поэтому использование моментальных снимков для восстановления базы данных не является заменой стратегии резервного копирования и восстановления. Плановое создание резервных копий остается основным действием. Если необходимо восстановить исходную базу данных до точки создания моментального снимка базы данных, реализуйте политику резервного копирования, которая позволяет это сделать.
Когда страница, обновляемая в исходной базе данных, отправляется на моментальный снимок, если моментальный снимок выходит из места на диске или обнаруживает другую ошибку, он становится подозрительным и должен быть удален.
Моментальные снимки доступны только для чтения. Так как они доступны только для чтения, их нельзя обновить. Таким образом, не предполагается, что моментальные снимки базы данных будут жизнеспособными после обновления.
Моментальные
model
снимки базmaster
данных иtempdb
баз данных запрещены.Вы не можете изменить какие-либо спецификации файлов моментальных снимков базы данных.
Невозможно удалить файлы из моментального снимка базы данных.
Вы не можете выполнять резервное копирование или восстановление моментальных снимков базы данных.
Невозможно подключить или отсоединить моментальные снимки базы данных.
Невозможно создать моментальные снимки базы данных в файловой системе FAT32 или в разделах RAW. Файловая система NTFS предоставляет разреженные файлы, используемые снимками состояния базы данных.
Полнотекстовое индексирование не поддерживается в моментальных снимках базы данных. Полнотекстовые каталоги не распространяются из исходной базы данных.
Моментальный снимок базы данных наследует ограничения безопасности своей базы данных-источника на момент создания моментального снимка. Так как моментальные снимки доступны только для чтения, унаследованные разрешения не могут быть изменены, а изменения разрешений, внесенные в источник, не будут отражены в существующих моментальных снимках.
Моментальный снимок всегда отражает состояние файловых групп на момент создания снимка: если файловая группа была в сети, она остается в сети, если же она была отключена, она остается вне сети. Дополнительные сведения см. далее в этой статье в разделе "Моментальные снимки базы данных с автономными файловыми группами".
Если база данных-источник переходит в состояние RECOVERY_PENDING, ее моментальные снимки могут стать недоступными. Однако после устранения проблемы в исходной базе данных её моментальные снимки должны снова стать доступными.
Отмена изменений не поддерживается для файлов NTFS со свойством "только для чтения" и сжатых файлов NTFS. Попытка вернуть базу данных, содержащую любой из этих типов файловых групп, завершается ошибкой.
В конфигурации доставки журналов моментальные снимки базы данных можно создавать только в базе данных-источнике, а не вторичной. Предположим, вы переключаете роли между экземплярами первичного и вторичного серверов. В этом случае необходимо удалить все моментальные снимки базы данных перед настройкой основной базы данных в качестве вторичной.
Моментальный снимок базы данных нельзя настроить в качестве масштабируемой общей базы данных.
Моментальные снимки базы данных не поддерживают файловые группы FILESTREAM. Если файловые группы FILESTREAM существуют в исходной базе данных, они помечены как отключенные в её моментальных снимках, и моментальные снимки нельзя использовать для восстановления базы данных.
Примечание.
В инструкции SELECT, применяемой к моментальному снимку базы данных, нельзя указывать столбцы FILESTREAM; в противном случае будет возвращено следующее сообщение об ошибке: Could not continue scan with NOLOCK due to data movement.
- Если статистика по моментальному снимку только для чтения отсутствует или устарела, ядро СУБД создает и сохраняет временную статистику в
tempdb
. Дополнительные сведения см. в разделе статистики.
Место на диске
Моментальные снимки базы данных занимают место на диске. Если на снимке базы данных заканчивается место на диске, он помечается как подозрительный и должен быть удален. (Однако исходная база данных не затрагивается; действия в ней продолжаются нормально.)
Однако моментальные снимки очень эффективны по сравнению с полной копией базы данных. Моментальный снимок требует лишь столько места, сколько необходимо для хранения страниц, изменяющихся в период его существования. Как правило, моментальные снимки хранятся в течение ограниченного времени, поэтому их размер не является значительной проблемой.
Тем не менее, чем дольше вы храните моментальный снимок, тем больше вероятность, что он займет доступное пространство. Максимальный размер, к которому может увеличиваться разреженный файл, — соответствующий размер файла исходной базы данных во время создания моментального снимка. Моментальный снимок базы данных должен быть удалён, если на диске заканчивается свободное место.
Примечание.
За исключением места для файла, моментальный снимок базы данных использует примерно столько же ресурсов, что и база данных.
Автономные файловые группы
Файловые группы вне сети в базе данных-источнике оказывают влияние на моментальные снимки базы данных при попытке выполнить любое из следующих действий.
Создать моментальный снимок.
- Когда в базе данных-источнике имеется одна или несколько файловых групп вне сети, создание моментального снимка завершается успешно с файловыми группами вне сети. Разреженные файлы не создаются для офлайн файловых групп.
Перевод файловой группы в режим вне сети
- Можно перевести файл в режим вне сети в базе данных-источнике. Однако файловая группа останется в режиме в сети в моментальных снимках базы данных, если она находилась в режиме в сети на момент создания моментального снимка. Если запрошенные данные изменились с момента создания моментального снимка, исходная страница данных доступна в моментальном снимке. Однако выполнение запросов, использующих моментальный снимок для доступа к неизмененным данным в файловой группе, скорее всего, завершится неудачно с ошибками ввода-вывода.
Перевод файловой группы в режим в сети
- Невозможно подключить файловую группу в базе данных, если в ней есть какие-либо моментальные снимки. Если файловая группа находится в автономном режиме во время создания моментального снимка или отключена во время создания моментального снимка базы данных, она остается в автономном режиме. Это связано с тем, что при возврате файла в онлайн режим выполняется восстановление, которое невозможно, если существует моментальный снимок базы данных.
Возврат базы данных-источника в состояние по моментальному снимку
- Для восстановления исходной базы данных до снимка базы данных требуется, чтобы все файловые группы были в онлайн-режиме, за исключением тех, которые были в автономном режиме при создании снимка.
Связанное содержимое
- Зеркальное отображение базы данных и моментальные снимки базы данных (SQL Server)
- CREATE DATABASE — моментальные снимки базы данных
- Создание моментального снимка базы данных (Transact-SQL)
- Просмотр моментального снимка базы данных (SQL Server)
- Просмотр размера разреженного файла моментального снимка базы данных (Transact-SQL)
- Восстановление базы данных до состояния, сохраненного в моментальном снимке
- Удаление моментального снимка базы данных (Transact-SQL)