Compattare un fileShrink a File

In questo argomento si illustra come compattare un file di dati o di log in SQL Server 2017SQL Server 2017 usando SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to shrink a data or log file in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

Compattando i file di dati si recupera spazio spostando le pagine di dati dalla fine del file allo spazio non occupato più vicino all'inizio del file.Shrinking data files recovers space by moving pages of data from the end of the file to unoccupied space closer to the front of the file. Quando alla fine del file viene creato sufficiente spazio libero, le pagine di dati possono essere deallocate e restituite al file system.When enough free space is created at the end of the file, data pages at end of the file can deallocated and returned to the file system.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

  • Le dimensioni del file di dati primario non possono essere inferiori a quelle del file primario nel database model.The primary data file cannot be made smaller than the size of the primary file in the model database.

Indicazioni Recommendations

  • I dati spostati per ridurre un file possono essere dispersi in qualsiasi percorso disponibile nel file,Data that is moved to shrink a file can be scattered to any available location in the file. provocando la frammentazione dell'indice e rallentando le prestazioni di query che eseguono ricerche in un intervallo dell'indiceThis causes index fragmentation and can slow the performance of queries that search a range of the index. Per eliminare la frammentazione, valutare la possibilità di ricompilare gli indici sul file dopo la compattazione.To eliminate the fragmentation, consider rebuilding the indexes on the file after shrinking.

Sicurezza Security

Autorizzazioni Permissions

