Opzioni di ALTER DATABASE SET (Transact-SQL)
Imposta le opzioni di database in Microsoft SQL Server, nel database SQL di Azure e in Azure Synapse Analytics. Per altre opzioni di ALTER DATABASE, vedere ALTER DATABASE.
Nota
L'impostazione di alcune opzioni con ALTER DATABASE potrebbe richiedere l'accesso esclusivo al database. Se l'istruzione ALTER DATABASE non viene completata in modo tempestivo, verificare se altre sessioni all'interno del database bloccano la sessione ALTER DATABASE.
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. Verrà così visualizzato un contenuto diverso in questa pagina Web, appropriato per il prodotto selezionato.
* SQL Server *
SQL Server
Il mirroring del database, i gruppi di disponibilità Always On e i livelli di compatibilità sono opzioni SET
, ma vengono descritti in articoli separati a causa dell'elevata quantità di informazioni. Per altre informazioni, vedere Mirroring del database ALTER DATABASE, ALTER DATABASE SET HADR e Livello di compatibilità ALTER DATABASE.
Le configurazioni con ambito database vengono usate per impostare diverse configurazioni di database a livello di singolo database. Per altre informazioni, vedere ALTER DATABASE SCOPED CONFIGURATION.
Nota
Molte opzioni SET di database possono essere configurate per la sessione corrente tramite Istruzioni SET e spesso vengono configurate dalle applicazioni durante la connessione. Le opzioni del set a livello di sessione sostituiscono i ALTER DATABASE SET
valori. Le opzioni di database descritte nelle sezioni seguenti sono valori che è possibile impostare per le sessioni che non prevedono esplicitamente altri valori di opzioni SET.
Sintassi
ALTER DATABASE { database_name | CURRENT }
SET
{
<option_spec> [ ,...n ] [ WITH <termination> ]
}
<option_spec> ::=
{
<accelerated_database_recovery>
| <auto_option>
| <automatic_tuning_option>
| <change_tracking_option>
| <containment_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 ( <FILESTREAM_option> )
| <HADR_options>
| <mixed_page_allocation_option>
| <parameterization_option>
| <query_store_options>
| <recovery_option>
| <remote_data_archive_option>
| <persistent_log_buffer_option>
| <service_broker_option>
| <snapshot_option>
| <sql_option>
| <suspend_for_snapshot_backup>
| <target_recovery_time_option>
| <termination>
| <temporal_history_retention>
| <data_retention_policy>
}
;
<accelerated_database_recovery> ::=
{
ACCELERATED_DATABASE_RECOVERY = { ON | OFF }
[ ( PERSISTENT_VERSION_STORE_FILEGROUP = { filegroup name } ) ];
}
<auto_option> ::=
{
AUTO_CLOSE { ON | OFF }
| AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<automatic_tuning_option> ::=
{
AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [,...n] ) ]
| ( <change_tracking_option_list> [,...n] )
}
}
<change_tracking_option_list> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<containment_option> ::=
CONTAINMENT = { NONE | PARTIAL }
<cursor_option> ::=
{
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
| CURSOR_DEFAULT { LOCAL | GLOBAL }
}
<database_mirroring_option>
ALTER DATABASE Database Mirroring
<date_correlation_optimization_option> ::=
DATE_CORRELATION_OPTIMIZATION { ON | OFF }
<db_encryption_option> ::=
ENCRYPTION { ON | OFF | SUSPEND | RESUME }
<db_state_option> ::=
{ ONLINE | OFFLINE | EMERGENCY }
<db_update_option> ::=
{ READ_ONLY | READ_WRITE }
<db_user_access_option> ::=
{ SINGLE_USER | RESTRICTED_USER | MULTI_USER }
<delayed_durability_option> ::=
DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
<external_access_option> ::=
{
DB_CHAINING { ON | OFF }
| TRUSTWORTHY { ON | OFF }
| DEFAULT_FULLTEXT_LANGUAGE = { <lcid> | <language name> | <language alias> }
| DEFAULT_LANGUAGE = { <lcid> | <language name> | <language alias> }
| NESTED_TRIGGERS = { OFF | ON }
| TRANSFORM_NOISE_WORDS = { OFF | ON }
| TWO_DIGIT_YEAR_CUTOFF = { 1753, ..., 2049, ..., 9999 }
}
<FILESTREAM_option> ::=
{
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL
| DIRECTORY_NAME = <directory_name>
}
<HADR_options> ::=
ALTER DATABASE SET HADR
<mixed_page_allocation_option> ::=
MIXED_PAGE_ALLOCATION { OFF | ON }
<parameterization_option> ::=
PARAMETERIZATION { SIMPLE | FORCED }
<query_store_options> ::=
{
QUERY_STORE
{
= OFF [ ( FORCED ) ]
| = ON [ ( <query_store_option_list> [,...n] ) ]
| ( < query_store_option_list> [,...n] )
| CLEAR [ ALL ]
}
}
<query_store_option_list> ::=
{
OPERATION_MODE = { READ_WRITE | READ_ONLY }
| CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
| DATA_FLUSH_INTERVAL_SECONDS = number
| MAX_STORAGE_SIZE_MB = number
| INTERVAL_LENGTH_MINUTES = number
| SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
| QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
| MAX_PLANS_PER_QUERY = number
| WAIT_STATS_CAPTURE_MODE = { ON | OFF }
| QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}
<query_capture_policy_option_list> :: =
{
STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
| EXECUTION_COUNT = number
| TOTAL_COMPILE_CPU_TIME_MS = number
| TOTAL_EXECUTION_CPU_TIME_MS = number
}
<recovery_option> ::=
{
RECOVERY { FULL | BULK_LOGGED | SIMPLE }
| TORN_PAGE_DETECTION { ON | OFF }
| PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }
}
<remote_data_archive_option> ::=
{
REMOTE_DATA_ARCHIVE =
{
ON ( SERVER = <server_name>,
{
CREDENTIAL = <db_scoped_credential_name>
| FEDERATED_SERVICE_ACCOUNT = ON | OFF
}
)
| OFF
}
}
<persistent_log_buffer_option> ::=
{
PERSISTENT_LOG_BUFFER
{
= ON (DIRECTORY_NAME= 'path-to-directory-on-a-DAX-volume')
| = OFF
}
}
<service_broker_option> ::=
{
ENABLE_BROKER
| DISABLE_BROKER
| NEW_BROKER
| ERROR_BROKER_CONVERSATIONS
| HONOR_BROKER_PRIORITY { ON | OFF }
}
<snapshot_option> ::=
{
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
| READ_COMMITTED_SNAPSHOT { ON | OFF }
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = { ON | OFF }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<suspend_for_snapshot_backup> ::=
SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF } [ ( MODE = COPY_ONLY ) ]
<target_recovery_time_option> ::=
TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }
<termination>::=
{
ROLLBACK AFTER number [ SECONDS ]
| ROLLBACK IMMEDIATE
| NO_WAIT
}
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
<data_retention_policy> ::=
DATA_RETENTION { ON | OFF }
Argomenti
database_name
Nome del database da modificare.
CURRENT
Si applica a: SQL Server, a partire da SQL Server 2012 (11.x)
Esegue l'azione nel database corrente.
CURRENT
non è supportato per tutte le opzioni in tutti i contesti. In caso di errore di CURRENT
, specificare il nome del database.
< > accelerated_database_recovery ::=
Si applica a: SQL Server, a partire da SQL Server 2019 (15.x)
Abilita ripristino accelerato del database (ADR). AdR è impostato su OFF per impostazione predefinita in SQL Server 2019 (15.x) e versioni successive. Usando questa sintassi, è possibile designare un filegroup specifico per i dati dell'archivio versioni persistente (PVS). Se non viene specificato alcun filegroup, il file PVS viene archiviato nel filegroup PRIMARY
. Per altre informazioni, vedere Gestire il ripristino accelerato del database.
< > auto_option ::=
Consente di controllare le opzioni automatiche.
AUTO_CLOSE { ON | OFF }
In...
Il database viene chiuso normalmente e le relative risorse vengono rilasciate dopo la disconnessione dell'ultimo utente.
Il database viene riaperto automaticamente quando un utente tenta di usarlo nuovamente, Ad esempio, questo comportamento si verifica quando un utente rilascia un'istruzione
USE database_name
. Il database potrebbe essere arrestato correttamente con AUTO_CLOSE impostato su ON. In tal caso, il database non viene riaperto finché un utente tenta di usare il database al successivo riavvio del motore di database.Dopo l'arresto di un database, al successivo tentativo di usarlo da parte di un'applicazione, il database deve prima essere aperto e quindi lo stato deve essere modificato in online. Questa operazione può richiedere tempo e può comportare timeout dell'applicazione.
OFF
Il database rimane aperto dopo la disconnessione dell'ultimo utente.
L'opzione AUTO_CLOSE è utile per i database desktop perché consente di gestire i file di database come normali file. I file possono essere spostati, copiati per creare backup o anche inviati tramite posta elettronica ad altri utenti. Il processo AUTO_CLOSE è asincrono. Operazioni ripetute di apertura e chiusura del database non comportano una riduzione delle prestazioni.
Nota
L'opzione AUTO_CLOSE non è disponibile in un database indipendente o nel database SQL.
È possibile determinare lo stato di questa opzione esaminando la colonna is_auto_close_on
nella vista del catalogo sys.databases o la proprietà IsAutoClose
della funzione DATABASEPROPERTYEX.
Quando AUTO_CLOSE è impostato su ON, alcune colonne nella vista del catalogo sys.databases e la funzione DATABASEPROPERTYEX restituisce NULL perché il database non è disponibile per recuperare i dati. Per risolvere questo problema, eseguire un'istruzione USE per aprire il database.
Per il mirroring del database è necessario che AUTO_CLOSE sia OFF.
Quando il database è impostato su AUTOCLOSE = ON
, un'operazione che ne avvia un arresto automatico cancella la cache dei piani per l'istanza di SQL Server. 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. A partire da SQL Server 2005 (9.x) Service Pack 2, 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.
L'impostazione AUTO_CLOSE può essere utile in alcune situazioni rare, ad esempio in un'istanza di SQL Server senza memoria sufficiente per funzionare in modo stabilmente con un numero elevato di database o per un'istanza legacy di SQL Server a 32 bit con un numero elevato di database. In questi scenari, potrebbe essere utile abilitare AUTO_CLOSE e conservare le risorse di memoria necessarie per mantenere aperto un database quando non è presente alcuna applicazione che usa il database. Quando il database è aperto, sono necessarie alcune allocazioni di memoria predefinite, ad esempio strutture interne per rappresentare vari oggetti di metadati del database e buffer di log delle transazioni.
AUTO_CREATE_STATISTICS { ON | OFF }
In...
Query Optimizer crea statistiche per colonne singole nei predicati di query, in base alle esigenze, per migliorare i piani di query e le prestazioni di esecuzione delle query. Queste statistiche per colonne singole vengono create quando Query Optimizer compila le query. Vengono create solo sulle colonne che non sono già le prime di un oggetto statistiche esistente.
L'impostazione predefinita è ON. È consigliabile usare l'impostazione predefinita per la maggior parte dei database.
OFF
Query Optimizer non crea statistiche sulle singole colonne nei predicati di query durante la compilazione delle query. L'impostazione di questa opzione su OFF può determinare piani di query e prestazioni di esecuzione delle query non ottimali.
È possibile determinare lo stato di questa opzione esaminando la colonna is_auto_create_stats_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAutoCreateStatistics
della funzione DATABASEPROPERTYEX.
Per altre informazioni, vedere la sezione "Opzioni relative alle statistiche nel database" in Statistiche.
INCREMENTAL = ON | OFF
Si applica a: SQL Server, a partire da SQL Server 2014 (12.x), e database SQL di Azure
Imposta AUTO_CREATE_STATISTICS su ON e INCREMENTAL su ON. Questa impostazione crea automaticamente statistiche incrementali ogni volta che sono supportate. Il valore predefinito è OFF. Per altre informazioni, vedere CREATE STATISTICS.
AUTO_SHRINK { ON | OFF }
In...
I file di database vengono compattati periodicamente, se necessario. A meno che non si disponga di un requisito specifico, non impostare l'opzione di database AUTO_SHRINK su ON. Per altre informazioni, vedere Compattare un database.
È possibile compattare automaticamente sia i file di dati sia i file di log. AUTO_SHRINK riduce le dimensioni del log delle transazioni solo se per il database è impostato il modello di recupero con registrazione minima oppure se viene eseguito il backup del log. Quando si imposta AUTO_SHRINK su OFF, i file di database non vengono compattati automaticamente durante i controlli periodici per verificare la presenza di spazio inutilizzato.
L'opzione AUTO_SHRINK compatta i file quando più del 25% dello spazio del file risulta inutilizzato. Compatta il file in una delle due dimensioni (a seconda del valore maggiore):
- La dimensione in cui il 25% del file è costituito da spazio inutilizzato
- La dimensione del file quando è stato creato
Non è possibile compattare un database di sola lettura.
OFF
I file di database non vengono compattati automaticamente durante i controlli periodici per lo spazio inutilizzato.
È possibile determinare lo stato di questa opzione esaminando la colonna is_auto_shrink_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAutoShrink
della funzione DATABASEPROPERTYEX.
Nota
L'opzione AUTO_SHRINK non è disponibile in un database indipendente.
AUTO_UPDATE_STATISTICS { ON | OFF }
In...
Specifica che Query Optimizer aggiorna le statistiche quando queste vengono usate da una query e quando potrebbero non essere aggiornate. 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.
Query Optimizer controlla la presenza di statistiche non aggiornate prima di compilare una query e di eseguire un piano di query memorizzato nella cache. Usa le colonne, le tabelle e le viste indicizzate nel predicato di query per determinare quali statistiche potrebbero non essere aggiornate. Query Optimizer verifica questa possibilità prima di compilare una query. Prima di eseguire un piano di query memorizzato nella cache, il motore di database verifica che il piano di query faccia riferimento a statistiche aggiornate.
L'opzione AUTO_UPDATE_STATISTICS_ASYNC si applica alle statistiche create per indici, colonne singole nei predicati di query e statistiche create con l'istruzione CREATE STATISTICS. Questa opzione si applica anche alle statistiche filtrate.
Il valore predefinito è ON. È consigliabile usare l'impostazione predefinita per la maggior parte dei database.
Usare l'opzione AUTO_UPDATE_STATISTICS_ASYNC per specificare se le statistiche vengono aggiornate in modo sincrono o asincrono.
OFF
Specifica che Query Optimizer non aggiorna le statistiche quando queste vengono usate da una query né quando potrebbero essere non aggiornate. L'impostazione di questa opzione su OFF può determinare piani di query e prestazioni di esecuzione delle query non ottimali.
È possibile determinare lo stato di questa opzione esaminando la colonna is_auto_update_stats_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAutoUpdateStatistics
della funzione DATABASEPROPERTYEX.
Per altre informazioni, vedere la sezione "Opzioni relative alle statistiche nel database" in Statistiche.
AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
In...
Specifica che gli aggiornamenti delle statistiche per l'opzione AUTO_UPDATE_STATISTICS sono asincroni. Query Optimizer non attende il completamento degli aggiornamenti delle statistiche per compilare le query.
L'impostazione di questa opzione su ON non produce alcun effetto, a meno che AUTO_UPDATE_STATISTICS non sia impostata su ON.
L'impostazione predefinita dell'opzione AUTO_UPDATE_STATISTICS_ASYNC è OFF e Query Optimizer aggiorna le statistiche in modo sincrono.
OFF
Specifica che gli aggiornamenti delle statistiche per l'opzione AUTO_UPDATE_STATISTICS sono sincroni. Query Optimizer attende il completamento degli aggiornamenti delle statistiche per compilare le query.
Nota
L'impostazione di questa opzione su OFF non produce alcun effetto, a meno che AUTO_UPDATE_STATISTICS non sia impostata su ON.
È possibile determinare lo stato di questa opzione esaminando la colonna is_auto_update_stats_async_on
nella vista del catalogo sys.databases.
Per altre informazioni su quando usare gli aggiornamenti delle statistiche sincroni o asincroni, vedere la sezione sulle opzioni relative alle statistiche in Statistiche.
< > automatic_tuning_option ::=
Si applica a: SQL Server, a partire da SQL Server 2017 (14.x)
Abilita o disabilita l'opzione di FORCE_LAST_GOOD_PLAN
Ottimizzazione automatica. È possibile visualizzare lo stato di questa opzione nella vista sys.database_automatic_tuning_options
.
FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF }
DEFAULT
Il valore predefinito per SQL Server è OFF.
In...
Il motore di database forza automaticamente l'ultimo piano valido noto nelle query Transact-SQL nel caso in cui il nuovo piano di query causi un peggioramento delle prestazioni. Il motore di database monitora continuamente le prestazioni della query Transact-SQL con il piano forzato.
In caso di miglioramenti delle prestazioni, il motore di database continua a usare l'ultimo piano valido noto. Se non vengono rilevati miglioramenti delle prestazioni, il motore di database genera un nuovo piano di query. L'istruzione ha esito negativo se la
Query Store non è abilitata o se Query Store non è in modalità di di lettura/scrittura.OFF
Il motore di database segnala potenziali peggioramenti delle prestazioni delle query causati da modifiche al piano di query nella vista sys.dm_db_tuning_recommendations. Tuttavia, queste raccomandazioni non vengono applicate automaticamente. Gli utenti possono monitorare i consigli attivi e risolvere i problemi identificati applicando gli script Transact-SQL mostrati nella vista. Il valore predefinito è OFF.
< > change_tracking_option ::=
Si applica a: SQL Server e database SQL di Azure
Controlla le opzioni di rilevamento delle modifiche. È possibile abilitare il rilevamento delle modifiche, impostare le opzioni, modificare le opzioni e disabilitare il rilevamento delle modifiche. Per gli esempi, vedere la sezione Esempi più avanti in questo articolo.
In...
Abilita il rilevamento delle modifiche per il database. Quando si abilita il rilevamento delle modifiche, è possibile impostare anche le opzioni AUTO CLEANUP e CHANGE RETENTION.
AUTO_CLEANUP = { ON | OFF }
In...
Le informazioni sul rilevamento delle modifiche vengono rimosse automaticamente una volta trascorso il periodo di memorizzazione specificato.
OFF
I dati relativi al rilevamento delle modifiche non vengono rimossi automaticamente dal database.
CHANGE_RETENTION = retention_period { DAYS | ORE | MINUTES }
Specifica il periodo minimo di conservazione delle informazioni sul rilevamento delle modifiche nel database. I dati vengono rimossi solo quando il valore di AUTO_CLEANUP è ON.
retention_period è un numero intero che specifica il componente numerico del periodo di memorizzazione.
Il periodo di conservazione predefinito è 2 giorni. Il periodo di memorizzazione minimo è 1 minuto. Il tipo di conservazione predefinito è DAYS.
OFF disabilita il rilevamento delle modifiche per il database. Prima di disabilitare il rilevamento delle modifiche per il database, disabilitarlo per tutte le tabelle.
< > containment_option ::=
Si applica a: SQL Server, a partire da SQL Server 2012 (11.x)
Consente di controllare le opzioni di indipendenza del database.
CONTAINMENT = { NONE | PARTIAL}
NONE
Il database non è un database indipendente.
PARTIAL
Il database è un database indipendente. L'impostazione del contenimento del database su parziale ha esito negativo se il database dispone di replica, Change Data Capture o rilevamento modifiche abilitato. Il controllo degli errori viene arrestato dopo un errore. Per altre informazioni sui database indipendenti, vedere Contained Databases.
< > cursor_option ::=
Consente di controllare le opzioni del cursore.
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
In...
Quando si esegue il commit o il rollback di una transazione, eventuali cursori aperti vengono chiusi.
OFF
I cursori rimangono aperti quando viene eseguito il commit di una transazione; il rollback di una transazione chiude tutti i cursori, ad eccezione di quelli definiti come INSENSITIVE o STATIC.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per CURSOR_CLOSE_ON_COMMIT. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta CURSOR_CLOSE_ON_COMMIT su OFF per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET CURSOR_CLOSE_ON_COMMIT.
È possibile determinare lo stato di questa opzione esaminando la colonna is_cursor_close_on_commit_on
nella vista del catalogo sys.databases o la proprietà IsCloseCursorsOnCommitEnabled
della funzione DATABASEPROPERTYEX.
CURSOR_DEFAULT { LOCAL | GLOBAL }
Si applica a: SQL Server
Determina se l'ambito del cursore è LOCAL o GLOBAL.
LOCAL
Se si specifica LOCAL e non si definisce un cursore come GLOBAL al momento della creazione, l'ambito del cursore è locale. In particolare, l'ambito è locale rispetto al batch, alla stored procedure o al trigger in cui il cursore è stato creato. Il nome del cursore è valido solo in questo ambito.
È possibile fare riferimento al cursore tramite variabili di cursore locali nel batch, nella stored procedure o nel trigger oppure tramite un parametro OUTPUT di stored procedure. Il cursore viene deallocato in modo implicito al termine dell'esecuzione del batch, della stored procedure o del trigger, a meno che non sia stato passato a un parametro OUTPUT. Il cursore potrebbe essere passato di nuovo a un parametro OUTPUT. In questo caso, viene deallocato quando l'ultima variabile che vi fa riferimento viene deallocata o esce dall'ambito.
GLOBAL
Se si specifica GLOBAL e se un cursore non viene definito come LOCAL al momento della creazione, l'ambito del cursore è globale rispetto alla connessione. È possibile fare riferimento al nome del cursore in qualsiasi stored procedure o batch eseguiti tramite la connessione.
Il cursore viene deallocato in modo implicito soltanto al momento della disconnessione. Per altre informazioni, vedere DECLARE CURSOR.
È possibile determinare lo stato di questa opzione esaminando la colonna is_local_cursor_default
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsLocalCursorsDefault
della funzione DATABASEPROPERTYEX.
< > temporal_history_retention ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
ON per impostazione predefinita, ma viene anche impostato automaticamente su OFF dopo un'operazione di ripristino temporizzato. Per altre informazioni, tra cui come abilitare questa impostazione, vedere Come configurare criteri di conservazione.
In...
Predefinito. Abilita i criteri di conservazione delle tabelle temporali. Per altre informazioni, vedere Gestire la conservazione di dati cronologici in tabelle temporali con controllo delle versioni di sistema.
OFF
Non eseguire criteri di conservazione cronologici temporali.
< > data_retention_policy ::=
si applica a: solo SQL Edge di Azure.
DATA_RETENTION { ON | OFF }
In...
Abilita la pulizia basata sui criteri di conservazione dei dati in un database.
OFF
Disabilita la pulizia basata sui criteri di conservazione dei dati in un database.
<database_mirroring>
Si applica a: SQL Server
Per le descrizioni dell'argomento, vedere Mirroring del database ALTER DATABASE.
< > date_correlation_optimization_option ::=
Si applica a: SQL Server
Controlla l'opzione date_correlation_optimization.
DATE_CORRELATION_OPTIMIZATION { ON | OFF }
In...
SQL Server mantiene statistiche di correlazione in cui un vincolo FOREIGN KEY collega due tabelle qualsiasi nel database e le tabella includono colonne datetime.
OFF
Le statistiche di correlazione non vengono mantenute.
Per impostare DATE_CORRELATION_OPTIMIZATION su ON, è necessario che non siano presenti connessioni attive al database, ad eccezione della connessione che esegue l'istruzione ALTER DATABASE. Successivamente, sono supportate più connessioni.
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna is_date_correlation_on
nella vista del catalogo sys.databases.
< > db_encryption_option ::=
Controlla lo stato della crittografia del database.
ENCRYPTION { ON | OFF | SUSPEND | RESUME }
In...
Imposta il database in modo che venga crittografato.
OFF
Imposta il database in modo che non venga crittografato.
SUSPEND
Si applica a: SQL Server, a partire da SQL Server 2019 (15.x)
Può essere usato per sospendere l'analisi della crittografia dopo l'abilitazione o la disabilitazione di Transparent Data Encryption oppure dopo la modifica della chiave di crittografia.
RESUME
Si applica a: SQL Server, a partire da SQL Server 2019 (15.x)
Consente di riprendere l'analisi della crittografia precedentemente sospesa.
Per altre informazioni sulla crittografia del database, vedere TDE (Transparent Data Encryption)e Transparent Data Encryption per il database SQL di Azure, Istanza gestita di SQL di Azure e Azure Synapse Analytics.
Quando la crittografia è abilitata a livello di database, tutti i filegroup vengono crittografati. Tutti i nuovi gruppi di file ereditano la proprietà crittografata. Se i filegroup nel database sono impostati su SOLA lettura, l'operazione di crittografia del database ha esito negativo.
È possibile visualizzare lo stato di crittografia del database e lo stato dell'analisi della crittografia usando la DMV sys.dm_database_encryption_keys.
< > db_state_option ::=
Si applica a: SQL Server
Controlla lo stato del database.
OFFLINE
Il database viene chiuso normalmente e contrassegnato come offline. Mentre è offline, il database non può essere modificato.
ONLINE
Il database è aperto e disponibile per l'utilizzo.
EMERGENCY
Il database è contrassegnato come READ_ONLY, la registrazione è disabilitata e l'accesso è limitato ai soli membri del ruolo predefinito del server sysadmin. L'opzione EMERGENCY viene usata principalmente per attività di risoluzione dei problemi. Ad esempio, è possibile impostare lo stato EMERGENCY per un database contrassegnato come sospetto a causa di un file di log danneggiato. Con questa impostazione, l'amministratore di sistema potrà accedere in sola lettura al database. Solo i membri del ruolo predefinito del server sysadmin possono impostare lo stato EMERGENCY per un database.
È richiesta l'autorizzazione ALTER DATABASE
per il database dell'area di interesse, per impostare il database sullo stato offline o emergency, nonché l'autorizzazione ALTER ANY DATABASE
a livello di server per portare un database da offline a online.
È possibile determinare lo stato di questa opzione esaminando le colonne state
e state_desc
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà Status
della funzione DATABASEPROPERTYEX. Per altre informazioni, vedere Stati del database.
Un database contrassegnato come RESTORING non può essere impostato su OFFLINE, ONLINE o EMERGENCY. 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.
< > db_update_option ::=
Indica se sono consentiti aggiornamenti nel database.
READ_ONLY
Gli utenti possono leggere i dati dal database, ma non modificarli.
Nota
Per migliorare le prestazioni di esecuzione delle query, aggiornare le statistiche prima di impostare un database su READ_ONLY. Se sono necessarie statistiche aggiuntive dopo che un database è impostato su READ_ONLY, il motore di database crea statistiche nel database di sistema
tempdb
. Per altre informazioni sulle statistiche per un database di sola lettura, vedere Statistiche.READ_WRITE
Il database è disponibile per operazioni di lettura e scrittura.
Per modificare questo stato, è necessario disporre dell'accesso esclusivo al database. Per altre informazioni, vedere la clausola SINGLE_USER.
Nota
In database federati del database SQL di Azure la sintassi SET { READ_ONLY | READ_WRITE }
è disabilitata.
< > db_user_access_option ::=
Controlla l'accesso degli utenti al database.
SINGLE_USER
Si applica a: SQL Server
Specifica che l'accesso al database è consentito a un solo utente alla volta. Se si specifica SINGLE_USER e un altro utente si connette al database, l'istruzione ALTER DATABASE viene bloccata finché tutti gli utenti non si disconnettono dal database specificato. Per sostituire questo comportamento, vedere la clausola WITH <termination>.
Il database rimane in modalità SINGLE_USER anche se l'utente che imposta l'opzione si disconnette. A questo punto, un utente diverso, ma solo uno, può connettersi al database.
Prima di impostare il database in modalità SINGLE_USER, verificare che l'opzione AUTO_UPDATE_STATISTICS_ASYNC sia impostata su OFF. Se impostato su ON, il thread in background usato per aggiornare le statistiche accetta una connessione al database e non è possibile accedere al database in modalità utente singolo. Per visualizzare lo stato di questa opzione, eseguire una query sulla colonna is_auto_update_stats_async_on
nella vista del catalogo sys.databases. Se l'opzione è impostata su ON, effettuare le operazioni seguenti:
Impostare AUTO_UPDATE_STATISTICS_ASYNC su OFF.
Verificare la presenza di processi asincroni attivi relativi alle statistiche eseguendo una query sulla DMV sys.dm_exec_background_job_queue.
Se sono presenti processi attivi, consentire il completamento di tali processi o terminarli manualmente usando KILL STATS JOB.
RESTRICTED_USER
Consente la connessione al database solo ai membri del ruolo predefinito del database db_owner
e ai membri dei ruoli predefiniti del server dbcreator
e sysadmin
. senza tuttavia imporre un limite al numero di connessioni. Tutte le connessioni al database vengono interrotte entro l'intervallo di tempo specificato nella clausola di terminazione dell'istruzione ALTER DATABASE. Dopo l'impostazione dello stato RESTRICTED_USER per il database, qualsiasi tentativo di connessione da parte di utenti non qualificati viene rifiutato.
MULTI_USER
Consente la connessione al database a tutti gli utenti che dispongono di autorizzazioni appropriate. È possibile determinare lo stato di questa opzione esaminando la colonna user_access
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà UserAccess
della funzione DATABASEPROPERTYEX.
< > delayed_durability_option ::=
Si applica a: SQL Server, a partire da SQL Server 2014 (12.x)
Determina se le transazioni sottoposte a commit sono completamente durevoli o durevoli posticipate.
DISABLED
Tutte le transazioni in cui viene usato
SET DISABLED
sono completamente durevoli. Tutte le opzioni di durabilità impostate in un blocco atomico o in un'istruzione COMMIT vengono ignorate.ALLOWED
Tutte le transazioni in cui viene usato
SET ALLOWED
sono completamente durevoli o durevoli posticipate, a seconda del set di opzioni di durabilità nel blocco atomico o nell'istruzione COMMIT.FORCED
Tutte le transazioni in cui viene usato
SET FORCED
sono durevoli posticipate. Tutte le opzioni di durabilità impostate in un blocco atomico o in un'istruzione COMMIT vengono ignorate.
< > external_access_option ::=
Si applica a: SQL Server
Determina se è consentito l'accesso al database da parte di risorse esterne, ad esempio oggetti di un altro database.
DB_CHAINING { ON | OFF }
In...
Il database può essere l'origine o la destinazione di una catena di proprietà tra database.
OFF
Il database non può partecipare al concatenamento della proprietà tra database.
Importante
L'istanza di SQL Server riconosce questa impostazione quando l'opzione cross db ownership chaining server è 0 (OFF). Quando cross db ownership chaining è 1 (ON), tutti i database utente possono partecipare ai concatenamenti della proprietà tra database, a prescindere dal valore di questa opzione. Questa opzione viene impostata tramite sp_configure.
Per impostare questa opzione, è necessaria l'autorizzazione CONTROL SERVER
nel database.
L'opzione DB_CHAINING non può essere impostata nei database di sistema master
, model
e tempdb
.
È possibile determinare lo stato di questa opzione esaminando la colonna is_db_chaining_on
nella vista del catalogo sys.databases.
TRUSTWORTHY { ON | OFF }
In...
I moduli di database, ad esempio stored procedure o funzioni definite dall'utente, che usano un contesto di rappresentazione, possono accedere a risorse esterne al database.
OFF
I moduli di database in un contesto di rappresentazione non possono accedere a risorse esterne al database.
L'opzione TRUSTWORTHY viene impostata su OFF ogni volta che il database viene collegato.
Per impostazione predefinita, per tutti i database di sistema ad eccezione del database msdb
l'opzione TRUSTWORTHY è impostata su OFF. Il valore non può essere modificato per i database model
e tempdb
. È consigliabile evitare di impostare l'opzione TRUSTWORTHY su ON per il database master
.
Per impostare questa opzione, è necessaria l'autorizzazione CONTROL SERVER
nel database.
È possibile determinare lo stato di questa opzione esaminando la colonna is_trustworthy_on
nella vista del catalogo sys.databases.
DEFAULT_FULLTEXT_LANGUAGE
Si applica a: SQL Server, a partire da SQL Server 2012 (11.x)
Consente di specificare il valore della lingua predefinita per le colonne con indicizzazione full-text.
Importante
Questa opzione è consentita solo quando l'opzione CONTAINMENT è stata impostata su PARTIAL. Se CONTAINMENT è impostato su NONE, si verificano errori.
DEFAULT_LANGUAGE
Si applica a: SQL Server, a partire da SQL Server 2012 (11.x)
Specifica la lingua predefinita per tutti i nuovi account di accesso creati. È possibile specificare la lingua indicando l'ID locale (lcid), il nome della lingua o l'alias di lingua. Per un elenco dei nomi e degli alias di lingua accettabili, vedere sys.syslanguages. Questa opzione è consentita solo quando l'opzione CONTAINMENT è stata impostata su PARTIAL. Se CONTAINMENT è impostato su NONE, si verificano errori.
NESTED_TRIGGERS
Si applica a: SQL Server, a partire da SQL Server 2012 (11.x)
Specifica se un trigger AFTER supporta la propagazione, ovvero un'azione che avvia un altro trigger, che a sua volta ne avvia un altro e così via. Questa opzione è consentita solo quando l'opzione CONTAINMENT è stata impostata su PARTIAL. Se CONTAINMENT è impostato su NONE, si verificano errori.
TRANSFORM_NOISE_WORDS
Si applica a: SQL Server, a partire da SQL Server 2012 (11.x)
Consente di eliminare un messaggio di errore visualizzato nel caso in cui parole non significative impediscono l'esecuzione di un'operazione booleana in una query full-text. Questa opzione è consentita solo quando l'opzione CONTAINMENT è stata impostata su PARTIAL. Se CONTAINMENT è impostato su NONE, si verificano errori.
TWO_DIGIT_YEAR_CUTOFF
Si applica a: SQL Server, a partire da SQL Server 2012 (11.x)
Specifica un numero intero compreso tra 1753 e 9999 che rappresenta l'anno di cambio data per l'interpretazione degli anni a due cifre come anni a quattro cifre. Questa opzione è consentita solo quando l'opzione CONTAINMENT è stata impostata su PARTIAL. Se CONTAINMENT è impostato su NONE, si verificano errori.
< > FILESTREAM_option ::=
Si applica a: SQL Server, a partire da SQL Server 2012 (11.x)
Consente di controllare le impostazioni per le tabelle FileTable.
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
OFF
L'accesso non transazionale ai dati delle tabelle FileTable è disabilitato.
READ_ONLY
I dati FILESTREAM nelle tabelle FileTable in questo database possono essere letti da processi non transazionali.
FULL
Abilita l'accesso non transazionale completo a dati di FILESTREAM nelle tabelle FileTable.
DIRECTORY_NAME = <directory_name>
Nome di directory compatibile con Windows. Questo nome deve essere univoco tra tutti i nomi di directory a livello di database nell'istanza di SQL Server. Il confronto di univocità non supporta la distinzione tra maiuscole e minuscole, indipendentemente dalle impostazioni delle regole di confronto di . È necessario impostare questa opzione prima di creare una tabella FileTable nel database.
< > HADR_options ::=
Si applica a: SQL Server
Vedere ALTER DATABASE SET HADR.
< > mixed_page_allocation_option ::=
Si applica a: SQL Server, a partire da SQL Server 2016 (13.x)
Controlla se il database può creare pagine iniziali usando un extent misto per le prime otto pagine di un indice o di una tabella.
MIXED_PAGE_ALLOCATION { OFF | ON }
OFF
Il database crea sempre le pagine iniziali usando extent uniformi. OFF è il valore predefinito.
In...
Il database crea sempre le pagine iniziali usando extent misti.
Questa opzione è impostata su ON per tutti i database di sistema. Il database di sistema tempdb
è l'unico che supporta il valore OFF.
< > PARAMETERIZATION_option ::=
Consente di controllare l'opzione di parametrizzazione. Per altre informazioni sulla parametrizzazione, vedere Guida sull'architettura di elaborazione delle query.
PARAMETERIZATION { SIMPLE | FORCED }
SEMPLICE
Le query vengono parametrizzate in base al comportamento predefinito del database.
FORCED
SQL Server parametrizza tutte le query nel database.
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna is_parameterization_forced
nella vista del catalogo sys.databases.
< > query_store_options ::=
Si applica a: SQL Server, a partire da SQL Server 2016 (13.x)
ON | OFF [ ( FORCED ) ] | CLEAR [ ALL ]
Verifica se Query Store è abilitato nel database e controlla anche la rimozione dei contenuti di Query Store. Per altre informazioni, vedere Scenari di utilizzo di Query Store.
In...
Abilita Query Store.
Molte nuove funzionalità di prestazioni di SQL Server 2022 (16.x), ad esempio hint di Query Store, commenti e suggerimenti per ce, feedback dop (Degree of Parallelism) e persistenza delle concessioni di memoria (MGF) richiesta l'abilitazione di Query Store. Per i database ripristinati da altre istanze di SQL Server e per i database aggiornati da un aggiornamento sul posto a SQL Server 2022 (16.x), questi database mantengono le impostazioni precedenti di Query Store. In caso di problemi relativi all'overhead di Query Store, gli amministratori possono sfruttare criteri di acquisizione personalizzati con
QUERY_CAPTURE_MODE = CUSTOM
. Per esempi di come abilitare Query Store con opzioni dei criteri di acquisizione personalizzati, vedere la sezione Esempi più avanti in questo articolo.OFF [ ( FORCED ) ]
Disabilita Query Store. FORCED è facoltativo. FORCED interrompe tutte le attività in background di Query Store e ignora lo scaricamento sincrono quando Query Store è disattivato. Determina la chiusura di Query Store nel minor tempo possibile. FORCED si applica a SQL Server 2016 (13.x) SP2 CU14, SQL Server 2017 (14.x) CU21, SQL Server 2019 (15.x) CU6 e versioni successive.
Nota
Query Store non può essere disabilitato nel database SQL di Azure. L'esecuzione di
ALTER DATABASE [database] SET QUERY_STORE = OFF
restituisce l'avviso'QUERY_STORE=OFF' is not supported in this version of SQL Server.
.CLEAR [ ALL ]
Rimuove i dati correlati alla query da Query Store. ALL è facoltativo. Rimuove i dati e i metadati correlati alla query da Query Store.
OPERATION_MODE { READ_ONLY | READ_WRITE }
Descrive la modalità operativa di Query Store.
READ_WRITE
Query Store raccoglie e salva in modo permanente le informazioni sulle statistiche di esecuzione di runtime e i piani di query.
READ_ONLY
Le informazioni possono essere lette da Query Store, ma non vengono aggiunte nuove informazioni. Se lo spazio massimo rilasciato di Query Store è stato esaurito, Query Store modifica la modalità operativa in READ_ONLY.
CLEANUP_POLICY
Descrive i criteri di conservazione dei dati di Query Store. STALE_QUERY_THRESHOLD_DAYS determina il numero di giorni per cui le informazioni per una query vengono conservate in Query Store. STALE_QUERY_THRESHOLD_DAYS è di tipo bigint. Il valore predefinito è 30.
DATA_FLUSH_INTERVAL_SECONDS
Determina la frequenza con cui i dati scritti in Query Store vengono salvati in modo permanente sul disco. Per ottimizzare le prestazioni, i dati raccolti da Query Store vengono scritti in modo asincrono sul disco. La frequenza con cui si verifica questo trasferimento asincrono viene configurata tramite l'argomento DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS è di tipo bigint. Il valore predefinito 900 (15 min).
MAX_STORAGE_SIZE_MB
Determina lo spazio allocato a Query Store. MAX_STORAGE_SIZE_MB è di tipo bigint. Il valore predefinito è 100 MB per SQL Server, da SQL Server 2016 (13.x) a SQL Server 2017 (14.x). A partire da SQL Server 2019 (15.x), il valore predefinito è 1000 MB.
Il limite MAX_STORAGE_SIZE_MB
non è necessariamente applicato. Le dimensioni di archiviazione vengono controllate solo quando Query Store scrive i dati su disco. Questo intervallo viene impostato dall'opzione DATA_FLUSH_INTERVAL_SECONDS
o dall'opzione della finestra di dialogo di Query Store in Management Studio Intervallo di scaricamento dati. Il valore predefinito dell'intervallo è 900 secondi (o 15 minuti).
Se Query Store ha violato il limite di MAX_STORAGE_SIZE_MB
tra i controlli delle dimensioni di archiviazione, passa alla modalità di sola lettura. Se è abilitata la SIZE_BASED_CLEANUP_MODE
, viene attivato anche il meccanismo di pulizia per applicare il limite MAX_STORAGE_SIZE_MB
.
Una volta cancellato spazio sufficiente, la modalità Query Store torna automaticamente alla lettura/scrittura.
Importante
Se si ritiene che l'acquisizione del carico di lavoro richieda più di 10 GB di spazio su disco, è consigliabile ripensare e ottimizzare il carico di lavoro per riutilizzare i piani di query, ad esempio usando parametrizzazione forzatao modificare le configurazioni di Query Store.
A partire da SQL Server 2019 (15.x) e nel database SQL di Azure è possibile impostare QUERY_CAPTURE_MODE
su CUSTOM per un controllo aggiuntivo sui criteri di acquisizione delle query.
INTERVAL_LENGTH_MINUTES
Determina l'intervallo di tempo in base a cui vengono aggregati i dati delle statistiche di esecuzione di runtime in Query Store. Per ottimizzare l'utilizzo dello spazio, le statistiche di esecuzione di runtime nell'archivio di statistiche di runtime vengono aggregate in un intervallo di tempo fisso. L'intervallo di tempo predefinito viene configurato tramite l'argomento INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES è di tipo bigint. Il valore predefinito è 60.
SIZE_BASED_CLEANUP_MODE { AUTO | OFF }
Determina se la pulizia deve essere attivata automaticamente quando la quantità totale dei dati ha quasi raggiunto le dimensioni massime.
AUTO
La pulizia basata sulle dimensioni viene attivata automaticamente quando le dimensioni del disco raggiungono 90% di MAX_STORAGE_SIZE_MB. La pulizia basata sulle dimensioni rimuove per prime le query meno recenti e meno dispendiose. Si arresta quando raggiunge all'incirca l'80% di MAX_STORAGE_SIZE_MB. Si tratta del valore di configurazione predefinito.
OFF
La pulizia basata sulle dimensioni non viene attivata automaticamente.
SIZE_BASED_CLEANUP_MODE è di tipo nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | CUSTOM | NONE }
Determina la modalità di acquisizione query attiva. Ogni modalità definisce criteri di acquisizione delle query specifici. QUERY_CAPTURE_MODE è di tipo nvarchar.
Nota
I cursori, le query all'interno delle stored procedure e le query compilate in modo nativo vengono sempre acquisiti quando la modalità di acquisizione query è impostata su ALL, AUTO o CUSTOM.
ALL
Consente di acquisire tutte le query. ALL è il valore di configurazione predefinito per SQL Server, da SQL Server 2016 (13.x) a SQL Server 2017 (14.x).
AUTO
Consente di acquisire le query pertinenti in base al conteggio delle esecuzioni e al consumo delle risorse. Si tratta del valore di configurazione predefinito per SQL Server, a partire da SQL Server 2019 (15.x), e per il database SQL di Azure.
NONE
Consente di arrestare l'acquisizione di nuove query. Query Store continua a raccogliere statistiche di compilazione e runtime per le query già acquisite. Usare questa configurazione con cautela perché potrebbe non essere possibile acquisire query importanti.
CUSTOM
Si applica a: SQL Server, a partire da SQL Server 2019 (15.x)
Consente di controllare le opzioni QUERY_CAPTURE_POLICY. I criteri di acquisizione personalizzati consentono a Query Store di acquisire le query più importanti nel carico di lavoro. Vedere <query_capture_policy_option_list> per informazioni sulle opzioni personalizzabili.
MAX_PLANS_PER_QUERY
Definisce il numero massimo di piani mantenuti per ogni query. MAX_PLANS_PER_QUERY è di tipo int. Il valore predefinito è 200.
WAIT_STATS_CAPTURE_MODE { ON | OFF }
Si applica a: SQL Server, a partire da SQL Server 2017 (14.x)
Controlla se le statistiche di attesa vengono acquisite per ogni query.
In...
Verranno acquisite informazioni sulle statistiche di attesa per ogni query. Si tratta del valore di configurazione predefinito.
OFF
Le informazioni sulle statistiche di attesa per query non vengono acquisite.
< > query_capture_policy_option_list :: =
Si applica a: SQL Server, a partire da SQL Server 2019 (15.x)
Controlla le opzioni dei criteri di acquisizione di Query Store. Ad eccezione di STALE_CAPTURE_POLICY_THRESHOLD, queste opzioni definiscono le condizioni OR che devono verificarsi perché le query vengano acquisite nel valore della soglia dei criteri di acquisizione non aggiornati definito.
A partire da SQL Server 2019 (15.x), l'impostazione QUERY_CAPTURE_MODE = AUTO
acquisisce i dettagli di Query Store quando viene raggiunta una delle soglie seguenti:
- EXECUTION_COUNT = 30 esecuzioni = numero di esecuzioni
- TOTAL_COMPILE_CPU_TIME_MS = 1 secondo = tempo di compilazione in millisecondi
- TOTAL_EXECUTION_CPU_TIME_MS = 100 ms = tempo CPU di esecuzione in millisecondi
Ad esempio:
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
È possibile personalizzare queste opzioni con QUERY_CAPTURE_MODE = CUSTOM
:
STALE_CAPTURE_POLICY_THRESHOLD = integer { DAYS | HOURS }
Definisce l'intervallo di valutazione per determinare se una query deve essere acquisita. Il valore predefinito è 1 giorno e l'intervallo può essere impostato da 1 ora a sette giorni.
EXECUTION_COUNT = integer
Definisce il numero di esecuzioni di una query nel periodo di valutazione. Il valore predefinito è 30. Questo significa che per il valore predefinito della soglia dei criteri di acquisizione non aggiornati è necessario eseguire una query almeno 30 volte al giorno perché venga salvata in modo permanente in Query Store. EXECUTION_COUNT è di tipo int.
TOTAL_COMPILE_CPU_TIME_MS = integer
Definisce il tempo CPU di compilazione trascorso totale usato da una query nel periodo di valutazione. Il valore predefinito è 1000. Questo significa che per il valore predefinito della soglia dei criteri di acquisizione non aggiornati una query deve aver usato in totale almeno un secondo di tempo CPU al giorno per la compilazione perché venga salvata in modo permanente in Query Store. TOTAL_COMPILE_CPU_TIME_MS è di tipo int.
TOTAL_EXECUTION_CPU_TIME_MS = integer
Definisce il tempo CPU di esecuzione trascorso totale usato da una query nel periodo di valutazione. Il valore predefinito è 100. Questo significa che per il valore predefinito della soglia dei criteri di acquisizione non aggiornati una query deve aver usato almeno 100 ms di tempo CPU al giorno per l'esecuzione perché venga salvata in modo permanente in Query Store. TOTAL_EXECUTION_CPU_TIME_MS è di tipo int.
< > recovery_option ::=
Si applica a: SQL Server
Controlla le opzioni di recupero del database e il controllo degli errori di I/O su disco.
FULL
Consente il recupero completo in caso di errori dei supporti tramite i backup del log delle transazioni. Se un file di dati risulta danneggiato, il recupero dei supporti consente di ripristinare tutte le transazioni di cui è stato eseguito il commit. Per altre informazioni, vedere Modelli di recupero.
BULK_LOGGED
Consente il ripristino in caso di errori dei supporti. Combina le prestazioni ottimali e la quantità minima di spazio per i log per determinate operazioni su larga scala o bulk. Per informazioni sulle operazioni che è possibile registrare al minimo, vedere Il log delle transazioni. Con il modello di recupero BULK_LOGGED vengono registrate informazioni minime per queste operazioni. Per altre informazioni, vedere Modelli di recupero.
SEMPLICE
Viene implementata una strategia di backup semplice che usano una quantità minima di spazio del log. Lo spazio dei log può essere riutilizzato automaticamente quando non è più necessario per il ripristino in seguito a errori del server. Per altre informazioni, vedere Modelli di recupero.
Importante
La gestione del modello di recupero con registrazione minima risulta più semplice rispetto agli altri due modelli, ma comporta rischi maggiori di perdita dei dati in caso di danni a un file di dati. Tutte le modifiche apportate dopo l'ultimo backup completo o differenziale del database vanno perdute ed è necessario immetterle nuovamente in modo manuale.
Il modello di recupero predefinito dipende dal modello di recupero impostato per il database di sistema model
. Per altre informazioni sulla selezione del modello di recupero appropriato, vedere Modelli di ripristino.
È possibile determinare lo stato di questa opzione esaminando le colonne recovery_model
e recovery_model_desc
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà Recovery
della funzione DATABASEPROPERTYEX.
TORN_PAGE_DETECTION { ON | OFF }
In...
Le pagine incomplete possono essere rilevate dal motore di database.
OFF
Le pagine incomplete non possono essere rilevate dal motore di database.
Importante
La struttura della sintassi TORN_PAGE_DETECTION ON | OFF verrà rimossa a partire da una delle prossime versioni di SQL Server. Evitare pertanto di usarla in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni che attualmente usano questa struttura. In alternativa, usare l'opzione PAGE_VERIFY.
PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }
Individua le pagine del database danneggiate in seguito a errori di percorso di I/O su disco. Gli errori di percorso di I/O su disco possono essere la causa di problemi di danneggiamento del database. Questi errori sono il più delle volte dovuti a interruzioni dell'alimentazione o a problemi hardware che si verificano nel momento in cui la pagina viene scritta su disco.
CHECKSUM
Calcola un checksum sul contenuto dell'intera pagina e archivia il valore nell'intestazione della pagina quando questa viene scritta su disco. In fase di lettura della pagina dal disco, il checksum viene ricalcolato e confrontato con il valore di checksum archiviato nell'intestazione della pagina. Se i valori non corrispondono, viene restituito il messaggio di errore 824 (che indica un errore di checksum) sia nel log degli errori di SQL Server sia nel registro eventi di Windows. Un errore di checksum indica un problema di percorso di I/O. Per determinare la causa principale del problema, è necessaria un'analisi accurata di hardware, driver del firmware, BIOS, driver dei filtri, ad esempio software antivirus, e altri componenti del percorso di I/O.
TORN_PAGE_DETECTION
Salva un modello a 2 bit specifico per ogni settore da 512 byte della pagina di database da 8 kilobyte (KB) e archivia tali bit nell'intestazione della pagina di database quando questa viene scritta su disco. In fase di lettura della pagina dal disco, i bit per il rilevamento di pagine incomplete archiviati nell'intestazione della pagina vengono confrontati con le informazioni effettive sui settori della pagina.
La presenza di valori non corrispondenti indica che la pagina è stata scritta su disco solo in parte. In questa situazione viene restituito il messaggio di errore 824 (che indica un errore di pagina incompleta) sia nel log degli errori di SQL Server sia nel registro eventi di Windows. Le pagine incomplete vengono generalmente rilevate durante il recupero del database, se si tratta effettivamente di un problema di scrittura incompleta di una pagina. Altri errori di percorso di I/O possono tuttavia causare in qualsiasi momento pagine incomplete.
NONE
Le scritture di pagine del database non generano un valore CHECKSUM o TORN_PAGE_DETECTION. SQL Server non verifica un checksum o una pagina divisa durante una lettura anche se un valore CHECKSUM o TORN_PAGE_DETECTION è presente nell'intestazione della pagina.
Per l'utilizzo dell'opzione PAGE_VERIFY, è importante tenere presente quanto segue:
L'impostazione predefinita è CHECKSUM.
Quando un database utente o di sistema viene aggiornato a SQL Server 2005 (9.x) o a una versione successiva, il valore di PAGE_VERIFY (NONE o TORN_PAGE_DETECTION) resta invariato. È consigliabile usare CHECKSUM.
Nota
Nelle versioni precedenti di SQL Server l'opzione di database PAGE_VERIFY è impostata su NONE per il database
tempdb
e non può essere modificata. A partire da SQL Server 2008 (10.0.x), il valore predefinito per iltempdb
database è CHECKSUM per le nuove installazioni di SQL Server. Quando si aggiorna un'installazione di SQL Server, viene mantenuto il valore predefinito NONE. L'opzione può essere modificata. È consigliabile usare CHECKSUM per il databasetempdb
.TORN_PAGE_DETECTION potrebbero usare meno risorse, ma fornisce un subset minimo della protezione CHECKSUM.
È possibile impostare PAGE_VERIFY senza attivare la modalità offline per il database, senza bloccarlo o senza impedire in altro modo la concorrenza nel database.
Le opzioni CHECKSUM e TORN_PAGE_DETECTION si escludono a vicenda. Non è possibile abilitare contemporaneamente entrambe le opzioni.
Se viene rilevato un errore di pagina incompleta o di checksum, è possibile eseguire il recupero tramite il ripristino dei dati o potenzialmente tramite la ricompilazione dell'indice se l'errore è limitato alle pagine di indice. Se si verifica un errore di checksum, eseguire DBCC CHECKDB per determinare il tipo della pagina o delle pagine del database interessate dal problema. Per altre informazioni sulle opzioni di ripristino, vedere Argomenti RESTORE. Anche se il ripristino dei dati risolve il problema di danneggiamento dei dati, la causa radice (ad esempio, l'errore hardware del disco) deve essere diagnosticata e corretta il prima possibile per evitare errori continui.
SQL Server ritenta tutte le operazioni di lettura che hanno esito negativo con un checksum, una pagina interrotta o un altro errore di I/O quattro volte. Se la lettura riesce con uno dei tentativi, viene scritto un messaggio nel log degli errori. Il comando che ha attivato la lettura continua. Il comando ha esito negativo e viene visualizzato il messaggio di errore 824 se i tentativi hanno esito negativo.
Per altre informazioni sui messaggi di errore 823, 824 e 825, vedere:
- Risolvere l'errore MSSQLSERVER 823
- Risolvere i problemi relativi all'errore MSSQLSERVER 824
- Risolvere l'errore MSSQLSERVER 825 (ripetizione lettura).
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna page_verify_option
nella vista del catalogo sys.databases o la proprietà IsTornPageDetectionEnabled
della funzione DATABASEPROPERTYEX.
< > remote_data_archive_option ::=
Si applica a: SQL Server, a partire da SQL Server 2016 (13.x)
Abilita o disabilita Stretch Database per il database. Per ulteriori informazioni, vedere Stretch Database.
Importante
Stretch Database è deprecato in SQL Server 2022 (16.x) e database SQL di Azure. Questa funzionalità verrà rimossa nelle versioni future del motore di database. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
REMOTE_DATA_ARCHIVE = { ON ( SERVER = <server_name>, { CREDENTIAL = <db_scoped_credential_name> | FEDERATED_SERVICE_ACCOUNT = ON | OFF } ) | SPENTO
In...
Abilita o disabilita Stretch Database per il database. Per altre informazioni, inclusi i prerequisiti aggiuntivi, vedere Abilitare Stretch Database per un database.
Richiede l'autorizzazione
db_owner
per abilitare Stretch Database per una tabella. Richiede le autorizzazionidb_owner
eCONTROL DATABASE
per abilitare Stretch Database per un database.SERVER = <server_name>
Specifica l'indirizzo del server di Azure. Includere la parte
.database.windows.net
del nome. Ad esempio:MyStretchDatabaseServer.database.windows.net
.CREDENTIAL = <db_scoped_credential_name>
Specifica la credenziale con ambito database usata dall'istanza di SQL Server per connettersi al server di Azure. Assicurarsi dell'esistenza della credenziale prima di eseguire questo comando. Per altre informazioni, vedere CREATE DATABASE SCOPED CREDENTIAL.
FEDERATED_SERVICE_ACCOUNT = { ON | OFF }
È possibile usare un account del servizio federato per SQL Server locale per comunicare con il server di Azure remoto quando vengono soddisfatte tutte le condizioni seguenti.
- L'account del servizio usato per l'esecuzione dell'istanza di SQL Server è un account di dominio.
- L'account di dominio appartiene a un dominio di cui Active Directory è federato con l'ID Microsoft Entra.
- Il server Azure remoto è configurato per supportare l'autenticazione di Microsoft Entra.
- L'account del servizio in cui è in esecuzione l'istanza di SQL Server deve essere configurato come account
dbmanager
osysadmin
nel server di Azure remoto.
Se si specifica che l'account del servizio federato è impostato su ON, è anche possibile specificare l'argomento CREDENTIAL. Se si specifica OFF, è necessario fornire l'argomento CREDENTIAL.
OFF
Disabilita Stretch Database per il database. Per altre informazioni, vedere Disabilitare Stretch Database e ripristinare i dati remoti.
È possibile disabilitare Stretch Database per un database solo quando il database non contiene più tutte le tabelle abilitate per Stretch Database. Dopo aver disabilitato Stretch Database, la migrazione dei dati si interrompe. Inoltre, i risultati delle query non includono più i risultati delle tabelle remote.
La disabilitazione di Stretch Database non comporta la rimozione del database remoto. Per eliminare il database remoto, usare il portale di Azure.
PERSISTENT_LOG_BUFFER
si applica a: SQL Server 2017 (14.x) e versioni successive.
Quando si specifica questa opzione, il buffer del log delle transazioni viene creato in un volume che si trova in un dispositivo disco supportato dalla memoria della classe di archiviazione (NVDIMM-N archiviazione non volatile), nota anche come buffer di log persistente. Per altre informazioni, vedere
< > service_broker_option ::=
Si applica a: SQL Server
Controlla queste opzioni di Service Broker: abilitazione o disabilitazione del recapito dei messaggi, impostazione di un nuovo identificatore di Service Broker o impostazione delle priorità di conversazione su ON o su OFF.
ENABLE_BROKER
Indica che Service Broker è abilitato per il database specificato. Il recapito dei messaggi viene avviato e il flag is_broker_enabled
è impostato su true nella vista del catalogo sys.databases. Il database mantiene l'identificatore di Service Broker esistente. Service Broker non può essere abilitato se il database è il database principale in una configurazione di mirroring.
Nota
ENABLE_BROKER richiede un blocco esclusivo a livello di database. Se altre sessioni hanno bloccato le risorse nel database, ENABLE_BROKER attende fino a quando le altre sessioni non rilasciano i blocchi. Per abilitare Service Broker in un database utente, assicurarsi che nessun'altra sessione usi il database prima di eseguire l'istruzione ALTER DATABASE SET ENABLE_BROKER
, ad esempio impostando il database in modalità utente singolo. Per abilitare Service Broker nel msdb
database, arrestare prima SQL Server Agent in modo che Service Broker possa ottenere il blocco necessario.
DISABLE_BROKER
Indica che Service Broker è disabilitato per il database specificato. Il recapito dei messaggi viene arrestato e il flag is_broker_enabled
è impostato su false nella vista del catalogo sys.databases. Il database mantiene l'identificatore di Service Broker esistente.
NEW_BROKER
Specifica che al database deve essere assegnato un nuovo identificatore di Service Broker. Il database funge da nuovo Service Broker. Di conseguenza, tutte le conversazioni esistenti nel database vengono rimosse immediatamente senza generare messaggi di fine dialogo. Tutte le route che fanno riferimento all'identificatore di Service Broker precedente devono essere ricreate con il nuovo identificatore.
ERROR_BROKER_CONVERSATIONS
Specifica che il recapito dei messaggi di Service Broker è abilitato. Questa impostazione mantiene l'identificatore di Service Broker esistente per il database. Service Broker termina tutte le conversazioni nel database con un errore. Questa impostazione consente alle applicazioni di eseguire operazioni regolari di pulizia per le conversazioni esistenti.
HONOR_BROKER_PRIORITY { ON | OFF }
In...
Per le operazioni di invio vengono presi in considerazione i livelli di priorità assegnati alle conversazioni. I messaggi provenienti da conversazioni con livelli di priorità alti vengono inviati prima dei messaggi provenienti da conversazioni con livelli di priorità bassi.
OFF
Le operazioni di invio vengono eseguite come se a tutte le conversazioni fosse assegnato il livello di priorità predefinito.
Le modifiche all'opzione HONOR_BROKER_PRIORITY vengono applicate immediatamente ai nuovi dialoghi o ai dialoghi per cui non vi sono messaggi in attesa di essere inviati. Le finestre di dialogo con messaggi da inviare quando si esegue ALTER DATABASE non recuperano la nuova impostazione finché non vengono inviati alcuni messaggi per la finestra di dialogo. La quantità di tempo che deve trascorrere prima che la nuova impostazione venga usata per tutti i dialoghi può variare notevolmente.
L'impostazione corrente di questa proprietà è indicata nella colonna is_broker_priority_honored
nella vista del catalogo sys.databases.
< > snapshot_option ::=
Calcola il livello di isolamento delle transazioni.
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
In...
Abilita l'opzione relativa allo snapshot a livello di database. Se questa opzione è abilitata, le istruzioni DML iniziano a generare versioni di riga anche quando nessuna transazione usa l'isolamento dello snapshot. Una volta abilitata l'opzione, le transazioni possono specificare il livello di isolamento della transazione SNAPSHOT. Nelle transazioni eseguite con il livello di isolamento SNAPSHOT, tutte le istruzioni possono accedere a uno snapshot dei dati corrispondente allo stato dei dati al momento dell'avvio della transazione. Se una transazione eseguita con il livello di isolamento SNAPSHOT deve accedere ai dati in più database, è necessario impostare ALLOW_SNAPSHOT_ISOLATION su ON in tutti i database oppure ogni istruzione della transazione deve usare hint di blocco per qualsiasi riferimento in una clausola FROM a una tabella di un database per cui l'opzione ALLOW_SNAPSHOT_ISOLATION è impostata su OFF.
OFF
Consente di disabilitare l'opzione Snapshot a livello di database. Per le transazioni non può essere impostato il livello di isolamento SNAPSHOT.
Quando si imposta un nuovo stato per l'opzione ALLOW_SNAPSHOT_ISOLATION (da ON a OFF oppure da OFF a ON), ALTER DATABASE restituisce il controllo al chiamante solo dopo il completamento del commit di tutte le transazioni esistenti nel database. Se per il database è già attivo lo stato specificato nell'istruzione ALTER DATABASE, il controllo viene restituito immediatamente al chiamante. Se l'istruzione ALTER DATABASE non restituisce il controllo rapidamente, usare sys.dm_tran_active_snapshot_database_transactions per verificare se sono presenti transazioni con esecuzione prolungata. Se l'istruzione ALTER DATABASE viene annullata, il database rimane nello stato attivo al momento dell'avvio dell'istruzione ALTER DATABASE. La vista del catalogo sys.databases indica lo stato delle transazioni di isolamento dello snapshot nel database. Se snapshot_isolation_state_desc
= IN_TRANSITION_TO_ON, il comando ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF
sospende sei secondi e ritenta l'operazione.
Non è possibile cambiare lo stato di ALLOW_SNAPSHOT_ISOLATION se il database è OFFLINE.
Se si imposta ALLOW_SNAPSHOT_ISOLATION in un database READ_ONLY, l'impostazione viene mantenuta se il database viene impostato successivamente su READ_WRITE.
È possibile modificare le impostazioni di ALLOW_SNAPSHOT_ISOLATION per i database master
, model
, msdb
e tempdb
. Se si modifica l'impostazione per tempdb
, l'impostazione viene mantenuta ogni volta che l'istanza del motore di database viene arrestata e riavviata. Se si modifica l'impostazione per model
, questa diventa l'impostazione predefinita per i nuovi database creati, ad eccezione di tempdb
.
Per impostazione predefinita, l'opzione è ON per i database master
e msdb
.
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna snapshot_isolation_state
nella vista del catalogo sys.databases.
READ_COMMITTED_SNAPSHOT { ON | OFF }
In...
Abilita l'opzione relativa allo snapshot Read Committed a livello di database. Se questa opzione è abilitata, le istruzioni DML iniziano a generare versioni di riga anche quando nessuna transazione usa l'isolamento dello snapshot. Una volta abilitata questa opzione, le transazioni che specificano il livello di isolamento Read committed usano il controllo delle versioni delle righe anziché il blocco. Quando una transazione viene eseguita con il livello di isolamento READ COMMITTED, tutte le istruzioni vedono uno snapshot dei dati nello stato in cui si trovano all'avvio dell'istruzione.
OFF
Disabilita l'opzione relativa allo snapshot Read Committed a livello di database. Le transazioni per cui è impostato il livello di isolamento READ COMMITTED usano il blocco.
Per impostare READ_COMMITTED_SNAPSHOT su ON o su OFF, è necessario che non siano presenti connessioni attive al database, ad eccezione della connessione usata per eseguire il comando ALTER DATABASE. Non è tuttavia necessario che il database sia in modalità utente singolo. Non è possibile cambiare lo stato di questa opzione quando il database è OFFLINE.
Se si imposta READ_COMMITTED_SNAPSHOT in un database READ_ONLY, l'impostazione viene mantenuta quando il database viene impostato successivamente su READ_WRITE.
Non è possibile impostare READ_COMMITTED_SNAPSHOT su ON per i database di sistema master
, tempdb
e msdb
. Se si modifica l'impostazione per model
, questa diventa l'impostazione predefinita per i nuovi database creati, ad eccezione di tempdb
.
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna is_read_committed_snapshot_on
nella vista del catalogo sys.databases.
Avviso
Quando viene creata una tabella con DURABILITY = SCHEMA_ONLYe READ_COMMITTED_SNAPSHOT viene successivamente modificata usando ALTER DATABASE, i dati nella tabella vengono persi.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
Si applica a: SQL Server, a partire da SQL Server 2014 (12.x)
In...
Quando l'isolamento della transazione è impostato su un livello inferiore a SNAPSHOT, tutte le operazioni interpretate di Transact-SQL nelle tabelle ottimizzate per la memoria vengono eseguite con isolamento SNAPSHOT. I livelli di isolamento inferiori a SNAPSHOT sono, ad esempio, READ COMMITTED e READ UNCOMMITTED. Queste operazioni vengono eseguite indipendentemente dal fatto che venga impostato in modo esplicito il livello di isolamento della transazione a livello di sessione o che venga usata in modo implicito l'impostazione predefinita.
OFF
Non innalza il livello di isolamento della transazione per le operazioni interpretate di Transact-SQL nelle tabelle ottimizzate per la memoria.
Non è possibile cambiare lo stato di MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT se il database è OFFLINE.
L'impostazione predefinita è OFF.
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna is_memory_optimized_elevate_to_snapshot_on
nella vista del catalogo sys.databases.
< > sql_option ::=
Controlla le opzioni di conformità ANSI a livello di database.
ANSI_NULL_DEFAULT { ON | OFF }
Determina il valore predefinito, NULL o NOT NULL, per una colonna o un tipo CLR definito dall'utente per cui il supporto dei valori Null non è definito in modo esplicito nell'istruzione CREATE TABLE o ALTER TABLE. Le colonne definite con vincoli seguono regole di vincolo indipendentemente da questa impostazione.
In...
Il valore predefinito di una colonna non definita è NULL.
OFF
Il valore predefinito di una colonna non definita è NOT NULL.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per ANSI_NULL_DEFAULT. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta ANSI_NULL_DEFAULT su ON per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET ANSI_NULL_DFLT_ON.
Per motivi di compatibilità con ANSI, l'impostazione dell'opzione di database ANSI_NULL_DEFAULT su ON modifica l'impostazione predefinita del database su NULL.
È possibile determinare lo stato di questa opzione esaminando la colonna is_ansi_null_default_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAnsiNullDefault
della funzione DATABASEPROPERTYEX.
ANSI_NULLS { ON | OFF }
In...
Tutti i confronti con un valore Null restituiscono UNKNOWN.
OFF
I confronti di valori non Unicode con un valore Null restituiscono TRUE se entrambi i valori sono NULL.
Importante
In una versione futura di SQL Server l'opzione ANSI_NULLS sarà sempre impostata su ON e qualsiasi applicazione che imposti in modo esplicito questa opzione su OFF genererà un errore. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per ANSI_NULLS. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta ANSI_NULLS su ON per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET ANSI_NULLS.
Importante
È inoltre necessario che l'opzione SET ANSI_NULLS sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
È possibile determinare lo stato di questa opzione esaminando la colonna is_ansi_nulls_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAnsiNullsEnabled
della funzione DATABASEPROPERTYEX.
ANSI_PADDING { ON | OFF }
In...
Le stringhe vengono riempite in modo che abbiano tutte la stessa lunghezza prima della conversione. o dell'inserimento in un tipo di dati varchar o nvarchar.
OFF
Vengono inseriti spazi vuoti finali nei valori di tipo carattere in colonne di tipo varchar o nvarchar. Vengono inoltre lasciati gli zeri finali nei valori binari inseriti nelle colonne di tipo varbinary. I valori non vengono riempiti per l'intera lunghezza della colonna.
Se si specifica OFF, questa impostazione ha effetto solo sulla definizione di nuove colonne.
Importante
In una versione futura di SQL Server l'opzione ANSI_PADDING sarà sempre impostata su ON e qualsiasi applicazione che imposti in modo esplicito questa opzione su OFF genererà un errore. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. È consigliabile impostare l'opzione ANSI_PADDING sempre su ON. È necessario che l'opzione ANSI_PADDING sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
Le colonne char(n) e binary(n) che consentono valori Null vengono riempite fino alla loro lunghezza quando ANSI_PADDING è impostata su ON. I valori vuoti e gli zeri finali vengono eliminati quando ANSI_PADDING è impostata su OFF. Le colonne char(n) e binary(n) che non consentono valori Null vengono sempre riempite fino alla loro lunghezza.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per ANSI_PADDING. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta ANSI_PADDING su ON per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET ANSI_PADDING.
È possibile determinare lo stato di questa opzione esaminando la colonna is_ansi_padding_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAnsiPaddingEnabled
della funzione DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | OFF }
In...
Vengono restituiti messaggi di errore o di avviso quando si verificano condizioni come la divisione per zero e inoltre quando nelle funzioni di aggregazione sono presenti valori Null.
OFF
Non vengono generati avvisi e vengono restituiti valori Null quando si verificano condizioni come la divisione per zero.
Importante
È necessario che l'opzione ANSI_WARNINGS sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per ANSI_WARNINGS. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta ANSI_WARNINGS su ON per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET ANSI_WARNINGS.
È possibile determinare lo stato di questa opzione esaminando la colonna is_ansi_warnings_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAnsiWarningsEnabled
della funzione DATABASEPROPERTYEX.
ARITHABORT { ON | OFF }
In...
Interrompe una query quando si verifica un overflow o un errore di divisione per zero durante l'esecuzione della query stessa.
OFF
Quando si verifica uno di questi errori, viene visualizzato un messaggio di avviso. L'esecuzione della query, del batch o della transazione prosegue come se non si fosse verificato alcun errore, anche se viene visualizzato un messaggio di avviso.
Importante
È necessario che l'opzione ARITHABORT sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
È possibile determinare lo stato di questa opzione esaminando la colonna is_arithabort_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsArithmeticAbortEnabled
della funzione DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Per altre informazioni, vedere livello di compatibilità ALTER DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | OFF }
In...
Il risultato di un'operazione di concatenazione è NULL quando uno degli operandi è NULL. La concatenazione della stringa di caratteri "Questo è" con NULL restituisce, ad esempio, il valore NULL anziché il valore "Questo è".
OFF
Il valore Null viene considerato come una stringa di caratteri vuota.
Importante
È necessario che l'opzione CONCAT_NULL_YIELDS_NULL sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
Nelle versioni future di SQL Server l'opzione CONCAT_NULL_YIELDS_NULL sarà sempre impostata su ON e qualsiasi applicazione che imposti in modo esplicito l'opzione su OFF restituirà un errore. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per CONCAT_NULL_YIELDS_NULL. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta CONCAT_NULL_YIELDS_NULL su ON per la sessione quando viene stabilita una connessione a un'istanza di SQL Server. Per altre informazioni, vedere SET CONCAT_NULL_YIELDS_NULL.
È possibile determinare lo stato di questa opzione esaminando la colonna is_concat_null_yields_null_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsNullConcat
della funzione DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | OFF }
In...
Viene generato un errore quando si verifica una perdita di precisione in un'espressione.
OFF
La perdita di precisione non genera messaggi di errore e il risultato viene arrotondato alla precisione della colonna o della variabile in cui viene archiviato.
Importante
È necessario che l'opzione NUMERIC_ROUNDABORT sia impostata su OFF quando vengono creati o modificati indici in colonne calcolate o viste indicizzate.
È possibile determinare lo stato di questa opzione nella colonna is_numeric_roundabort_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsNumericRoundAbortEnabled
della funzione DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | OFF }
In...
È possibile usare le virgolette doppie per delimitare gli identificatori delimitati.
Tutte le stringhe delimitate da virgolette doppie vengono interpretate come identificatori di oggetto. Gli identificatori delimitati non devono necessariamente essere conformi alle regole di Transact-SQL per gli identificatori. Possono essere parole chiave e includere caratteri normalmente non consentiti negli identificatori di Transact-SQL. Se una virgoletta doppia (
"
) fa parte dell'identificatore, può essere rappresentata da due virgolette doppie (""
).OFF
Gli identificatori non possono essere delimitati da virgolette e devono essere conformi a tutte le regole di Transact-SQL per gli identificatori. È possibile delimitare i valori letterali con virgolette singole o doppie.
SQL Server consente anche di delimitare gli identificatori in base alle parentesi quadre ([
e ]
). Gli identificatori tra parentesi quadre possono essere sempre usati, indipendentemente dall'impostazione di QUOTED_IDENTIFIER. Per altre informazioni, vedere identificatori di database .
Quando viene creata una tabella, l'opzione QUOTED IDENTIFIER viene sempre archiviata con l'impostazione ON nei relativi metadati, anche se l'opzione è impostata su OFF.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per QUOTED_IDENTIFIER. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta QUOTED_IDENTIFIER. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET QUOTED_IDENTIFIER.
È possibile determinare lo stato di questa opzione esaminando la colonna is_quoted_identifier_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsQuotedIdentifiersEnabled
della funzione DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | OFF }
In...
È consentita l'attivazione ricorsiva di trigger AFTER.
OFF
È possibile determinare lo stato di questa opzione esaminando la colonna
is_recursive_triggers_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietàIsRecursiveTriggersEnabled
della funzione DATABASEPROPERTYEX.
Nota
Se l'opzione RECURSIVE_TRIGGERS è impostata su OFF, viene impedita esclusivamente la ricorsione diretta. Per disabilitare la ricorsione indiretta, è necessario impostare anche l'opzione del server nested triggers su 0.
È possibile determinare lo stato di questa opzione esaminando la colonna is_recursive_triggers_on
nella vista del catalogo sys.databases o la proprietà IsRecursiveTriggersEnabled
della funzione DATABASEPROPERTYEX.
< > suspend_for_snapshot_backup ::=
Si applica a: SQL Server, a partire da SQL Server 2022 (16.x)
Sospende i database per il backup di snapshot. Può definire un gruppo di uno o più database. Può designare la modalità di sola copia.
SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF }
Sospende o annulla la sospensione dei database. OFF predefinito.
MODE = COPY_ONLY
Facoltativo. Usa la modalità COPY_ONLY.
< > target_recovery_time_option ::=
Si applica a: SQL Server, a partire da SQL Server 2012 (11.x)
Specifica la frequenza di checkpoint indiretti per database singolo. A partire da SQL Server 2016 (13.x), il valore predefinito per i nuovi database è 1 minuto, che indica che il database usa checkpoint indiretti. Per le versioni precedenti, il valore predefinito è 0, che indica che il database usa checkpoint automatici, la cui frequenza dipende dall'impostazione dell'intervallo di recupero dell'istanza del server. Microsoft consiglia di usare 1 minuto per la maggior parte dei sistemi.
TARGET_RECOVERY_TIME = tempo_recupero_riferimento { SECONDS | MINUTES }
target_recovery_time
Specifica il limite massimo di tempo per recuperare il database specificato in caso di un arresto anomalo del sistema. target_recovery_time è di tipo int.
SECONDS
Indica che target_recovery_time viene espresso come numero di secondi.
MINUTI
Indica che target_recovery_time viene espresso come numero di minuti.
Per altre informazioni sui checkpoint indiretti, vedere Checkpoint del database.
WITH <terminazione> ::=
Specifica quando eseguire il rollback di transazioni incomplete in caso di transizione dello stato del database. Se questa clausola viene omessa, l'attesa da parte dell'istruzione ALTER DATABASE è illimitata in presenza di qualsiasi blocco attivo sul database. È possibile specificare una sola clausola di terminazione, che deve seguire le clausole SET.
Nota
Non tutte le opzioni di database usano la clausola WITH <termination>. Per altre informazioni, vedere la tabella in Impostazione delle opzioni nella sezione "Osservazioni" di questo articolo.
ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
Specifica se eseguire il rollback dopo il numero di secondi specificato o immediatamente.
NO_WAIT
Specifica che la richiesta ha esito negativo se lo stato o l'opzione del database richiesto non può essere completata immediatamente. senza aspettare il commit o il rollback automatico delle transazioni.
Impostare le opzioni
Per recuperare le impostazioni correnti delle opzioni di database, usare la vista del catalogo sys.databases o DATABASEPROPERTYEX
Dopo l'impostazione di un'opzione di database, la modifica diventa effettiva immediatamente.
Per cambiare i valori predefiniti di qualsiasi opzione di database per tutti i nuovi database, A questo scopo, modificare l'opzione di database appropriata nel database model
.
Non tutte le opzioni di database usano la clausola WITH <termination> o possono essere specificate in combinazione con altre opzioni. Nella tabella seguente sono elencate tali opzioni con indicazione del supporto della clausola di terminazione o dell'impostazione in combinazione con altre opzioni.
Categoria di opzioni | Impostazione in combinazione con altre opzioni | Supporto della clausola WITH <termination> |
---|---|---|
<db_state_option> | Sì | Sì |
<db_user_access_option> | Sì | Sì |
<db_update_option> | Sì | Sì |
<delayed_durability_option> | Sì | Sì |
<external_access_option> | Sì | No |
<cursor_option> | Sì | No |
<auto_option> | Sì | No |
<sql_option> | Sì | No |
<recovery_option> | Sì | No |
<target_recovery_time_option> | No | Sì |
<database_mirroring_option> | No | No |
ALLOW_SNAPSHOT_ISOLATION | No | No |
READ_COMMITTED_SNAPSHOT | No | Sì |
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Sì | Sì |
<service_broker_option> | Sì | No |
DATE_CORRELATION_OPTIMIZATION | Sì | Sì |
<parameterization_option> | Sì | Sì |
<change_tracking_option> | Sì | Sì |
<db_encryption_option> | Sì | No |
<accelerated_database_recovery> | Sì | Sì |
La cache dei piani per l'istanza di SQL Server viene cancellata quando si imposta una delle opzioni seguenti:
OFFLINE
ONLINE
MODIFY_NAME
COLLATE
READ_ONLY
READ_WRITE
MODIFY FILEGROUP DEFAULT
MODIFY FILEGROUP READ_WRITE
MODIFY FILEGROUP READ_ONLY
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.
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.
Esempi
R. Impostare le opzioni in un database
Nell'esempio seguente vengono impostate le opzioni relative al modello di recupero e alla verifica delle pagine di dati per il database di esempio AdventureWorks2022
.
USE master;
GO
ALTER DATABASE [database_name]
SET RECOVERY FULL PAGE_VERIFY CHECKSUM;
GO
B. Impostare il database su READ_ONLY
Per modificare lo stato di un database o di un filegroup impostandolo su READ_ONLY o READ_WRITE, è necessario l'accesso esclusivo al database. Nell'esempio seguente viene impostata la modalità SINGLE_USER
per il database in modo da ottenere l'accesso esclusivo. Nell'esempio lo stato del database AdventureWorks2022
viene quindi impostato su READ_ONLY
e viene ripristinato l'accesso al database per tutti gli utenti.
Nota
In questo esempio viene usata l'opzione di terminazione WITH ROLLBACK IMMEDIATE
nella prima istruzione ALTER DATABASE
. Viene eseguito il rollback di tutte le transazioni incomplete e tutte le altre connessioni al database AdventureWorks2022
vengono immediatamente disconnesse.
USE master;
GO
ALTER DATABASE [database_name]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO
C. Abilitare l'isolamento dello snapshot in un database
Nell'esempio seguente viene abilitata l'opzione relativa al framework di isolamento dello snapshot per il database AdventureWorks2022
.
USE [database_name];
USE master;
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check the state of the snapshot_isolation_framework
-- in the database.
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'[database_name]';
GO
Il set di risultati indica che il framework di isolamento dello snapshot è abilitato.
name | snapshot_isolation_state | description |
---|---|---|
[database_name] | 1 | In... |
D. Abilitare, modificare o disabilitare il rilevamento delle modifiche
Nell'esempio seguente viene abilitato il rilevamento delle modifiche per il database AdventureWorks2022
e il periodo di memorizzazione viene impostato su 2
giorni.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
Nell'esempio seguente viene illustrato come modificare il periodo di memorizzazione impostandolo su 3
giorni.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
Nell'esempio seguente viene illustrato come disabilitare il rilevamento delle modifiche per il database AdventureWorks2022
.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
E. Abilitare Query Store
Si applica a: SQL Server, a partire da SQL Server 2016 (13.x)
L'esempio seguente abilita Query Store e configura i relativi parametri.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60
);
F. Abilitare Query Store con statistiche di attesa
Si applica a: SQL Server, a partire da SQL Server 2017 (14.x)
L'esempio seguente abilita Query Store e configura i relativi parametri.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
);
G. Abilitare Query Store con opzioni dei criteri di acquisizione personalizzati
Si applica a: SQL Server, a partire da SQL Server 2019 (15.x)
L'esempio seguente abilita Query Store e configura i relativi parametri.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Contenuto correlato
- Statistica
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- livello di compatibilità ALTER DATABASE
- Mirroring del database ALTER DATABASE
- ALTER DATABASE SET HADR
- CREATE DATABASE
- abilitare e disabilitare il rilevamento delle modifiche (SQL Server)
- DROP DATABASE (Transact-SQL)
- SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
- sp_configure
- Procedure consigliate per il monitoraggio dei carichi di lavoro con Query Store
* Database SQL *
Database SQL
I livelli di compatibilità sono SET
opzioni, ma sono descritti in livello di compatibilità ALTER DATABASE.
Nota
Molte opzioni SET di database possono essere configurate per la sessione corrente tramite Istruzioni SET e spesso vengono configurate dalle applicazioni durante la connessione. Le opzioni del set a livello di sessione sostituiscono i ALTER DATABASE SET
valori. Le opzioni di database descritte nelle sezioni seguenti sono valori che è possibile impostare per le sessioni che non prevedono esplicitamente altri valori di opzioni SET.
Sintassi
ALTER DATABASE { database_name | Current }
SET
{
<option_spec> [ ,...n ] [ WITH <termination> ]
}
;
<option_spec> ::=
{
<auto_option>
| <automatic_tuning_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>
}
;
<auto_option> ::=
{
AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<automatic_tuning_option> ::=
{
AUTOMATIC_TUNING = { AUTO | INHERIT | CUSTOM }
| AUTOMATIC_TUNING ( CREATE_INDEX = { DEFAULT | ON | OFF } )
| AUTOMATIC_TUNING ( DROP_INDEX = { DEFAULT | ON | OFF } )
| AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [,...n] ) ]
| ( <change_tracking_option_list> [,...n] )
}
}
<change_tracking_option_list> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<cursor_option> ::=
{
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
}
<db_encryption_option> ::=
ENCRYPTION { ON | OFF }
<db_update_option> ::=
{ READ_ONLY | READ_WRITE }
<db_user_access_option> ::=
{ RESTRICTED_USER | MULTI_USER }
<delayed_durability_option> ::= DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
<parameterization_option> ::=
PARAMETERIZATION { SIMPLE | FORCED }
<query_store_options> ::=
{
QUERY_STORE
{
= OFF
| = ON [ ( <query_store_option_list> [,... n] ) ]
| ( < query_store_option_list> [,... n] )
| CLEAR [ ALL ]
}
}
<query_store_option_list> ::=
{
OPERATION_MODE = { READ_WRITE | READ_ONLY }
| CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
| DATA_FLUSH_INTERVAL_SECONDS = number
| MAX_STORAGE_SIZE_MB = number
| INTERVAL_LENGTH_MINUTES = number
| SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
| QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
| MAX_PLANS_PER_QUERY = number
| WAIT_STATS_CAPTURE_MODE = { ON | OFF }
| QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}
<query_capture_policy_option_list> :: =
{
STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
| EXECUTION_COUNT = number
| TOTAL_COMPILE_CPU_TIME_MS = number
| TOTAL_EXECUTION_CPU_TIME_MS = number
}
<snapshot_option> ::=
{
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
| READ_COMMITTED_SNAPSHOT { ON | OFF }
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<termination>::=
{
ROLLBACK AFTER integer [ SECONDS ]
| ROLLBACK IMMEDIATE
| NO_WAIT
}
<temporal_history_retention>::=TEMPORAL_HISTORY_RETENTION { ON | OFF }
Argomenti
database_name
Nome del database da modificare.
CURRENT
CURRENT
esegue l'azione nel database corrente.CURRENT
non è supportato per tutte le opzioni in tutti i contesti. In caso di errore diCURRENT
, specificare il nome del database.
< > auto_option ::=
Consente di controllare le opzioni automatiche.
AUTO_CREATE_STATISTICS { ON | OFF }
In...
Query Optimizer crea statistiche per colonne singole nei predicati di query, se necessario, per migliorare i piani di query e le prestazioni di esecuzione delle query. Queste statistiche per colonne singole vengono create quando Query Optimizer compila le query. Vengono create solo sulle colonne che non sono già le prime di un oggetto statistiche esistente.
Il valore predefinito è ON. È consigliabile usare l'impostazione predefinita per la maggior parte dei database.
OFF
Query Optimizer non crea statistiche sulle singole colonne nei predicati di query durante la compilazione delle query. L'impostazione di questa opzione su OFF può determinare piani di query e prestazioni di esecuzione delle query non ottimali.
È possibile determinare lo stato di questa opzione esaminando la colonna is_auto_create_stats_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAutoCreateStatistics
della funzione DATABASEPROPERTYEX.
Per altre informazioni, vedere la sezione sulle opzioni relative alle statistiche in Statistiche.
INCREMENTAL = ON | OFF
Imposta AUTO_CREATE_STATISTICS su ON e INCREMENTAL su ON. Questa impostazione crea automaticamente statistiche incrementali ogni volta che sono supportate. Il valore predefinito è OFF. Per altre informazioni, vedere CREATE STATISTICS.
AUTO_SHRINK { ON | OFF }
In...
I file di database vengono compattati periodicamente, se necessario. A meno che non si disponga di un requisito specifico, non impostare l'opzione di database AUTO_SHRINK su ON. Per altre informazioni, vedere Compattare un database.
È possibile compattare automaticamente sia i file di dati sia i file di log. AUTO_SHRINK riduce le dimensioni del log delle transazioni solo se per il database è impostato il modello di recupero con registrazione minima oppure se viene eseguito il backup del log. Se questa opzione è impostata su OFF, i file di database non vengono compattati automaticamente durante i controlli periodici per verificare la presenza di spazio inutilizzato.
Con l'opzione AUTO_SHRINK i file vengono compattati quando più del 25% dello spazio del file risulta inutilizzato. L'opzione causa il compattamento del file in una di due dimensioni, ossia la più grande tra:
- La dimensione in cui il 25% del file è costituito da spazio inutilizzato
- La dimensione del file quando è stato creato
Non è possibile compattare un database di sola lettura.
OFF
I file di database non vengono compattati automaticamente durante i controlli periodici per lo spazio inutilizzato.
È possibile determinare lo stato di questa opzione esaminando la colonna is_auto_shrink_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAutoShrink
della funzione DATABASEPROPERTYEX.
Nota
L'opzione AUTO_SHRINK non è disponibile in un database indipendente.
AUTO_UPDATE_STATISTICS { ON | OFF }
In...
Specifica che Query Optimizer aggiorna le statistiche quando queste vengono usate da una query e quando potrebbero non essere aggiornate. 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.
Query Optimizer controlla la presenza di statistiche non aggiornate prima di compilare una query e di eseguire un piano di query memorizzato nella cache. Usa le colonne, le tabelle e le viste indicizzate nel predicato di query per determinare quali statistiche potrebbero non essere aggiornate. Query Optimizer verifica questa possibilità prima di compilare una query. Prima di eseguire un piano di query memorizzato nella cache, il motore di database verifica che il piano di query faccia riferimento a statistiche aggiornate.
L'opzione AUTO_UPDATE_STATISTICS_ASYNC si applica alle statistiche create per indici, colonne singole nei predicati di query e statistiche create con l'istruzione CREATE STATISTICS. Questa opzione si applica anche alle statistiche filtrate.
Il valore predefinito è ON. È consigliabile usare l'impostazione predefinita per la maggior parte dei database.
Usare l'opzione AUTO_UPDATE_STATISTICS_ASYNC per specificare se le statistiche vengono aggiornate in modo sincrono o asincrono.
OFF
Specifica che Query Optimizer non aggiorna le statistiche quando queste vengono usate da una query né quando potrebbero essere non aggiornate. L'impostazione di questa opzione su OFF può determinare piani di query e prestazioni di esecuzione delle query non ottimali.
È possibile determinare lo stato di questa opzione esaminando la colonna
is_auto_update_stats_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietàIsAutoUpdateStatistics
della funzione DATABASEPROPERTYEX.Per altre informazioni, vedere la sezione sulle opzioni relative alle statistiche in Statistiche.
AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
In...
Specifica che gli aggiornamenti delle statistiche per l'opzione AUTO_UPDATE_STATISTICS sono asincroni. Query Optimizer non attende il completamento degli aggiornamenti delle statistiche per compilare le query.
L'impostazione di questa opzione su ON non produce alcun effetto, a meno che AUTO_UPDATE_STATISTICS non sia impostata su ON.
Per impostazione predefinita, l'opzione AUTO_UPDATE_STATISTICS_ASYNC è impostata su OFF. Query Optimizer aggiorna pertanto le statistiche in modo sincrono.
OFF
Specifica che gli aggiornamenti delle statistiche per l'opzione AUTO_UPDATE_STATISTICS sono sincroni. Query Optimizer attende il completamento degli aggiornamenti delle statistiche per compilare le query.
L'impostazione di questa opzione su OFF non produce alcun effetto, a meno che AUTO_UPDATE_STATISTICS non sia impostata su ON.
È possibile determinare lo stato di questa opzione esaminando la colonna is_auto_update_stats_async_on
nella vista del catalogo sys.databases.
Per altre informazioni su quando usare gli aggiornamenti delle statistiche sincroni o asincroni, vedere la sezione sulle opzioni relative alle statistiche in Statistiche.
< > automatic_tuning_option ::=
Controlla le opzioni automatiche per l'ottimizzazione automatica. È possibile visualizzare le opzioni per le impostazioni seguenti nel portale di Azure o tramite T-SQL nella vista sys.database_automatic_tuning_options
.
AUTOMATIC_TUNING = { AUTO | INHERIT | CUSTOM }
AUTO
L'impostazione del valore di Ottimizzazione automatica su AUTO applica le impostazioni predefinite di configurazione di Azure per l'ottimizzazione automatica. Nel portale di Azure questa opzione riflette l'opzione "Eredita da: Impostazioni predefinite di Azure".
INHERIT
L'uso del valore INHERIT fa ereditare la configurazione predefinita dal server padre. Nel portale di Azure questa opzione riflette l'opzione "Eredita da: Server". Ciò risulta particolarmente utile se si vuole personalizzare la configurazione di ottimizzazione automatica in un server padre e fare in modo che tutti i database del server ereditino queste impostazioni personalizzate. Affinché l'ereditarietà funzioni, è necessario impostare le tre opzioni di ottimizzazione singole FORCE_LAST_GOOD_PLAN, CREATE_INDEX e DROP_INDEX su DEFAULT nei database.
CUSTOM
Usando il valore CUSTOM, è necessario configurare in modo personalizzato ognuna delle opzioni di ottimizzazione automatica disponibili nei database. Nel portale di Azure questa opzione riflette l'opzione "Eredita da: Non ereditare".
CREATE_INDEX = { DEFAULT | ON | OFF }
Abilita o disabilita l'opzione di gestione automatica degli indici CREATE_INDEX
di ottimizzazione automatica. È possibile visualizzare lo stato per questa opzione nel portale di Azure o tramite T-SQL nella vista sys.database_automatic_tuning_options
.
DEFAULT
Fa ereditare le impostazioni predefinite dal server. In questo caso, le opzioni per l'attivazione o la disattivazione delle funzionalità di ottimizzazione automatica sono definite a livello del server.
In...
Quando questa opzione è abilitata, gli indici mancanti vengono generati automaticamente per un database. Dopo la creazione dell'indice, vengono verificati i miglioramenti delle prestazioni del carico di lavoro. Quando non offre più vantaggi in termini di prestazioni del carico di lavoro, tale indice creato viene annullato automaticamente. Gli indici creati automaticamente vengono contrassegnati come indici generati dal sistema.
OFF
Gli indici mancanti del database non vengono generati automaticamente.
DROP_INDEX = { DEFAULT | ON | OFF }
Abilita o disabilita l'opzione di gestione automatica degli indici DROP_INDEX
di ottimizzazione automatica. È possibile visualizzare lo stato per questa opzione nel portale di Azure o tramite T-SQL nella vista sys.database_automatic_tuning_options
.
DEFAULT
Fa ereditare le impostazioni predefinite dal server. In questo caso, le opzioni per l'attivazione o la disattivazione delle funzionalità di ottimizzazione automatica sono definite a livello del server.
In...
Elimina automaticamente gli indici duplicati o superflui per il carico di lavoro delle prestazioni.
OFF
Non rimuove automaticamente gli indici mancanti del database.
FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF }
Abilita o disabilita l'opzione di correzione automatica dei piani FORCE_LAST_GOOD_PLAN
di ottimizzazione automatica. È possibile visualizzare lo stato per questa opzione nel portale di Azure o tramite T-SQL nella vista sys.database_automatic_tuning_options
.
DEFAULT
Fa ereditare le impostazioni predefinite dal server. In questo caso, le opzioni per l'attivazione o la disattivazione delle funzionalità di ottimizzazione automatica sono definite a livello del server. Questo è il valore predefinito. Il valore predefinito per i nuovi server SQL di Azure è ON, ovvero per impostazione predefinita, i nuovi database ereditano l'impostazione di ON.
In...
Il motore di database forza automaticamente l'ultimo piano valido noto nelle query Transact-SQL nel caso in cui il nuovo piano di query causi un peggioramento delle prestazioni. Il motore di database monitora continuamente le prestazioni della query Transact-SQL con il piano forzato. In caso di miglioramenti delle prestazioni, il motore di database continua a usare l'ultimo piano valido noto. Se non vengono rilevati miglioramenti delle prestazioni, il motore di database genera un nuovo piano di query. L'istruzione ha esito negativo se Query Store non è abilitato o non è in modalità lettura/scrittura.
OFF
Il motore di database segnala potenziali peggioramenti delle prestazioni delle query causati da modifiche al piano di query nella vista sys.dm_db_tuning_recommendations. Tuttavia, queste raccomandazioni non vengono applicate automaticamente. Gli utenti possono monitorare i consigli attivi e risolvere i problemi identificati applicando gli script Transact-SQL mostrati nella vista.
< > change_tracking_option ::=
Controlla le opzioni di rilevamento delle modifiche. È possibile abilitare il rilevamento delle modifiche, impostare le opzioni, modificare le opzioni e disabilitare il rilevamento delle modifiche. Per gli esempi, vedere la sezione Esempi più avanti in questo articolo.
In...
Abilita il rilevamento delle modifiche per il database. Quando si abilita il rilevamento delle modifiche, è possibile impostare anche le opzioni AUTO CLEANUP e CHANGE RETENTION.
AUTO_CLEANUP = { ON | OFF }
In...
Le informazioni sul rilevamento delle modifiche vengono rimosse automaticamente una volta trascorso il periodo di memorizzazione specificato.
OFF
I dati relativi al rilevamento delle modifiche non vengono rimossi dal database.
CHANGE_RETENTION = retention_period { DAYS | ORE | MINUTES }
Specifica il periodo minimo di conservazione delle informazioni sul rilevamento delle modifiche nel database. I dati vengono rimossi solo quando il valore di AUTO_CLEANUP è ON.
retention_period è un numero intero che specifica il componente numerico del periodo di memorizzazione.
Il periodo di conservazione predefinito è 2 giorni. Il periodo di memorizzazione minimo è 1 minuto. Il tipo di conservazione predefinito è DAYS.
OFF
Disabilita il rilevamento delle modifiche per il database. Prima di disabilitare il rilevamento delle modifiche per il database, disabilitarlo per tutte le tabelle.
< > cursor_option ::=
Consente di controllare le opzioni del cursore.
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
In...
Quando si esegue il commit o il rollback di una transazione, eventuali cursori aperti vengono chiusi.
OFF
I cursori rimangono aperti quando viene eseguito il commit di una transazione; il rollback di una transazione chiude tutti i cursori, ad eccezione di quelli definiti come INSENSITIVE o STATIC.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per CURSOR_CLOSE_ON_COMMIT. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta CURSOR_CLOSE_ON_COMMIT su OFF per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET CURSOR_CLOSE_ON_COMMIT.
È possibile determinare lo stato di questa opzione esaminando la colonna is_cursor_close_on_commit_on
nella vista del catalogo sys.databases o la proprietà IsCloseCursorsOnCommitEnabled
della funzione DATABASEPROPERTYEX. Il cursore viene deallocato in modo implicito soltanto al momento della disconnessione. Per altre informazioni, vedere DECLARE CURSOR.
< > db_encryption_option ::=
Controlla lo stato della crittografia del database.
ENCRYPTION { ON | OFF }
Imposta il database per l'utilizzo della crittografia (ON) o no (OFF). Per altre informazioni sulla crittografia del database, vedere TDE (Transparent Data Encryption)e Transparent Data Encryption per il database SQL di Azure, Istanza gestita di SQL di Azure e Azure Synapse Analytics.
Quando la crittografia è abilitata a livello di database, tutti i filegroup vengono crittografati. Tutti i nuovi gruppi di file ereditano la proprietà crittografata. Se i filegroup nel database sono impostati su SOLA lettura, l'operazione di crittografia del database ha esito negativo.
È possibile visualizzare lo stato della crittografia del database usando la DMV sys.dm_database_encryption_keys.
< > db_update_option ::=
Indica se sono consentiti aggiornamenti nel database.
READ_ONLY
Gli utenti possono leggere i dati dal database, ma non modificarli.
Nota
Per migliorare le prestazioni di esecuzione delle query, aggiornare le statistiche prima di impostare un database su READ_ONLY. Se sono necessarie statistiche aggiuntive dopo che un database è impostato su READ_ONLY, il motore di database crea statistiche in
tempdb
. Per altre informazioni sulle statistiche per un database di sola lettura, vedere Statistiche.READ_WRITE
Il database è disponibile per operazioni di lettura e scrittura.
Per modificare questo stato, è necessario disporre dell'accesso esclusivo al database. Per altre informazioni, vedere la clausola SINGLE_USER.
Nota
In database federati del database SQL di Azure la sintassi SET { READ_ONLY | READ_WRITE }
è disabilitata.
< > db_user_access_option ::=
Controlla l'accesso degli utenti al database.
RESTRICTED_USER
Consente la connessione al database solo ai membri del ruolo predefinito del database
db_owner
e ai membri dei ruoli predefiniti del serverdbcreator
esysadmin
, senza tuttavia imporre un limite al numero di connessioni. Tutte le connessioni al database vengono interrotte entro l'intervallo di tempo specificato nella clausola di interruzione dell'istruzione ALTER DATABASE. Dopo l'impostazione dello stato RESTRICTED_USER per il database, qualsiasi tentativo di connessione da parte di utenti non qualificati viene rifiutato. Nel database SQL di Azure deve essere eseguito dal database utente. Dal databasemaster
è possibile che venga visualizzato un messaggio di erroreMsg 42008, Level 16, State 3, Line 1 ODBC error: State: 28000: Error: 18456 Message:'[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user '##MS_InstanceCertificate##'.'.
MULTI_USER
Consente la connessione al database a tutti gli utenti che dispongono di autorizzazioni appropriate. È possibile determinare lo stato di questa opzione esaminando la colonna
user_access
nella vista del catalogo sys.databases o la proprietàUserAccess
della funzione DATABASEPROPERTYEX. Nel database SQL di Azure deve essere eseguito dal database utente. Dal databasemaster
è possibile che venga visualizzato un messaggio di erroreMsg 42008, Level 16, State 3, Line 1 ODBC error: State: 28000: Error: 18456 Message:'[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user '##MS_InstanceCertificate##'.'.
< > delayed_durability_option ::=
Determina se le transazioni sottoposte a commit sono completamente durevoli o durevoli posticipate.
DISABLED
Tutte le transazioni in cui viene usato
SET DISABLED
sono completamente durevoli. Tutte le opzioni di durabilità impostate in un blocco atomico o in un'istruzione COMMIT vengono ignorate.ALLOWED
Tutte le transazioni in cui viene usato
SET ALLOWED
sono completamente durevoli o durevoli posticipate, a seconda del set di opzioni di durabilità nel blocco atomico o nell'istruzione COMMIT.FORCED
Tutte le transazioni in cui viene usato
SET FORCED
sono durevoli posticipate. Tutte le opzioni di durabilità impostate in un blocco atomico o in un'istruzione COMMIT vengono ignorate.
< > PARAMETERIZATION_option ::=
Consente di controllare l'opzione di parametrizzazione.
PARAMETERIZATION { SIMPLE | FORCED }
SEMPLICE
Le query vengono parametrizzate in base al comportamento predefinito del database.
FORCED
SQL Server parametrizza tutte le query nel database.
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna is_parameterization_forced
nella vista del catalogo sys.databases.
< > query_store_options ::=
ON | OFF | CLEAR [ ALL ]
Verifica se Query Store è abilitato nel database e controlla anche la rimozione dei contenuti di Query Store.
In...
Abilita Query Store. ON è il valore predefinito.
OFF
Disabilita Query Store.
Nota
Non è possibile disabilitare Query Store in un singolo database SQL di Azure e in un pool elastico. L'esecuzione di
ALTER DATABASE [database] SET QUERY_STORE = OFF
restituisce l'avviso'QUERY_STORE=OFF' is not supported in this version of SQL Server.
.CLEAR
Rimuove i contenuti di Query Store.
OPERATION_MODE
Descrive la modalità operativa di Query Store. I valori validi sono READ_ONLY e READ_WRITE. In modalità READ_WRITE Query Store raccoglie e salva in modo permanente le informazioni sulle statistiche di esecuzione di runtime e i piani di query. In modalità READ_ONLY le informazioni possono essere lette da Query Store, ma non vengono aggiunte nuove informazioni. Se lo spazio massimo allocato di Query Store è stato esaurito, Query Store ne modifica la modalità operativa in READ_ONLY.
CLEANUP_POLICY
Descrive i criteri di conservazione dei dati di Query Store. STALE_QUERY_THRESHOLD_DAYS determina il numero di giorni per cui le informazioni per una query vengono conservate in Query Store. STALE_QUERY_THRESHOLD_DAYS è di tipo bigint. Il valore predefinito è 30. Per l'edizione Basic del database SQL, l'impostazione predefinita è 7 giorni.
DATA_FLUSH_INTERVAL_SECONDS
Determina la frequenza con cui i dati scritti in Query Store vengono salvati in modo permanente sul disco. Per ottimizzare le prestazioni, i dati raccolti da Query Store vengono scritti in modo asincrono sul disco. La frequenza con cui si verifica questo trasferimento asincrono viene configurata tramite l'argomento DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS è di tipo bigint. Il valore predefinito 900 (15 min).
MAX_STORAGE_SIZE_MB
Determina lo spazio allocato a Query Store. MAX_STORAGE_SIZE_MB è di tipo bigint.
Nota
In database SQL di Azure il valore predefinito MAX_STORAGE_SIZE_MB
è diverso dal livello di servizio, come indicato di seguito: Premium, Business Critical e Hyperscale: 1.024 MB; Standard e utilizzo generico: 100 MB; Basic: 10 MB Il valore massimo consentito MAX_STORAGE_SIZE_MB
è 10.240 MB.
Nota
Il limite MAX_STORAGE_SIZE_MB
non è necessariamente applicato. Le dimensioni di archiviazione vengono controllate solo quando Query Store scrive i dati su disco. Questo intervallo viene impostato dall'opzione DATA_FLUSH_INTERVAL_SECONDS
o dall'opzione della finestra di dialogo di Query Store in Management Studio Intervallo di scaricamento dati. Il valore predefinito dell'intervallo è 900 secondi (o 15 minuti).
Se Query Store ha violato il limite di MAX_STORAGE_SIZE_MB
tra i controlli delle dimensioni di archiviazione, passa alla modalità di sola lettura. Se è abilitata la SIZE_BASED_CLEANUP_MODE
, viene attivato anche il meccanismo di pulizia per applicare il limite MAX_STORAGE_SIZE_MB
.
Una volta cancellato spazio sufficiente, la modalità Query Store torna automaticamente alla lettura/scrittura.
Importante
Se si ritiene che l'acquisizione del carico di lavoro richieda più di 10 GB di spazio su disco, è consigliabile ripensare e ottimizzare il carico di lavoro per riutilizzare i piani di query, ad esempio usando parametrizzazione forzatao modificare le configurazioni di Query Store.
A partire da SQL Server 2019 (15.x) e nel database SQL di Azure è possibile impostare QUERY_CAPTURE_MODE
su CUSTOM per un controllo aggiuntivo sui criteri di acquisizione delle query.
INTERVAL_LENGTH_MINUTES
Determina l'intervallo di tempo in base a cui vengono aggregati i dati delle statistiche di esecuzione di runtime in Query Store. Per ottimizzare l'utilizzo dello spazio, le statistiche di esecuzione di runtime nell'archivio di statistiche di runtime vengono aggregate in un intervallo di tempo fisso. L'intervallo di tempo predefinito viene configurato tramite l'argomento INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES è di tipo bigint. Il valore predefinito è 60.
SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
Controlla se la pulizia viene attivata automaticamente quando la quantità totale di dati si avvicina alla dimensione massima.
OFF
La pulizia basata sulle dimensioni non viene attivata automaticamente.
AUTO
La pulizia basata sulle dimensioni viene attivata automaticamente quando le dimensioni del disco raggiungono 90% di max_storage_size_mb. La pulizia basata sulle dimensioni rimuove per prime le query meno recenti e meno dispendiose. Si arresta quando raggiunge all'incirca l'80% di max_storage_size_mb. Si tratta del valore di configurazione predefinito.
SIZE_BASED_CLEANUP_MODE è di tipo nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | CUSTOM | NONE }
Determina la modalità di acquisizione query attiva. Ogni modalità definisce criteri di acquisizione delle query specifici.
Nota
I cursori, le query all'interno delle stored procedure e le query compilate in modo nativo vengono sempre acquisiti quando la modalità di acquisizione query è impostata su ALL, AUTO o CUSTOM.
ALL
Consente di acquisire tutte le query.
AUTO
Consente di acquisire le query pertinenti in base al conteggio delle esecuzioni e al consumo delle risorse. Si tratta del valore di configurazione predefinito per il database SQL di Azure.
NONE
Consente di arrestare l'acquisizione di nuove query. Query Store continua a raccogliere statistiche di compilazione e runtime per le query già acquisite. Usare questa configurazione con cautela perché potrebbe non essere possibile acquisire query importanti.
CUSTOM
Consente di controllare le opzioni QUERY_CAPTURE_POLICY.
QUERY_CAPTURE_MODE è di tipo nvarchar.
MAX_PLANS_PER_QUERY
Definisce il numero massimo di piani mantenuti per ogni query. MAX_PLANS_PER_QUERY è di tipo int. Il valore predefinito è 200.
WAIT_STATS_CAPTURE_MODE { ON | OFF }
Controlla se le statistiche di attesa vengono acquisite per ogni query.
In...
Verranno acquisite informazioni sulle statistiche di attesa per ogni query. Si tratta del valore di configurazione predefinito.
OFF
Le informazioni sulle statistiche di attesa per query non vengono acquisite.
< > query_capture_policy_option_list :: =
Controlla le opzioni dei criteri di acquisizione di Query Store. Ad eccezione di STALE_CAPTURE_POLICY_THRESHOLD, queste opzioni definiscono le condizioni OR che devono verificarsi perché le query vengano acquisite nel valore della soglia dei criteri di acquisizione non aggiornati definito.
STALE_CAPTURE_POLICY_THRESHOLD = integer { DAYS | HOURS }
Definisce l'intervallo di valutazione per determinare se una query deve essere acquisita. Il valore predefinito è 1 giorno e l'intervallo può essere impostato da 1 ora a sette giorni. number è di tipo int.
EXECUTION_COUNT = integer
Definisce il numero di esecuzioni di una query nel periodo di valutazione. Il valore predefinito è 30. Questo significa che per il valore predefinito della soglia dei criteri di acquisizione non aggiornati è necessario eseguire una query almeno 30 volte al giorno perché venga salvata in modo permanente in Query Store. EXECUTION_COUNT è di tipo int.
TOTAL_COMPILE_CPU_TIME_MS = integer
Definisce il tempo CPU di compilazione trascorso totale usato da una query nel periodo di valutazione. Il valore predefinito è 1000. Questo significa che per il valore predefinito della soglia dei criteri di acquisizione non aggiornati una query deve aver usato in totale almeno un secondo di tempo CPU al giorno per la compilazione perché venga salvata in modo permanente in Query Store. TOTAL_COMPILE_CPU_TIME_MS è di tipo int.
TOTAL_EXECUTION_CPU_TIME_MS = integer
Definisce il tempo CPU di esecuzione trascorso totale usato da una query nel periodo di valutazione. Il valore predefinito è 100. Questo significa che per il valore predefinito della soglia dei criteri di acquisizione non aggiornati una query deve aver usato almeno 100 ms di tempo CPU al giorno per l'esecuzione perché venga salvata in modo permanente in Query Store. TOTAL_EXECUTION_CPU_TIME_MS è di tipo int.
< > snapshot_option ::=
Determina il livello di isolamento delle transazioni.
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
In...
Abilita l'opzione relativa allo snapshot a livello di database. Se questa opzione è abilitata, le istruzioni DML iniziano a generare versioni di riga anche quando nessuna transazione usa l'isolamento dello snapshot. Una volta abilitata l'opzione, le transazioni possono specificare il livello di isolamento della transazione SNAPSHOT. Nelle transazioni eseguite con il livello di isolamento SNAPSHOT, tutte le istruzioni possono accedere a uno snapshot dei dati corrispondente allo stato dei dati al momento dell'avvio della transazione. Se una transazione eseguita con il livello di isolamento SNAPSHOT deve accedere ai dati in più database, è necessario impostare ALLOW_SNAPSHOT_ISOLATION su ON in tutti i database oppure ogni istruzione della transazione deve usare hint di blocco per qualsiasi riferimento in una clausola FROM a una tabella di un database per cui l'opzione ALLOW_SNAPSHOT_ISOLATION è impostata su OFF.
OFF
Consente di disabilitare l'opzione Snapshot a livello di database. Per le transazioni non può essere impostato il livello di isolamento SNAPSHOT.
Quando si imposta un nuovo stato per l'opzione ALLOW_SNAPSHOT_ISOLATION (da ON a OFF oppure da OFF a ON), ALTER DATABASE restituisce il controllo al chiamante solo dopo il completamento del commit di tutte le transazioni esistenti nel database. Se per il database è già attivo lo stato specificato nell'istruzione ALTER DATABASE, il controllo viene restituito immediatamente al chiamante. Se l'istruzione ALTER DATABASE non restituisce il controllo rapidamente, usare sys.dm_tran_active_snapshot_database_transactions per verificare se sono presenti transazioni con esecuzione prolungata. Se l'istruzione ALTER DATABASE viene annullata, il database rimane nello stato attivo al momento dell'avvio dell'istruzione ALTER DATABASE. La vista del catalogo sys.databases indica lo stato delle transazioni di isolamento dello snapshot nel database. Se snapshot_isolation_state_desc = IN_TRANSITION_TO_ON
, l'istruzione ALTER DATABASE .... ALLOW_SNAPSHOT_ISOLATION OFF
sospende sei secondi e ritenta l'operazione.
Non è possibile cambiare lo stato di ALLOW_SNAPSHOT_ISOLATION se il database è OFFLINE.
Se si imposta ALLOW_SNAPSHOT_ISOLATION in un database READ_ONLY, l'impostazione viene mantenuta se il database viene impostato successivamente su READ_WRITE.
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna snapshot_isolation_state
nella vista del catalogo sys.databases.
READ_COMMITTED_SNAPSHOT { ON | OFF }
In...
Abilita l'opzione relativa allo snapshot Read Committed a livello di database. Se questa opzione è abilitata, le istruzioni DML iniziano a generare versioni di riga anche quando nessuna transazione usa l'isolamento dello snapshot. Una volta abilitata questa opzione, le transazioni che specificano il livello di isolamento READ COMMITTED usano il controllo delle versioni delle righe anziché il blocco. Quando una transazione viene eseguita con il livello di isolamento READ COMMITTED, tutte le istruzioni vedono uno snapshot dei dati nello stato in cui si trovano all'avvio dell'istruzione.
OFF
Disabilita l'opzione relativa allo snapshot Read Committed a livello di database. Le transazioni per cui è impostato il livello di isolamento READ COMMITTED usano il blocco.
Per impostare READ_COMMITTED_SNAPSHOT su ON o su OFF, è necessario che non siano presenti connessioni attive al database, ad eccezione della connessione usata per eseguire il comando ALTER DATABASE. Non è tuttavia necessario che il database sia in modalità utente singolo. Non è possibile cambiare lo stato di questa opzione quando il database è OFFLINE.
Se si imposta READ_COMMITTED_SNAPSHOT in un database READ_ONLY, l'impostazione viene mantenuta quando il database viene impostato successivamente su READ_WRITE.
Non è possibile impostare READ_COMMITTED_SNAPSHOT su ON per i database di sistema master
, tempdb
e msdb
. Se si modifica l'impostazione per model
, questa diventa l'impostazione predefinita per i nuovi database creati, ad eccezione di tempdb
.
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna is_read_committed_snapshot_on
nella vista del catalogo sys.databases.
Avviso
Quando viene creata una tabella con DURABILITY = SCHEMA_ONLY
e READ_COMMITTED_SNAPSHOT viene successivamente modificata tramite ALTER DATABASE
, i dati nella tabella vengono persi.
Suggerimento
Nel database SQL di Azure il comando ALTER DATABASE
per impostare READ_COMMITTED_SNAPSHOT ON o OFF per un database deve essere eseguito nel database master
.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
In...
Quando l'isolamento della transazione è impostato su un livello inferiore a SNAPSHOT, tutte le operazioni interpretate di Transact-SQL nelle tabelle ottimizzate per la memoria vengono eseguite con isolamento SNAPSHOT. I livelli di isolamento inferiori a SNAPSHOT sono, ad esempio, READ COMMITTED e READ UNCOMMITTED. Queste operazioni vengono eseguite indipendentemente dal fatto che venga impostato in modo esplicito il livello di isolamento della transazione a livello di sessione o che venga usata in modo implicito l'impostazione predefinita.
OFF
Non innalza il livello di isolamento della transazione per le operazioni interpretate di Transact-SQL nelle tabelle ottimizzate per la memoria.
Non è possibile cambiare lo stato di MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT se il database è OFFLINE.
Il valore predefinito è OFF.
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna is_memory_optimized_elevate_to_snapshot_on
nella vista del catalogo sys.databases.
< > sql_option ::=
Controlla le opzioni di conformità ANSI a livello di database.
ANSI_NULL_DEFAULT { ON | OFF }
Determina il valore predefinito, NULL o NOT NULL, per una colonna o un tipo CLR definito dall'utente per cui il supporto dei valori Null non è definito in modo esplicito nell'istruzione CREATE TABLE o ALTER TABLE. Le colonne definite con vincoli seguono regole di vincolo indipendentemente da questa impostazione.
In...
Il valore predefinito è NULL.
OFF
Il valore predefinito è NOT NULL.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per ANSI_NULL_DEFAULT. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta ANSI_NULL_DEFAULT su ON per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET ANSI_NULL_DFLT_ON.
Per motivi di compatibilità con ANSI, l'impostazione dell'opzione di database ANSI_NULL_DEFAULT su ON modifica l'impostazione predefinita del database su NULL.
È possibile determinare lo stato di questa opzione esaminando la colonna is_ansi_null_default_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAnsiNullDefault
della funzione DATABASEPROPERTYEX.
ANSI_NULLS { ON | OFF }
In...
Tutti i confronti con un valore Null restituiscono UNKNOWN.
OFF
I confronti di valori non Unicode con un valore Null restituiscono TRUE se entrambi i valori sono NULL.
Importante
In una versione futura di SQL Server l'opzione ANSI_NULLS sarà sempre impostata su ON e qualsiasi applicazione che imposti in modo esplicito questa opzione su OFF genererà un errore. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per ANSI_NULLS. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta ANSI_NULLS su ON per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET ANSI_NULLS.
Nota
È inoltre necessario che l'opzione SET ANSI_NULLS sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
È possibile determinare lo stato di questa opzione esaminando la colonna is_ansi_nulls_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAnsiNullsEnabled
della funzione DATABASEPROPERTYEX.
ANSI_PADDING { ON | OFF }
In...
Le stringhe vengono riempite in modo che abbiano tutte la stessa lunghezza prima della conversione. o dell'inserimento in un tipo di dati varchar o nvarchar.
OFF
Vengono inseriti spazi vuoti finali nei valori di tipo carattere in colonne di tipo varchar o nvarchar. Vengono inoltre lasciati gli zeri finali nei valori binari inseriti nelle colonne di tipo varbinary. I valori non vengono riempiti per l'intera lunghezza della colonna.
Se si specifica OFF, questa impostazione ha effetto solo sulla definizione di nuove colonne.
Importante
In una versione futura di SQL Server l'opzione ANSI_PADDING sarà sempre impostata su ON e qualsiasi applicazione che imposti in modo esplicito questa opzione su OFF genererà un errore. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. È consigliabile impostare l'opzione ANSI_PADDING sempre su ON. È necessario che l'opzione ANSI_PADDING sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
Le colonne char(n) e binary(n) che consentono valori Null vengono riempite fino alla loro lunghezza quando ANSI_PADDING è impostata su ON. I valori vuoti e gli zeri finali vengono eliminati quando ANSI_PADDING è impostata su OFF. Le colonne char(n) e binary(n) che non consentono valori Null vengono sempre riempite fino alla loro lunghezza.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per ANSI_PADDING. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta ANSI_PADDING su ON per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET ANSI_PADDING.
È possibile determinare lo stato di questa opzione esaminando la colonna is_ansi_padding_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAnsiPaddingEnabled
della funzione DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | OFF }
In...
Vengono restituiti messaggi di errore o di avviso quando si verificano condizioni come la divisione per zero e inoltre quando nelle funzioni di aggregazione sono presenti valori Null.
OFF
Non vengono generati avvisi e vengono restituiti valori Null quando si verificano condizioni come la divisione per zero.
Nota
È necessario che l'opzione ANSI_WARNINGS sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per ANSI_WARNINGS. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta ANSI_WARNINGS su ON per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET ANSI_WARNINGS.
È possibile determinare lo stato di questa opzione esaminando la colonna is_ansi_warnings_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAnsiWarningsEnabled
della funzione DATABASEPROPERTYEX.
ARITHABORT { ON | OFF }
In...
Interrompe una query quando si verifica un overflow o un errore di divisione per zero durante l'esecuzione della query stessa.
OFF
Quando si verifica uno di questi errori, viene visualizzato un messaggio di avviso. L'esecuzione della query, del batch o della transazione prosegue come se non si fosse verificato alcun errore, anche se viene visualizzato un messaggio di avviso.
Nota
È necessario che l'opzione ARITHABORT sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
È possibile determinare lo stato di questa opzione esaminando la colonna is_arithabort_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsArithmeticAbortEnabled
della funzione DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Per altre informazioni, vedere livello di compatibilità ALTER DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | OFF }
In...
Il risultato di un'operazione di concatenazione è NULL quando uno degli operandi è NULL. La concatenazione della stringa di caratteri "Questo è" con NULL restituisce, ad esempio, il valore NULL anziché il valore "Questo è".
OFF
Il valore Null viene considerato come una stringa di caratteri vuota.
Nota
È necessario che l'opzione CONCAT_NULL_YIELDS_NULL sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
In una versione futura di SQL Server l'opzione CONCAT_NULL_YIELDS_NULL sarà sempre impostata su ON e qualsiasi applicazione che imposti in modo esplicito l'opzione su OFF restituirà un errore. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per CONCAT_NULL_YIELDS_NULL. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta CONCAT_NULL_YIELDS_NULL su ON per la sessione quando viene stabilita una connessione a un'istanza di SQL Server. Per altre informazioni, vedere SET CONCAT_NULL_YIELDS_NULL.
È possibile determinare lo stato di questa opzione esaminando la colonna is_concat_null_yields_null_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsNullConcat
della funzione DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | OFF }
In...
Viene generato un errore quando si verifica una perdita di precisione in un'espressione.
OFF
La perdita di precisione non genera messaggi di errore e il risultato viene arrotondato alla precisione della colonna o della variabile in cui viene archiviato.
Importante
È necessario che l'opzione NUMERIC_ROUNDABORT sia impostata su OFF quando vengono creati o modificati indici in colonne calcolate o viste indicizzate.
È possibile determinare lo stato per questa opzione nella colonna is_numeric_roundabort_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsNumericRoundAbortEnabled
della funzione DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | OFF }
In...
È possibile usare le virgolette doppie per delimitare gli identificatori delimitati.
Tutte le stringhe delimitate da virgolette doppie vengono interpretate come identificatori di oggetto. Gli identificatori delimitati non devono necessariamente essere conformi alle regole di Transact-SQL per gli identificatori. Possono essere parole chiave e includere caratteri normalmente non consentiti negli identificatori di Transact-SQL. Se una virgoletta doppia (
"
) fa parte dell'identificatore, può essere rappresentata da due virgolette doppie (""
).OFF
Gli identificatori non possono essere delimitati da virgolette e devono essere conformi a tutte le regole di Transact-SQL per gli identificatori. È possibile delimitare i valori letterali con virgolette singole o doppie.
SQL Server consente anche di delimitare gli identificatori in base alle parentesi quadre ([
e ]
). Gli identificatori tra parentesi quadre possono essere sempre usati, indipendentemente dall'impostazione di QUOTED_IDENTIFIER. Per altre informazioni, vedere identificatori di database .
Quando viene creata una tabella, l'opzione QUOTED IDENTIFIER viene sempre archiviata con l'impostazione ON nei relativi metadati, anche se l'opzione è impostata su OFF.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per QUOTED_IDENTIFIER. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta QUOTED_IDENTIFIER. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET QUOTED_IDENTIFIER.
È possibile determinare lo stato di questa opzione esaminando la colonna is_quoted_identifier_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsQuotedIdentifiersEnabled
della funzione DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | OFF }
In...
È consentita l'attivazione ricorsiva di trigger AFTER.
OFF
È possibile determinare lo stato di questa opzione esaminando la colonna
is_recursive_triggers_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietàIsRecursiveTriggersEnabled
della funzione DATABASEPROPERTYEX.
Nota
Se l'opzione RECURSIVE_TRIGGERS è impostata su OFF, viene impedita esclusivamente la ricorsione diretta. Per disabilitare la ricorsione indiretta, è necessario impostare anche l'opzione del server nested triggers su 0.
È possibile determinare lo stato di questa opzione esaminando la colonna is_recursive_triggers_on
nella vista del catalogo sys.databases o la proprietà IsRecursiveTriggersEnabled
della funzione DATABASEPROPERTYEX.
< > target_recovery_time_option ::=
Specifica la frequenza di checkpoint indiretti per database singolo. A partire da SQL Server 2016 (13.x), il valore predefinito per i nuovi database è 1 minuto, che indica che il database usa checkpoint indiretti. Per le versioni precedenti, il valore predefinito è 0, che indica che il database usa checkpoint automatici, la cui frequenza dipende dall'impostazione dell'intervallo di recupero dell'istanza del server. Microsoft consiglia di usare 1 minuto per la maggior parte dei sistemi.
TARGET_RECOVERY_TIME = tempo_recupero_riferimento { SECONDS | MINUTES }
target_recovery_time
Specifica il limite massimo di tempo per recuperare il database specificato in caso di un arresto anomalo del sistema. target_recovery_time è di tipo int.
SECONDS
Indica che target_recovery_time viene espresso come numero di secondi.
MINUTI
Indica che target_recovery_time viene espresso come numero di minuti.
Per altre informazioni sui checkpoint indiretti, vedere Checkpoint del database.
WITH <terminazione> ::=
Specifica quando eseguire il rollback di transazioni incomplete in caso di transizione dello stato del database. Se questa clausola viene omessa, l'attesa da parte dell'istruzione ALTER DATABASE è illimitata in presenza di qualsiasi blocco attivo sul database. È possibile specificare una sola clausola di terminazione, che deve seguire le clausole SET.
Nota
Non tutte le opzioni di database usano la clausola WITH <termination>. Per altre informazioni, vedere la tabella in Impostazione delle opzioni nella sezione "Osservazioni" di questo articolo.
ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
Specifica se eseguire il rollback dopo il numero di secondi specificato o immediatamente.
NO_WAIT
Specifica che la richiesta ha esito negativo se lo stato o l'opzione del database richiesto non può essere completata immediatamente. senza aspettare il commit o il rollback automatico delle transazioni.
< > temporal_history_retention ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
ON per impostazione predefinita, ma viene anche impostato automaticamente su OFF dopo un'operazione di ripristino temporizzato. Per altre informazioni, tra cui come abilitare questa impostazione, vedere Come configurare criteri di conservazione.
In...
Predefinito. Abilita i criteri di conservazione delle tabelle temporali. Per altre informazioni, vedere Gestire la conservazione di dati cronologici in tabelle temporali con controllo delle versioni di sistema.
OFF
Non eseguire criteri di conservazione cronologici temporali.
Impostare le opzioni
Per recuperare le impostazioni correnti delle opzioni di database, usare la vista del catalogo sys.databases o DATABASEPROPERTYEX
Dopo l'impostazione di un'opzione di database, la modifica diventa effettiva immediatamente.
Per cambiare i valori predefiniti di qualsiasi opzione di database per tutti i nuovi database, A questo scopo, modificare l'opzione di database appropriata nel database model
.
Non tutte le opzioni di database usano la clausola WITH <termination> o possono essere specificate in combinazione con altre opzioni. Nella tabella seguente sono elencate tali opzioni con indicazione del supporto della clausola di terminazione o dell'impostazione in combinazione con altre opzioni.
Categoria di opzioni | Impostazione in combinazione con altre opzioni | Supporto della clausola WITH <termination> |
---|---|---|
<auto_option> | Sì | No |
<change_tracking_option> | Sì | Sì |
<cursor_option> | Sì | No |
<db_encryption_option> | Sì | No |
<db_update_option> | Sì | Sì |
<db_user_access_option> | Sì | Sì |
<delayed_durability_option> | Sì | Sì |
<parameterization_option> | Sì | Sì |
ALLOW_SNAPSHOT_ISOLATION | No | No |
READ_COMMITTED_SNAPSHOT | No | Sì |
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Sì | Sì |
DATE_CORRELATION_OPTIMIZATION | Sì | Sì |
<sql_option> | Sì | No |
<target_recovery_time_option> | No | Sì |
Esempi
R. Impostare il database su READ_ONLY
La modifica dello stato di un database o di un file group in READ_ONLY o READ_WRITE richiede l'accesso esclusivo al database e potrebbe richiedere alcuni secondi. Nell'esempio seguente viene impostata la modalità RESTRICTED_USER
per il database in modo da limitare l'accesso. Nell'esempio lo stato del database AdventureWorks2022
viene quindi impostato su READ_ONLY
e viene ripristinato l'accesso al database per tutti gli utenti.
--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET RESTRICTED_USER;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
--`SET READ_ONLY` command might take a few seconds to complete.
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO
Per reimpostare il database in modalità lettura/scrittura:
--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET READ_WRITE
GO
Da verificare:
SELECT [name], user_access_desc, is_read_only FROM sys.databases
WHERE [name] = 'database_name'
GO
B. Abilitare l'isolamento dello snapshot in un database
Nell'esempio seguente viene abilitata l'opzione relativa al framework di isolamento dello snapshot per il database AdventureWorks2022
.
--Connect to [database_name]
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
Verificare lo stato di snapshot_isolation_framework
nel database.
--Connect to [database_name]
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'database_name';
GO
Il set di risultati indica che il framework di isolamento dello snapshot è abilitato.
name | snapshot_isolation_state | description |
---|---|---|
[database_name] | 1 | In... |
C. Abilitare, modificare o disabilitare il rilevamento delle modifiche
Nell'esempio seguente viene abilitato il rilevamento delle modifiche per il database AdventureWorks2022
e il periodo di memorizzazione viene impostato su 2
giorni.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
L'esempio seguente illustra come modificare il periodo di conservazione impostandolo su 3 giorni.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
Nell'esempio seguente viene illustrato come disabilitare il rilevamento delle modifiche per il database AdventureWorks2022
.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
D. Abilitare Query Store
L'esempio seguente abilita Query Store e configura i relativi parametri.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60
);
E. Abilitare Query Store con statistiche di attesa
L'esempio seguente abilita Query Store e configura i relativi parametri.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON
);
F. Abilitare Query Store con opzioni dei criteri di acquisizione personalizzati
L'esempio seguente abilita Query Store e configura i relativi parametri.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Contenuto correlato
- Statistica
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- livello di compatibilità ALTER DATABASE
- Mirroring del database ALTER DATABASE
- CREATE DATABASE
- abilitare e disabilitare il rilevamento delle modifiche (SQL Server)
- DROP DATABASE (Transact-SQL)
- SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
- sp_configure
- Procedure consigliate per il monitoraggio dei carichi di lavoro con Query Store
- Hint di Query Store
* Istanza gestita di SQL *
Istanza gestita di SQL di Azure
I livelli di compatibilità sono SET
opzioni, ma sono descritti in livello di compatibilità ALTER DATABASE.
Nota
Molte opzioni SET di database possono essere configurate per la sessione corrente tramite Istruzioni SET e spesso vengono configurate dalle applicazioni durante la connessione. Le opzioni del set a livello di sessione sostituiscono i ALTER DATABASE SET
valori. Le opzioni di database descritte nelle sezioni seguenti sono valori che è possibile impostare per le sessioni che non prevedono esplicitamente altri valori di opzioni SET.
Sintassi
ALTER DATABASE { database_name | Current }
SET
{
<optionspec> [ ,...n ]
}
;
<optionspec> ::=
{
<auto_option>
| <change_tracking_option>
| <cursor_option>
| <db_encryption_option>
| <delayed_durability_option>
| <parameterization_option>
| <query_store_options>
| <snapshot_option>
| <sql_option>
| <target_recovery_time_option>
| <termination>
| <temporal_history_retention>
}
;
<auto_option> ::=
{
AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<automatic_tuning_option> ::=
{
AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [,...n] ) ]
| ( <change_tracking_option_list> [,...n] )
}
}
<change_tracking_option_list> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<cursor_option> ::=
{
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
}
<db_encryption_option> ::=
ENCRYPTION { ON | OFF }
<delayed_durability_option> ::=DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
<parameterization_option> ::=
PARAMETERIZATION { SIMPLE | FORCED }
<query_store_options> ::=
{
QUERY_STORE
{
= OFF
| = ON [ ( <query_store_option_list> [,... n] ) ]
| ( < query_store_option_list> [,... n] )
| CLEAR [ ALL ]
}
}
<query_store_option_list> ::=
{
OPERATION_MODE = { READ_WRITE | READ_ONLY }
| CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
| DATA_FLUSH_INTERVAL_SECONDS = number
| MAX_STORAGE_SIZE_MB = number
| INTERVAL_LENGTH_MINUTES = number
| SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
| QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
| MAX_PLANS_PER_QUERY = number
| WAIT_STATS_CAPTURE_MODE = { ON | OFF }
| QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}
<query_capture_policy_option_list> :: =
{
STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
| EXECUTION_COUNT = number
| TOTAL_COMPILE_CPU_TIME_MS = number
| TOTAL_EXECUTION_CPU_TIME_MS = number
}
<snapshot_option> ::=
{
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
| READ_COMMITTED_SNAPSHOT { ON | OFF }
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<temporal_history_retention>::= TEMPORAL_HISTORY_RETENTION { ON | OFF }
Argomenti
database_name
Nome del database da modificare.
CURRENT
CURRENT
esegue l'azione nel database corrente.
CURRENT
non è supportato per tutte le opzioni in tutti i contesti. In caso di errore di CURRENT
, specificare il nome del database.
< > auto_option ::=
Consente di controllare le opzioni automatiche.
AUTO_CREATE_STATISTICS { ON | OFF }
In...
Query Optimizer crea statistiche per colonne singole nei predicati di query, se necessario, per migliorare i piani di query e le prestazioni di esecuzione delle query. Queste statistiche per colonne singole vengono create quando Query Optimizer compila le query. Vengono create solo sulle colonne che non sono già le prime di un oggetto statistiche esistente.
Il valore predefinito è ON. È consigliabile usare l'impostazione predefinita per la maggior parte dei database.
OFF
Query Optimizer non crea statistiche sulle singole colonne nei predicati di query durante la compilazione delle query. L'impostazione di questa opzione su OFF può determinare piani di query e prestazioni di esecuzione delle query non ottimali.
È possibile determinare lo stato di questa opzione esaminando la colonna
is_auto_create_stats_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietàIsAutoCreateStatistics
della funzione DATABASEPROPERTYEX.Per altre informazioni, vedere la sezione sulle opzioni relative alle statistiche in Statistiche.
INCREMENTAL = ON | OFF
Imposta AUTO_CREATE_STATISTICS su ON e INCREMENTAL su ON. Questa impostazione crea automaticamente statistiche incrementali ogni volta che sono supportate. Il valore predefinito è OFF. Per altre informazioni, vedere CREATE STATISTICS.
AUTO_SHRINK { ON | OFF }
In...
I file di database vengono compattati periodicamente, se necessario. A meno che non si disponga di un requisito specifico, non impostare l'opzione di database AUTO_SHRINK su ON. Per altre informazioni, vedere Compattare un database.
È possibile compattare automaticamente sia i file di dati sia i file di log. AUTO_SHRINK riduce le dimensioni del log delle transazioni solo se per il database è impostato il modello di recupero con registrazione minima oppure se viene eseguito il backup del log. Se questa opzione è impostata su OFF, i file di database non vengono compattati automaticamente durante i controlli periodici per verificare la presenza di spazio inutilizzato.
Con l'opzione AUTO_SHRINK i file vengono compattati quando più del 25% dello spazio del file risulta inutilizzato. L'opzione causa il compattamento del file in una di due dimensioni, ossia la più grande tra:
- La dimensione in cui il 25% del file è costituito da spazio inutilizzato
- La dimensione del file quando è stato creato
Non è possibile compattare un database di sola lettura.
OFF
I file di database non vengono compattati automaticamente durante i controlli periodici per lo spazio inutilizzato.
È possibile determinare lo stato di questa opzione esaminando la colonna is_auto_shrink_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAutoShrink
della funzione DATABASEPROPERTYEX.
Nota
L'opzione AUTO_SHRINK non è disponibile in un database indipendente.
AUTO_UPDATE_STATISTICS { ON | OFF }
In...
Specifica che Query Optimizer aggiorna le statistiche quando queste vengono usate da una query e quando potrebbero non essere aggiornate. 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.
Query Optimizer controlla la presenza di statistiche non aggiornate prima di compilare una query e di eseguire un piano di query memorizzato nella cache. Usa le colonne, le tabelle e le viste indicizzate nel predicato di query per determinare quali statistiche potrebbero non essere aggiornate. Query Optimizer verifica questa possibilità prima di compilare una query. Prima di eseguire un piano di query memorizzato nella cache, il motore di database verifica che il piano di query faccia riferimento a statistiche aggiornate.
L'opzione AUTO_UPDATE_STATISTICS_ASYNC si applica alle statistiche create per indici, colonne singole nei predicati di query e statistiche create con l'istruzione CREATE STATISTICS. Questa opzione si applica anche alle statistiche filtrate.
Il valore predefinito è ON. È consigliabile usare l'impostazione predefinita per la maggior parte dei database.
Usare l'opzione AUTO_UPDATE_STATISTICS_ASYNC per specificare se le statistiche vengono aggiornate in modo sincrono o asincrono.
OFF
Specifica che Query Optimizer non aggiorna le statistiche quando queste vengono usate da una query né quando potrebbero essere non aggiornate. L'impostazione di questa opzione su OFF può determinare piani di query e prestazioni di esecuzione delle query non ottimali.
È possibile determinare lo stato di questa opzione esaminando la colonna is_auto_update_stats_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAutoUpdateStatistics
della funzione DATABASEPROPERTYEX.
Per altre informazioni, vedere la sezione "Opzioni relative alle statistiche nel database" in Statistiche.
AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
In...
Specifica che gli aggiornamenti delle statistiche per l'opzione AUTO_UPDATE_STATISTICS sono asincroni. Query Optimizer non attende il completamento degli aggiornamenti delle statistiche per compilare le query.
L'impostazione di questa opzione su ON non produce alcun effetto, a meno che AUTO_UPDATE_STATISTICS non sia impostata su ON.
Per impostazione predefinita, l'opzione AUTO_UPDATE_STATISTICS_ASYNC è impostata su OFF. Query Optimizer aggiorna pertanto le statistiche in modo sincrono.
OFF
Specifica che gli aggiornamenti delle statistiche per l'opzione AUTO_UPDATE_STATISTICS sono sincroni. Query Optimizer attende il completamento degli aggiornamenti delle statistiche per compilare le query.
L'impostazione di questa opzione su OFF non produce alcun effetto, a meno che AUTO_UPDATE_STATISTICS non sia impostata su ON.
È possibile determinare lo stato di questa opzione esaminando la colonna is_auto_update_stats_async_on
nella vista del catalogo sys.databases.
Per altre informazioni su quando usare gli aggiornamenti delle statistiche sincroni o asincroni, vedere la sezione "Opzioni relative alle statistiche nel database" in Statistiche.
< > automatic_tuning_option ::=
Controlla le opzioni automatiche per l'ottimizzazione automatica.
FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF }
Abilita o disabilita l'opzione di FORCE_LAST_GOOD_PLAN
Ottimizzazione automatica.
DEFAULT
Il valore predefinito per Istanza gestita di SQL di Azure è ON.
In...
Il motore di database forza automaticamente l'ultimo piano valido noto nelle query Transact-SQL nel caso in cui il nuovo piano di query causi un peggioramento delle prestazioni. Il motore di database monitora continuamente le prestazioni della query Transact-SQL con il piano forzato. In caso di miglioramenti delle prestazioni, il motore di database continua a usare l'ultimo piano valido noto. Se non vengono rilevati miglioramenti delle prestazioni, il motore di database genera un nuovo piano di query. L'istruzione ha esito negativo se Query Store non è abilitato o non è in modalità lettura/scrittura. Questo è il valore predefinito.
OFF
Il motore di database segnala potenziali peggioramenti delle prestazioni delle query causati da modifiche al piano di query nella vista sys.dm_db_tuning_recommendations. Tuttavia, queste raccomandazioni non vengono applicate automaticamente. Gli utenti possono monitorare i consigli attivi e risolvere i problemi identificati applicando gli script Transact-SQL mostrati nella vista.
< > change_tracking_option ::=
Controlla le opzioni di rilevamento delle modifiche. È possibile abilitare il rilevamento delle modifiche, impostare le opzioni, modificare le opzioni e disabilitare il rilevamento delle modifiche. Per gli esempi, vedere la sezione Esempi più avanti in questo articolo.
In...
Abilita il rilevamento delle modifiche per il database. Quando si abilita il rilevamento delle modifiche, è possibile impostare anche le opzioni AUTO CLEANUP e CHANGE RETENTION.
AUTO_CLEANUP = { ON | OFF }
In...
Le informazioni sul rilevamento delle modifiche vengono rimosse automaticamente una volta trascorso il periodo di memorizzazione specificato.
OFF
I dati relativi al rilevamento delle modifiche non vengono rimossi dal database.
CHANGE_RETENTION = retention_period { DAYS | ORE | MINUTES }
Specifica il periodo minimo di conservazione delle informazioni sul rilevamento delle modifiche nel database. I dati vengono rimossi solo quando il valore di AUTO_CLEANUP è ON.
retention_period è un numero intero che specifica il componente numerico del periodo di memorizzazione.
Il periodo di conservazione predefinito è 2 giorni. Il periodo di memorizzazione minimo è 1 minuto. Il tipo di conservazione predefinito è DAYS.
OFF
Disabilita il rilevamento delle modifiche per il database. Prima di disabilitare il rilevamento delle modifiche per il database, disabilitarlo per tutte le tabelle.
< > cursor_option ::=
Consente di controllare le opzioni del cursore.
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
In...
Quando si esegue il commit o il rollback di una transazione, eventuali cursori aperti vengono chiusi.
OFF
I cursori rimangono aperti quando viene eseguito il commit di una transazione. Quando si esegue il rollback di una transazione vengono chiusi tutti i cursori, ad eccezione di quelli definiti come INSENSITIVE o STATIC.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per CURSOR_CLOSE_ON_COMMIT. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta CURSOR_CLOSE_ON_COMMIT su OFF per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET CURSOR_CLOSE_ON_COMMIT.
È possibile determinare lo stato di questa opzione esaminando la colonna is_cursor_close_on_commit_on
nella vista del catalogo sys.databases o la proprietà IsCloseCursorsOnCommitEnabled della funzione DATABASEPROPERTYEX. Il cursore viene deallocato in modo implicito soltanto al momento della disconnessione. Per altre informazioni, vedere DECLARE CURSOR.
< > db_encryption_option ::=
Controlla lo stato della crittografia del database.
ENCRYPTION { ON | OFF }
Imposta il database per l'utilizzo della crittografia (ON) o no (OFF). Per altre informazioni sulla crittografia del database, vedere TDE (Transparent Data Encryption)e Transparent Data Encryption per il database SQL di Azure, Istanza gestita di SQL di Azure e Azure Synapse Analytics.
Quando la crittografia è abilitata a livello di database, tutti i filegroup vengono crittografati. Tutti i nuovi gruppi di file ereditano la proprietà crittografata. Se i filegroup nel database sono impostati su SOLA lettura, l'operazione di crittografia del database ha esito negativo.
È possibile visualizzare lo stato della crittografia del database usando la DMV sys.dm_database_encryption_keys.
< > delayed_durability_option ::=
Determina se le transazioni sottoposte a commit sono completamente durevoli o durevoli posticipate.
DISABLED
Tutte le transazioni in cui viene usato
SET DISABLED
sono completamente durevoli. Tutte le opzioni di durabilità impostate in un blocco atomico o in un'istruzione COMMIT vengono ignorate.ALLOWED
Tutte le transazioni in cui viene usato
SET ALLOWED
sono completamente durevoli o durevoli posticipate, a seconda del set di opzioni di durabilità nel blocco atomico o nell'istruzione COMMIT.FORCED
Tutte le transazioni in cui viene usato
SET FORCED
sono durevoli posticipate. Tutte le opzioni di durabilità impostate in un blocco atomico o in un'istruzione COMMIT vengono ignorate.
< > PARAMETERIZATION_option ::=
Consente di controllare l'opzione di parametrizzazione.
PARAMETERIZATION { SIMPLE | FORCED }
SEMPLICE
Le query vengono parametrizzate in base al comportamento predefinito del database.
FORCED
SQL Server parametrizza tutte le query nel database.
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna is_parameterization_forced
nella vista del catalogo sys.databases.
< > query_store_options ::=
ON | OFF | CLEAR [ ALL ]
Verifica se Query Store è abilitato nel database e controlla anche la rimozione dei contenuti di Query Store.
In...
Abilita Query Store.
OFF
Disabilita Query Store. Questo è il valore predefinito.
CLEAR
Rimuove i contenuti di Query Store.
OPERATION_MODE
Descrive la modalità operativa di Query Store. I valori validi sono READ_ONLY e READ_WRITE. In modalità READ_WRITE Query Store raccoglie e salva in modo permanente le informazioni sulle statistiche di esecuzione di runtime e i piani di query. In modalità READ_ONLY le informazioni possono essere lette da Query Store, ma non vengono aggiunte nuove informazioni. Se lo spazio massimo allocato di Query Store è stato esaurito, Query Store ne modifica la modalità operativa in READ_ONLY.
CLEANUP_POLICY
Descrive i criteri di conservazione dei dati di Query Store. STALE_QUERY_THRESHOLD_DAYS determina il numero di giorni per cui le informazioni per una query vengono conservate in Query Store. STALE_QUERY_THRESHOLD_DAYS è di tipo bigint. Il valore predefinito è 30. Per l'edizione Basic del database SQL, l'impostazione predefinita è 7 giorni.
DATA_FLUSH_INTERVAL_SECONDS
Determina la frequenza con cui i dati scritti in Query Store vengono salvati in modo permanente sul disco. Per ottimizzare le prestazioni, i dati raccolti da Query Store vengono scritti in modo asincrono sul disco. La frequenza con cui si verifica questo trasferimento asincrono viene configurata tramite l'argomento DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS è di tipo bigint. Il valore predefinito 900 (15 min).
MAX_STORAGE_SIZE_MB
Determina lo spazio allocato a Query Store. MAX_STORAGE_SIZE_MB è di tipo bigint. Il valore predefinito è 100 MB.
Il limite MAX_STORAGE_SIZE_MB
non è necessariamente applicato. Le dimensioni di archiviazione vengono controllate solo quando Query Store scrive i dati su disco. Questo intervallo viene impostato dall'opzione DATA_FLUSH_INTERVAL_SECONDS
o dall'opzione della finestra di dialogo di Query Store in Management Studio Intervallo di scaricamento dati. Il valore predefinito dell'intervallo è 900 secondi (o 15 minuti).
Se Query Store ha violato il limite di MAX_STORAGE_SIZE_MB
tra i controlli delle dimensioni di archiviazione, passa alla modalità di sola lettura. Se è abilitata la SIZE_BASED_CLEANUP_MODE
, viene attivato anche il meccanismo di pulizia per applicare il limite MAX_STORAGE_SIZE_MB
.
Una volta cancellato spazio sufficiente, la modalità Query Store torna automaticamente alla lettura/scrittura.
Importante
- Se si ritiene che l'acquisizione del carico di lavoro richieda più di 10 GB di spazio su disco, è consigliabile ripensare e ottimizzare il carico di lavoro per riutilizzare i piani di query, ad esempio usando parametrizzazione forzatao modificare le configurazioni di Query Store.
- A partire da SQL Server 2019 (15.x) e nel database SQL di Azure è possibile impostare
QUERY_CAPTURE_MODE
su CUSTOM per un controllo aggiuntivo sui criteri di acquisizione delle query. -
MAX_STORAGE_SIZE_MB
l'impostazione del limite è di 10.240 MB su Istanza gestita di SQL di Azure.
INTERVAL_LENGTH_MINUTES
Determina l'intervallo di tempo in base a cui vengono aggregati i dati delle statistiche di esecuzione di runtime in Query Store. Per ottimizzare l'utilizzo dello spazio, le statistiche di esecuzione di runtime nell'archivio di statistiche di runtime vengono aggregate in un intervallo di tempo fisso. L'intervallo di tempo predefinito viene configurato tramite l'argomento INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES è di tipo bigint. Il valore predefinito è 60.
SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
Controlla se la pulizia viene attivata automaticamente quando la quantità totale di dati si avvicina alla dimensione massima.
OFF
La pulizia basata sulle dimensioni non viene attivata automaticamente.
AUTO
La pulizia basata sulle dimensioni viene attivata automaticamente quando le dimensioni del disco raggiungono 90% di max_storage_size_mb. La pulizia basata sulle dimensioni rimuove per prime le query meno recenti e meno dispendiose. Si arresta quando raggiunge all'incirca l'80% di max_storage_size_mb. Si tratta del valore di configurazione predefinito.
SIZE_BASED_CLEANUP_MODE è di tipo nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | CUSTOM | NONE }
Determina la modalità di acquisizione query attiva.
ALL
Vengono acquisite tutte le query.
AUTO
Consente di acquisire le query pertinenti in base al conteggio delle esecuzioni e al consumo delle risorse. Si tratta del valore di configurazione predefinito per il database SQL di Azure.
NONE
Consente di arrestare l'acquisizione di nuove query. Query Store continua a raccogliere statistiche di compilazione e runtime per le query già acquisite. Usare questa configurazione con cautela perché potrebbe non essere possibile acquisire query importanti.
QUERY_CAPTURE_MODE è di tipo nvarchar.
MAX_PLANS_PER_QUERY
Intero che rappresenta il numero massimo di piani mantenuti per ogni query. MAX_PLANS_PER_QUERY è di tipo int. Il valore predefinito è 200.
WAIT_STATS_CAPTURE_MODE { ON | OFF }
Controlla se le statistiche di attesa vengono acquisite per ogni query.
In...
Verranno acquisite informazioni sulle statistiche di attesa per ogni query. Si tratta del valore di configurazione predefinito.
OFF
Le informazioni sulle statistiche di attesa per query non vengono acquisite.
< > query_capture_policy_option_list :: =
Controlla le opzioni dei criteri di acquisizione di Query Store. Ad eccezione di STALE_CAPTURE_POLICY_THRESHOLD, queste opzioni definiscono le condizioni OR che devono verificarsi perché le query vengano acquisite nel valore della soglia dei criteri di acquisizione non aggiornati definito.
STALE_CAPTURE_POLICY_THRESHOLD = integer { DAYS | HOURS }
Definisce l'intervallo di valutazione per determinare se una query deve essere acquisita. Il valore predefinito è 1 giorno e l'intervallo può essere impostato da 1 ora a sette giorni.
EXECUTION_COUNT = integer
Definisce il numero di esecuzioni di una query nel periodo di valutazione. Il valore predefinito è 30. Questo significa che per il valore predefinito della soglia dei criteri di acquisizione non aggiornati è necessario eseguire una query almeno 30 volte al giorno perché venga salvata in modo permanente in Query Store. EXECUTION_COUNT è di tipo int.
TOTAL_COMPILE_CPU_TIME_MS = integer
Definisce il tempo CPU di compilazione trascorso totale usato da una query nel periodo di valutazione. Il valore predefinito è 1000. Questo significa che per il valore predefinito della soglia dei criteri di acquisizione non aggiornati una query deve aver usato in totale almeno un secondo di tempo CPU al giorno per la compilazione perché venga salvata in modo permanente in Query Store. TOTAL_COMPILE_CPU_TIME_MS è di tipo int.
TOTAL_EXECUTION_CPU_TIME_MS = integer
Definisce il tempo CPU di esecuzione trascorso totale usato da una query nel periodo di valutazione. Il valore predefinito è 100. Questo significa che per il valore predefinito della soglia dei criteri di acquisizione non aggiornati una query deve aver usato in totale almeno 100 ms di tempo CPU al giorno per l'esecuzione perché venga salvata in modo permanente in Query Store. TOTAL_EXECUTION_CPU_TIME_MS è di tipo int.
< > snapshot_option ::=
Determina il livello di isolamento delle transazioni.
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
In...
Abilita l'opzione relativa allo snapshot a livello di database. Se questa opzione è abilitata, le istruzioni DML iniziano a generare versioni di riga anche quando nessuna transazione usa l'isolamento dello snapshot. Una volta abilitata l'opzione, le transazioni possono specificare il livello di isolamento della transazione SNAPSHOT. Nelle transazioni eseguite con il livello di isolamento SNAPSHOT, tutte le istruzioni possono accedere a uno snapshot dei dati corrispondente allo stato dei dati al momento dell'avvio della transazione. Se una transazione eseguita con il livello di isolamento SNAPSHOT deve accedere ai dati in più database, è necessario impostare ALLOW_SNAPSHOT_ISOLATION su ON in tutti i database oppure ogni istruzione della transazione deve usare hint di blocco per qualsiasi riferimento in una clausola FROM a una tabella di un database per cui l'opzione ALLOW_SNAPSHOT_ISOLATION è impostata su OFF.
OFF
Consente di disabilitare l'opzione Snapshot a livello di database. Per le transazioni non può essere impostato il livello di isolamento SNAPSHOT.
Quando si imposta un nuovo stato per l'opzione ALLOW_SNAPSHOT_ISOLATION (da ON a OFF oppure da OFF a ON), ALTER DATABASE restituisce il controllo al chiamante solo dopo il completamento del commit di tutte le transazioni esistenti nel database. Se per il database è già attivo lo stato specificato nell'istruzione ALTER DATABASE, il controllo viene restituito immediatamente al chiamante. Se l'istruzione ALTER DATABASE non restituisce il controllo rapidamente, usare sys.dm_tran_active_snapshot_database_transactions per verificare se sono presenti transazioni con esecuzione prolungata. Se l'istruzione ALTER DATABASE viene annullata, il database rimane nello stato attivo al momento dell'avvio dell'istruzione ALTER DATABASE. La vista del catalogo sys.databases indica lo stato delle transazioni di isolamento dello snapshot nel database. Se snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, l'istruzione ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF
sospende sei secondi e ritenta l'operazione.
Non è possibile cambiare lo stato di ALLOW_SNAPSHOT_ISOLATION se il database è OFFLINE.
È possibile modificare le impostazioni di ALLOW_SNAPSHOT_ISOLATION per i database master
, model
, msdb
e tempdb
. Se si modifica l'impostazione per tempdb
, l'impostazione viene mantenuta ogni volta che l'istanza del motore di database viene arrestata e riavviata. Se si modifica l'impostazione per il database di sistema model
, questa diventa l'impostazione predefinita per i nuovi database creati, ad eccezione di tempdb
.
Per impostazione predefinita, l'opzione è ON per i database master
e msdb
.
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna snapshot_isolation_state
nella vista del catalogo sys.databases.
READ_COMMITTED_SNAPSHOT { ON | OFF }
In...
Abilita l'opzione relativa allo snapshot Read Committed a livello di database. Se questa opzione è abilitata, le istruzioni DML iniziano a generare versioni di riga anche quando nessuna transazione usa l'isolamento dello snapshot. Quando questa opzione è abilitata, le transazioni che specificano il livello di isolamento READ COMMITTED usano il controllo delle versioni delle righe anziché il blocco. Quando una transazione viene eseguita con il livello di isolamento READ COMMITTED, tutte le istruzioni vedono uno snapshot dei dati nello stato in cui si trovano all'avvio dell'istruzione.
OFF
Disabilita l'opzione relativa allo snapshot Read Committed a livello di database. Le transazioni per cui è impostato il livello di isolamento READ COMMITTED usano il blocco.
Per impostare READ_COMMITTED_SNAPSHOT su ON o su OFF, è necessario che non siano presenti connessioni attive al database, ad eccezione della connessione usata per eseguire il comando ALTER DATABASE. Non è tuttavia necessario che il database sia in modalità utente singolo. Non è possibile cambiare lo stato di questa opzione quando il database è OFFLINE.
Non è possibile impostare READ_COMMITTED_SNAPSHOT su ON per i database di sistema master
, tempdb
e msdb
. Se si modifica l'impostazione per il database di sistema model
, questa diventa l'impostazione predefinita per i nuovi database creati, ad eccezione di tempdb
.
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna is_read_committed_snapshot_on
nella vista del catalogo sys.databases.
Avviso
Quando viene creata una tabella con DURABILITY = SCHEMA_ONLYe READ_COMMITTED_SNAPSHOT viene successivamente modificata usando ALTER DATABASE, i dati nella tabella vengono persi.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
In...
Quando l'isolamento della transazione è impostato su un livello inferiore a SNAPSHOT, tutte le operazioni interpretate di Transact-SQL nelle tabelle ottimizzate per la memoria vengono eseguite con isolamento SNAPSHOT. I livelli di isolamento inferiori a SNAPSHOT sono, ad esempio, READ COMMITTED e READ UNCOMMITTED. Queste operazioni vengono eseguite indipendentemente dal fatto che venga impostato in modo esplicito il livello di isolamento della transazione a livello di sessione o che venga usata in modo implicito l'impostazione predefinita.
OFF
Non innalza il livello di isolamento della transazione per le operazioni interpretate di Transact-SQL nelle tabelle ottimizzate per la memoria.
Non è possibile cambiare lo stato di MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT se il database è OFFLINE.
Il valore predefinito è OFF.
L'impostazione corrente di questa opzione può essere determinata esaminando la colonna is_memory_optimized_elevate_to_snapshot_on
nella vista del catalogo sys.databases.
< > sql_option ::=
Controlla le opzioni di conformità ANSI a livello di database.
ANSI_NULL_DEFAULT { ON | OFF }
Determina il valore predefinito, NULL o NOT NULL, per una colonna o un tipo CLR definito dall'utente per cui il supporto dei valori Null non è definito in modo esplicito nell'istruzione CREATE TABLE o ALTER TABLE. Le colonne definite con vincoli seguono regole di vincolo indipendentemente da questa impostazione.
In...
Il valore predefinito è NULL.
OFF
Il valore predefinito è NOT NULL.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per ANSI_NULL_DEFAULT. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta ANSI_NULL_DEFAULT su ON per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET ANSI_NULL_DFLT_ON.
Per motivi di compatibilità con ANSI, l'impostazione dell'opzione di database ANSI_NULL_DEFAULT su ON modifica l'impostazione predefinita del database su NULL.
È possibile determinare lo stato di questa opzione esaminando la colonna is_ansi_null_default_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAnsiNullDefault
della funzione DATABASEPROPERTYEX.
ANSI_NULLS { ON | OFF }
In...
Tutti i confronti con un valore Null restituiscono UNKNOWN.
OFF
I confronti di valori non Unicode con un valore Null restituiscono TRUE se entrambi i valori sono NULL.
Importante
In una versione futura di SQL Server l'opzione ANSI_NULLS sarà sempre impostata su ON e qualsiasi applicazione che imposti in modo esplicito questa opzione su OFF genererà un errore. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per ANSI_NULLS. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta ANSI_NULLS su ON per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET ANSI_NULLS.
Importante
È inoltre necessario che l'opzione SET ANSI_NULLS sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
È possibile determinare lo stato di questa opzione esaminando la colonna is_ansi_nulls_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAnsiNullsEnabled
della funzione DATABASEPROPERTYEX.
ANSI_PADDING { ON | OFF }
In...
Le stringhe vengono riempite in modo che abbiano tutte la stessa lunghezza prima della conversione. o dell'inserimento in un tipo di dati varchar o nvarchar.
OFF
Vengono inseriti spazi vuoti finali nei valori di tipo carattere in colonne di tipo varchar o nvarchar. Vengono inoltre lasciati gli zeri finali nei valori binari inseriti nelle colonne di tipo varbinary. I valori non vengono riempiti per l'intera lunghezza della colonna.
Se si specifica OFF, questa impostazione ha effetto solo sulla definizione di nuove colonne.
Importante
In una versione futura di SQL Server l'opzione ANSI_PADDING sarà sempre impostata su ON e qualsiasi applicazione che imposti in modo esplicito questa opzione su OFF genererà un errore. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. È consigliabile impostare l'opzione ANSI_PADDING sempre su ON. È necessario che l'opzione ANSI_PADDING sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
Le colonne char(n) e binary(n) che consentono valori Null vengono riempite fino alla loro lunghezza quando ANSI_PADDING è impostata su ON. I valori vuoti e gli zeri finali vengono eliminati quando ANSI_PADDING è impostata su OFF. Le colonne char(n) e binary(n) che non consentono valori Null vengono sempre riempite fino alla loro lunghezza.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per ANSI_PADDING. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta ANSI_PADDING su ON per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET ANSI_PADDING.
È possibile determinare lo stato di questa opzione esaminando la colonna is_ansi_padding_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAnsiPaddingEnabled
della funzione DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | OFF }
In...
Vengono restituiti messaggi di errore o di avviso quando si verificano condizioni come la divisione per zero e inoltre quando nelle funzioni di aggregazione sono presenti valori Null.
OFF
Non vengono generati avvisi e vengono restituiti valori Null quando si verificano condizioni come la divisione per zero.
Importante
È necessario che l'opzione ANSI_WARNINGS sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per ANSI_WARNINGS. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta ANSI_WARNINGS su ON per la sessione. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET ANSI_WARNINGS.
È possibile determinare lo stato di questa opzione esaminando la colonna is_ansi_warnings_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAnsiWarningsEnabled
della funzione DATABASEPROPERTYEX.
ARITHABORT { ON | OFF }
In...
Interrompe una query quando si verifica un overflow o un errore di divisione per zero durante l'esecuzione della query stessa.
OFF
Quando si verifica uno di questi errori, viene visualizzato un messaggio di avviso. L'esecuzione della query, del batch o della transazione prosegue come se non si fosse verificato alcun errore, anche se viene visualizzato un messaggio di avviso.
Importante
È necessario che l'opzione ARITHABORT sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
È possibile determinare lo stato di questa opzione esaminando la colonna is_arithabort_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsArithmeticAbortEnabled
della funzione DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Per altre informazioni, vedere livello di compatibilità ALTER DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | OFF }
In...
Il risultato di un'operazione di concatenazione è NULL quando uno degli operandi è NULL. La concatenazione della stringa di caratteri "Questo è" con NULL restituisce, ad esempio, il valore NULL anziché il valore "Questo è".
OFF
Il valore Null viene considerato come una stringa di caratteri vuota.
Importante
È necessario che l'opzione CONCAT_NULL_YIELDS_NULL sia impostata su ON durante la creazione o la modifica di indici in colonne calcolate o viste indicizzate.
In una versione futura di SQL Server l'opzione CONCAT_NULL_YIELDS_NULL sarà sempre impostata su ON e qualsiasi applicazione che imposti in modo esplicito l'opzione su OFF restituirà un errore. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per CONCAT_NULL_YIELDS_NULL. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta CONCAT_NULL_YIELDS_NULL su ON per la sessione quando viene stabilita una connessione a un'istanza di SQL Server. Per altre informazioni, vedere SET CONCAT_NULL_YIELDS_NULL.
È possibile determinare lo stato di questa opzione esaminando la colonna is_concat_null_yields_null_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsNullConcat
della funzione DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | OFF }
In...
Viene generato un errore quando si verifica una perdita di precisione in un'espressione.
OFF
La perdita di precisione non genera messaggi di errore e il risultato viene arrotondato alla precisione della colonna o della variabile in cui viene archiviato.
Importante
È necessario che l'opzione NUMERIC_ROUNDABORT sia impostata su OFF quando vengono creati o modificati indici in colonne calcolate o viste indicizzate.
È possibile determinare lo stato di questa opzione nella colonna is_numeric_roundabort_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsNumericRoundAbortEnabled
della funzione DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | OFF }
In...
È possibile usare le virgolette doppie per delimitare gli identificatori delimitati.
Tutte le stringhe delimitate da virgolette doppie vengono interpretate come identificatori di oggetto. Gli identificatori delimitati non devono necessariamente essere conformi alle regole di Transact-SQL per gli identificatori. Possono essere parole chiave e includere caratteri normalmente non consentiti negli identificatori di Transact-SQL. Se una virgoletta doppia (
"
) fa parte dell'identificatore, può essere rappresentata da due virgolette doppie (""
).OFF
Gli identificatori non possono essere delimitati da virgolette e devono essere conformi a tutte le regole di Transact-SQL per gli identificatori. È possibile delimitare i valori letterali con virgolette singole o doppie.
SQL Server consente anche di delimitare gli identificatori in base alle parentesi quadre ([
e ]
). Gli identificatori tra parentesi quadre possono essere sempre usati, indipendentemente dall'impostazione di QUOTED_IDENTIFIER. Per altre informazioni, vedere identificatori di database .
Quando viene creata una tabella, l'opzione QUOTED IDENTIFIER viene sempre archiviata con l'impostazione ON nei relativi metadati, anche se l'opzione è impostata su OFF.
Le impostazioni a livello di connessione definite usando l'istruzione SET sono prioritarie rispetto all'impostazione predefinita del database per QUOTED_IDENTIFIER. Per impostazione predefinita, i client ODBC e OLE DB eseguono un'istruzione SET a livello di connessione che imposta QUOTED_IDENTIFIER. I client eseguono l'istruzione quando ci si connette a un'istanza di SQL Server. Per altre informazioni, vedere SET QUOTED_IDENTIFIER.
È possibile determinare lo stato di questa opzione esaminando la colonna is_quoted_identifier_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsQuotedIdentifiersEnabled
della funzione DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | OFF }
In...
È consentita l'attivazione ricorsiva di trigger AFTER.
OFF
È possibile determinare lo stato di questa opzione esaminando la colonna
is_recursive_triggers_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietàIsRecursiveTriggersEnabled
della funzione DATABASEPROPERTYEX.Nota
Se l'opzione RECURSIVE_TRIGGERS è impostata su OFF, viene impedita esclusivamente la ricorsione diretta. Per disabilitare la ricorsione indiretta, è necessario impostare anche l'opzione del server nested triggers su 0.
È possibile determinare lo stato di questa opzione esaminando la colonna is_recursive_triggers_on
nella vista del catalogo sys.databases o la proprietà IsRecursiveTriggersEnabled
della funzione DATABASEPROPERTYEX.
< > target_recovery_time_option ::=
L'opzione target_recovery_time_option non è supportata in Istanza gestita di SQL di Azure.
Specifica la frequenza di checkpoint indiretti per database singolo. A partire da SQL Server 2016 (13.x), il valore predefinito per i nuovi database è 1 minuto, che indica che il database usa checkpoint indiretti. Per le versioni precedenti, il valore predefinito è 0, che indica che il database usa checkpoint automatici, la cui frequenza dipende dall'impostazione dell'intervallo di recupero dell'istanza del server. Microsoft consiglia di usare 1 minuto per la maggior parte dei sistemi.
WITH <terminazione> ::=
Specifica quando eseguire il rollback di transazioni incomplete in caso di transizione dello stato del database. Se questa clausola viene omessa, l'attesa da parte dell'istruzione ALTER DATABASE è illimitata in presenza di qualsiasi blocco attivo sul database. È possibile specificare una sola clausola di terminazione, che deve seguire le clausole SET.
Nota
Non tutte le opzioni di database usano la clausola WITH <termination>. Per altre informazioni, vedere la tabella in Impostazione delle opzioni nella sezione "Osservazioni" di questo articolo.
ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
Specifica se eseguire il rollback dopo il numero di secondi specificato o immediatamente.
NO_WAIT
Specifica che la richiesta ha esito negativo se lo stato o l'opzione del database richiesto non può essere completata immediatamente. senza aspettare il commit o il rollback automatico delle transazioni.
< > temporal_history_retention ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
ON per impostazione predefinita, ma viene anche impostato automaticamente su OFF dopo un'operazione di ripristino temporizzato. Per altre informazioni, tra cui come abilitare questa impostazione, vedere Come configurare criteri di conservazione.
In...
Predefinito. Abilita i criteri di conservazione delle tabelle temporali. Per altre informazioni, vedere Gestire la conservazione di dati cronologici in tabelle temporali con controllo delle versioni di sistema.
OFF
Non eseguire criteri di conservazione cronologici temporali.
Impostare le opzioni
Per recuperare le impostazioni correnti delle opzioni di database, usare la vista del catalogo sys.databases o DATABASEPROPERTYEX
Dopo l'impostazione di un'opzione di database, la modifica diventa effettiva immediatamente.
Per cambiare i valori predefiniti di qualsiasi opzione di database per tutti i nuovi database, A questo scopo, modificare l'opzione di database appropriata nel database di sistema model
.
Esempi
R. Abilitare l'isolamento dello snapshot in un database
Nell'esempio seguente viene abilitata l'opzione relativa al framework di isolamento dello snapshot per il database AdventureWorks2022
.
USE master;
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check the state of the snapshot_isolation_framework
-- in the database.
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'[database_name]';
GO
Il set di risultati indica che il framework di isolamento dello snapshot è abilitato.
name | snapshot_isolation_state | description |
---|---|---|
[database_name] | 1 | In... |
B. Abilitare, modificare o disabilitare il rilevamento delle modifiche
Nell'esempio seguente viene abilitato il rilevamento delle modifiche per il database AdventureWorks2022
e il periodo di memorizzazione viene impostato su 2
giorni.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
Nell'esempio seguente viene illustrato come modificare il periodo di memorizzazione impostandolo su 3
giorni.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
Nell'esempio seguente viene illustrato come disabilitare il rilevamento delle modifiche per il database AdventureWorks2022
.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
C. Abilitare Query Store
L'esempio seguente abilita Query Store e configura i relativi parametri.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60
);
D. Abilitare Query Store con statistiche di attesa
L'esempio seguente abilita Query Store e configura i relativi parametri.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON
);
E. Abilitare Query Store con opzioni dei criteri di acquisizione personalizzati
L'esempio seguente abilita Query Store e configura i relativi parametri.
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1024,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Contenuto correlato
- Statistica
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- livello di compatibilità ALTER DATABASE
- Mirroring del database ALTER DATABASE
- CREATE DATABASE
- abilitare e disabilitare il rilevamento delle modifiche (SQL Server)
- DROP DATABASE (Transact-SQL)
- SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
- sp_configure
- Procedure consigliate per il monitoraggio dei carichi di lavoro con Query Store
* Azure Synapse
Analytics *
Azure Synapse Analytics
Sintassi
ALTER DATABASE { database_name }
SET
{
<optionspec> [ ,...n ]
}
;
<option_spec>::=
{
<auto_option>
| <db_encryption_option>
| <query_store_options>
| <result_set_caching>
| <snapshot_option>
}
;
<auto_option> ::=
{
AUTO_CREATE_STATISTICS { OFF | ON }
}
<db_encryption_option> ::=
{
ENCRYPTION { ON | OFF }
}
<query_store_option> ::=
{
QUERY_STORE { OFF | ON }
}
<result_set_caching_option> ::=
{
RESULT_SET_CACHING { ON | OFF }
}
<snapshot_option> ::=
{
READ_COMMITTED_SNAPSHOT { ON | OFF }
}
Argomenti
database_name
Nome del database da modificare.
< > auto_option ::=
Consente di controllare le opzioni automatiche.
AUTO_CREATE_STATISTICS { ON | OFF }
In...
Query Optimizer crea statistiche per colonne singole nei predicati di query, se necessario, per migliorare i piani di query e le prestazioni di esecuzione delle query. Queste statistiche per colonne singole vengono create quando Query Optimizer compila le query. Vengono create solo sulle colonne che non sono già le prime di un oggetto statistiche esistente.
Il valore predefinito è ON. È consigliabile usare l'impostazione predefinita per la maggior parte dei database.
OFF
Query Optimizer non crea statistiche sulle singole colonne nei predicati di query durante la compilazione delle query. L'impostazione di questa opzione su OFF può determinare piani di query e prestazioni di esecuzione delle query non ottimali.
Questo comando deve essere eseguito mentre si è connessi al database utente.
È possibile determinare lo stato di questa opzione esaminando la colonna is_auto_create_stats_on
nella vista del catalogo sys.databases. È anche possibile determinare lo stato esaminando la proprietà IsAutoCreateStatistics
della funzione DATABASEPROPERTYEX.
Per altre informazioni, vedere la sezione "Opzioni relative alle statistiche nel database" in Statistiche.
< > db_encryption_option ::=
Controlla lo stato della crittografia del database.
ENCRYPTION { ON | OFF }
In...
Imposta il database in modo che venga crittografato.
OFF
Imposta il database in modo che non venga crittografato.
Per altre informazioni sulla crittografia del database, vedere TDE (Transparent Data Encryption)e Transparent Data Encryption per il database SQL di Azure, Istanza gestita di SQL di Azure e Azure Synapse Analytics.
Quando la crittografia è abilitata a livello di database, tutti i filegroup vengono crittografati. Tutti i nuovi gruppi di file ereditano la proprietà crittografata. Se i filegroup nel database sono impostati su SOLA lettura, l'operazione di crittografia del database ha esito negativo.
È possibile visualizzare lo stato di crittografia del database e lo stato dell'analisi della crittografia usando la DMV sys.dm_database_encryption_keys
.
< > query_store_option ::=
Controlla se Query Store è abilitato in questo data warehouse.
QUERY_STORE { ON | OFF }
In...
Abilita Query Store.
OFF
Disabilita Query Store. OFF è il valore predefinito.
Nota
Per Azure Synapse Analytics, è necessario eseguire ALTER DATABASE SET QUERY_STORE
dal database utente. L'esecuzione dell'istruzione da un'altra istanza del data warehouse non è supportata.
Nota
Per Azure Synapse Analytics, Query Store può essere abilitato come in altre piattaforme, ma non sono supportate opzioni di configurazione aggiuntive.
< > result_set_caching_option ::=
Si applica a: Azure Synapse Analytics
Controlla se il risultato della query viene memorizzato nella cache del database.
RESULT_SET_CACHING { ON | OFF}
In...
Specifica che i set di risultati della query restituiti da questo database vengono memorizzati nella cache nel database.
OFF
Specifica che i set di risultati della query restituiti da questo database non vengono memorizzati nella cache nel database.
Questo comando deve essere eseguito mentre si è connessi al database master
. Le modifiche apportate a questa impostazione del database hanno effetto immediato. La memorizzazione nella cache dei set di risultati delle query prevede l'addebito dei costi di archiviazione. Dopo aver disabilitato la memorizzazione nella cache dei risultati per un database, la cache dei risultati persistente in precedenza viene immediatamente eliminata dall'archiviazione di Azure Synapse.
Eseguire questo comando per controllare la configurazione della memorizzazione nella cache dei set di risultati di un database. Se la memorizzazione nella cache del set di risultati è attivata, is_result_set_caching_on
restituisce 1.
SELECT name, is_result_set_caching_on FROM sys.databases
WHERE name = <'Your_Database_Name'>
Eseguire questo comando per verificare se è stata eseguita una query usando il risultato memorizzato nella cache. La colonna result_cache_hit
restituisce 1 per riscontri nella cache, 0 per mancata cache e valori negativi per motivi per cui la memorizzazione nella cache del set di risultati non è stata usata. Per informazioni dettagliate, vedere sys.dm_pdw_exec_requests.
SELECT request_id, command, result_cache_hit FROM sys.dm_pdw_exec_requests
WHERE request_id = <'Your_Query_Request_ID'>
Nota
La memorizzazione nella cache dei set di risultati non deve essere usata insieme a DECRYPTBYKEY. Se questa funzione di crittografia deve essere usata, assicurarsi di avere disabilitato la memorizzazione nella cache dei set di risultati (a livello di sessione o a livello di database) al momento dell'esecuzione.
Importante
Le operazioni per creare la cache dei set di risultati e recuperare i dati dalla cache vengono eseguite nel nodo di controllo di un'istanza del data warehouse. Quando la memorizzazione nella cache dei set di risultati è impostata su ON, l'esecuzione di query che restituiscono set di risultati di grandi dimensioni, ad esempio >1 milione di righe, può causare un utilizzo elevato della CPU nel nodo di controllo e rallentare complessivamente la risposta alle query nell'istanza. Queste query vengono in genere usate durante l'esplorazione dei dati o le operazioni ETL (estrazione, trasformazione e caricamento). Per evitare il sovraccarico del nodo di controllo e la comparsa di problemi di prestazioni, gli utenti devono DISATTIVARE la memorizzazione nella cache del set di risultati nel database prima di eseguire query di questo tipo.
Per informazioni dettagliate sull'ottimizzazione delle prestazioni con la memorizzazione nella cache dei set di risultati, vedere Linee guida sull'ottimizzazione delle prestazioni.
Autorizzazioni
Per impostare l'opzione RESULT_SET_CACHING, un utente deve avere un account di accesso di tipo entità di livello server, ovvero quello creato dal processo di provisioning, oppure essere un membro del ruolo del database dbmanager
.
< > snapshot_option ::=
Si applica a: Azure Synapse Analytics
Controlla il livello di isolamento delle transazioni di un database.
READ_COMMITTED_SNAPSHOT { ON | OFF }
In...
Abilita l'opzione READ_COMMITTED_SNAPSHOT a livello di database.
OFF
Disabilita l'opzione READ_COMMITTED_SNAPSHOT a livello di database.
Questo comando deve essere eseguito mentre si è connessi al database master
. L'attivazione di READ_COMMITTED_SNAPSHOT on o OFF per un database utente termina tutte le connessioni aperte al database. È necessario apportare questa modifica durante una finestra di manutenzione del database o attendere fino a quando non è presente alcuna connessione attiva al database, ad eccezione della connessione che esegue il comando ALTER DATABASE. Non è necessario che il database sia in modalità utente singolo. La modifica dell'impostazione READ_COMMITTED_SNAPSHOT a livello di sessione non è supportata. Per verificare questa impostazione per un database, controllare la colonna is_read_committed_snapshot_on
in sys.databases
.
In un database con READ_COMMITTED_SNAPSHOT abilitato, le query possono riscontrare prestazioni più lente a causa dell'analisi delle versioni se sono presenti più versioni di dati. Anche le transazioni aperte da tempo possono causare un aumento delle dimensioni del database. Questo problema si verifica in caso di modifiche ai dati apportate da tali transazioni che bloccano la pulizia delle versioni.
Autorizzazioni
Per impostare l'opzione READ_COMMITTED_SNAPSHOT, un utente deve avere l'autorizzazione ALTER per il database.
Esempi
Controllare l'impostazione delle statistiche per un database
SELECT name, is_auto_create_stats_on FROM sys.databases
Abilitare Query Store per un database
ALTER DATABASE [database_name]
SET QUERY_STORE = ON;
Abilitare la memorizzazione nella cache dei set di risultati per un database
-- Run this command when connecting to the MASTER database
ALTER DATABASE [database_name]
SET RESULT_SET_CACHING ON;
Verificare l'impostazione di memorizzazione nella cache dei set di risultati per un database
SELECT name, is_result_set_caching_on
FROM sys.databases;
Abilitare l'opzione Read_Committed_Snapshot per un database
Eseguire questo comando durante la connessione al database master
.
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON;
Contenuto correlato
Microsoft Fabric
Microsoft Fabric
Usare ALTER DATABASE ... SET
per gestire un'istanza di Microsoft Fabric Warehouse.
Sintassi
-- Microsoft Fabric
ALTER DATABASE { warehouse_name | CURRENT }
SET
{
<option_spec> [ ,...n ]
}
<option_spec> ::=
{
<data_lake_log_publishing>
| <vorder>
}
;
<data_lake_log_publishing> ::=
{
DATA_LAKE_LOG_PUBLISHING { PAUSED | AUTO }
}
<vorder> ::=
{
VORDER = OFF
}
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.
Autorizzazioni
L'utente deve essere membro dei ruoli Amministratore, Membro o Collaboratore nell'area di lavoro Infrastruttura.
Esempi
R. Sospensione della pubblicazione di Delta Lake Logs
Il comando T-SQL seguente sospende la pubblicazione di Delta Lake Log nel contesto del warehouse corrente.
ALTER DATABASE CURRENT SET DATA_LAKE_LOG_PUBLISHING = PAUSED;
Per controllare lo stato corrente della pubblicazione di Delta Lake Log in tutti i warehouse, dell'area di lavoro, usare il codice T-SQL seguente per eseguire query sys.databases in una nuova finestra di query:
SELECT [name], [DATA_LAKE_LOG_PUBLISHING_DESC] FROM sys.databases;