Abilitare la compressione in una tabella o un indiceEnable Compression on a Table or Index

In questo argomento viene descritto come abilitare la compressione in una tabella o un indice in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to enable compression on a table or index in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

Contenuto dell'argomentoIn This Topic

Prima di iniziareBefore You Begin

Limitazioni e restrizioniLimitations and Restrictions

  • Le tabelle di sistema non possono essere abilitate per la compressione.System tables cannot be enabled for compression.

  • Se la tabella è un heap, l'operazione di ricompilazione per la modalità ONLINE sarà a thread singolo.If the table is a heap, the rebuild operation for ONLINE mode will be single threaded. Utilizzare la modalità OFFLINE per un'operazione di ricompilazione di heap multithread.Use OFFLINE mode for a multi-threaded heap rebuild operation. Per altre informazioni sulla compressione dei dati, vedere Compressione dei dati.For a more information about data compression, see Data Compression.

  • Non è possibile modificare l'impostazione di compressione di una singola partizione se la tabella include indici non allineati.You cannot change the compression setting of a single partition if the table has nonaligned indexes.

SicurezzaSecurity

AutorizzazioniPermissions

È richiesta l'autorizzazione ALTER per la tabella o l'indice.Requires ALTER permission on the table or index.

Utilizzo di SQL Server Management StudioUsing SQL Server Management Studio

