Inizializzazione di file di databaseDatabase File Initialization

QUESTO ARGOMENTO SI APPLICA A: SìSQL ServernonDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

I file di dati e di log vengono inizializzati per sovrascrivere eventuali dati esistenti rimasti nel disco in seguito all'eliminazione precedente di file.Data and log files are initialized to overwrite any existing data left on the disk from previously deleted files. I file di dati e di log vengono prima di tutto inizializzati azzerando i file (riempiendoli con zeri) quando si esegue una di queste operazioni:Data and log files are first initialized by zeroing the files (filling with zeros) when you perform one of the following operations:

  • Creazione di un database.Create a database.
  • Aggiungere dati o file di log a un database esistente.Add data or log files, to an existing database.
  • Aumento delle dimensioni di un file esistente (incluse operazioni di aumento automatico delle dimensioni).Increase the size of an existing file (including autogrow operations).
  • Ripristino di un database o un filegroup.Restore a database or filegroup.

L'inizializzazione dei file richiede una quantità di tempo maggiore per l'esecuzione di tali operazioni.File initialization causes these operations to take longer. Quando i dati vengono scritti nei file per la prima volta, tuttavia, il sistema operativo non deve riempire i file con zeri.However, when data is written to the files for the first time, the operating system does not have to fill the files with zeros.

Inizializzazione immediata dei fileInstant File Initialization (IFI)

In SQL ServerSQL Server i file di dati possono essere inizializzati immediatamente per evitare operazioni di azzeramento.In SQL ServerSQL Server, data files can be initialized instantaneously to avoid zeroing operations. L'inizializzazione istantanea dei file consente l'esecuzione rapida delle operazioni sui file indicate in precedenza.Instant file initialization allows for fast execution of the previously mentioned file operations. Tramite l'inizializzazione dei file immediata infatti viene recuperato lo spazio su disco in uso evitando il riempimento di tale spazio con zeri.Instant file initialization reclaims used disk space without filling that space with zeros. Il contenuto del disco viene invece sovrascritto via via che nuovi dati vengono scritti nei file.Instead, disk content is overwritten as new data is written to the files. Per i file di log non è possibile eseguire l'inizializzazione immediata.Log files cannot be initialized instantaneously.

Nota

L'inizializzazione immediata dei file è disponibile solo in MicrosoftMicrosoft Windows XP ProfessionalWindows XP Professional o Windows Server 2003Windows Server 2003 o versioni successive.Instant file initialization is available only on MicrosoftMicrosoft Windows XP ProfessionalWindows XP Professional or Windows Server 2003Windows Server 2003 or later versions.

Importante

L'inizializzazione immediata dei file è disponibile solo per i file di dati.Instant file initialization is available only for data files. I file di log verranno sempre azzerati quando vengono creati o aumentano di dimensione.Log files will always be zeroed when being created, or growing in size.

L'inizializzazione immediata dei file è disponibile solo se all'account di avvio del servizio SQL ServerSQL Server è stato concesso il diritto SE_MANAGE_VOLUME_NAME.Instant file initialization is only available if the SQL ServerSQL Server service startup account has been granted SE_MANAGE_VOLUME_NAME. I membri del gruppo Administrator di Windows dispongono di questo diritto e possono concederlo ad altri utenti aggiungendoli ai criteri di sicurezza Esecuzione attività di manutenzione volume .Members of the Windows Administrator group have this right and can grant it to other users by adding them to the Perform Volume Maintenance Tasks security policy.

Importante

L'uso di alcune funzionalità, ad esempio Transparent Data Encryption (TDE), può impedire l'inizializzazione immediata dei file.Some feature usage, such as Transparent Data Encryption (TDE), can prevent Instant File Initialization.

Per concedere l'autorizzazione Perform volume maintenance tasks a un account:To grant an account the Perform volume maintenance tasks permission:

  1. Nel computer in cui verrà creato il file di backup, aprire l'applicazione Criteri di sicurezza locali (secpol.msc).On the computer where the backup file will be created, open the Local Security Policy application (secpol.msc).

  2. Nel riquadro sinistro espandere Criteri locali, quindi fare clic su Assegnazione diritti utente.In the left pane, expand Local Policies, and then click User Rights Assignment.

  3. Nel riquadro destro fare doppio clic su Esecuzione attività di manutenzione volume.In the right pane, double-click Perform volume maintenance tasks.

  4. Fare clic su Aggiungi utente o gruppo e aggiungere tutti gli account utente usati per i backup.Click Add User or Group and add any user accounts that are used for backups.

  5. Fare clic su Applica, quindi chiudere tutte le finestre di dialogo di Criteri di sicurezza locali .Click Apply, and then close all Local Security Policy dialog boxes.

Nota

A partire da SQL Server 2016 (13.x)SQL Server 2016 (13.x), è possibile concedere questa autorizzazione all'account del servizio al momento dell'installazione, durante la configurazione.Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x), this permission can be granted to the service account at install time, during setup. Se si utilizza il prompt dei comandi installare, aggiungere l'argomento /SQLSVCINSTANTFILEINIT o selezionare la casella Grant Perform Volume Maintenance Task privilege to SQL Server Database Engine Service (Concedi il privilegio di esecuzione attività di manutenzione volume al servizio motore di database di SQL Server) nell'installazione guidata.If using the command prompt install, add the /SQLSVCINSTANTFILEINIT argument, or check the box Grant Perform Volume Maintenance Task privilege to SQL Server Database Engine Service in the installation wizard.

Nota

A partire da SQL Server 2012 (11.x)SQL Server 2012 (11.x) SP4, e SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1 tramite SQL Server 2017SQL Server 2017, è possibile usare la colonna instant_file_initialization_enabled in Sys.dm server_services DMV per stabilire se è abilitata l'inizializzazione immediata dei file.Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x) SP4, and SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1 through SQL Server 2017SQL Server 2017, the column instant_file_initialization_enabled in the sys.dm_server_services DMV can be used to identify if instant file initialization is enabled.

