ALTER DATABASE (Transact-SQL)

Consente di modificare alcune opzioni di configurazione di un database.

Questo articolo fornisce la sintassi, gli argomenti, la sezione Osservazioni, le autorizzazioni ed esempi per qualsiasi prodotto SQL scelto.

Per altre informazioni sulle convenzioni della sintassi, vedere Convenzioni della sintassi Transact-SQL.

Selezionare un prodotto

Nella riga seguente selezionare il nome del prodotto a cui si è interessati. Verranno visualizzate solo le informazioni per tale prodotto.

* SQL Server *  

 

Panoramica: SQL Server

In SQL Server, questa istruzione consente di modificare un database oppure i file e i filegroup associati al database. ALTER DATABA edizione Standard aggiunge o rimuove file e filegroup da un database, modifica gli attributi di un database o dei relativi file e filegroup, modifica le regole di confronto del database e imposta le opzioni di database. Non è possibile modificare snapshot di database. Per la modifica delle opzioni di database associate alla replica, usare sp_replicationdboption.

A causa della lunghezza, la sintassi di ALTER DATABASE è separata in più articoli.

Articolo Descrizione
ALTER DATABASE L'articolo corrente fornisce la sintassi e le informazioni correlate per la modifica del nome e delle regole di confronto di un database.
Opzioni file e filegroup ALTER DATABASE Fornisce la sintassi e le informazioni correlate per l'aggiunta e la rimozione di file e filegroup da un database e per la modifica degli attributi di file e filegroup.
Opzioni ALTER DATABASE SET Fornisce la sintassi e le informazioni correlate per la modifica degli attributi di un database utilizzando le opzioni SET di ALTER DATABASE.
Mirroring del database ALTER DATABASE Include la sintassi e le informazioni correlate per le opzioni SET di ALTER DATABASE relative al mirroring del database.
ALTER DATABASE SET HADR Fornisce la sintassi e le informazioni correlate per le opzioni dei gruppi di disponibilità Always On di ALTER DATABASE per la configurazione di un database secondario in una replica secondaria di un gruppo di disponibilità Always On.
Livello di compatibilità ALTER DATABASE Include la sintassi e le informazioni correlate per le opzioni SET di ALTER DATABASE relative ai livelli di compatibilità del database.
ALTER DATABASE SCOPED CONFIGURATION Fornisce la sintassi per le configurazioni con ambito database usate per impostazioni a livello di database singolo, come i comportamenti correlati all'ottimizzazione query e all'esecuzione di query.

Sintassi

-- SQL Server Syntax
ALTER DATABASE { database_name | CURRENT }
{
    MODIFY NAME = new_database_name
  | COLLATE collation_name
  | <file_and_filegroup_options>
  | SET <option_spec> [ ,...n ] [ WITH <termination> ]
}
[;]

<file_and_filegroup_options>::=
  <add_or_modify_files>::=
  <filespec>::=
  <add_or_modify_filegroups>::=
  <filegroup_updatability_option>::=

<option_spec>::=
{
  | <auto_option>
  | <change_tracking_option>
  | <cursor_option>
  | <database_mirroring_option>
  | <date_correlation_optimization_option>
  | <db_encryption_option>
  | <db_state_option>
  | <db_update_option>
  | <db_user_access_option>
  | <delayed_durability_option>
  | <external_access_option>
  | <FILESTREAM_options>
  | <HADR_options>
  | <parameterization_option>
  | <query_store_options>
  | <recovery_option>
  | <service_broker_option>
  | <snapshot_option>
  | <sql_option>
  | <termination>
  | <temporal_history_retention>
  | <data_retention_policy>
  | <compatibility_level>
      { 150 | 140 | 130 | 120 | 110 | 100 | 90 }
}

Argomenti

database_name

Nome del database da modificare.

Nota

Questa opzione non è disponibile in un database indipendente.

CURRENT
Si applica a: SQL Server 2012 (11.x) e versioni successive.

Specifica che il database corrente in uso deve essere modificato.

MODIFY NAME = new_database_name

Rinomina il database con il nome specificato come new_database_name.

COLLATE collation_name

Specifica le regole di confronto per il database. In collation_name è possibile usare nomi di regole di confronto di Windows o SQL. Se omesso, al database vengono assegnate le regole di confronto dell'istanza di SQL Server.

Nota

Le regole di confronto non possono essere cambiate dopo la creazione del database in Database SQL di Azure.

Quando si creano database con regole di confronto diverse da quelle predefinite, i dati nel database rispettano sempre le regole di confronto specificate. Per SQL Server, quando si crea un database indipendente, le informazioni del catalogo interno vengono mantenute usando le regole di confronto predefinite di SQL Server, ovvero Latin1_General_100_CI_AS_WS_KS_SC.

Per altre informazioni sui nomi di regole di confronto Windows e SQL, vedere COLLATE.

<> delayed_durability_option ::=

Si applica a: SQL Server 2014 (12.x) e versioni successive.

Per altre informazioni, vedere Opzioni di ALTER DATABASE SET e Controllo della durabilità delle transazioni.

<>file_and_filegroup_options::=

Per altre informazioni, vedere Opzioni per file e filegroup ALTER DATABASE.

Osservazioni:

Per rimuovere un database usare DROP DATABASE.

Per ridurre le dimensioni di un database, usare DBCC SHRINKDATABASE.

L'istruzione ALTER DATABASE deve essere eseguita in modalità autocommit, che è la modalità predefinita di gestione delle transazioni, e non è consentita in una transazione esplicita o implicita.