Per abilitare la compressione in una tabella o un indiceTo enable compression on a table or index

  1. In Esplora oggetti espandere il database contenente la tabella che si desidera comprimere, quindi espandere la cartella Tabelle .In Object Explorer, expand the database that contains the table that you want to compress and then expand the Tables folder.

  2. Per comprimere un indice, espandere la tabella contenente l'indice che si desidera comprimere, quindi espandere la cartella Indici .To compress an index, expand the table that contains the index that you want to compress and then expand the Indexes folder.

  3. Fare clic con il pulsante destro del mouse sulla tabella o sull'indice da comprimere, scegliere Archiviazione e selezionare Gestione compressione.Right-click the table or index to compress, point to Storage and select Manage Compression….

  4. In Compressione guidata dati nella pagina Compressione guidata dati fare clic su Avanti.In the Data Compression Wizard, on the Welcome to the Data Compression Wizard page, click Next.

  5. Nella pagina Seleziona tipo di compressione selezionare il tipo di compressione da applicare a ogni partizione nella tabella o nell'indice che si desidera comprimere.On the Select Compression Type page, select the compression type to apply to each partition in the table or index you want to compress. Al termine, fare clic su Avanti.When finished, click Next.

    Le opzioni seguenti sono disponibili nella pagina Seleziona tipo di compressione :The following options are available on the Select Compression Type page:

    Casella di controlloUsa lo stesso tipo di compressione per tutte le partizioni Use the same compression type for all partitions check box
    Selezionare questa opzione per configurare la stessa impostazione di compressione per tutte le partizioni.Select to configure the same compression setting for all partitions. La casella di selezione viene abilitata e la colonna Tipo di compressione nella griglia viene disabilitata.This enables the selection box and disables the Compression Type column in the grid. Se viene selezionata, le opzioni nell'elenco adiacente sono Nessuno, Rigae Pagina.When selected, the options in the adjacent list are None, Row, and Page.

    Numero partizioniPartition Number
    Elenca tutte le partizioni nella tabella o nell'indice.Lists each partition in the table or index. Questa colonna è di sola lettura.This column is read-only.

    Tipo di compressioneCompression Type
    Selezionare l'opzione di compressione per ciascuna partizione.Select the compression option for each partition. Questa opzione non è disponibile se Usa lo stesso tipo di compressione per tutte le partizioni è selezionata.Is not available when Use the same compression type for all partitions is selected. Le opzioni nell'elenco sono Nessuno, Rigae Pagina.List options are None, Row, and Page.

    LimiteBoundary
    Visualizza il limite della partizione.Displays the partition boundary. Questa colonna è di sola lettura.This column is read-only.

    Conteggio righeRow Count
    Visualizza il numero di righe nella partizione.Displays the number of rows in this partition. Questa colonna è di sola lettura.This column is read-only.

    Spazio correnteCurrent Space
    Visualizza lo spazio corrente occupato dalla partizione, espresso in megabyte (MB).Displays the current space this partition occupies in megabytes (MB). Questa colonna è di sola lettura.This column is read-only.

    Spazio compresso richiestoRequested Compressed Space
    Quando si fa clic su Calcola, in questa colonna vengono visualizzate le dimensioni stimate di ciascuna partizione dopo la compressione eseguita mediante l'uso dell'impostazione specificata nella colonna Tipo di compressione .After you click Calculate, this column displays the estimated size of each partition after compression by using the setting specified in the Compression Type column. Questa colonna è di sola lettura.This column is read-only.

    CalcolaCalculate
    Fare clic per eseguire la stima delle dimensioni di ciascuna partizione dopo la compressione eseguita mediante l'uso dell'impostazione specificata nella colonna Tipo di compressione .Click to estimate the size of each partition after compression by using the setting specified in the Compression Type column.

  6. Nella pagina Seleziona un'opzione di output specificare il modo in cui si desidera completare la compressione.In the Select an Output Option page, specify how you want to complete your compression. Selezionare Crea script per creare uno script SQL in base alle pagine precedenti della procedura guidata.Select Create Script to create a SQL script based the previous pages in the wizard. Selezionare Esegui immediatamente per creare la nuova tabella partizionata dopo aver completato tutte le pagine rimanenti della procedura guidata.Select Run immediately to create the new partitioned table after completing all remaining pages in the wizard. Selezionare Pianifica per creare la nuova tabella partizionata in un momento predeterminato nel futuro.Select Schedule to create the new partitioned table at a predetermined time in the future.

    Se si seleziona Crea script, in Opzioni di scriptingsono disponibili le opzioni seguenti:If you select Create script, the following options are available under Script options:

    Genera script nel fileScript to file
    Genera lo script come file con estensione sql.Generates the script as a .sql file. Immettere un nome di file e il percorso nella casella Nome file o fare clic su Sfoglia per aprire la finestra di dialogo Percorso file script .Enter a file name and location in the File name box or click Browse to open the Script File Location dialog box. In Salva con nomeselezionare Testo Unicode o Testo ANSI.From Save As, select Unicode text or ANSI text.

    Genera script negli AppuntiScript to Clipboard
    Salva lo script negli Appunti.Saves the script to the Clipboard.

    Genera script in nuova finestra QueryScript to New Query Window
    Genera lo script in una nuova finestra dell'editor di query.Generates the script to a new Query Editor window. Si tratta della selezione predefinita.This is the default selection.

    Se si seleziona Pianifica, fare clic su Cambia pianificazione.If you select Schedule, click Change schedule.

    1. Nella casella Nome della finestra di dialogo Nuova pianificazione processo immettere il nome della pianificazione del processo.In the New Job Schedule dialog box, in the Name box, enter the job schedule’s name.

    2. Nell'elenco Tipo pianificazione selezionare il tipo di pianificazione:On the Schedule type list, select the type of schedule:

      • Avvia automaticamente all'avvio di SQL Server AgentStart automatically when SQL Server Agent starts

      • Avvia quando la CPU risulta inattivaStart whenever the CPUs become idle

      • Periodica.Recurring. Selezionare questa opzione se la nuova tabella partizionata viene aggiornata regolarmente con nuove informazioni.Select this option if your new partitioned table updates with new information on a regular basis.

      • Singola occorrenza.One time. Si tratta della selezione predefinita.This is the default selection.

    3. Selezionare o deselezionare la casella di controllo Abilitata per abilitare o disabilitare la pianificazione.Select or clear the Enabled check box to enable or disable the schedule.

    4. Se si seleziona Periodica:If you select Recurring:

      1. In Frequenzanell'elenco Ricorrenza specificare la frequenza di occorrenza:Under Frequency, on the Occurs list, specify the frequency of occurrence:

        • Se si seleziona Giornaliera, nella casella Ogni immettere la frequenza in base alla quale si ripete la pianificazione del processo nei giorni.If you select Daily, in the Recurs every box, enter how often the job schedule repeats in days.

        • Se si seleziona Settimanale, nella casella Ogni immettere la frequenza in base alla quale si ripete la pianificazione del processo nelle settimane.If you select Weekly, in the Recurs every box, enter how often the job schedule repeats in weeks. Selezionare i giorni della settimana durante i quali viene eseguita la pianificazione del processo.Select the day or days of the week on which the job schedule is run.

        • Se si seleziona Mensile, selezionare Giorno oppure Ogni.If you select Monthly, select either Day or The.

          • Se si seleziona Giorno, immettere sia la data del mese in cui si desidera sia eseguita la pianificazione del processo sia la frequenza in base alla quale si ripete questa pianificazione nei mesi.If you select Day, enter both the date of the month you want the job schedule to run and how often the job schedule repeats in months. Ad esempio, se si desidera che la pianificazione del processo venga eseguita il giorno 15 del mese e a mesi alterni, selezionare Giorno e immettere "15" nella prima casella e "2" nella seconda casella.For example, if you want the job schedule to run on the 15th day of the month every other month, select Day and enter “15” in the first box and “2” in the second box. Si noti che il numero più grande consentito nella seconda casella è "99".Please note that the largest number allowed in the second box is “99”.

          • Se si sceglie Ogni, selezionare il giorno specifico della settimana del mese in cui si desidera sia eseguita la pianificazione del processo e la frequenza in base alla quale si ripete questa pianificazione nei mesi.If you select The, select the specific day of the week within the month that you want the job schedule to run and how often the job schedule repeats in months. Ad esempio, se si desidera che la pianificazione del processo sia eseguita l'ultimo giorno feriale del mese e a mesi alterni, selezionare Giorno, ultimo nel primo elenco e giorno feriale nel secondo elenco, quindi immettere "2" nell'ultima casella.For example, if you want the job schedule to run on the last weekday of the month every other month, select Day, select last from the first list and weekday from the second list, and then enter “2” in the last box. Nei primi due elenchi è anche possibile selezionare primo, secondo, terzoo quarto, nonché i giorni della settimana specifici, ad esempio domenica o mercoledì.You can also select first, second, third, or fourth, as well as specific weekdays (for example: Sunday or Wednesday) from the first two lists. Si noti che il numero più grande consentito nell'ultima casella è "99".Please note that the largest number allowed in the last box is “99”.

      2. In Frequenza giornalieraspecificare la frequenza in base alla quale si ripete la pianificazione del processo in quel determinato giorno:Under Daily frequency, specify how often the job schedule repeats on the day the job schedule runs:

        • Se si seleziona Una sola volta alle, immettere l'ora specifica del giorno in cui deve essere eseguita la pianificazione del processo nella casella Una sola volta alle .If you select Occurs once at, enter the specific time of day when the job schedule should run in the Occurs once at box. Immettere l'ora, il minuto e il secondo del giorno, nonché AM o PM.Enter the hour, minute, and second of the day, as well as AM or PM.

        • Se si seleziona Ognispecificare la frequenza in base alla quale la pianificazione del processo viene eseguita durante il giorno scelto in Frequenza.If you select Occurs every, specify how often the job schedule runs during the day chosen under Frequency. Ad esempio, se si vuole che la pianificazione del processo sia ripetuta ogni 2 ore durante il giorno scelto per questa pianificazione, selezionare Ogni, immettere "2" nella prima casella, quindi selezionare ora/e nell'elenco.For example, if you want the job schedule to repeat every 2 hours during the day that the job schedule is run, select Occurs every, enter “2” in the first box, and then select hour(s) from the list. In questo elenco è anche possibile selezionare minuto/i e secondo/i.From this list you can also select minute(s) and second(s). Si noti che il numero più grande consentito nella prima casella è "100".Please note that the largest number allowed in the first box is “100”.

          Nella casella A partire dalle immettere l'ora in cui dovrebbe iniziare l'esecuzione della pianificazione del processo.In the Starting at box, enter the time that the job schedule should start running. Nella casella Fino alle immettere l'ora in cui dovrebbe terminare la ripetizione della pianificazione del processo.In the Ending at box, enter the time that the job schedule should stop repeating. Immettere l'ora, il minuto e il secondo del giorno, nonché AM o PM.Enter the hour, minute, and second of the day, as well as AM or PM.

      3. In Duratadi Data inizioimmettere la data in cui si desidera sia avviata l'esecuzione della pianificazione del processo.Under Duration, in Start date, enter the date that you want the job schedule to start running. Selezionare Data fine o Nessuna data di fine per indicare quando dovrebbe terminare l'esecuzione della pianificazione del processo.Select End date or No end date to indicate when the job schedule should stop running. Se si seleziona Data fineimmettere la data in cui si desidera venga terminata l'esecuzione della pianificazione del processo.If you select End date, enter the date that you want to job schedule to stop running.

    5. Se si seleziona Singola occorrenza, in Singola occorrenza, nella casella Data immettere la data in cui verrà eseguita la pianificazione del processo.If you select One Time, under One-time occurrence, in the Date box, enter the date that the job schedule will be run. Nella casella Ora immettere l'ora in cui verrà eseguita la pianificazione del processo.In the Time box, enter the time that the job schedule will be run. Immettere l'ora, il minuto e il secondo del giorno, nonché AM o PM.Enter the hour, minute, and second of the day, as well as AM or PM.

    6. In Descrizionein Riepilogoverificare che tutte le impostazioni della pianificazione del processo siano corrette.Under Summary, in Description, verify that all job schedule settings are correct.

    7. Scegliere OK.Click OK.

      Dopo aver completato questa pagina, fare clic su Avanti.After completing this page, click Next.

  7. In Controlla selezioni della pagina Controlla riepilogoespandere tutte le opzioni disponibili per verificare che tutte le impostazioni di compressione siano corrette.On the Review Summary page, under Review your selections, expand all available options to verify that all compression settings are correct. Se tutte le impostazioni sono corrette, fare clic su Fine.If everything is as expected, click Finish.

  8. Nella pagina Stato Compressione guidata monitorare le informazioni sullo stato delle azioni della Creazione guidata partizione.On the Compression Wizard Progress page, monitor status information about the actions of the Create Partition Wizard. A seconda delle opzioni selezionate nella procedura guidata, la pagina di stato può contenere una o più azioni.Depending on the options that you selected in the wizard, the progress page might contain one or more actions. Nella casella superiore viene visualizzato lo stato complessivo della procedura guidata e viene indicato il numero di messaggi di stato, di errore e di avviso restituiti durante l'esecuzione della procedura guidata.The top box displays the overall status of the wizard and the number of status, error, and warning messages that the wizard has received.

    Nella pagina Stato Compressione guidata sono disponibili le opzioni seguenti:The following options are available on the Compression Wizard Progress page:

    DettagliDetails
    Consente di visualizzare i messaggi di azione, di stato e di altro tipo restituiti dall'azione eseguita nella procedura guidata.Provides the action, status, and any messages that are returned from action taken by the wizard.

    AzioneAction
    Specifica il tipo e il nome di ciascuna azione.Specifies the type and name of each action.

    StatoStatus
    Indica se l'intera azione della procedura guidata ha restituito il valore Esito positivo o Esito negativo.Indicates whether the wizard action as a whole returned the value of Success or Failure.

    MessageMessage
    Fornisce tutti i messaggi di errore o di avviso restituiti dal processo.Provides any error or warning messages that are returned from the process.

    ReportReport
    Crea un report contenente i risultati della Creazione guidata partizione.Creates a report that contains the results of the Create Partition Wizard. Le opzioni sono Visualizza report, Salva report su file, Copia report negli Appuntie Invia report per posta elettronica.The options are View Report, Save Report to File, Copy Report to Clipboard, and Send Report as Email.

    Visualizza reportView Report
    Apre la finestra di dialogo Visualizza report in cui è contenuto un report di testo dello stato della Creazione guidata partizione.Opens the View Report dialog box, which contains a text report of the progress of the Create Partition Wizard.

    Salva report su fileSave Report to File
    Apre la finestra di dialogo Salva report con nome .Opens the Save Report As dialog box.

    Copia report negli AppuntiCopy Report to Clipboard
    Copia i risultati del report dello stato della procedura guidata negli Appunti.Copies the results of the wizard’s progress report to the Clipboard.

    Invia report per posta elettronicaSend Report as Email
    Copia i risultati del report dello stato della procedura guidata in un messaggio di posta elettronica.Copies the results of the wizard’s progress report into an email message.

    Al termine, fare clic su Chiudi.When complete, click Close.

