ALTER DATABASE (Transact-SQL) - Sistema piattaforma di analisi (PDW)

Si applica a:Piattaforma di strumenti analitici (PDW)

Nel Analytics Platform System (PDW), ALTER DATABASE modifica le opzioni di dimensione massima del database per tabelle replicate, tabelle distribuite e il registro delle transazioni. Usare questa istruzione per gestire le allocazioni dello spazio su disco per un database man mano che le sue dimensioni aumentano o diminuiscono. Questo articolo descrive anche la sintassi correlata all'impostazione delle opzioni di database in Analytics Platform System (PDW).

Convenzioni relative alla sintassi Transact-SQL

Sintassi

-- Analytics Platform System
ALTER DATABASE database_name
    SET ( <set_database_options> | <db_encryption_option> )
[;]

<set_database_options> ::=
{
    AUTOGROW = { ON | OFF }
    | REPLICATED_SIZE = size [GB]
    | DISTRIBUTED_SIZE = size [GB]
    | LOG_SIZE = size [GB]
    | SET AUTO_CREATE_STATISTICS { ON | OFF }
    | SET AUTO_UPDATE_STATISTICS { ON | OFF }
    | SET AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}

<db_encryption_option> ::=
    ENCRYPTION { ON | OFF }

Arguments

database_name

Nome del database da modificare. Per visualizzare un elenco di database nell'appliance, usare sys.databases.

AUTOGROW = { ON | OFF }

Aggiorna l'opzione AUTOGROW. Quando l'opzione AUTOGROW è impostata su ON, la piattaforma di strumenti analitici (PDW) aumenta automaticamente lo spazio allocato per le tabelle replicate, le tabelle distribuite e il log delle transazioni, se necessario, per supportare l'aumento dei requisiti di archiviazione. Quando l'opzione AUTOGROW è impostata su OFF, la piattaforma di strumenti analitici (PDW) restituisce un errore se le tabelle replicate, le tabelle distribuite o il log delle transazioni supera l'impostazione delle dimensioni massime.

REPLICATED_SIZE = dimensioni [GB]

Specifica in gigabyte le nuove dimensioni massime per ogni nodo di calcolo per l'archiviazione di tutte le tabelle replicate nel database da modificare. Se si pianifica lo spazio di archiviazione dell'appliance, è necessario moltiplicare REPLICATED_SIZE per il numero di nodi di calcolo nell'appliance.

DISTRIBUTED_SIZE = dimensioni [GB]

Specifica in gigabyte le nuove dimensioni massime per ogni database per l'archiviazione di tutte le tabelle distribuite nel database da modificare. Le dimensioni vengono distribuite su tutti i nodi di calcolo nell'appliance.

LOG_SIZE = dimensioni [GB]

Specifica in gigabyte le nuove dimensioni massime per ogni database per l'archiviazione dei log delle transazioni nel database da modificare. Le dimensioni vengono distribuite su tutti i nodi di calcolo nell'appliance.

CRITTOGRAFIA { ON | OFF }

Imposta il database per l'utilizzo della crittografia (ON) o no (OFF). È possibile configurare la crittografica per la piattaforma di strumenti analitici (PDW) solo quando l'opzione sp_pdw_database_encryption è impostata su 1. Prima di configurare la tecnologia Transparent Data Encryption, è necessario creare una chiave di crittografia del database. Per altre informazioni sulla crittografia del database, vedere Transparent Data Encryption (TDE).

SET AUTO_CREATE_STATISTICS { ON | OFF }

Quando l'opzione di creazione automatica delle statistiche, AUTO_CREATE_STATISTICS, è ON, l'ottimizzatore delle query crea statistiche su singole colonne nel predicato di query, ove necessario, per migliorare le stime della cardinalità per il piano di query. Queste statistiche a colonna singola vengono create in colonne che non dispongono già di un istogramma in un oggetto statistiche esistente.

Il valore predefinito è ON per i nuovi database creati dopo l'aggiornamento ad AU7. Il valore predefinito è OFF per i database creati prima dell'aggiornamento.