Lo stato di un file di database, ad esempio online o offline, viene mantenuto indipendentemente dallo stato del database. Per altre informazioni, vedere Stati del file. Lo stato dei file all'interno di un filegroup determina la disponibilità dell'intero filegroup. Un filegroup è disponibile se tutti i file in esso inclusi sono online. Se un filegroup è offline, qualsiasi tentativo di accesso al filegroup tramite un'istruzione SQL avrà esito negativo e verrà generato un errore. Per la compilazione di piani delle query per istruzioni SELECT, Query Optimizer evita gli indici non cluster e le viste indicizzate presenti in filegroup offline. Ciò consente la corretta esecuzione di tali istruzioni. Se tuttavia il filegroup offline contiene l'indice cluster o heap della tabella di destinazione, l'istruzione SELECT avrà esito negativo, così come tutte le istruzioni INSERT, UPDATE o DELETE che implicano la modifica di una tabella tramite un indice incluso in un filegroup offline.

Quando un database è nello stato RESTORING, la maggior parte delle istruzioni ALTER DATABASE avrà esito negativo. Un'alternativa consiste nell'impostare le opzioni di mirroring del database. Lo stato RESTORING può essere impostato durante un'operazione di ripristino attiva o quando un'operazione di ripristino di un database o di un file di log ha esito negativo a causa di un file di backup danneggiato.

La cache dei piani per l'istanza di SQL Server viene cancellata quando si imposta una delle opzioni seguenti.

  • COLLATE
  • MODIFY FILEGROUP DEFAULT
  • MODIFY FILEGROUP READ_ONLY
  • MODIFY FILEGROUP READ_WRITE
  • MODIFY_NAME
  • OFFLINE
  • ONLINE
  • PAGE_VERIFY
  • READ_ONLY
  • READ_WRITE

La cancellazione della cache dei piani comporta la ricompilazione di tutti i piani di esecuzione successivi e può causare un peggioramento improvviso e temporaneo delle prestazioni di esecuzione delle query. Per ogni archivio cache cancellato nella cache dei piani, il log degli errori di SQL Server contiene il messaggio informativo seguente: SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations. Questo messaggio viene registrato ogni cinque minuti per tutta la durata dello scaricamento della cache.

La cache dei piani viene inoltre scaricata negli scenari seguenti:

  • L'opzione AUTO_CLOSE di un database è impostata su ON. Se il database non viene utilizzato da alcuna connessione utente, neanche come riferimento, tramite l'attività in background viene effettuato il tentativo di chiusura e di arresto automatici del database.
  • Vengono eseguite diverse query su un database contenente opzioni predefinite. Successivamente, il database viene eliminato.
  • Viene eliminato uno snapshot del database per un database di origine.
  • Viene ricompilato correttamente il log delle transazioni per un database.
  • Viene ripristinato un backup del database.
  • Viene scollegato un database.

Modificare le regole di confronto del database

Prima di applicare regole di confronto diverse a un database, verificare che siano soddisfatte le condizioni seguenti:

  • Nessun altro utente sta utilizzando il database.
  • Nessun oggetto associato a schema dipende dalle regole di confronto del database.

Se gli oggetti seguenti, che dipendono dalle regole di confronto del database, esistono nel database, l'istruzione ALTER DATABASE database_name COLLATE avrà esito negativo. SQL Server restituirà un messaggio di errore per ogni oggetto che blocca l'azione ALTER:

  • Funzioni definite dall'utente e viste create con SCHEMABINDING
  • Colonne calcolate
  • vincoli CHECK
  • Funzioni con valori di tabella che restituiscono tabelle contenenti colonne di tipo carattere con regole di confronto ereditate dalle regole di confronto predefinite del database

Le informazioni sulle dipendenze per le entità non associate a schemi vengono aggiornate automaticamente quando vengono modificate le regole di confronto del database.

La modifica delle regole di confronto del database non comporta la creazione di duplicati per i nomi di sistema degli oggetti di database. Se la modifica delle regole di confronto genera nomi duplicati, gli spazi dei nomi seguenti potrebbero impedire tale modifica:

  • Nomi di oggetti, come stored procedure, tabelle, trigger o viste
  • Nomi schema
  • Entità, come gruppi, ruoli o utenti
  • Nomi di tipi di dati scalari, come i tipi di dati di sistema e definiti dall'utente
  • Nomi di cataloghi full-text
  • Nomi di colonne o parametri in un oggetto
  • Nomi di indici in una tabella

Se vengono generati nomi duplicati in seguito all'applicazione delle nuove regole di confronto, l'azione di modifica avrà esito negativo e in SQL Server verrà visualizzato un messaggio di errore che indica lo spazio dei nomi in cui è stato identificato il duplicato.

Visualizzare le informazioni sul database

Per restituire informazioni su database, file e filegroup, è possibile usare viste del catalogo, funzioni di sistema e stored procedure di sistema.

Autorizzazioni

È richiesta l'autorizzazione ALTER per il database.

Esempi

R. Modificare il nome di un database

Nell'esempio seguente il nome del database AdventureWorks2022 viene modificato in Northwind.

USE master;
GO
ALTER DATABASE AdventureWorks2022
Modify Name = Northwind ;
GO

B. Modificare le regole di confronto di un database

L'esempio seguente crea un database denominato testdb con le SQL_Latin1_General_CP1_CI_AS regole di confronto e quindi modifica le regole di confronto del testdb database in COLLATE French_CI_AI.

Si applica a: SQL Server 2008 (10.0.x) e versioni successive.

USE master;
GO

CREATE DATABASE testdb
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO

ALTER DATABASE testDB
COLLATE French_CI_AI ;
GO

Passaggi successivi

* Database SQL *  

 

Panoramica: database SQL

Nel database SQL di Azure usare questa istruzione per modificare un database. Usare questa istruzione per modificare il nome di un database, modificare l'obiettivo di servizio e l'edizione del database, creare un join con o rimuovere il database da un pool elastico, impostare le opzioni di database, aggiungere o rimuovere il database come database secondario in una relazione di replica geografica e impostare il livello di compatibilità del database.