RemarksRemarks

Se all' SQL ServerSQL Serveraccount di avvio del servizio viene concesso SE_MANAGE_VOLUME_NAME, viene registrato un messaggio informativo simile al seguente nel SQL ServerSQL Server registro errori all'avvio:If the SQL ServerSQL Server service startup account is granted SE_MANAGE_VOLUME_NAME, an informational message that resembles the following is logged in the SQL ServerSQL Server error log at startup:

Database Instant File Initialization: enabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.

Se all' SQL ServerSQL Serveraccount di avvio del servizio non viene concesso SE_MANAGE_VOLUME_NAME, viene registrato un messaggio informativo simile al seguente nel SQL ServerSQL Server registro errori all'avvio:If the SQL ServerSQL Server service startup account has not been granted SE_MANAGE_VOLUME_NAME, an informational message that resembles the following is logged in the SQL ServerSQL Server error log at startup:

Database Instant File Initialization: disabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2012 (11.x)SQL Server 2012 (11.x) SP4, SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 e SQL Server 2016 (13.x)SQL Server 2016 (13.x) fino a SQL Server 2017SQL Server 2017)Applies to: SQL ServerSQL Server (Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x) SP4, SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 and SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017)

Considerazioni sulla sicurezzaSecurity Considerations

Se si utilizza l'inizializzazione immediata dei file, poiché il contenuto eliminato del disco viene sovrascritto solo quando vengono scritti nuovi dati nei file, il contenuto eliminato potrebbe essere accessibile a utenti o servizi non autorizzati, finché non vengono eseguite altre scritture dati in tale area specifica del file di dati.When using Instant File Initialization (IFI), because the deleted disk content is overwritten only as new data is written to the files, the deleted content might be accessed by an unauthorized principal, until some other data writes on that specific area of the data file. Finché il file di database è collegato all'istanza di SQL ServerSQL Server, questo rischio di diffusione di informazioni è ridotto dall'elenco di controllo di accesso discrezionale (DACL) per il file.While the database file is attached to the instance of SQL ServerSQL Server, this information disclosure risk is reduced by the discretionary access control list (DACL) on the file. Questo elenco consente l'accesso al file solo all'account del servizio SQL ServerSQL Server e all'amministratore locale.This DACL allows file access only to the SQL ServerSQL Server service account and the local administrator. Quando il file viene scollegato, tuttavia, diventa accessibile a un utente o a un servizio privo del diritto SE_MANAGE_VOLUME_NAME.However, when the file is detached, it may be accessed by a user or service that does not have SE_MANAGE_VOLUME_NAME. Una considerazione di questo tipo è necessaria quando viene eseguito un backup del database: se il file di backup non è protetto con un elenco di controllo di accesso discrezionale (DACL) appropriato, il contenuto eliminato può diventare disponibile a un utente o a un servizio non autorizzato.A similar consideration exists when the database is backed up: if the backup file is not protected with an appropriate DACL, the deleted content can become available to an unauthorized user or service.

Tenere presente anche che quando un file usa l'inizializzazione immediata, un amministratore SQL Server può potenzialmente accedere ai contenuti delle pagine non elaborati e visualizzare i contenuti precedentemente eliminati.Another consideration is that when a file is grown using IFI, a SQL Server administrator could potentially access the raw page contents and see the previously deleted content.

Se i file di database sono ospitati in una rete di archiviazione, è anche possibile che la rete di archiviazione visualizzi sempre le pagine nuove come pagine preinizializzate e non sia necessario che il sistema operativo ne esegua nuovamente l'inizializzazione.If the database files are hosted on a storage area network, it is also possible that the storage area network always presents new pages as pre-initialized, and having the operating system re-initialize the pages might be unnecessary overhead.

Nota

Se SQL ServerSQL Server è installato in un ambiente fisico sicuro, i vantaggi a livello di prestazioni ottenuti abilitando l'inizializzazione immediata dei file possono bilanciare il rischio per la sicurezza, il che spiega il motivo di questa raccomandazione.If SQL ServerSQL Server is installed in a secure physical environment, the performance benefits of enabling instant file initialization can outweigh the security risk and hence the reason for this recommendation.

Se la potenziale diffusione del contenuto eliminato rappresenta un problema, è consigliabile procedere con una o con entrambe le azioni seguenti:If the potential for disclosing deleted content is a concern, you should take one or both of the following actions:

  • Assicurarsi sempre che i file di dati e i file di backup scollegati presentino elenchi di controllo di accesso discrezionale (DACL) restrittivi.Always make sure that any detached data files and backup files have restrictive DACLs.
  • Disabilitare l'inizializzazione immediata dei file per l'istanza di SQL ServerSQL Server revocando il diritto SE_MANAGE_VOLUME_NAME all'account di avvio del servizio SQL ServerSQL Server.Disable instant file initialization for the instance of SQL ServerSQL Server by revoking SE_MANAGE_VOLUME_NAME from the SQL ServerSQL Server service startup account.

Importante

La disabilitazione dell'inizializzazione immediata dei file farà aumentare i tempi di allocazione per i file di dati.Disabling instant file initialization will increase allocation times for data files.

Nota

La disabilitazione dell'inizializzazione immediata dei file ha effetto solo sui file che sono stati creati o le cui dimensioni sono aumentate dopo la revoca del diritto utente.Disabling instant file initialization only affects files that are created or increased in size after the user right is revoked.

Vedere ancheSee Also

CREATE DATABASE (SQL Server Transact-SQL)CREATE DATABASE (SQL Server Transact-SQL)