Condividi tramite


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 DATABASE 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 gli snapshot del 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>
      { 160 | 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 modificate 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 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à commit automatico (modalità di gestione delle transazioni predefinita) 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 da un'istruzione SQL ha esito negativo e viene 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, Inoltre, qualsiasi INSERTistruzione , UPDATEo DELETE che modifica una tabella con qualsiasi indice in un filegroup offline ha esito negativo.

Quando un database si trova nello stato RESTORE, la maggior parte ALTER DATABASE delle istruzioni ha esito negativo. Un'alternativa consiste nell'impostare le opzioni di mirroring del database. Un database potrebbe trovarsi nello stato RESTORE durante un'operazione di ripristino attiva o quando un'operazione di ripristino di un database o di un file di log non riesce 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 ha esito negativo. SQL Server restituisce 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 i nomi duplicati derivano dalle regole di confronto modificate, gli spazi dei nomi seguenti possono causare l'errore di una modifica delle regole di confronto del database:

  • 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

I nomi duplicati risultanti dalle nuove regole di confronto causano l'esito negativo dell'azione di modifica e SQL Server restituisce un messaggio di errore che specifica lo spazio dei nomi in cui è stato trovato 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

* 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_S_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>
    { 160 | 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 dell'edizione del database.

Nota

L'argomento MAXSIZE non è applicabile ai singoli database nel livello di servizio Hyperscale. I singoli database del livello di servizio Hyperscale aumentano in base alle esigenze, fino a 128 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 Sì (D)
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 Sì (D) Sì (D)
300 GB N/D
400 GB N/D
500 GB N/D Sì (D)
750 GB N/D
1024 GB N/D Sì (D)
Da 1024 GB fino a 4096 GB in incrementi di 256 GB 1 N/D N/D N/D N/D

1 P11 e P15 consentono a MAXSIZE fino a 4 TB con 1024 GB di dimensioni predefinite. 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 l'opzione EDITION è specificata ma MAXSIZE non è specificata, viene utilizzato il valore predefinito per l'edizione. Ad esempio, l'opzione EDITION è impostata su Standard e MAXSIZE non viene specificata, quindi MAXSIZE viene impostata automaticamente 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, , S4S6S7S9S12P1P2P4P6, . P11P15 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 utilizzo generico, calcolo con provisioning, serie Standard (Gen5), 8 vCore.
    • GP_S_Gen5_8 per utilizzo generico, calcolo serverless, serie Standard (Gen5), 8 vCore.
    • HS_Gen5_8 per Hyperscale, calcolo con provisioning, serie Standard (Gen5), 8 vCore.
    • HS_S_Gen5_8 per Hyperscale, calcolo serverless, 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 Hyperscale.

SECONDARY_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 Hyperscale.

Per le descrizioni degli obiettivi di servizio e altre informazioni sulle dimensioni, le edizioni e le combinazioni degli obiettivi di servizio, vedere Confrontare modelli di acquisto basati su vCore e DTU di database SQL di Azure, limiti delle risorse DTU e limiti delle risorse vCore. Il supporto per gli obiettivi di servizio PRS è stato rimosso.

Quando SERVICE_OBJECTIVE non viene specificato, 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 maggiori informazioni, si veda I pool elastici consentono di gestire e dimensionare più database nel database SQL di Azure. 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 nel 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'archiviazione di backup durante la creazione del database secondario non è supportata tramite T-SQL.

WITH ALLOW_CONNECTIONS { ALL | NO }

Quando ALLOW_CONNECTIONS non viene specificato, viene impostato su ALL 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>)

Quando non viene specificato 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 SECONDARY ON SERVER <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 viene visualizzato un messaggio di errore che indica 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 e potrebbe verificarsi un ritardo fino al completamento di questo processo. 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à commit automatico (modalità di gestione delle transazioni predefinita) 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 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 Indicazioni sul ripristino di emergenza- database SQL di Azure e l'elenco di controllo per la disponibilità elevata e il ripristino di emergenza database SQL di Azure.

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ò comportare la 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 usano 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';

* 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>
      { 160 | 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à commit automatico (modalità di gestione delle transazioni predefinita) 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 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 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 non può modificare il database a meno che non sia membro del dbcreator ruolo.

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');

* 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 DATABASE SET forniscono la sintassi e le informazioni correlate per la modifica degli attributi di un database tramite le opzioni SET 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. Il database non può aumentare oltre MAXSIZE.

Si applica a: ottimizzato per il calcolo di seconda generazione

Dimensioni massime consentite per i dati rowstore nel database. I dati archiviati in tabelle rowstore, un deltastore di un indice columnstore o un indice non cluster in un indice columnstore cluster non possono aumentare oltre MAXSIZE. I dati compressi in formato columnstore non hanno un limite di dimensioni e non sono vincolati da 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 non può modificare il database a meno che il proprietario non sia membro del dbmanager ruolo.

Osservazioni:

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

COMPATIBILITY_LEVEL in Analisi SQL è impostato su 130 per impostazione predefinita e non può essere modificato. Per altre informazioni, vedere il livello di compatibilità di ALTER DATABASE.

Nota

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

Limiti

Per eseguire ALTER DATABASE, il database deve essere online e non può trovarsi in uno stato sospeso.

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ò far parte di una transazione definita dall'utente.

Non è possibile modificare le regole di confronto del database.

Esempi

Prima di eseguire questi esempi, assicurarsi che il database che si sta modificando 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' );

* Piattaforma di strumenti
analitici (PDW) *
 

 

Panoramica: Sistema della piattaforma di analisi

In Analytics Platform System (PDW), ALTER DATABASE 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. Se si pianifica lo spazio di archiviazione dell'appliance, è necessario moltiplicare 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 (TDE).

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

Limiti

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 in uso da un altro utente per la lettura o la 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 dell'implementazione di 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;

Panoramica: Microsoft Fabric

Microsoft Fabric

In Microsoft Fabric Warehouse questa istruzione modifica un magazzino.

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

Osservazioni:

Attualmente, la sospensione della pubblicazione dei log Delta Lake e la disabilitazione del comportamento dell'ordine virtuale in un magazzino sono gli unici usi per ALTER DATABASE ... SET in Microsoft Fabric. Vedere Opzioni ALTER DATABASE SET.