A causa della lunghezza, la sintassi di ALTER DATABASE è separata in più articoli.

ALTER DATABASE
L'articolo corrente fornisce la sintassi e le informazioni correlate per modificare il nome e altre impostazioni di un database.

Opzioni ALTER DATABASE SET
Fornisce la sintassi e le informazioni correlate per la modifica degli attributi di un database utilizzando le opzioni SET di ALTER DATABASE.

Livello di compatibilità ALTER DATABASE
Include la sintassi e le informazioni correlate per le opzioni SET di ALTER DATABASE relative ai livelli di compatibilità del database.

Sintassi

-- Azure SQL Database Syntax
ALTER DATABASE { database_name | CURRENT }
{
    MODIFY NAME = new_database_name
  | MODIFY ( <edition_options> [, ... n] )
  | MODIFY BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' }
  | SET { <option_spec> [ ,... n ] WITH <termination>}
  | ADD SECONDARY ON SERVER <partner_server_name>
    [WITH ( <add-secondary-option>::=[, ... n] ) ]
  | REMOVE SECONDARY ON SERVER <partner_server_name>
  | FAILOVER
  | FORCE_FAILOVER_ALLOW_DATA_LOSS
}
[;]

<edition_options> ::=
{

  MAXSIZE = { 100 MB | 250 MB | 500 MB | 1 ... 1024 ... 4096 GB }
  | EDITION = { 'Basic' | 'Standard' | 'Premium' | 'GeneralPurpose' | 'BusinessCritical' | 'Hyperscale'}
  | SERVICE_OBJECTIVE =
       { <service-objective>
       | { ELASTIC_POOL (name = <elastic_pool_name>) }
       }
}

<add-secondary-option> ::=
   {
      ALLOW_CONNECTIONS = { ALL | NO }
     | BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' }
     | SERVICE_OBJECTIVE =
       { <service-objective>
       | { ELASTIC_POOL ( name = <elastic_pool_name>) }
       | DATABASE_NAME = <target_database_name>
       | SECONDARY_TYPE = { GEO | NAMED }
       }
   }

<service-objective> ::={ 'Basic' |'S0' | 'S1' | 'S2' | 'S3'| 'S4'| 'S6'| 'S7'| 'S9'| 'S12'
      | 'P1' | 'P2' | 'P4'| 'P6' | 'P11' | 'P15'
      | 'BC_DC_n'
      | 'BC_Gen5_n' 
      | 'BC_M_n' 
      | 'GP_DC_n'
      | 'GP_Fsv2_n' 
      | 'GP_Gen5_n' 
      | 'GP_S_Gen5_n' 
      | 'HS_DC_n'
      | 'HS_Gen5_n'
      | 'HS_MOPRMS_n' 
      | 'HS_PRMS_n' 
      | { ELASTIC_POOL(name = <elastic_pool_name>) }
      }

<option_spec> ::=
{
    <auto_option>
  | <change_tracking_option>
  | <cursor_option>
  | <db_encryption_option>
  | <db_update_option>
  | <db_user_access_option>
  | <delayed_durability_option>
  | <parameterization_option>
  | <query_store_options>
  | <snapshot_option>
  | <sql_option>
  | <target_recovery_time_option>
  | <termination>
  | <temporal_history_retention>
  | <compatibility_level>
    { 150 | 140 | 130 | 120 | 110 | 100 | 90 }

}

Argomenti

database_name

Nome del database da modificare.

CURRENT
Specifica che il database corrente in uso deve essere modificato.

MODIFY NAME = new_database_name

Rinomina il database con il nome specificato come new_database_name. Nell'esempio seguente il nome di un database db1 viene modificato in db2:

ALTER DATABASE db1
    MODIFY Name = db2 ;

MODIFY (EDITION = ['Basic' | 'Standard' | 'Premium' |' GeneralPurpose' | 'BusinessCritical' | 'Hyperscale'])

Modifica il livello di servizio del database.

Nell'esempio seguente l'edizione viene modificata in Premium:

ALTER DATABASE current
    MODIFY (EDITION = 'Premium');

Importante

La modifica di EDITION ha esito negativo se la proprietà MAXSIZE per il database è impostata su un valore non compreso nell'intervallo valido supportato da questa edizione.

MODIFY (BACKUP_STORAGE_REDUNDANCY = ['LOCAL' | 'ZONE' | 'GEO'])

Modifica la ridondanza di archiviazione dei backup per il ripristino temporizzato e dei backup con conservazione a lungo termine (se configurati) del database. Le modifiche vengono applicate a tutti i backup futuri eseguiti. I backup esistenti continuano a usare l'impostazione precedente.

Per applicare la residenza dei dati quando si crea un database usando T-SQL, usare LOCAL o ZONE come input per il parametro BACKUP_STORAGE_REDUNDANCY.

MODIFY (MAXSIZE = [100 MB | 500 MB | 1 | 1024...4096] GB)

Specifica le dimensioni massime del database. Le dimensioni massime devono essere conformi al set valido di valori per la proprietà EDITION del database. La modifica delle dimensioni massime del database può causare la modifica del valore di EDITION del database.

Nota

L'argomento MAXSIZE non è applicabile ai singoli database nel livello di servizio Hyperscale. I database del livello di servizio Hyperscale crescono in base alle necessità, fino a 100 TB. Il servizio database SQL aggiunge automaticamente l'archiviazione: non è necessaria impostare le dimensioni massime.

Modello DTU

MAXSIZE Base S0-S2 S3-S12 P1-P6 P11-P15
100 MB
250 MB
500 MB
1 GB
2 GB √ (P)
5 GB N/D
10 GB N/D
20 GB N/D
30 GB N/D
40 GB N/D
50 GB N/D
100 GB N/D
150 GB N/D
200 GB N/D
250 GB N/D √ (P) √ (P)
300 GB N/D
400 GB N/D
500 GB N/D √ (P)
750 GB N/D
1024 GB N/D √ (P)
Da 1024 GB fino a 4096 GB con incrementi di 256 GB* N/D N/D N/D N/D

