Limitazioni e requisiti degli snapshot del database

Uno snapshot del database rappresenta una copia del database nel momento in cui è iniziata la creazione dello snapshot, meno eventuali transazioni di cui non è stato eseguito il commit. Prima di utilizzare gli snapshot del database, è consigliabile comprenderne l'effetto sul database di origine e sull'ambiente di sistema, nonché apprendere le limitazioni a essi relative.

Nota importanteImportante

Gli snapshot del database sono disponibili solo in Microsoft SQL Server 2005 Enterprise Edition e nelle versioni successive.

Limitazioni del database di origine

In presenza di snapshot del database, al database di origine dello snapshot si applicano le limitazioni seguenti:

  • Non è possibile eliminare, scollegare o ripristinare il database. Per informazioni sulla procedura di eliminazione di uno snapshot, vedere Rimozione di uno snapshot del database.

    Nota

    Il backup del database di origine funziona normalmente e non viene influenzato dagli snapshot del database.

  • Le prestazioni sono ridotte a causa del numero maggiore di operazioni I/O sul database di origine derivanti da un'operazione copy-on-write per lo snapshot eseguita a ogni aggiornamento di una pagina.

  • Non è possibile eliminare i file dal database di origine o da uno snapshot.

  • 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.

    Nota

    Tutti i modelli di recupero supportano gli snapshot del database.

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

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

Limitazioni degli snapshot del database

Agli snapshot del database si applicano le limitazioni seguenti:

  • È necessario creare e mantenere uno snapshot del database sulla stessa istanza del server in cui si trova il database di origine.

  • Gli snapshot del database includono sempre un intero database.

  • Gli snapshot del database dipendono dal database di origine. L'utilizzo di snapshot per il ripristino di un database, pertanto, non rappresenta una soluzione alternativa alla strategia di backup e ripristino. L'esecuzione di tutti i backup pianificati rimane comunque essenziale. Se è necessario ripristinare il database di origine al punto nel tempo in cui è stato creato uno snapshot del database, implementare criteri di backup che consentano di eseguire tale operazione.

  • Quando una pagina in fase di aggiornamento nel database di origine viene inserita in uno snapshot, se questo esaurisce lo spazio su disco oppure si verifica un altro errore, lo snapshot diventa sospetto e deve essere eliminato.

  • Gli snapshot sono di sola lettura.

  • Gli snapshot dei database model, master e temp non sono consentiti.

  • Non è possibile modificare le specifiche dei file degli snapshot del database.

  • Non è possibile eliminare file da uno snapshot del database.

  • Non è possibile eseguire il backup o il ripristino degli snapshot del database.

  • Non è possibile collegare o scollegare snapshot del database.

  • Non è possibile creare snapshot del database con file system FAT32 o partizioni RAW. I file sparse utilizzati dagli snapshot del database vengono forniti dal file system NTFS.

  • L'indicizzazione full-text non è supportata negli snapshot del database. I cataloghi full-text non vengono propagati dal database di origine.

  • Uno snapshot del database eredita i vincoli di sicurezza del proprio database di origine esistenti al momento della creazione dello snapshot. Poiché gli snapshot sono di sola lettura, non è possibile modificare le autorizzazioni ereditate e le modifiche alle autorizzazioni effettuate sul database di origine non verranno riportate negli snapshot esistenti.

  • Uno snapshot riflette sempre lo stato dei filegroup al momento della sua creazione. I filegroup online e quelli offline non modificano il proprio stato. Per ulteriori informazioni, vedere la sezione dedicata agli snapshot del database con filegroup offline più avanti in questo argomento.

  • Se un database di origine acquisisce lo stato di RECOVERY_PENDING, potrebbe non essere possibile accedere ai relativi snapshot del database. Dopo aver risolto il problema sul database di origine, tuttavia, i relativi snapshot dovrebbero ridiventare disponibili.

  • Il ripristino non è supportato per i filegroup di sola lettura e per i filegroup compressi. Eventuali tentativi di ripristinare un database contenente filegroup di questo tipo determineranno un errore. Per ulteriori informazioni sul ripristino, vedere Ripristino di uno snapshot del database.

  • In una configurazione per il log shipping, è possibile creare snapshot del database solo nel database primario. Se si cambiano i ruoli tra l'istanza del server primario e un'istanza del server secondario, è necessario eliminare tutti gli snapshot del database per poter impostare il database primario come database secondario.

  • Non è possibile configurare uno snapshot del database come database condiviso scalabile.

  • I filegroup FILESTREAM non sono supportati dagli snapshot del database. Se in un database di origine sono presenti filegroup FILESTREAM, questi ultimi vengono contrassegnati come offline nei relativi snapshot del database e gli snapshot del database non possono essere utilizzati per ripristinare il database.

    Nota

    Un'istruzione SELECT eseguita in uno snapshot del database non deve specificare una colonna FILESTREAM. In caso contrario, verrà restituito il seguente messaggio di errore: A causa di uno spostamento di dati, non è possibile continuare la scansione tramite NOLOCK.