Utilizzo di Transact-SQLUsing Transact-SQL

Per abilitare la compressione in una tabellaTo enable compression on a table

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine.

  2. Sulla barra Standard fare clic su Nuova query.On 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. Nell'esempio viene prima eseguita la stored procedure sp_estimate_data_compression_savings per restituire la dimensione stimata dell'oggetto qualora venisse utilizzata l'impostazione di compressione ROW.The example first executes the stored procedure sp_estimate_data_compression_savings to return the estimated size of the object if it were to use the ROW compression setting. Nell'esempio viene quindi abilitata la compressione ROW in tutte le partizioni della tabella specificata.The example then enables ROW compression on all partitions in the specified table.

    USE AdventureWorks2012;  
    GO  
    EXEC sp_estimate_data_compression_savings 'Production', 'TransactionHistory', NULL, NULL, 'ROW' ;  
    
    ALTER TABLE Production.TransactionHistory REBUILD PARTITION = ALL  
    WITH (DATA_COMPRESSION = ROW);   
    GO  
    

Per abilitare la compressione in un indiceTo enable compression on an index

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine.

  2. Sulla barra Standard fare clic su Nuova query.On 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. Nell'esempio viene innanzitutto eseguita una query sulla vista del catalogo sys.indexes per restituire il nome e index_id per ogni indice nella tabella Production.TransactionHistory .The example first queries the sys.indexes catalog view to return the name and index_id for each index on the Production.TransactionHistory table. Viene quindi eseguita la stored procedure sp_estimate_data_compression_savings per restituire la dimensione stimata dell'ID indice specificato qualora venisse utilizzata l'impostazione di compressione PAGE.It then executes the the stored procedure sp_estimate_data_compression_savings to return the estimated size of the specified index ID if it were to use the PAGE compression setting. Viene infine ricompilato l'ID indice 2 (IX_TransactionHistory_ProductID), specificando la compressione PAGE.Finally, the example rebuilds index ID 2 (IX_TransactionHistory_ProductID), specifying PAGE compression.

    USE AdventureWorks2012;   
    GO  
    SELECT name, index_id  
    FROM sys.indexes  
    WHERE OBJECT_NAME (object_id) = N'TransactionHistory';  
    
    EXEC sp_estimate_data_compression_savings   
        @schema_name = 'Production',   
        @object_name = 'TransactionHistory',  
        @index_id = 2,   
        @partition_number = NULL,   
        @data_compression = 'PAGE' ;   
    
    ALTER INDEX IX_TransactionHistory_ProductID ON Production.TransactionHistory REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE);  
    GO  
    

    Per altre informazioni, vedere ALTER TABLE (Transact-SQL) e ALTER INDEX (Transact-SQL).For more information, see ALTER TABLE (Transact-SQL) and ALTER INDEX (Transact-SQL).

Vedere ancheSee Also

Compressione dei dati Data Compression
sp_estimate_data_compression_savings (Transact-SQL)sp_estimate_data_compression_savings (Transact-SQL)