Per altre informazioni sulle statistiche, vedere Statistiche

SET AUTO_UPDATE_STATISTICS { ON | OFF }

Quando l'opzione di aggiornamento automatico delle statistiche, AUTO_UPDATE_STATISTICS, è ON, Query Optimizer determina quando le statistiche potrebbero non essere aggiornate e quindi le aggiorna quando vengono usate da una query. Le statistiche diventano obsolete dopo l'inserimento, l'aggiornamento, l'eliminazione o l'unione della distribuzione dei dati nella tabella o nella vista indicizzata. Query Optimizer determina quando le statistiche potrebbero non essere aggiornate conteggiando il numero di modifiche ai dati dall'ultimo aggiornamento delle statistiche e confrontando il numero di modifiche a una soglia. La soglia si basa sul numero di righe nella tabella o nella vista indicizzata.

Il valore predefinito è ON per i nuovi database creati dopo l'aggiornamento ad AU7. Il valore predefinito è OFF per i database creati prima dell'aggiornamento.

Per altre informazioni sulle statistiche, vedere Statistiche.

SET AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }

L'opzione di aggiornamento asincrono delle statistiche, AUTO_UPDATE_STATISTICS_ASYNC, determina se Query Optimizer usa aggiornamenti sincroni o asincroni delle statistiche. L'opzione AUTO_UPDATE_STATISTICS_ASYNC si applica a oggetti statistiche creati per indici, colonne singole nei predicati di query e statistiche create con l'istruzione CREATE STATISTICS.

Il valore predefinito è ON per i nuovi database creati dopo l'aggiornamento ad AU7. Il valore predefinito è OFF per i database creati prima dell'aggiornamento.

Per altre informazioni sulle statistiche, vedere Statistiche.

Autorizzazioni

È richiesta l'autorizzazione ALTER per il database.

Messaggi di errore

Se le statistiche automatiche sono disabilitate e si tenta di modificare le impostazioni delle statistiche, PDW visualizza l'errore This option isn't supported in PDW. L'amministratore di sistema può abilitare le statistiche automatiche abilitando l'opzione AutoStatsEnabled della funzionalità.

Osservazioni:

I valori di REPLICATED_SIZE, DISTRIBUTED_SIZE e LOG_SIZE possono essere maggiori, uguali o minori dei valori correnti per il database.

Limitations

Le operazioni di incremento e riduzione sono approssimative. Le dimensioni effettive ottenute possono variare rispetto ai parametri delle dimensioni.

Analytics Platform System (PDW) non esegue l'istruzione ALTER DATABASE come operazione atomica. Se l'istruzione viene interrotta durante l'esecuzione, le modifiche già apportate vengono mantenute.

Le impostazioni delle statistiche funzionano solo se l'amministratore ha abilitato le statistiche automatiche. Se si è un amministratore, usare l'opzione di funzionalità AutoStatsEnabled per abilitare o disabilitare le statistiche automatiche.

Comportamento di blocco

Acquisisce un blocco condiviso per l'oggetto DATABASE. Non è possibile modificare un database in uso da un altro utente per la lettura o la scrittura. Sono incluse le sessioni che hanno rilasciato un'istruzione USE nel database.

Performance

Per compattare un database possono essere necessari molto tempo e numerose risorse di sistema, a seconda delle dimensioni dei dati effettivi all'interno del database e del livello di frammentazione del disco. Ad esempio, la compattazione di un database può richiedere fino a diverse ore di lavoro.

Determinare lo stato di avanzamento della crittografia

Usare la query seguente per determinare lo stato di avanzamento della tecnologia Transparent Data Encryption sotto forma di percentuale:

WITH
database_dek AS (
    SELECT ISNULL(db_map.database_id, dek.database_id) AS database_id,
        dek.encryption_state, dek.percent_complete,
        dek.key_algorithm, dek.key_length, dek.encryptor_thumbprint,
        type
    FROM sys.dm_pdw_nodes_database_encryption_keys AS dek
    INNER JOIN sys.pdw_nodes_pdw_physical_databases AS node_db_map
        ON dek.database_id = node_db_map.database_id
        AND dek.pdw_node_id = node_db_map.pdw_node_id
    LEFT JOIN sys.pdw_database_mappings AS db_map
        ON node_db_map .physical_name = db_map.physical_name
    INNER JOIN sys.dm_pdw_nodes nodes
        ON nodes.pdw_node_id = dek.pdw_node_id
    WHERE dek.encryptor_thumbprint <> 0x
),
dek_percent_complete AS (
    SELECT database_dek.database_id, AVG(database_dek.percent_complete) AS percent_complete
    FROM database_dek
    WHERE type = 'COMPUTE'
    GROUP BY database_dek.database_id
)
SELECT DB_NAME( database_dek.database_id ) AS name,
    database_dek.database_id,
    ISNULL(
       (SELECT TOP 1 dek_encryption_state.encryption_state
        FROM database_dek AS dek_encryption_state
        WHERE dek_encryption_state.database_id = database_dek.database_id
        ORDER BY (CASE encryption_state
            WHEN 3 THEN -1
            ELSE encryption_state
            END) DESC), 0)
        AS encryption_state,
dek_percent_complete.percent_complete,
database_dek.key_algorithm, database_dek.key_length, database_dek.encryptor_thumbprint
FROM database_dek
INNER JOIN dek_percent_complete
    ON dek_percent_complete.database_id = database_dek.database_id
WHERE type = 'CONTROL';

Per un esempio completo che illustra tutti i passaggi dell'implementazione di TDE, vedere Transparent Data Encryption (TDE).

Esempi: Piattaforma di strumenti analitici (PDW)

A. Modificare l'impostazione AUTOGROW

Impostare l'opzione AUTOGROW su ON per il database CustomerSales.

ALTER DATABASE CustomerSales
    SET ( AUTOGROW = ON );

B. Modificare lo spazio di archiviazione massimo per le tabelle replicate

Nell'esempio seguente il limite di archiviazione delle tabelle replicate viene impostato su 1 GB per il database CustomerSales. È il limite di archiviazione per ogni nodo di calcolo.

ALTER DATABASE CustomerSales
    SET ( REPLICATED_SIZE = 1 GB );

C. Modificare lo spazio di archiviazione massimo per le tabelle distribuite

Nell'esempio seguente il limite di archiviazione tabelle distribuite viene impostato su 1.000 GB (1 terabyte) per il database CustomerSales. È il limite di archiviazione combinato dell'appliance per tutti i nodi di calcolo, non il limite di archiviazione per ogni nodo di calcolo.

ALTER DATABASE CustomerSales
    SET ( DISTRIBUTED_SIZE = 1000 GB );

D. Modificare lo spazio di archiviazione massimo per il log delle transazioni

Nell'esempio seguente il database CustomerSales viene aggiornato affinché le dimensioni massime del log delle transazioni di SQL Server siano di 10 GB per l'appliance.

ALTER DATABASE CustomerSales
    SET ( LOG_SIZE = 10 GB );

E. Controllo dei valori correnti delle statistiche

La query seguente restituisce i valori correnti delle statistiche per tutti i database. Il valore 1 indica che la funzionalità è attivata e indica 0 che la funzionalità è disattivata.

SELECT [name],
    is_auto_create_stats_on,
    is_auto_update_stats_on,
    is_auto_update_stats_async_on
FROM sys.databases;

F. Abilitazione della creazione e dell'aggiornamento automatici delle statistiche per un database

Usare l'istruzione seguente per abilitare la creazione e l'aggiornamento automatici delle statistiche in modo asincrono per il database CustomerSales. L'istruzione crea e aggiorna le statistiche di colonna singola necessarie per creare piani di query di qualità elevata.

ALTER DATABASE CustomerSales
    SET AUTO_CREATE_STATISTICS ON;
ALTER DATABASE CustomerSales
    SET AUTO_UPDATE_STATISTICS ON;
ALTER DATABASE
    SET AUTO_UPDATE_STATISTICS_ASYNC ON;