È richiesta l'appartenenza al ruolo predefinito del server sysadmin o al ruolo predefinito del database db_owner .Requires membership in the sysadmin fixed server role or the db_owner fixed database role.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per compattare un file di dati o di logTo shrink a data or log file

  1. In Esplora oggetti connettersi a un'istanza del Motore di database di SQL ServerSQL Server Database Engine , quindi espandere questa istanza.In Object Explorer, connect to an instance of the Motore di database di SQL ServerSQL Server Database Engine and then expand that instance.

  2. Espandere Database , quindi fare clic con il pulsante destro del mouse sul database che si desidera compattare.Expand Databases and then right-click the database that you want to shrink.

  3. Scegliere Compattadal menu Attività, quindi fare clic su File.Point to Tasks, point to Shrink, and then click Files.

    DatabaseDatabase
    Consente di visualizzare il nome del database selezionato.Displays the name of the selected database.

    Tipo di fileFile type
    Consente di selezionare il tipo di file.Select the file type for the file. È possibile scegliere tra file di Dati e file di Log .The available choices are Data and Log files. La selezione predefinita è Dati.The default selection is Data. La selezione di un tipo di filegroup diverso determina la conseguente modifica delle selezioni negli altri campi.Selecting a different filegroup type changes the selections in the other fields accordingly.

    FilegroupFilegroup
    Consente di selezionare un filegroup nell'elenco dei filegroup associato al Tipo file selezionato in precedenza.Select a filegroup from the list of Filegroups associated with the selected File type above. La selezione di un filegroup diverso determina la conseguente modifica delle selezioni negli altri campi.Selecting a different filegroup changes the selections in the other fields accordingly.

    Nome fileFile name
    Consente di selezionare un file nell'elenco dei file disponibili relativo al filegroup e al tipo di file selezionati.Select a file from the list of available files of the selected filegroup and file type.

    PercorsoLocation
    Visualizza il percorso completo del file attualmente selezionato.Displays the full path to the currently selected file. Il percorso non è modificabile, ma può essere copiato negli Appunti.The path is not editable, but it can be copied to the clipboard.

    Spazio allocatoCurrently allocated space
    In caso di file di dati, visualizza lo spazio attualmente allocato.For data files, displays the current allocated space. In caso di file di log, visualizza lo spazio attualmente allocato calcolato in base all'output di DBCC SQLPERF(LOGSPACE).For log files, displays the current allocated space computed from the output of DBCC SQLPERF(LOGSPACE).

    Spazio disponibileAvailable free space
    In caso di file di dati, visualizza lo spazio attualmente disponibile calcolato in base all'output di DBCC SHOWFILESTATS(fileid).For data files, displays the current available free space computed from the output of DBCC SHOWFILESTATS(fileid). In caso di file di log, visualizza lo spazio attualmente disponibile calcolato in base all'output di DBCC SQLPERF(LOGSPACE).For log files, displays the current available free space computed from the output of DBCC SQLPERF(LOGSPACE).

    Rilascia spazio inutilizzatoRelease unused space
    Causa il rilascio al sistema operativo dello spazio non usato nei file e compatta il file fino all'ultimo extent allocato, riducendo le dimensioni del file senza spostare i dati.Cause any unused space in the files to be released to the operating system and shrink the file to the last allocated extent, reducing the file size without moving any data. Non viene eseguito alcun tentativo di rilocazione delle righe in pagine non allocate.No attempt is made to relocate rows to unallocated pages.

    Riorganizza le pagine prima di rilasciare lo spazio inutilizzatoReorganize pages before releasing unused space
    Equivale a eseguire DBCC SHRINKFILE specificando le dimensioni del file di destinazione.Equivalent to executing DBCC SHRINKFILE specifying the target file size. Quando questa opzione è selezionata, è necessario specificare le dimensioni del file di destinazione nella casella Dimensioni file compattato .When this option is selected, the user must specify a target file size in the Shrink file to box.

    Dimensioni file compattatoShrink file to
    Consente di specificare le dimensioni del file di destinazione per l'operazione di compattazione.Specifies the target file size for the shrink operation. Le dimensioni non possono essere minori dello spazio allocato o maggiori del numero di extent totali allocati al file.The size cannot be less than the current allocated space or more than the total extents allocated to the file. L'immissione di un valore non compreso nel limite minimo o massimo determinerà il ripristino dei valori minimo e massimo in seguito alla modifica dello stato attivo o alla pressione di un pulsante sulla barra degli strumenti.Entering a value beyond the minimum or the maximum will revert to the min or the max once the focus is changed or when any of the buttons on the toolbar are clicked.

    Svuota il file eseguendo la migrazione dei dati in altri file nello stesso filegroupEmpty file by migrating the data to other files in the same filegroup
    Consente di eseguire la migrazione di tutti i dati dal file specificato.Migrate all data from the specified file. Questa opzione consente l'eliminazione del file tramite l'istruzione ALTER DATABASE.This option allows the file to be dropped using the ALTER DATABASE statement. Questa opzione equivale a eseguire DBCC SHRINKFILE con l'opzione EMPTYFILE.This option is equivalent to executing DBCC SHRINKFILE with the EMPTYFILE option.

  4. Selezionare il tipo e il nome del file.Select the file type and file name.

  5. Facoltativamente, selezionare la casella di controllo Rilascia spazio inutilizzato .Optionally, select the Release unused space check box.

    Se selezionata, questa opzione consente di rilasciare al sistema operativo lo spazio inutilizzato del file e di compattare il file fino all'ultimo extent allocato,Selecting this option causes any unused space in the file to be released to the operating system and shrinks the file to the last allocated extent. riducendo quindi le dimensioni del file senza spostare i dati.This reduces the file size without moving any data.

  6. Facoltativamente, selezionare la casella di controllo Riorganizza i file prima di rilasciare lo spazio inutilizzato .Optionally, select the Reorganize files before releasing unused space check box. Se si seleziona questa opzione, è necessario specificare il valore di Dimensioni file compattato .If this is selected, the Shrink file to value must be specified. Per impostazione predefinita, questa opzione è deselezionata.By default, the option is cleared.

    Se selezionata, questa opzione consente di rilasciare al sistema operativo lo spazio inutilizzato del file e di spostare, se possibile, le righe in pagine non allocate.Selecting this option causes any unused space in the file to be released to the operating system and tries to relocate rows to unallocated pages.

  7. Facoltativamente, immettere la percentuale massima di spazio libero da rendere disponibile nel database dopo la compattazione.Optionally, enter the maximum percentage of free space to be left in the database file after the database has been shrunk. I valori consentiti sono compresi tra 0 e 99.Permissible values are between 0 and 99. Questa opzione è disponibile solo se l'opzione Riorganizza i file prima di rilasciare lo spazio inutilizzato è abilitata.This option is only available when Reorganize files before releasing unused space is enabled.

  8. Facoltativamente, selezionare la casella di controllo Svuota il file eseguendo la migrazione dei dati in altri file nello stesso filegroup .Optionally, select the Empty file by migrating the data to other files in the same filegroup check box.

    Se selezionata, questa opzione consente di spostare tutti i dati dal file selezionato ad altri file nel filegroup.Selecting this option moves all data from the specified file to other files in the filegroup. È quindi possibile eliminare il file vuoto.The empty file can then be deleted. L'opzione è equivalente all'esecuzione dell'istruzione DBCC SHRINKFILE con l'opzione EMPTYFILE.This option is the same as executing DBCC SHRINKFILE with the EMPTYFILE option.

  9. Scegliere OK.Click OK.

Utilizzo di Transact-SQL Using Transact-SQL

Per compattare un file di dati o di logTo shrink a data or log file

  1. Connettersi al Motore di databaseDatabase Engine.Connect to the Motore di databaseDatabase Engine.

  2. Dalla barra Standard fare clic su Nuova query.From the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute. In questo esempio si usano DBCC SHRINKFILE per compattare le dimensioni di un file di dati denominato DataFile1 nel database UserDB a 7 MB.This example uses DBCC SHRINKFILE to shrink the size of a data file named DataFile1 in the UserDB database to 7 MB.

    USE UserDB;
    GO
    DBCC SHRINKFILE (DataFile1, 7);
    GO
    

Vedere ancheSee Also

DBCC SHRINKDATABASE (Transact-SQL) DBCC SHRINKDATABASE (Transact-SQL)
Compattare un database Shrink a Database
Eliminare file di dati o file di log da un database Delete Data or Log Files from a Database
sys.databases (Transact-SQL) sys.databases (Transact-SQL)
sys.database_files (Transact-SQL) sys.database_files (Transact-SQL)