* P11 e P15 consentono un valore massimo di MAXSIZE pari a 4 TB. Le dimensioni predefinite sono 1024 GB. P11 e P15 possono usare fino a 4 TB di spazio di archiviazione incluso senza addebiti aggiuntivi. Nel livello Premium, MAXSIZE maggiore di 1 TB è attualmente disponibile nelle seguenti aree: Stati Uniti orientali 2, Stati Uniti occidentali, US Gov Virginia, Europa occidentale, Germania centrale, Asia sud-orientale, Giappone orientale, Australia orientale, Canada centrale e Canada orientale. Per altri dettagli relativi ai limiti delle risorse per il modello DTU, vedere Limiti delle risorse DTU.

Il valore MAXSIZE per il modello DTU, se specificato, deve essere un valore valido presente nella tabella precedente per il livello di servizio.

Per limiti come le dimensioni massime dei dati e tempdb le dimensioni nel modello di acquisto vCore, vedere gli articoli relativi ai limiti delle risorse per i database singoli o i limiti delle risorse per i pool elastici.

Se non viene impostato alcun valore MAXSIZE quando si usa il modello vCore, il valore predefinito è 32 GB. Per altri dettagli relativi ai limiti delle risorse per il modello vCore, vedere Limiti delle risorse vCore.

Le seguenti regole vengono applicate agli argomenti MAXSIZE ed EDITION:

  • Se il valore di EDITION è specificato e il valore di MAXSIZE viene omesso, viene utilizzato il valore predefinito dell'edizione. Ad esempio, se EDITION è impostato su Standard e MAXSIZE non è specificato, il valore di MAXSIZE viene automaticamente impostato su 250 MB.
  • Se non vengono specificati né MAXSIZE né EDITION, EDITION viene impostato su Utilizzo generico e MAXSIZE viene impostato su 32 GB.

MODIFY (SERVICE_OBJECTIVE = <service-objective>)

Specifica le dimensioni di calcolo e l'obiettivo di servizio.

SERVICE_OBJECTIVE

Specifica le dimensioni di calcolo( note anche come obiettivo del livello di servizio o SLO).

  • Per il modello di acquisto DTU: S0, S1S2, S3, , S7S6P2S12S9S4P4P6P1, . P15P11 Per trovare il numero di DTU assegnato a ogni dimensione di calcolo, vedere i limiti delle risorse per i database singoli o i limiti delle risorse per i pool elastici DTU.
  • Per il modello di acquisto vCore scegliere il livello e specificare il numero di vCore da un elenco predefinito di valori, dove il numero di vCore è n. Vedere i limiti delle risorse per i database singoli vCore o i limiti delle risorse per i pool elastici vCore.
    • Ad esempio:
    • GP_Gen5_8 per il calcolo della serie Standard per utilizzo generico (Gen5), 8 vCore.
    • GP_S_Gen5_8 per il calcolo Serie Standard serverless per utilizzo generico (Gen5), 8 vCore.
    • HS_Gen5_8 per Hyperscale - calcolo con provisioning - serie standard (Gen5), 8 vCore.

Ad esempio, l'esempio seguente modifica l'obiettivo di servizio di un database di livello Premium nel modello di acquisto DTU in P6:

ALTER DATABASE <database_name>
    MODIFY (SERVICE_OBJECTIVE = 'P6');

Ad esempio, l'esempio seguente modifica l'obiettivo di servizio di un database di calcolo con provisioning nel modello di acquisto vCore in GP_Gen5_8:

ALTER DATABASE <database_name>
    MODIFY (SERVICE_OBJECTIVE = 'GP_Gen5_8');

Database_Name

Solo per database SQL di Azure Hyperscale. Il nome del database che verrà creato. Usato solo dalle repliche denominate di Database SQL di Azure - Hyperscale, quando SECONDARY_TYPE = NAMED. Per altre informazioni, vedere Repliche secondarie di Hyperscale.

edizione StandardCONDARY_TYPE

Solo per database SQL di Azure Hyperscale. GEO specifica una replica geografica, NAMED specifica una replica denominata. L'impostazione predefinita è GEO. Per altre informazioni, vedere Repliche secondarie di Hyperscale.

Per le descrizioni degli obiettivi di servizio e altre informazioni su dimensioni, edizioni e combinazioni di obiettivi di servizio, vedere Azure SQL Database Service Tiers and Performance Levels (Livelli di servizio e livelli di prestazioni del database SQL di Azure), DTU resource limits (Limiti delle risorse DTU) e vCore resource limits (Limiti delle risorse vCore). Il supporto per gli obiettivi di servizio PRS è stato rimosso.

Se non si specifica SERVICE_OBJECTIVE, il database secondario viene creato allo stesso livello di servizio del database primario. Se si specifica SERVICE_OBJECTIVE, il database secondario viene creato al livello specificato. Il valore SERVICE_OBJECTIVE specificato deve rientrare nella stessa edizione dell'origine. Ad esempio, non è possibile specificare S0 se l'edizione è Premium.

MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL (nome = <elastic_pool_name>)

Per aggiungere un database esistente a un pool elastico, impostare SERVICE_OBJECTIVE del database su ELASTIC_POOL e specificare il nome del pool elastico. È anche possibile usare questa opzione per modificare il database in un pool elastico all'interno dello stesso server. Per altre informazioni, vedere Creare e gestire un pool elastico in un database SQL. Per rimuovere un database da un pool elastico, usare ALTER DATABASE per impostare SERVICE_OBJECTIVE nelle dimensioni di calcolo di un database singolo (obiettivo di servizio).

