Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
Моментальный снимок базы данных — это только для чтения статичное представление базы данных SQL Server (исходная база данных). Транзакционная согласованность поддерживается с исходной базой данных на момент создания снимка, и она всегда размещается на том же экземпляре сервера, что и исходная база данных. Хотя моментальные снимки базы данных предоставляют доступ к данным только для чтения в том состоянии, в котором они находились на момент создания снимка, размер файла моментального снимка увеличивается по мере внесения изменений в исходную базу данных.
Хотя моментальные снимки базы данных могут быть полезны во время основных обновлений схемы и позволяют вернуться к предыдущему состоянию, важно понимать, что моментальные снимки не заменяют необходимость регулярного резервного копирования. Моментальные снимки базы данных нельзя отдельно копировать или восстанавливать, что означает их нужно использовать в сочетании с надежной стратегией резервного копирования для обеспечения защиты данных и их восстановления в случае потери или повреждения данных.
Моментальные снимки базы данных создаются с помощью синтаксиса CREATE DATABASE T-SQL с помощью синтаксиса AS SNAPSHOT OF .
Для одной базы данных-источника может существовать несколько снимков. Каждый моментальный снимок базы данных сохраняется до тех пор, пока владелец базы данных явно не удаляет его.
Примечание.
Моментальные снимки базы данных не связаны ни с резервными копиями на основе моментальных снимков, ни с резервными копиями моментальных снимков Transact-SQL, ни с изоляцией транзакций на основе моментальных снимков, ни с репликацией на основе моментальных снимков.
Общие сведения о функциях
Снимки базы данных работают на уровне страниц данных. Прежде чем страница исходной базы данных будет изменена впервые, исходная страница копируется из исходной базы данных в снимок. Моментальный снимок хранит исходную страницу, оставляя записи данных в том виде, в котором они существовали на момент создания моментального снимка. Один и тот же процесс повторяется для каждой страницы, изменяемой в первый раз. Для пользователя моментальный снимок базы данных не изменяется, так как операции чтения с моментального снимка базы данных всегда обращаются к исходным страницам данных независимо от того, где они находятся.
Моментальный снимок сохраняет скопированные исходные страницы, используя один или несколько разреженных файлов . Изначально разреженный файл является пустым файлом, который не содержит пользовательских данных и еще не был выделен место на диске для пользовательских данных. Размер файла увеличивается по мере обновления дополнительных страниц в исходной базе данных. На следующем рисунке показано влияние двух различных схем обновления на размер снимка. Схема обновления A отражает среду, в которой в течение срока существования снимка обновляется только 30 % исходных страниц. Схема обновления B отражает среду, в которой в течение срока существования снимка обновляется 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. Дополнительные сведения см. в разделе статистики.
Место на диске
Снимки базы данных занимают место на диске. Если на снимке базы данных заканчивается место на диске, он помечается как подозрительный и должен быть удален. (Однако исходная база данных не затрагивается; действия в ней продолжаются нормально.)
Однако моментальные снимки очень эффективны по сравнению с полной копией базы данных. Моментальный снимок требует лишь столько места, сколько необходимо для хранения страниц, изменяющихся в период его существования. Как правило, моментальные снимки хранятся в течение ограниченного времени, поэтому их размер не является значительной проблемой.
Тем не менее, чем дольше вы храните моментальный снимок, тем больше вероятность, что он займет доступное пространство. Максимальный размер, к которому может увеличиваться разреженный файл, — соответствующий размер файла исходной базы данных во время создания моментального снимка. Моментальный снимок базы данных должен быть удалён, если на диске заканчивается свободное место.
Примечание.
За исключением дискового пространства, снимок базы данных потребляет примерно столько же ресурсов, сколько и база данных.
Автономные файловые группы
Автономные файловые группы в исходной базе данных влияют на снимки базы данных в следующих случаях:
Создать моментальный снимок.
- Если в исходной базе данных есть одна или несколько файловых групп в автономном режиме, снимок успешно создается, при этом эти файловые группы остаются в автономном режиме. Разреженные файлы не создаются для офлайн файловых групп.
Перевод файловой группы в режим вне сети
- Можно перевести файл в режим вне сети в базе данных-источнике. Однако файловая группа остается в сети в моментальных снимках базы данных, если на момент создания моментального снимка она была в сети. Если запрошенные данные изменились с момента создания моментального снимка, исходная страница данных доступна в моментальном снимке. Однако запросы, использующие снимок для доступа к неизменённым данным в файловой группе, скорее всего, завершатся с ошибками ввода-вывода (I/O).
Перевод файловой группы в режим в сети
- Невозможно подключить файловую группу в базе данных, если в ней есть какие-либо моментальные снимки. Если файловая группа находится в автономном режиме во время создания моментального снимка или отключена во время создания моментального снимка базы данных, она остается в автономном режиме. Это связано с тем, что при возврате файла в онлайн режим выполняется восстановление, которое невозможно, если существует моментальный снимок базы данных.
Вернуть исходную базу данных к снимку
- Для восстановления исходной базы данных до снимка базы данных требуется, чтобы все файловые группы были в онлайн-режиме, за исключением тех, которые были в автономном режиме при создании снимка.
Связанное содержимое
- Зеркальное отображение баз данных и моментальные снимки баз данных (SQL Server)
- CREATE DATABASE — снимки базы данных
- Создание моментального снимка базы данных (Transact-SQL)
- Просмотр моментального снимка базы данных (SQL Server)
- Просмотр размера разреженного файла снимка базы данных (Transact-SQL)
- Восстановление базы данных до состояния, сохраненного в моментальном снимке
- Удаление моментального снимка базы данных (Transact-SQL)