Creare uno snapshot del database (Transact-SQL)

L'unico modo per creare uno snapshot del database di SQL Server è utilizzando Transact-SQL. SQL Server Management Studio non supporta la creazione di snapshot del database.

  • **Prima di iniziare: **

    Prerequisiti

    Sicurezza

    Procedura consigliata: Denominazione degli snapshot del database

  • Per creare uno snapshot del database utilizzando Transact-SQL

Prima di iniziare

Prerequisiti

Il database di origine, in cui può essere utilizzato qualsiasi modello di recupero, deve soddisfare i prerequisiti seguenti:

  • L'istanza del server deve eseguire un'edizione di SQL Server che supporti gli snapshot del database. Per informazioni sul supporto per gli snapshot del database in SQL Server 2012, vedereFunzionalità supportate dalle edizioni di SQL Server 2012

  • Il database di origine deve essere online, a meno che non si tratti di un database mirror nell'ambito di una sessione di mirroring del database.

  • Per creare uno snapshot del database in un database mirror, è necessario che il database si trovi nello stato di mirroring sincronizzato.

  • Non è possibile configurare il database di origine come un database condiviso scalabile.

Nota importanteImportante

Per informazioni relative ad altre considerazioni rilevanti, vedere Snapshot del database (SQL Server).

Indicazioni

In questa sezione vengono illustrate le procedure consigliate seguenti:

  • Procedura consigliata: Denominazione degli snapshot del database

  • Procedura consigliata: Limitazione del numero di snapshot del database

  • Procedura consigliata: Connessioni client a uno snapshot del database

Procedura consigliata: Denominazione degli snapshot del database

Prima di creare gli snapshot è importante considerare il nome da utilizzare. Ogni snapshot del database richiede un nome di database univoco. Per semplificare l'amministrazione, il nome di uno snapshot può contenere informazioni utili a identificare il database, ad esempio:

  • Nome del database di origine.

  • Indicazione che si tratta di uno snapshot.

  • Data e ora di creazione dello snapshot, un numero di sequenza o altre informazioni utili a distinguere gli snapshot sequenziali su un determinato database.

Si consideri ad esempio una serie di snapshot del database AdventureWorks2012 . Ogni giorno fra le 6 e le 18 vengono creati tre snapshot, a intervalli di 6 ore, su un ciclo di 24 ore. Ogni snapshot viene mantenuto per 24 ore prima di essere eliminato e sostituito da un nuovo snapshot con lo stesso nome. Si noti che il nome di ogni snapshot indica l'ora, ma non il giorno:

AdventureWorks_snapshot_0600
AdventureWorks_snapshot_1200
AdventureWorks_snapshot_1800

In alternativa, se l'orario di creazione di questi snapshot giornalieri cambia da un giorno all'altro, può essere preferibile una convenzione di denominazione più generica, ad esempio:

AdventureWorks_snapshot_morning
AdventureWorks_snapshot_noon
AdventureWorks_snapshot_evening

Procedura consigliata: Limitazione del numero di snapshot del database

Creando una serie di snapshot a intervalli di tempo si acquisiscono snapshot sequenziali del database di origine. Ogni snapshot viene mantenuto finché non viene esplicitamente eliminato. Poiché ogni snapshot continua a crescere man mano che le pagine originali vengono aggiornate, per conservare spazio su disco è consigliabile eliminare un vecchio snapshot prima di crearne uno nuovo.

[!NOTA]

Se si desidera ripristinare uno snapshot del database è necessario eliminare tutti gli altri snapshot dal database.

Procedura consigliata: Connessioni client a uno snapshot del database

Per utilizzare uno snapshot del database, i client devono sapere dove reperirlo. Gli utenti possono leggere da uno snapshot del database durante la creazione o l'eliminazione di un altro snapshot. Quando si sostituisce uno snapshot esistente con un nuovo snapshot, tuttavia, è necessario reindirizzare i client al nuovo snapshot. Gli utenti possono connettersi manualmente a uno snapshot del database tramite SQL Server Management Studio. Per supportare un ambiente di produzione, è tuttavia consigliabile creare una soluzione a livello di programmazione che indirizzi in modo trasparente i client che scrivono report all'ultimo snapshot del database.

[Torna all'inizio]

Sicurezza

Autorizzazioni

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.

Icona freccia utilizzata con il collegamento Torna all'inizio[Torna all'inizio]

Come creare uno snapshot del database utilizzando Transact-SQL

Per creare uno snapshot del database

[!NOTA]

Per un esempio di questa procedura, vedere Esempi (Transact-SQL), più avanti in questa sezione.

  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. Per ulteriori informazioni, vedere Visualizzare le dimensioni del file sparse di uno snapshot del database (Transact-SQL).

  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. La sintassi è la seguente:

    CREATE DATABASE database_snapshot_name

        ON

        (

            NAME = logical_file_name,

            FILENAME = 'os_file_name'

        ) [ ,...n ]

        AS SNAPSHOT OF source_database_name

    [;]

    Dove source_database_name è il nome del database di origine, logical_file_name i è il nome logico utilizzato in SQL Server quando si fa riferimento al file, os_file_name sono il percorso e il nome utilizzati dal sistema operativo quando si crea il file e database_snapshot_name è il nome dello snapshot in base a cui si desidera ripristinare il database. Per una descrizione completa di questa sintassi, 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.

Icona freccia utilizzata con il collegamento Torna all'inizio[Torna all'inizio]

Esempi (Transact-SQL)

[!NOTA]

L'estensione .ss utilizzata negli esempi è arbitraria.

In questa sezione sono disponibili gli esempi seguenti:

  • A. Creazione di uno snapshot del database AdventureWorks

  • B. Creazione di uno snapshot del database Sales

A.Creazione di uno snapshot del database AdventureWorks

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

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

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\MSSQL11.MSSQLSERVER\MSSQL\data\SPri1dat_1200.ss'),
( NAME = SPri2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SPri2dt_1200.ss'),
( NAME = SGrp1Fi1_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\mssql\data\SG1Fi1dt_1200.ss'),
( NAME = SGrp1Fi2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG1Fi2dt_1200.ss'),
( NAME = SGrp2Fi1_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG2Fi1dt_1200.ss'),
( NAME = SGrp2Fi2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG2Fi2dt_1200.ss')
AS SNAPSHOT OF Sales
GO

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Attività correlate

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Vedere anche

Riferimento

CREATE DATABASE (Transact-SQL)

Concetti

Snapshot del database (SQL Server)