Nota

I database con livello di servizio Hyperscale non possono essere aggiunti a un pool elastico.

ADD SECONDARY ON SERVER <partner_server_name>

Crea un database secondario con replica geografica usando lo stesso nome in un server partner e trasformando il database locale in un database primario con replica geografica, quindi avvia la replica asincrona dei dati dal database primario nel nuovo database secondario. Se esiste già un database con lo stesso nome nel database secondario, il comando non riesce. Il comando viene eseguito nel database master sul server che ospita il database locale, il quale diventa il database primario.

Importante

Per impostazione predefinita, il database secondario viene creato con la stessa ridondanza dell'archivio di backup del database primario o di origine. La modifica della ridondanza dell'archivio di backup durante la creazione del database secondario non è supportata tramite T-SQL.

WITH ALLOW_CONNECTIONS { ALL | NO }

Se non si specifica ALLOW_CONNECTION, il valore ALL viene impostato per impostazione predefinita. Se viene impostato ALL, il database è di sola lettura e consente a tutti gli account che hanno le autorizzazioni necessarie di connettersi.

ELASTIC_POOL (name = <elastic_pool_name>)

Se non si specifica ELASTIC_POOL, il database secondario non viene creato in un pool elastico. Se si specifica ELASTIC_POOL, il database secondario viene creato nel pool specificato.

Importante

Chi esegue il comando ADD SECONDARY deve avere il ruolo DBManager nel server primario, db_owner membership nel database locale e DBManager nel server secondario. È necessario aggiungere l'indirizzo IP client all'elenco degli indirizzi consentiti nelle regole del firewall per i server primari e secondari. Nel caso di indirizzi IP client diversi, è necessario aggiungere al server secondario lo stesso indirizzo IP client che è stato aggiunto al server primario. Si tratta di un passaggio obbligatorio prima di eseguire il comando ADD SECONDARY per avviare la replica geografica.

REMOVE edizione Standard CONDARY ON edizione Standard RVER <partner_server_name>

Rimuove il database secondario con replica geografica nel server specificato. Il comando viene eseguito nel database master sul server che ospita il database primario.

Importante

L'utente che esegue il comando REMOVE SECONDARY deve avere il ruolo DBManager nel server primario.

FAILOVER

Alza di livello il database secondario nella relazione con replica geografica in cui il comando viene eseguito perché il database diventi primario e abbassa di livello il database corrente perché diventi il nuovo database secondario. Durante questo processo, la modalità di replica geografica passa temporaneamente dalla modalità asincrona alla modalità sincrona. Durante il processo di failover:

  1. Il database primario non accetta più nuove transazioni.
  2. Tutte le transazioni in sospeso vengono scaricate nel database secondario.
  3. Il database secondario diventa il database primario e la replica geografica asincrona viene avviata con il database primario precedente e il nuovo database secondario.

Questa sequenza impedisce la perdita di dati. I due database non sono disponibili generalmente per un periodo di tempo compreso tra 0 e 25 secondi, il tempo necessario per lo scambio dei ruoli. L'operazione totale non richiederà più di un minuto circa. Se il database primario non è disponibile quando viene eseguito questo comando, il comando ha esito negativo e genera un messaggio di errore indicando che il database primario non è disponibile. Se il processo di failover non viene completato e sembra bloccato, è possibile usare il comando per forzare il failover e accettare la perdita di dati. Se è necessario recuperare i dati persi, chiamare la metodologia DevOps (CSS).

Importante

Chi esegue il comando FAILOVER deve avere il ruolo DBManager sia nel server primario sia nel server secondario.

FORCE_FAILOVER_ALLOW_DATA_LOSS

Alza di livello il database secondario nella relazione con replica geografica in cui il comando viene eseguito perché il database diventi primario e abbassa di livello il database corrente perché diventi il nuovo database secondario. Usare questo comando solo quando il database primario corrente non è più disponibile. È progettato per essere usato solo in caso di ripristino di emergenza, quando la disponibilità di ripristino è critica e la perdita di dati è accettabile.

Durante un failover forzato:

  1. Il database secondario specificato diventa immediatamente il database primario e inizia ad accettare nuove transazioni.
  2. Quando il database primario originale si riconnette al nuovo database primario, viene eseguito un backup incrementale nel database primario originale e il database primario originale diventa un nuovo database secondario.
  3. Per ripristinare i dati da questo backup incrementale nel database primario precedente, è necessario usare la metodologia DevOps/CSS.
  4. Se esistono altri database secondari, vengono riconfigurati automaticamente per diventare i database secondari del nuovo database primario. Questo processo è asincrono. Fino al suo completamento, è possibile assistere a un ritardo. Quando la riconfigurazione è completa, i database secondari continuano a essere database secondari del database primario precedente.

Importante

L'utente che esegue il comando FORCE_FAILOVER_ALLOW_DATA_LOSS deve appartenere al ruolo dbmanager sia nel server primario sia nel server secondario.

Osservazioni:

Per rimuovere un database usare DROP DATABASE. Per ridurre le dimensioni di un database, usare DBCC SHRINKDATABASE.

L'istruzione ALTER DATABASE deve essere eseguita in modalità autocommit, che è la modalità predefinita di gestione delle transazioni, e non è consentita in una transazione esplicita o implicita.

La cancellazione della cache dei piani comporta la ricompilazione di tutti i piani di esecuzione successivi e può causare un peggioramento improvviso e temporaneo delle prestazioni di esecuzione delle query. Per ogni archivio cache cancellato nella cache dei piani, il log degli errori di SQL Server contiene il messaggio informativo seguente: SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations. Questo messaggio viene registrato ogni cinque minuti per tutta la durata dello scaricamento della cache.

