Procedura: Creazione di uno snapshot del database (Transact-SQL)

L'unico modo per creare uno snapshot del database consiste nell'utilizzare Transact-SQL. Se un utente può creare un database, può creare anche uno snapshot del database; tuttavia, per creare uno snapshot di un database mirror, è necessario essere membro del ruolo del server predefinito sysadmin.

Nota

Per considerazioni relative alla denominazione di snapshot del database, alla definizione della tempistica della creazione di snapshot e alla limitazione del numero di snapshot, vedere Creazione di uno snapshot del database.

Per creare uno snapshot del database

  1. In base alla dimensione attuale del database di origine, assicurarsi che lo spazio su disco sia sufficiente per lo snapshot del database. La dimensione massima di uno snapshot del database corrisponde alla dimensione del database di origine al momento della creazione dello snapshot.

  2. Generare un'istruzione CREATE DATABASE sui file che utilizzano la clausola AS SNAPSHOT OF. Per creare uno snapshot, è necessario specificare il nome logico di ogni file di database del database di origine. Per una descrizione formale della sintassi per la creazione di uno snapshot del database, vedere CREATE DATABASE (Transact-SQL).

    Nota

    Quando si crea uno snapshot del database, i file di log, i file offline, i file in fase di ripristino e i file inattivi non sono consentiti nell'istruzione CREATE DATABASE.

Esempio

In questa sezione sono disponibili esempi di creazione di uno snapshot di database.

A. Creazione di uno snapshot del database AdventureWorks2008R2

In questo esempio viene creato uno snapshot del database AdventureWorks2008R2. Il nome dello snapshot, AdventureWorks2008R2_dbss_1800, e il nome del file sparse corrispondente, AdventureWorks2008R2_data_1800.ss, indicano l'ora di creazione, ovvero le 18.00 (1800).

CREATE DATABASE AdventureWorks2008R2_dbss1800 ON
( NAME = AdventureWorks2008R2_Data, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_data_1800.ss' )
AS SNAPSHOT OF AdventureWorks2008R2;
GO

Nota

L'estensione ss utilizzata negli esempi è arbitraria.

B. Creazione di uno snapshot del database Sales

In questo esempio viene creato uno snapshot, sales_snapshot1200, del database Sales. Questo database è stato creato nell'esempio "Creazione di un database con filegroup" in CREATE DATABASE (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\MSSQL10_50.MSSQLSERVER\MSSQL\data\SPri1dat_1200.ss'),
( NAME = SPri2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\SPri2dt_1200.ss'),
( NAME = SGrp1Fi1_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\mssql\data\SG1Fi1dt_1200.ss'),
( NAME = SGrp1Fi2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\SG1Fi2dt_1200.ss'),
( NAME = SGrp2Fi1_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\SG2Fi1dt_1200.ss'),
( NAME = SGrp2Fi2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\SG2Fi2dt_1200.ss')
AS SNAPSHOT OF Sales
GO