Condividi tramite


Compattare un file

In questo argomento si illustra come compattare un file di dati o di log in SQL Server 2012 utilizzando SQL Server Management Studio o Transact-SQL.

Con la compattazione dei file di dati è possibile recuperare spazio spostando le pagine di dati dalla fine del file allo spazio non occupato più vicino all'inizio del file. Quando alla fine del file viene creato sufficiente spazio libero, le pagine di dati possono essere deallocate e restituite al file system.

Contenuto dell'argomento

  • Prima di iniziare:

    Limitazioni e restrizioni

    Consigli

    Sicurezza

  • Per compattare un file di dati o di log utilizzando:

    SQL Server Management Studio

    Transact-SQL

Prima di iniziare

Limitazioni e restrizioni

  • Le dimensioni del file di dati primario non possono essere inferiori a quelle del file primario nel database model.

Consigli

  • I dati spostati per ridurre un file possono essere dispersi in qualsiasi percorso disponibile nel file, provocando la frammentazione dell'indice e rallentando le prestazioni di query che eseguono ricerche in un intervallo dell'indice Per eliminare la frammentazione, si consideri la ricompilazione degli indici nel file dopo aver eseguito la compattazione.

Sicurezza

Autorizzazioni

È richiesta l'appartenenza al ruolo predefinito del server sysadmin o al ruolo predefinito del database db_owner.

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

Utilizzo di SQL Server Management Studio

Per compattare un file di dati o di log

  1. In Esplora oggetti connettersi a un'istanza del Motore di database di SQL Server, quindi espandere questa istanza.

  2. Espandere Database, quindi fare clic con il pulsante destro del mouse sul database che si desidera compattare.

  3. Scegliere Compatta dal menu Attività, quindi fare clic su File.

    • Database
      Consente di visualizzare il nome del database selezionato.

    • Tipo di file
      Consente di selezionare il tipo di file. È possibile scegliere tra file di Dati e file di Log. La selezione predefinita è Dati. La selezione di un tipo di filegroup diverso determina la conseguente modifica delle selezioni negli altri campi.

    • Filegroup
      Consente di selezionare un filegroup nell'elenco dei filegroup associato al Tipo file selezionato in precedenza. La selezione di un filegroup diverso determina la conseguente modifica delle selezioni negli altri campi.

    • Nome file
      Consente di selezionare un file nell'elenco dei file disponibili relativo al filegroup e al tipo di file selezionati.

    • Percorso
      Visualizza il percorso completo del file attualmente selezionato. Il percorso non è modificabile, ma può essere copiato negli Appunti.

    • Spazio allocato
      In caso di file di dati, visualizza lo spazio attualmente allocato. In caso di file di log, visualizza lo spazio attualmente allocato calcolato in base all'output di DBCC SQLPERF(LOGSPACE).

    • Spazio disponibile
      In caso di file di dati, visualizza lo spazio attualmente disponibile calcolato in base all'output di DBCC SHOWFILESTATS(fileid). In caso di file di log, visualizza lo spazio attualmente disponibile calcolato in base all'output di DBCC SQLPERF(LOGSPACE).

    • Rilascia spazio inutilizzato
      Causa il rilascio al sistema operativo dello spazio non utilizzato nei file e compatta il file fino all'ultimo extent allocato, riducendo le dimensioni del file senza spostare i dati. Non viene eseguito alcun tentativo di rilocazione delle righe in pagine non allocate.

    • Riorganizza le pagine prima di rilasciare lo spazio inutilizzato
      Equivale a eseguire DBCC SHRINKFILE specificando le dimensioni del file di destinazione. Quando questa opzione è selezionata, è necessario specificare le dimensioni del file di destinazione nella casella Dimensioni file compattato.

    • Dimensioni file compattato
      Consente di specificare le dimensioni del file di destinazione per l'operazione di compattazione. Le dimensioni non possono essere minori dello spazio allocato o maggiori del numero di extent totali allocati al 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.

    • Svuota il file eseguendo la migrazione dei dati in altri file nello stesso filegroup
      Consente di eseguire la migrazione di tutti i dati dal file specificato. Questa opzione consente l'eliminazione del file tramite l'istruzione ALTER DATABASE. Questa opzione equivale a eseguire DBCC SHRINKFILE con l'opzione EMPTYFILE.

  4. Selezionare il tipo e il nome del file.

  5. Facoltativamente, selezionare la casella di controllo Rilascia spazio inutilizzato.

    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, riducendo quindi le dimensioni del file senza spostare i dati.

  6. Facoltativamente, selezionare la casella di controllo Riorganizza i file prima di rilasciare lo spazio inutilizzato. Se si seleziona questa opzione, è necessario specificare il valore di Dimensioni file compattato. Per impostazione predefinita, questa opzione è deselezionata.

    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.

  7. Facoltativamente, immettere la percentuale massima di spazio libero da rendere disponibile nel database dopo la compattazione. I valori consentiti sono compresi tra 0 e 99. Questa opzione è disponibile solo se l'opzione Riorganizza i file prima di rilasciare lo spazio inutilizzato è abilitata.

  8. Facoltativamente, selezionare la casella di controllo Svuota il file eseguendo la migrazione dei dati in altri file nello stesso filegroup.

    Se selezionata, questa opzione consente di spostare tutti i dati dal file selezionato ad altri file nel filegroup. È quindi possibile eliminare il file vuoto. L'opzione è equivalente all'esecuzione dell'istruzione DBCC SHRINKFILE con l'opzione EMPTYFILE.

  9. Scegliere OK.

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

Utilizzo di Transact-SQL

Per compattare un file di dati o di log

  1. Connettersi al Motore di database.

  2. Dalla barra Standard fare clic su Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui. In questo esempio si utilizza DBCC SHRINKFILE per compattare le dimensioni di un file di dati denominato DataFile1 nel database UserDB a 7 MB.

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

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

Vedere anche

Riferimento

DBCC SHRINKDATABASE (Transact-SQL)

sys.databases (Transact-SQL)

sys.database_files (Transact-SQL)

Concetti

Compattare un database

Eliminare file di dati o file di log da un database