La cache delle procedure viene scaricata anche nello scenario seguente: vengono eseguite diverse query su un database contenente opzioni predefinite. Successivamente, il database viene eliminato.

Visualizzare le informazioni sul database

Per restituire informazioni su database, file e filegroup, è possibile usare viste del catalogo, funzioni di sistema e stored procedure di sistema.

Autorizzazioni

Per modificare un database, un account di accesso deve essere l'account di accesso amministratore del server (creato al momento del provisioning del server logico database SQL di Azure), l'amministratore di Microsoft Entra del server, un membro del ruolo del database dbmanager in master, un membro del ruolo del database db_owner nel database corrente o dbo del database. Microsoft Entra ID (in precedenza Azure Active Directory).

Per dimensionare i database tramite T-SQL, sono necessarie le autorizzazioni ALTER DATABASE. Per dimensionare i database tramite il portale di Azure, PowerShell, l'interfaccia della riga di comando di Azure o l'API REST, sono necessarie le autorizzazioni di Controllo degli accessi in base al ruolo di Azure, in particolare i ruoli Controllo degli accessi in base al ruolo di Azure Collaboratore, Collaboratore Database SQL o Collaboratore SQL Server. Per altre informazioni, vedere Ruoli predefiniti di Controllo degli accessi in base al ruolo di Azure.

Esempi

R. Controllare le opzioni di edizione e cambiarle

Imposta un'edizione e una dimensione massima per il database db1:

SELECT Edition = DATABASEPROPERTYEX('db1', 'EDITION'),
        ServiceObjective = DATABASEPROPERTYEX('db1', 'ServiceObjective'),
        MaxSizeInBytes =  DATABASEPROPERTYEX('db1', 'MaxSizeInBytes');

ALTER DATABASE [db1] MODIFY (EDITION = 'Premium', MAXSIZE = 1024 GB, SERVICE_OBJECTIVE = 'P15');

B. Spostare un database in un pool elastico diverso

Sposta un database esistente in un pool denominato pool1:

ALTER DATABASE db1
MODIFY ( SERVICE_OBJECTIVE = ELASTIC_POOL ( name = pool1 ) ) ;

C. Aggiungere un database secondario con replica geografica

Crea un database db1 secondario leggibile nel server secondaryserver di db1 nel server locale.

ALTER DATABASE db1
ADD SECONDARY ON SERVER secondaryserver
WITH ( ALLOW_CONNECTIONS = ALL )

D. Rimuovere un database secondario con replica geografica

Rimuove il database db1 secondario nel server secondaryserver.

ALTER DATABASE db1
REMOVE SECONDARY ON SERVER testsecondaryserver

E. Eseguire il failover di un database secondario con replica geografica

Alza di livello un database db1 secondario nel server secondaryserver per diventare il nuovo database primario quando viene eseguito nel server secondaryserver.

ALTER DATABASE db1 FAILOVER

Nota

Per altre informazioni, vedere database SQL di Azure indicazioni sul ripristino di emergenza e l'elenco di controllo database SQL di Azure disponibilità elevata e ripristino di emergenza.

F. Forzare il failover su un database secondario con replica geografica con perdita di dati

Forza un database db1 secondario nel server secondaryserver a diventare il nuovo database primario quando viene eseguito nel server secondaryserver, nel caso in cui il server primario non sia disponibile. Questa opzione può determinare una perdita di dati.

ALTER DATABASE db1 FORCE_FAILOVER_ALLOW_DATA_LOSS

G. Aggiornare un singolo database al livello di servizio S0 (edizione Standard, livello di prestazioni 0)

Aggiorna un database singolo all'edizione Standard (livello di servizio) con dimensioni di calcolo (obiettivo di servizio) pari a S0 e una dimensione massima di 250 GB.

ALTER DATABASE [db1] MODIFY (EDITION = 'Standard', MAXSIZE = 250 GB, SERVICE_OBJECTIVE = 'S0');

H. Aggiornare la ridondanza dell'archivio di backup di un database

Aggiorna la ridondanza dell'archivio di backup di un database impostando la ridondanza della zona. Tutti i backup futuri di questo database useranno la nuova impostazione. Sono inclusi i backup per il ripristino temporizzato e i backup con conservazione a lungo termine (se configurati).

ALTER DATABASE db1 MODIFY BACKUP_STORAGE_REDUNDANCY = 'ZONE'

Passaggi successivi

* Istanza gestita di SQL *  

 

Panoramica: Istanza gestita di SQL di Azure

In Istanza gestita di SQL di Azure usare questa istruzione per impostare le opzioni di database.

A causa della lunghezza, la sintassi di ALTER DATABASE è separata in più articoli.

Articolo Descrizione
ALTER DATABASE
L'articolo corrente fornisce la sintassi e informazioni correlate per impostare le opzioni di file e filegroup, le opzioni di database e il livello di compatibilità del database.
Opzioni file e filegroup ALTER DATABASE
Fornisce la sintassi e le informazioni correlate per l'aggiunta e la rimozione di file e filegroup da un database e per la modifica degli attributi di file e filegroup.
Opzioni ALTER DATABASE SET
Fornisce la sintassi e le informazioni correlate per la modifica degli attributi di un database utilizzando le opzioni SET di ALTER DATABASE.
Livello di compatibilità ALTER DATABASE
Include la sintassi e le informazioni correlate per le opzioni SET di ALTER DATABASE relative ai livelli di compatibilità del database.

Sintassi

-- Azure SQL Managed Instance syntax  
ALTER DATABASE { database_name | CURRENT }  
{
    MODIFY NAME = new_database_name
  | COLLATE collation_name
  | <file_and_filegroup_options>  
  | SET <option_spec> [ ,...n ]  
}  
[;]

<file_and_filegroup_options>::=  
  <add_or_modify_files>::=  
  <filespec>::=
  <add_or_modify_filegroups>::=  
  <filegroup_updatability_option>::=  