Requisiti relativi allo spazio su disco

Gli snapshot del database richiedono spazio su disco. Se uno snapshot del database esaurisce lo spazio su disco, viene contrassegnato come sospetto e deve essere eliminato. Il database di origine, tuttavia, non viene influenzato e continua a funzionare normalmente. Gli snapshot tuttavia utilizzano lo spazio su disco in maniera molto più efficiente rispetto a una copia completa di un database. Uno snapshot richiede esclusivamente lo spazio necessario per le pagine che vengono modificate durante la sua durata. Poiché in genere gli snapshot vengono conservati per periodi di tempo limitati, le loro dimensioni non rappresentano un problema.

Più a lungo viene conservato uno snapshot, più è probabile che utilizzi tutto lo spazio disponibile. Le dimensioni massime cui un file sparse può arrivare sono quelle del file del database di origine corrispondente al momento della creazione dello snapshot. Per ulteriori informazioni, vedere Informazioni sulle dimensioni dei file sparse negli snapshot del database.

Se uno snapshot del database esaurisce lo spazio su disco, deve essere eliminato. Per informazioni sull'eliminazione di uno snapshot del database, vedere Rimozione di uno snapshot del database.

Nota

Tranne che per lo spazio del file, uno snapshot del database utilizza approssimativamente le stesse risorse di un database.

Snapshot del database con filegroup offline

I filegroup offline nel database di origine influenzano gli snapshot del database quando si tenta di eseguire una delle operazioni seguenti:

  • Creare uno snapshot

    Quando nel database di origine sono presenti uno o più filegroup offline, la creazione degli snapshot ha esito positivo con i filegroup offline. Per i filegroup offline non vengono creati file sparse.

    Nota

    Per informazioni sul ruolo dei file sparse per gli snapshot del database, vedere Funzionamento degli snapshot del database.

  • Portare un filegroup offline

    È possibile portare un file offline nel database di origine. Tuttavia, il filegroup rimane online negli snapshot del database se era tale alla creazione dello snapshot. Se i dati per i quali viene eseguita una query sono stati modificati dal momento della creazione dello snapshot, la pagina di dati originale sarà accessibile nello snapshot. Tuttavia, è possibile che, per le query che utilizzano lo snapshot per l'accesso ai dati non modificati nel filegroup, si verifichino errori di input/output (I/O).

  • Portare un filegroup online

    Non è possibile portare un filegroup online in un database che presenti snapshot del database. Se un filegroup è offline al momento della creazione dello snapshot o viene portato offline in presenza di uno snapshot del database, il filegroup rimane offline. Per riportare un file online è infatti necessario ripristinarlo, operazione impossibile se è presente uno snapshot nel database.

  • Ripristinare lo snapshot come database di origine

    Il ripristino di uno snapshot del database come database di origine richiede che tutti i filegroup siano online, fatta eccezione per quelli offline al momento della creazione dello snapshot.