Поделиться через


Создание моментального снимка базы данных (Transact-SQL)

Единственным способом создания моментального снимка базы данных SQL Server является использование Transact-SQL. СРЕДА SQL Server Management Studio не поддерживает создание моментальных снимков базы данных.

Перед началом

Необходимые компоненты

База данных-источник, в которой может применяться любая модель восстановления, должна соответствовать следующим предварительным требованиям.

  • Экземпляр сервера должен запускать выпуск SQL Server, поддерживающий моментальный снимок базы данных. Сведения о поддержке моментальных снимков базы данных в SQL Server 2014 см. в разделах "Функции, поддерживаемые выпусками SQL Server 2014".

  • База данных-источник должна быть в режиме в сети, если база данных не является зеркальной в сеансе зеркального отображения базы данных.

  • Для создания моментального снимка в зеркальной базе данных эта база данных должна быть в синхронизированномсостоянии зеркального отображения.

  • База данных-источник не может быть настроена в качестве масштабируемой общей базы данных.

Внимание

Дополнительные сведения о других важных соображениях см. в статье "Моментальные снимки базы данных" (SQL Server).

Рекомендации

В этом разделе обсуждаются следующие рекомендации:

Рекомендации. Присвоение имен моментальным снимкам базы данных

Перед созданием моментальных снимков важно присвоить им правильные имена. Имя каждого моментального снимка базы данных должно быть уникальным в пределах базы данных. Чтобы упростить управление, моментальному снимку следует присвоить имя, которое позволяет определить базу данных, например:

  • Определяет имя исходной базы данных.

  • признак того, что новое имя предназначено для моментального снимка;

  • дату и время создания моментального снимка, порядковый номер или другие сведения, например время в течение дня, которые позволяют отличить моментальные снимки этой базы данных друг от друга.

Например, рассмотрим ряд моментальных снимков для базы данных AdventureWorks2012 . Три ежедневных моментальных снимка создаются в течение 6 часов между 6 утра и 6 вечера в зависимости от 24 часов. Каждый моментальный снимок хранится 24 часа, после этого он удаляется и заменяется одноименным снимком. Обратите внимание, что имя моментального снимка обозначает час, но не дату создания:

AdventureWorks_snapshot_0600  
AdventureWorks_snapshot_1200  
AdventureWorks_snapshot_1800  

Если время создания моментального снимка изменяется, можно использовать менее точные обозначения, например:

AdventureWorks_snapshot_morning  
AdventureWorks_snapshot_noon  
AdventureWorks_snapshot_evening  

Рекомендации. Ограничение количества моментальных снимков базы данных

Благодаря созданию моментальных снимков через определенные промежутки времени формируется последовательность снимков базы данных-источника. Каждый моментальный снимок существует до тех пор, пока явно не удаляется. Поскольку каждый моментальный снимок будет продолжать расти по мере обновления первоначальных страниц, возможно, потребуется освободить место на диске для новых снимков за счет удаления старых.

Примечание.

Чтобы восстановить моментальный снимок базы данных, необходимо удалить все другие снимки из базы данных.

Рекомендации. Клиентские соединения с моментальным снимком базы данных

Чтобы подключиться к моментальному снимку базы данных, клиенты должны знать, где его найти. Пользователи могут работать с одним моментальным снимком базы данных во время создания или удаления другого. Тем не менее при замене существующего снимка новым необходимо перенаправить клиентов на новый снимок. Пользователи могут вручную подключаться к моментальному снимку базы данных с помощью SQL Server Management Studio. Тем не менее в рабочей среде следует создать программное решение, которое неявным для клиента образом направляет приложения, формирующие отчеты, к последнему моментальному снимку базы данных.

Безопасность

Разрешения

Любой пользователь, который может создать базу данных, может создать и моментальный снимок базы данных. Однако для создания моментального снимка зеркальной базы данных необходимо быть членом предопределенной роли сервера sysadmin .

Как создать моментальный снимок базы данных (с использованием языка Transact-SQL)

Создание моментального снимка базы данных

Примечание.

Пример этой процедуры см. в подразделе Примеры (Transact-SQL)далее в этом разделе.

  1. На основании текущего размера базы данных-источника убедитесь, что на диске достаточно места для хранения моментального снимка базы данных. При создании моментального снимка максимальный размер моментального снимка базы данных равен размеру базы данных-источника. Дополнительные сведения см. в разделе "Размер разреженного файла моментального снимка базы данных" (Transact-SQL).

  2. Используйте инструкцию CREATE DATABASE для файлов с помощью предложения AS SNAPSHOT OF. Создание моментального снимка требует указания логического имени каждого файла базы данных-источника. Синтаксис выглядит следующим образом:

    CREATE DATABASE имя_снимка_базы_данных

    DNS

    (

    NAME =логическое_имя_файла,

    FILENAME ='имя_файла_ОС'

    ) [ ,... n ]

    МОМЕНТАЛЬНЫЙ СНИМОК SOURCE_DATABASE_NAME

    [;]

    Где *source_*database_name является исходной базой данных, logical_file_name яс логическим именем, используемым в SQL Server при ссылке на файл, os_file_name — это путь и имя файла, используемое операционной системой при создании файла, а database_snapshot_name — имя моментального снимка, на который требуется вернуть базу данных. Полное описание этого синтаксиса см. в статье CREATE DATABASE (SQL Server Transact-SQL).

    Примечание.

    При создании моментального снимка базы данных файлы журнала файлы в режиме вне сети, восстанавливаемые из копии файлы и нефункционирующие файлы являются недопустимыми в инструкции CREATE DATABASE.

Примеры (Transact-SQL)

Примечание.

Расширение .ss , используемое в примерах, выбрано произвольно.

Этот раздел содержит следующие примеры.

А. Создание моментального снимка по базе данных AdventureWorks

В этом примере создается моментальный снимок базы данных по базе данных AdventureWorks . Имя моментального снимка AdventureWorks_dbss_1800и имя файла его разреженного файла AdventureWorks_data_1800.ssуказывают на время создания — 18:00.

CREATE DATABASE AdventureWorks_dbss1800 ON  
( NAME = AdventureWorks_Data, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800.ss' )  
AS SNAPSHOT OF AdventureWorks;  
GO  

В. Создание моментального снимка по базе данных Sales

Этот пример создает моментальный снимок sales_snapshot1200базы данных Sales . Эта база данных была создана в примере "Создание базы данных, которая содержит файловые группы" раздела CREATE DATABASE (SQL Server Transact-SQL).

--Creating sales_snapshot1200 as snapshot of the  
--Sales database:  
CREATE DATABASE sales_snapshot1200 ON  
( NAME = SPri1_dat, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SPri1dat_1200.ss'),  
( NAME = SPri2_dat, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SPri2dt_1200.ss'),  
( NAME = SGrp1Fi1_dat, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\mssql\data\SG1Fi1dt_1200.ss'),  
( NAME = SGrp1Fi2_dat, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SG1Fi2dt_1200.ss'),  
( NAME = SGrp2Fi1_dat, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SG2Fi1dt_1200.ss'),  
( NAME = SGrp2Fi2_dat, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SG2Fi2dt_1200.ss')  
AS SNAPSHOT OF Sales;  
GO  

Связанные задачи

См. также

CREATE DATABASE (SQL Server Transact-SQL)
Моментальные снимки базы данных (SQL Server)