<option_spec> ::=
{
    <auto_option>
  | <change_tracking_option>
  | <cursor_option>
  | <db_encryption_option>  
  | <db_update_option>
  | <db_user_access_option>
  | <delayed_durability_option>
  | <parameterization_option>
  | <query_store_options>
  | <snapshot_option>
  | <sql_option>
  | <target_recovery_time_option>
  | <temporal_history_retention>
  | <compatibility_level>
      { 150 | 140 | 130 | 120 | 110 | 100 | 90 }

}  

Argomenti

database_name

Nome del database da modificare.

CURRENT
Specifica che il database corrente in uso deve essere modificato.

Osservazioni:

  • Per rimuovere un database usare DROP DATABASE.

  • Per ridurre le dimensioni di un database, usare DBCC SHRINKDATABASE.

  • L'istruzione ALTER DATABASE deve essere eseguita in modalità autocommit, che è la modalità predefinita di gestione delle transazioni, e non è consentita in una transazione esplicita o implicita.

  • La cache dei piani per il Istanza gestita di SQL di Azure viene cancellata impostando una delle opzioni seguenti.

    • COLLATE
    • MODIFY FILEGROUP DEFAULT
    • MODIFY FILEGROUP READ_ONLY
    • MODIFY FILEGROUP READ_WRITE
    • MODIFY_NAME

    La cancellazione della cache dei piani comporta la ricompilazione di tutti i piani di esecuzione successivi e può causare un peggioramento improvviso e temporaneo delle prestazioni di esecuzione delle query. Per ogni archivio cache cancellato nella cache dei piani, il log degli errori di SQL Server contiene il messaggio informativo seguente: "SQL Server ha rilevato %d occorrenza/e di scaricamento dell'archivio cache '%s' (parte della cache dei piani) a causa di operazioni di manutenzione o riconfigurazione del database". Questo messaggio viene registrato ogni cinque minuti per tutta la durata dello scaricamento della cache. La cache dei piani viene scaricata anche quando vengono eseguite diverse query in un database con le opzioni predefinite. Successivamente, il database viene eliminato.

  • Alcune istruzioni ALTER DATABASE richiedono l'esecuzione di un blocco esclusivo in un database. Ecco perché potrebbero verificarsi errori quando un altro processo attivo mantiene un blocco nel database. Un errore segnalato in un caso simile è Msg 5061, Level 16, State 1, Line 38 con il messaggio ALTER DATABASE failed because a lock could not be placed on database '<database name>'. Try again later. Si tratta in genere di un errore temporaneo e per risolverlo, una volta rilasciati tutti i blocchi del database, riprovare a eseguire l'istruzione ALTER DATABASE non riuscita. La vista di sistema sys.dm_tran_locks contiene informazioni sui blocchi attivi. Per verificare se sono presenti blocchi condivisi o esclusivi in un database, usare la query seguente.

    SELECT
        resource_type, resource_database_id, request_mode, request_type, request_status, request_session_id 
    FROM 
        sys.dm_tran_locks
    WHERE
        resource_database_id = DB_ID('testdb');
    

Visualizzare le informazioni sul database

Per restituire informazioni su database, file e filegroup, è possibile usare viste del catalogo, funzioni di sistema e stored procedure di sistema.

Autorizzazioni

Solo l'account di accesso dell'entità a livello di server (creato dal processo di provisioning) o i membri del ruolo del database dbcreator possono modificare un database.

Importante

Il proprietario del database può modificare il database solo se è un membro del ruolo dbcreator.

Esempi

Negli esempi seguenti viene illustrato come impostare l'ottimizzazione automatica e come aggiungere un file a un database in Istanza gestita di SQL di Azure.

ALTER DATABASE WideWorldImporters
  SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON);

ALTER DATABASE WideWorldImporters
  ADD FILE (NAME = 'data_17');

Passaggi successivi

* Azure Synapse
Analytics *
 

 

Panoramica: Azure Synapse Analytics

In Azure Synapse modifica ALTER DATABASE alcune opzioni di configurazione di un pool SQL dedicato.

A causa della lunghezza, la sintassi di ALTER DATABASE è separata in più articoli.

Le opzioni ALTER DATABA edizione Standard edizione Standard T forniscono la sintassi e le informazioni correlate per modificare gli attributi di un database usando le opzioni edizione Standard T di ALTER DATABASE.

Sintassi

ALTER DATABASE { database_name | CURRENT }
{
  MODIFY NAME = new_database_name
| MODIFY ( <edition_option> [, ... n] )
| SET <option_spec> [ ,...n ] [ WITH <termination> ]
}
[;]

<edition_option> ::=
      MAXSIZE = {
            250 | 500 | 750 | 1024 | 5120 | 10240 | 20480
          | 30720 | 40960 | 51200 | 61440 | 71680 | 81920
          | 92160 | 102400 | 153600 | 204800 | 245760
      } GB
      | SERVICE_OBJECTIVE = {
            'DW100' | 'DW200' | 'DW300' | 'DW400' | 'DW500'
          | 'DW600' | 'DW1000' | 'DW1200' | 'DW1500' | 'DW2000'
          | 'DW3000' | 'DW6000' | 'DW500c' | 'DW1000c' | 'DW1500c'
          | 'DW2000c' | 'DW2500c' | 'DW3000c' | 'DW5000c' | 'DW6000c'
          | 'DW7500c' | 'DW10000c' | 'DW15000c' | 'DW30000c'
      }

Argomenti

database_name

Specifica il nome del database da modificare.

MODIFY NAME = new_database_name

Rinomina il database con il nome specificato come new_database_name.

L'opzione 'MODIFY NAME' presenta alcune limitazioni di supporto in Azure Synapse:

  • Non è supportata con i pool serverless di Azure Synapse
  • Non supportato con pool SQL dedicati creati nell'area di lavoro di Azure Synapse
  • Supportato con pool SQL dedicati (in precedenza SQL Data Warehouse) creati tramite il portale di Azure, inclusi quelli con un'area di lavoro connessa

MAXSIZE

Il valore predefinito è 245.760 GB (240 TB).

Si applica a: ottimizzato per il calcolo di prima generazione

Dimensioni massime consentite per il database. Le dimensioni del database non possono superare il valore di MAXSIZE.

Si applica a: ottimizzato per il calcolo di seconda generazione

Dimensioni massime consentite per i dati rowstore nel database. Le dimensioni dei dati archiviati nelle tabelle rowstore, nel deltastore di un indice columnstore o in un indice non cluster in un indice columnstore cluster non possono superare MAXSIZE. I dati compressi in formato columnstore non hanno un limite di dimensioni e non sono limitati dal valore MAXSIZE.

SERVICE_OBJECTIVE

Specifica le dimensioni di calcolo (obiettivo di servizio). Per altre informazioni sugli obiettivi di servizio per Azure Synapse, vedere Unità Data Warehouse (DWU).

Autorizzazioni

Richiede le autorizzazioni seguenti:

  • Accesso principale di livello server (creato dal processo di provisioning) oppure
  • Membro del ruolo del database dbmanager.

Il proprietario del database può modificare il database solo se è un membro del ruolo dbmanager.

Osservazioni:

Poiché il database corrente deve essere diverso da quello in fase di modifica, è necessario eseguire ALTER durante la connessione al database master.

Per impostazione predefinita, COMPATIBILITY_LEVEL in SQL Analytics è impostato su 130 e non può essere modificato. Per altre informazioni, vedere Miglioramento delle prestazioni delle query con il livello di compatibilità 130 nel database SQL di Azure.

Nota

COMPATIBILITY_LEVEL si applica solo alle risorse di cui si effettua il provisioning (pool).

Limitazioni e restrizioni

Per eseguire ALTER DATABASE, il database deve essere online e non può essere in pausa.

L'istruzione ALTER DATABASE deve essere eseguita in modalità autocommit, ovvero la modalità di gestione delle transazioni predefinita. Questa opzione è specificata nelle impostazioni di connessione.

L'istruzione ALTER DATABASE non può essere parte di una transazione definita dall'utente.

Le regole di confronto del database non possono essere modificate.

Esempi

Prima di eseguire questi esempi, verificare che il database da modificare non sia il database corrente. Poiché il database corrente deve essere diverso da quello in fase di modifica, è necessario eseguire ALTER durante la connessione al database master.

R. Modificare il nome del database

ALTER DATABASE AdventureWorks2022
MODIFY NAME = Northwind;

B. Modificare la dimensione massima del database

ALTER DATABASE dw1 MODIFY ( MAXSIZE=10240 GB );

C. Modificare le dimensioni di calcolo (obiettivo di servizio)

ALTER DATABASE dw1 MODIFY ( SERVICE_OBJECTIVE= 'DW1200' );

D. Modificare le dimensioni massime e le dimensioni di calcolo (obiettivo di servizio)

ALTER DATABASE dw1 MODIFY ( MAXSIZE=10240 GB, SERVICE_OBJECTIVE= 'DW1200' );

Passaggi successivi

* Piattaforma di strumenti
analitici (PDW) *
 

 

Panoramica: Sistema della piattaforma di analisi

In Analytics Platform System (PDW), ALTER DATABA edizione Standard modifica le opzioni massime delle dimensioni del database per le tabelle replicate, le tabelle distribuite e il log 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).

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 }

Argomenti

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 = size [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. Per pianificare lo spazio di archiviazione dell'appliance, è necessario moltiplicare il valore in REPLICATED_SIZE per il numero di nodi di calcolo nell'appliance.

DISTRIBUTED_SIZE = size [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 = size [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.

ENCRYPTION { 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.

SET AUTO_CREATE_STATISTICS { ON | OFF }

Quando l'opzione per la creazione automatica delle statistiche, AUTO_CREATE_STATISTICS, è impostata su ON, Query Optimizer crea le statistiche necessarie per colonne singole nel predicato di query, per migliorare le stime della cardinalità per il piano di query. Queste statistiche di colonna singola vengono create in colonne che ancora non hanno 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 per l'aggiornamento automatico delle statistiche, AUTO_UPDATE_STATISTICS, è impostata su ON, Query Optimizer determina se le statistiche potrebbero non essere aggiornate, quindi ne esegue l'aggiornamento qualora vengano usate da una query. Le statistiche diventano obsolete in seguito a operazioni di inserimento, aggiornamento, eliminazione o unione che modificano la distribuzione dei dati nella tabella o nella vista indicizzata. Query Optimizer determina che le statistiche potrebbero non essere aggiornate contando il numero di modifiche apportate ai dati dopo l'ultimo aggiornamento delle statistiche e confrontando il numero di modifiche con una soglia basata 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 relativa all'aggiornamento asincrono delle statistiche, AUTO_UPDATE_STATISTICS_ASYNC, determina se Query Optimizer usa gli 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 is not 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.

Limitazioni e restrizioni

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

La piattaforma di strumenti analitici (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

Consente di acquisire un blocco condiviso per l'oggetto DATABASE. Non è possibile modificare un database che un altro utente sta usando in modalità di lettura o scrittura. Sono incluse le sessioni che hanno rilasciato un'istruzione USE nel database.

Prestazioni

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 di implementazione della tecnologia TDE, vedere Transparent Data Encryption (TDE).

Esempi: Piattaforma di strumenti analitici (PDW)

R. 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 delle tabelle distribuite viene impostato su 1000 GB (1 TB) 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;

Passaggi successivi