Opzioni di ALTER DATABASE SET (Transact-SQL)

Imposta le opzioni di database in Microsoft SQL Server, database Azure SQL e 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 sono presenti altre sessioni nel database che 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 SET opzioni, ma sono descritti in articoli separati a causa della loro lunghezza. 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 eseguono l'override dei 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>
  | <service_broker_option>
  | <snapshot_option>
  | <sql_option>
  | <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 = { 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
    }
}

<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 = { 150 | 140 | 130 | 120 | 110 | 100 }
  | CONCAT_NULL_YIELDS_NULL { ON | OFF }
  | NUMERIC_ROUNDABORT { ON | OFF }
  | QUOTED_IDENTIFIER { ON | OFF }
  | RECURSIVE_TRIGGERS { ON | OFF }
}

<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 il ripristino accelerato del database (ADR, Accelerated Database Recovery) per ogni database. AdR è impostato su OFF per impostazione predefinita in SQL Server 2019 (15,x). Usando questa sintassi, è possibile designare un gruppo di file specifico per i dati dell'archivio versioni persistente . Se non è specificato alcun filegroup, per l'archivio versioni permanente viene usato il filegroup PRIMARY. Per altre informazioni ed esempi, vedere Ripristino accelerato del database.

<> auto_option ::=

Consente di controllare le opzioni automatiche.

AUTO_CLOSE { ON | OFF }

ON
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 di riaprimento si verifica quando un utente rilascia un'istruzione USE database_name . Se l'opzione AUTO_CLOSE è impostata su ON, è possibile che il database venga arrestato correttamente. In tal caso, il database non viene riaperto finché un utente non tenta di usare il database al successivo riavvio del motore di database.

Dopo l'arresto di un database, al successivo tentativo di utilizzo del database da parte di un'applicazione, il database deve prima essere aperto e quindi lo stato viene modificato in online. Questa operazione potrebbe richiedere del 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 in 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.

Se l'opzione AUTO_CLOSE è impostata su ON, alcune colonne nella vista del catalogo sys.databases e la funzione DATABASEPROPERTYEX restituiranno NULL perché il database non è disponibile per il recupero dei 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 avvia un arresto automatico del database 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 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 operare stabilmente con un numero elevato di database o per un'istanza di SQL Server a 32 bit legacy con un numero elevato di database. In questi scenari può 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 del log delle transazioni.

AUTO_CREATE_STATISTICS { ON | OFF }

ON
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 Azure SQL database

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 }

ON
I file di database vengono compattati periodicamente, se necessario. Se non è necessario soddisfare esigenze specifiche, 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 la presenza di 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 }

ON
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 alle 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 }

ON
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 FORCE_LAST_GOOD_PLAN l'opzione Ottimizzazione automatica. È possibile visualizzare lo stato di questa opzione nella visualizzazione sys.database_automatic_tuning_options.

FORCE_LAST_GOOD_PLAN = { ON | OFF }

ON
Il motore di database forza automaticamente l'ultimo piano valido noto nelle query Transact-SQL in cui il nuovo piano di query causa regressioni delle prestazioni. Il motore di database monitora continuamente le prestazioni delle query della query Transact-SQL con il piano forzato.

Se si rilevano miglioramenti delle prestazioni, il motore di database continuerà a usare l'ultimo piano valido noto. Se non si rilevano miglioramenti delle prestazioni, il motore di database creerà un nuovo piano di query. L'istruzione avrà esito negativo se la Query Store non è abilitata o se la Query Store non è in modalità lettura-scrittura.

OFF
Il motore di database segnala potenziali regressioni delle prestazioni delle query causate dalle modifiche apportate al piano di query nella visualizzazione sys.dm_db_tuning_recommendations . I consigli qui segnalati non vengono tuttavia applicati automaticamente. Gli utenti possono monitorare le raccomandazioni attive e risolvere i problemi identificati applicando script Transact-SQL visualizzati nella visualizzazione. Il valore predefinito è OFF.

<> change_tracking_option ::=

Si applica a: SQL Server e database SQL

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 esempi, vedere la sezione Esempi più avanti in questo articolo.

ON
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 }
ON
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 | HOURS | 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 dell'indipendenza del database su PARTIAL restituisce un errore se per il database è abilitato Change Data Capture, la replica o il rilevamento delle modifiche. 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 }

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

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 anche impostato automaticamente su OFF dopo l'operazione di ripristino temporizzato. Per altre informazioni, tra cui come abilitare questa impostazione, vedere Come configurare i criteri di conservazione.

ON Impostazione predefinita. Abilita i criteri di conservazione delle tabelle temporali. Per altre informazioni, vedere Gestire la conservazione dei dati cronologici nelle tabelle temporali con versione 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 }
ON
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 }

ON
SQL Server gestisce le statistiche di correlazione in cui un vincolo FOREIGN KEY collega due tabelle nel database e le tabelle hanno colonne datetime.

OFF
Non vengono mantenute statistiche di correlazione.

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 }
ON
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))

Consente di 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 Transparent Data Encryption e Transparent Data Encryption con il database SQL di Azure.

Quando la crittografia è abilitata a livello di database, tutti i filegroup vengono crittografati. I nuovi filegroup erediteranno la proprietà di crittografia. Se in un database sono presenti filegroup impostati su READ ONLY, l'operazione di crittografia del database avrà esito negativo.

È possibile visualizzare lo stato di crittografia del database e lo stato dell'analisi di crittografia usando la visualizzazione di gestione dinamica 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. Lo stato RESTORING può essere impostato durante un'operazione di ripristino attiva o quando un'operazione di ripristino di un database o di un file di log ha esito negativo a causa di un file di backup danneggiato.

<> 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 creerà statistiche nel database di tempdb sistema. 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

Nei database federati di database Azure SQL è SET { READ_ONLY | READ_WRITE } disabilitato.

<> 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 fino a quando tutti gli utenti non si disconnetteno dal database specificato. Per eseguire l'override di questo comportamento, vedere la clausola DI terminazione> WITH<.

Il database rimane in modalità SINGLE_USER anche se l'utente che ha impostato l'opzione si disconnette. A questo punto, un altro utente (ma solo uno) potrà 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 l'opzione è impostata su ON, il thread in background usato per aggiornare le statistiche stabilisce una connessione con il database che non sarà quindi accessibile 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:

  1. Impostare AUTO_UPDATE_STATISTICS_ASYNC su OFF.

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

ON
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 riconoscerà questa impostazione quando l'opzione server di concatenamento tra database è 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 masterdatabase di sistema , modele tempdb .

È possibile determinare lo stato di questa opzione esaminando la colonna is_db_chaining_on nella vista del catalogo sys.databases.

TRUSTWORTHY { ON | OFF }

ON
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, tutti i database di sistema, ad eccezione del msdb database, hanno impostato SU OFF. Il valore non può essere modificato per i model database e tempdb . È consigliabile non impostare mai l'opzione TRUSTWORTHY su ON per il master database.

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 l'opzione CONTAINMENT è impostata su NONE, si verificheranno 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 l'opzione CONTAINMENT è impostata su NONE, si verificheranno 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 l'opzione CONTAINMENT è impostata su NONE, si verificheranno 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 l'opzione CONTAINMENT è impostata su NONE, si verificheranno 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 l'opzione CONTAINMENT è impostata su NONE, si verificheranno 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. È 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.

ON
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 è l'unico tempdb database di sistema che supporta 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 [ ( FORZATO ) ] | 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.

ON
Abilita Query Store.

Molte nuove funzionalità di prestazioni di SQL Server 2022, ad esempio Query Store hint, feedback ce, feedback DI parallelismo (DOP) e feedback di concessione della memoria (MGF) devono essere abilitati Query Store. Per i database ripristinati da altre istanze SQL Server e per tali database aggiornati da un aggiornamento sul posto a SQL Server 2022, questi database manterranno le impostazioni di Query Store precedenti. Se il sovraccarico Query Store può essere introdotto, gli amministratori possono sfruttare i criteri di acquisizione personalizzati con QUERY_CAPTURE_MODE = CUSTOM. Per esempi di come abilitare l'Query Store con le opzioni dei criteri di acquisizione personalizzate, 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 in database singolo Azure SQL database singolo e pool elastico. L'esecuzione di ALTER DATABASE [database] SET QUERY_STORE = OFF restituirà 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 allocato di Query Store viene esaurito, la modalità operativa di Query Store passa a 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 (SQL Server 2016 (13.x) tramite SQL Server 2017 (14.x)). A partire da SQL Server 2019 (15,x), il valore predefinito è 1 GB.

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 o dall'opzione DATA_FLUSH_INTERVAL_SECONDS Gestione Studio Query Store opzione Intervallo di scaricamento dati. Il valore predefinito dell'intervallo è 900 secondi (o 15 minuti). Se Query Store ha violato il limite 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. Dopo la cancellazione di spazio sufficiente, la modalità di Query Store cambierà automaticamente in lettura/scrittura.

Importante

Se si ritiene che per l'acquisizione del carico di lavoro siano necessari più di 10 GB di spazio su disco, è probabile che sia opportuno ripensare e ottimizzare il carico di lavoro in modo da riusare i piani di query (ad esempio, usando la parametrizzazione forzata) oppure modificare le configurazioni di Query Store.
A partire da SQL Server 2019 (15.x) e in Azure SQL Database, è possibile impostare QUERY_CAPTURE_MODE su CUSTOM per un controllo aggiuntivo sui criteri di acquisizione 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 sul disco raggiungono il 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 | | PERSONALIZZATA 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 (SQL Server 2016 (13,x) fino 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 Azure SQL Database.

NONE
Consente di arrestare l'acquisizione di nuove query. Query Store continuerà a raccogliere le statistiche di compilazione e runtime per le query che sono già state acquisite. Usare con cautela questa configurazione perché si rischia di perdere query importanti.

CUSTOM
Si applica a: SQL Server (a partire da SQL Server 2019 (15.x))

Consente il controllo sulle opzioni di QUERY_CAPTURE_POLICY. I criteri di acquisizione personalizzati consentono di Query Store acquisire le query più importanti nel carico di lavoro. Vedere la <query_capture_policy_option_list> per le 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 verranno acquisite le statistiche di attesa per ogni query.

ON
Verranno acquisite informazioni sulle statistiche di attesa per ogni query. Si tratta del valore di configurazione predefinito.

OFF
Non verranno acquisite informazioni sulle statistiche di attesa per ogni query.

<> 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 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 acquisisce i dettagli dell'archivio QUERY_CAPTURE_MODE = AUTO query 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, il che significa che per la soglia predefinita dei criteri di acquisizione non aggiornati una query deve avere un totale di almeno un secondo del tempo di CPU impiegato durante la compilazione delle query in un giorno per essere salvato in modo permanente nella 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 a cui può essere applicata la registrazione minima, vedere 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 è determinato dal modello di recupero del model database di sistema. Per altre informazioni sulla scelta del modello di recupero appropriato, vedere Modelli di recupero.

È 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 }

ON
Le pagine incomplete possono essere rilevate dal motore di database.

OFF
Le pagine incomplete non possono essere rilevate dal motore di database.

Importante

Struttura della sintassi TORN_PAGE_DETECTION ON | OFF verrà rimosso in una versione futura 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, il messaggio di errore 824 (che indica un errore checksum) viene segnalato sia al log degli errori SQL Server che al 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 segnalato un messaggio di errore 824 (che indica un errore di pagina restituito) sia al log degli errori SQL Server che al 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 operazioni di scrittura di pagine di database non genereranno un valore CHECKSUM o TORN_PAGE_DETECTION. SQL Server non verificherà un checksum o una pagina strappata 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 utente o un database di sistema viene aggiornato a SQL Server 2005 (9.x) o una versione successiva, il valore PAGE_VERIFY (NONE o TORN_PAGE_DETECTION) non viene modificato. È consigliabile usare CHECKSUM.

    Nota

    Nelle versioni precedenti di SQL Server, l'opzione di database PAGE_VERIFY è impostata su NONE per il tempdb database e non può essere modificata. A partire da SQL Server 2008, il valore predefinito per il tempdb database è CHECKSUM per le nuove installazioni di SQL Server. Quando si aggiorna un SQL Server di installazione, il valore predefinito rimane NONE. L'opzione può essere modificata. È consigliabile usare CHECKSUM per il tempdb database.

  • TORN_PAGE_DETECTION può consentire l'utilizzo di un numero più limitato di risorse, ma offre una protezione minore rispetto all'opzione 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. Sebbene il ripristino dei dati consenta di risolvere il problema di danneggiamento dei dati, è necessario individuare il prima possibile la causa principale, ad esempio un errore hardware del disco, per eseguire i necessari interventi di correzione ed evitare che gli errori si ripresentino.

SQL Server riprova a ripetere qualsiasi lettura che ha esito negativo con un checksum, una pagina strappata 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 continuerà a essere eseguito. Se tutti i tentativi hanno esito negativo, il comando viene interrotto con il messaggio di errore 824.

Per altre informazioni sui messaggi di errore 823, 824 e 825, vedere:

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 (anteprima 16.x). Questa funzionalità verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. 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 } )| FUORI

ON
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 autorizzazioni db_owner e CONTROL 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 le credenziali con ambito database usate 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 il cui Active Directory è federato con Azure Active Directory.
  • Il server Azure remoto è configurato per supportare l'autenticazione di Azure Active Directory.
  • L'account del servizio in cui è in esecuzione l'istanza di SQL Server deve essere configurato come account dbmanager o sysadmin 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 rimuove il database remoto. Per eliminare il database remoto, usare il portale di Azure.

<> service_broker_option ::=

Si applica a: SQL Server

Controlla le opzioni di Service Broker seguenti: abilita o disabilita il recapito dei messaggi, imposta un nuovo identificatore di Service Broker o imposta le priorità della conversazione su ON o OFF.

ENABLE_BROKER

Specifica che Service Broker è abilitato per il database specificato. Il recapito dei messaggi viene avviato e il is_broker_enabled flag è impostato su true nella visualizzazione del catalogo sys.database . 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 risorse nel database, ENABLE_BROKER attende il rilascio dei blocchi da parte delle altre sessioni. Per abilitare Service Broker in un database utente, assicurarsi che nessun'altra sessione usi il database prima di eseguire l'istruzione, ad esempio inserendo il ALTER DATABASE SET ENABLE_BROKER database in modalità utente singolo. Per abilitare Service Broker nel database msdb, arrestare prima SQL Server Agent in modo che Service Broker possa ottenere il blocco necessario.

DISABLE_BROKER

Specifica che Service Broker è disabilitato per il database specificato. Il recapito dei messaggi viene arrestato e il is_broker_enabled flag è impostato su false nella visualizzazione del catalogo sys.database . 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. Qualsiasi route che fa riferimento all'identificatore di Service Broker precedente deve essere ricreata 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}

ON
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. Per i dialoghi con messaggi da inviare al momento dell'esecuzione di ALTER DATABASE, la nuova impostazione verrà applicata solo quando verranno inviati alcuni messaggi del 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 }

ON
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, tale impostazione viene mantenuta anche se il database viene in seguito impostato su READ_WRITE.

È possibile modificare le impostazioni di ALLOW_SNAPSHOT_ISOLATION per i masterdatabase , , modelmsdbe tempdb . L'impostazione viene mantenuta ogni volta che l'istanza del motore di database viene arrestata e riavviata se si modifica l'impostazione per tempdb. Se si modifica l'impostazione per model, tale impostazione diventa l'impostazione predefinita per tutti i nuovi database creati, ad eccezione di tempdb.

L'opzione è impostata su ON per impostazione predefinita per i master database 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 }

ON
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, tale impostazione viene mantenuta anche se il database viene in seguito impostato su READ_WRITE.

READ_COMMITTED_SNAPSHOT non può essere attivato per i masterdatabase di sistema , tempdbo msdb . Se si modifica l'impostazione per model, tale impostazione diventa l'impostazione predefinita per tutti 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 si crea una tabella con DURABILITY = SCHEMA_ONLY, e successivamente si modifica READ_COMMITTED_SNAPSHOT usando ALTER DATABASE, i dati della tabella andranno perduti.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }

Si applica a: SQL Server (a partire da SQL Server 2014 (12.x))

ON
Quando il livello di isolamento delle transazioni è impostato su qualsiasi livello di isolamento inferiore a SNAPSHOT, tutte le operazioni Transact-SQL interpretate 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 eleva il livello di isolamento delle transazioni per le operazioni Transact-SQL interpretate 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 le regole dei vincoli indipendentemente da questa impostazione.

ON
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 }

ON
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, ANSI_NULLS sarà sempre ON e tutte le applicazioni che impostano esplicitamente l'opzione su OFF genereranno 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 }

ON
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, ANSI_PADDING sarà sempre ON e tutte le applicazioni che impostano esplicitamente l'opzione su OFF genereranno 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 }

ON
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 }

ON
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 = { 150 | 140 | 130 | 120 | 110 | 100 }

Per altre informazioni, vedere Livello di compatibilità ALTER DATABASE.

CONCAT_NULL_YIELDS_NULL { ON | OFF }

ON
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, CONCAT_NULL_YIELDS_NULL sarà sempre ON e tutte le applicazioni che impostano in modo esplicito l'opzione su OFF attiveranno 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 rilasciano un'impostazione dell'istruzione SET a livello di connessione CONCAT_NULL_YIELDS_NULL su ON per la sessione durante la 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 }

ON
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 nella is_numeric_roundabort_on visualizzazione del catalogo sys.database . È anche possibile determinare lo stato esaminando la proprietà IsNumericRoundAbortEnabled della funzione DATABASEPROPERTYEX.

QUOTED_IDENTIFIER { ON | OFF }

ON
È 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 virgolette non devono seguire le regole Transact-SQL per gli identificatori. Possono essere parole chiave e possono includere caratteri non consentiti negli identificatori Transact-SQL. Se una virgoletta singola (') fa parte della stringa letterale, può essere rappresentata tramite virgolette doppie (").

OFF
Gli identificatori non possono trovarsi tra virgolette e devono seguire tutte le regole Transact-SQL per gli identificatori. È possibile delimitare i valori letterali con virgolette singole o doppie.

SQL Server consente inoltre di delimitare gli identificatori in base alle parentesi quadre ([ ]). Gli identificatori tra parentesi quadre possono essere sempre usati, indipendentemente dall'impostazione di QUOTED_IDENTIFIER. Per altre informazioni, vedere Identificatori del 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 }

ON
È 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 ::=

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 è di 1 minuto, che indica che il database userà checkpoint indiretti. Per le versioni precedenti, il valore predefinito è 0, a indicare che il database userà checkpoint automatici la cui frequenza dipende dall'impostazione dell'intervallo di recupero dell'istanza del server. Microsoft consiglia 1 minuto per la maggior parte dei sistemi.

TARGET_RECOVERY_TIME =target_recovery_time { 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.

MINUTES
Indica che target_recovery_time viene espresso come numero di minuti.

Per altre informazioni sui checkpoint indiretti, vedere Checkpoint di 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 di terminazione> WITH<. Per altre informazioni, vedere la tabella in Opzioni di impostazione della 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 non è possibile completare immediatamente la modifica richiesta dello stato del database o dell'opzione, senza aspettare il commit o il rollback automatico delle transazioni.

Opzioni di impostazione

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 tale scopo, modificare l'opzione di database appropriata nel model database.

Non tutte le opzioni di database usano la clausola di terminazione> WITH <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 Può usare la clausola di terminazione> WITH <
<db_state_option>
<db_user_access_option>
<db_update_option>
<delayed_durability_option>
<external_access_option> No
<cursor_option> No
<auto_option> No
<sql_option> No
<recovery_option> No
<target_recovery_time_option> No
<database_mirroring_option> No No
ALLOW_SNAPSHOT_ISOLATION No No
READ_COMMITTED_SNAPSHOT No
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT
<service_broker_option> No
DATE_CORRELATION_OPTIMIZATION
<parameterization_option>
<change_tracking_option>
<db_encryption_option> No
<accelerated_database_recovery>

La cache dei piani per l'istanza di SQL Server viene cancellata impostando 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 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 di verifica del modello di recupero e della pagina dei dati per il database di esempio AdventureWorks2012 .

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 viene quindi impostato lo stato del database READ_ONLYAdventureWorks2012 su e viene restituito l'accesso al database a tutti gli utenti.

Nota

In questo esempio viene usata l'opzione di terminazione WITH ROLLBACK IMMEDIATE nella prima istruzione ALTER DATABASE. Verrà eseguito il rollback di tutte le transazioni incomplete e tutte le altre connessioni al database AdventureWorks2012 verranno disconnesse immediatamente.

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 del framework di isolamento dello snapshot per il database AdventureWorks2012 .

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 ON

D. Abilitare, modificare o disabilitare il rilevamento delle modifiche

L'esempio seguente abilita il rilevamento delle modifiche per il database AdventureWorks2012 e imposta il periodo di conservazione 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 AdventureWorks2012 .

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 il Query Store con le 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 il Query Store con le opzioni dei criteri di acquisizione personalizzate

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

Vedere anche

Passaggi successivi

* database SQL *  

 

Database SQL

I livelli di compatibilità sono opzioni SET, 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 eseguono l'override dei 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 = { 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 di CURRENT, specificare il nome del database.

<> auto_option ::=

Consente di controllare le opzioni automatiche.

AUTO_CREATE_STATISTICS { ON | OFF }

ON
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. Tali statistiche vengono create solo sulle colonne che ancora non sono le prime colonne 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 }

ON
I file di database vengono compattati periodicamente, se necessario. Se non è necessario soddisfare esigenze specifiche, 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 la presenza di 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 }

ON
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 alle 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 }

ON
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 nella portale di Azure o tramite T-SQL nella visualizzazione sys.database_automatic_tuning_options.

AUTOMATIC_TUNING = { AUTO | INHERIT | CUSTOM }

AUTO
Se si imposta il valore di ottimizzazione automatica su AUTO, vengono applicate le impostazioni predefinite di configurazione di Azure per l'ottimizzazione automatica. Nella 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. Nella 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. Si noti che per il funzionamento dell'ereditarietà, è necessario impostare su DEFAULT sui database le tre singole opzioni di ottimizzazione FORCE_LAST_GOOD_PLAN, CREATE_INDEX e DROP_INDEX.

CUSTOM
Se si usa il valore CUSTOM, è necessario personalizzare ciascuna delle opzioni di ottimizzazione automatica disponibili nei database. Nella 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 nell'portale di Azure o tramite T-SQL nella visualizzazione 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.

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

ON
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 di 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. Si tratta del valore predefinito. Il valore predefinito per i nuovi server Azure SQL è ON, ovvero per impostazione predefinita, i nuovi database erediteranno l'impostazione di ON.

ON
Il motore di database forza automaticamente l'ultimo piano valido noto per le query Transact-SQL in cui il nuovo piano di query causa regressioni delle prestazioni. Il motore di database monitora continuamente le prestazioni delle query della query Transact-SQL con il piano forzato. Se si rilevano miglioramenti delle prestazioni, il motore di database continuerà a usare l'ultimo piano valido noto. Se non si rilevano miglioramenti delle prestazioni, il motore di database creerà un nuovo piano di query. L'istruzione avrà esito negativo se Query Store non è abilitato o se non è in modalità di lettura/scrittura.

OFF
Il motore di database segnala potenziali regressioni delle prestazioni delle query causate dalle modifiche del piano di query nella vista sys.dm_db_tuning_recommendations . I consigli qui segnalati non vengono tuttavia applicati automaticamente. Gli utenti possono monitorare le raccomandazioni attive e risolvere i problemi identificati applicando script Transact-SQL visualizzati 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 esempi, vedere la sezione Esempi più avanti in questo articolo.

ON
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 }

ON
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 | HOURS | 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 }

ON
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 Transparent Data Encryption e Transparent Data Encryption con il database SQL di Azure.

Quando la crittografia è abilitata a livello di database, tutti i filegroup vengono crittografati. I nuovi filegroup erediteranno la proprietà di crittografia. Se in un database sono presenti filegroup impostati su READ ONLY, l'operazione di crittografia del database avrà 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 creerà le 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 Azure SQL database federati del database è SET { READ_ONLY | READ_WRITE } disabilitato.

<> 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 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 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. In Azure SQL Database deve essere eseguito dall'interno del database utente. master Dal database è 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. In Azure SQL Database deve essere eseguito dall'interno del database utente. master Dal database è 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.

ON
Abilita Query Store. ON è il valore predefinito.

OFF
Disabilita Query Store.

Nota

Query Store non può essere disabilitato in database singolo del database Azure SQL e nel pool elastico. L'esecuzione di ALTER DATABASE [database] SET QUERY_STORE = OFF restituirà 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 viene esaurito, la sua modalità operativa passa a 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 database SQL edizione Basic, il valore predefinito è 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. Per database SQL Edizione Premium, il valore predefinito è 1 GB e per database SQL edizione Basic, il valore predefinito è 10 MB.

Nota

MAX_STORAGE_SIZE_MBl'impostazione del limite è di 10.240 MB in Azure SQL Database.

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 o dall'opzione DATA_FLUSH_INTERVAL_SECONDS della finestra di dialogo Di management Studio Query Store Intervallo di scaricamento dati. Il valore predefinito dell'intervallo è 900 secondi (o 15 minuti). Se Query Store ha violato il limite 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. Dopo la cancellazione di spazio sufficiente, la modalità di Query Store cambierà automaticamente in lettura/scrittura.

Importante

Se si ritiene che per l'acquisizione del carico di lavoro siano necessari più di 10 GB di spazio su disco, è probabile che sia opportuno ripensare e ottimizzare il carico di lavoro in modo da riusare i piani di query (ad esempio, usando la parametrizzazione forzata) oppure modificare le configurazioni di Query Store.
A partire da SQL Server 2019 (15.x) e in Azure SQL Database, è 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 viene attivata automaticamente quando la quantità totale dei dati ha quasi raggiunto le dimensioni massime.

OFF
La pulizia basata sulle dimensioni non viene attivata automaticamente.

AUTO
La pulizia basata sulle dimensioni viene attivata automaticamente quando le dimensioni sul disco raggiungono il 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 | | PERSONALIZZATA 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 Azure SQL Database.

NONE
Consente di arrestare l'acquisizione di nuove query. Query Store continuerà a raccogliere le statistiche di compilazione e runtime per le query che sono già state acquisite. Usare con cautela questa configurazione perché si rischia di perdere 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 verranno acquisite le statistiche di attesa per ogni query.

ON
Verranno acquisite informazioni sulle statistiche di attesa per ogni query. Si tratta del valore di configurazione predefinito.

OFF
Non verranno acquisite informazioni sulle statistiche di attesa per ogni query.

<> 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 | ORE }

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, il che significa che per la soglia dei criteri di acquisizione non aggiornata predefinita, una query deve avere un totale di almeno un secondo di tempo di CPU trascorso durante la compilazione di query in un giorno da rendere persistente nel 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 }

ON
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 riprova 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, tale impostazione viene mantenuta anche se il database viene in seguito impostato 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 }

ON
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, tale impostazione viene mantenuta anche se il database viene in seguito impostato su READ_WRITE.

READ_COMMITTED_SNAPSHOT non è possibile attivare per i masterdatabase di sistema , tempdbo msdb . Se si modifica l'impostazione per model, tale impostazione diventa l'impostazione predefinita per tutti 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 l'opzione READ_COMMITTED_SNAPSHOT viene successivamente cambiata tramite ALTER DATABASE, i dati della tabella vengono persi.

Suggerimento

In Azure SQL Database, il ALTER DATABASE comando da impostare READ_COMMITTED_SNAPSHOT ON o OFF per un database deve essere eseguito nel master database.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }

ON
Quando il livello di isolamento delle transazioni è impostato su qualsiasi livello di isolamento inferiore a SNAPSHOT, tutte le operazioni Transact-SQL interpretate nelle tabelle ottimizzate per la memoria vengono eseguite in 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 eleva il livello di isolamento delle transazioni per le operazioni Transact-SQL interpretate 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 le regole dei vincoli indipendentemente da questa impostazione.

ON
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 }

ON
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, ANSI_NULLS sarà sempre ON e tutte le applicazioni che impostano esplicitamente l'opzione su OFF genereranno 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 }

ON
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, ANSI_PADDING sarà sempre ON e tutte le applicazioni che impostano esplicitamente l'opzione su OFF genereranno 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 }

ON
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 }

ON
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 = { 150 | 140 | 130 | 120 | 110 | 100 }

Per altre informazioni, vedere Livello di compatibilità ALTER DATABASE.

CONCAT_NULL_YIELDS_NULL { ON | OFF }

ON
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, CONCAT_NULL_YIELDS_NULL sarà sempre ON e tutte le applicazioni che impostano esplicitamente l'opzione su OFF genereranno 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 rilasciano un'impostazione dell'istruzione SET a livello di connessione CONCAT_NULL_YIELDS_NULL su ON per la sessione durante la 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 }

ON
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 nella is_numeric_roundabort_on visualizzazione del catalogo sys.database . È anche possibile determinare lo stato esaminando la proprietà IsNumericRoundAbortEnabled della funzione DATABASEPROPERTYEX.

QUOTED_IDENTIFIER { ON | OFF }

ON
È 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 virgolette non devono seguire le regole Transact-SQL per gli identificatori. Possono essere parole chiave e possono includere caratteri non consentiti negli identificatori Transact-SQL. Se una virgoletta singola (') fa parte della stringa letterale, può essere rappresentata tramite virgolette doppie (").

OFF
Gli identificatori non possono trovarsi tra virgolette e devono seguire tutte le regole Transact-SQL per gli identificatori. È possibile delimitare i valori letterali con virgolette singole o doppie.

SQL Server consente inoltre di delimitare gli identificatori in base alle parentesi quadre ([ ]). Gli identificatori tra parentesi quadre possono essere sempre usati, indipendentemente dall'impostazione di QUOTED_IDENTIFIER. Per altre informazioni, vedere Identificatori del 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 }

ON
È 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 userà checkpoint indiretti. Per le versioni precedenti, il valore predefinito è 0, a indicare che il database userà checkpoint automatici la cui frequenza dipende dall'impostazione dell'intervallo di recupero dell'istanza del server. Microsoft consiglia 1 minuto per la maggior parte dei sistemi.

TARGET_RECOVERY_TIME =target_recovery_time { 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.

MINUTES
Indica che target_recovery_time viene espresso come numero di minuti.

Per altre informazioni sui checkpoint indiretti, vedere Checkpoint di 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 di terminazione> WITH<. Per altre informazioni, vedere la tabella in Impostazione delle opzioni della 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 non è possibile completare immediatamente la modifica richiesta dello stato del database o dell'opzione, senza aspettare il commit o il rollback automatico delle transazioni.

<> temporal_history_retention ::=

TEMPORAL_HISTORY_RETENTION { ON | OFF }

ON per impostazione predefinita, ma anche impostato automaticamente su OFF dopo l'operazione di ripristino temporizzato. Per altre informazioni su come abilitare questa impostazione, vedere Come configurare i criteri di conservazione.

ON Impostazione predefinita. Abilita i criteri di conservazione delle tabelle temporali. Per altre informazioni, vedere Gestire la conservazione dei dati cronologici nelle tabelle temporali con controllo delle versioni di sistema.

OFF Non eseguire criteri di conservazione cronologici temporali.

Opzioni di impostazione

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 tale scopo, modificare l'opzione di database appropriata nel model database.

Non tutte le opzioni di database usano la clausola di terminazione> WITH <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 Può usare la clausola di terminazione> WITH <
<auto_option> No
<change_tracking_option>
<cursor_option> No
<db_encryption_option> No
<db_update_option>
<db_user_access_option>
<delayed_durability_option>
<parameterization_option>
ALLOW_SNAPSHOT_ISOLATION No No
READ_COMMITTED_SNAPSHOT No
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT
DATE_CORRELATION_OPTIMIZATION
<sql_option> No
<target_recovery_time_option> No

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 può richiedere alcuni secondi. Nell'esempio seguente viene impostata la modalità RESTRICTED_USER per il database in modo da limitare l'accesso. Nell'esempio viene quindi impostato lo stato del database READ_ONLYAdventureWorks2012 su e viene restituito l'accesso al database a 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 may take a few seconds to complete. 
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO

Per ripristinare la modalità lettura/scrittura del database:

--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 del framework di isolamento dello snapshot per il database AdventureWorks2012 .

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

C. Abilitare, modificare o disabilitare il rilevamento delle modifiche

L'esempio seguente abilita il rilevamento delle modifiche per il database AdventureWorks2012 e imposta il periodo di conservazione 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 AdventureWorks2012 .

--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 il Query Store con le 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 il Query Store con le opzioni dei criteri di acquisizione personalizzate

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

Vedere anche

Passaggi successivi

* Istanza gestita di SQL *  

 

Istanza gestita di SQL di Azure

I livelli di compatibilità sono opzioni SET, 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 eseguono l'override dei 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 = { 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 = { 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 }

ON
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. Tali statistiche vengono create solo sulle colonne che ancora non sono le prime colonne 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 }

ON
I file di database vengono compattati periodicamente, se necessario. Se non è necessario soddisfare esigenze specifiche, 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 la presenza di 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 }

ON
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 alle 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 }

ON
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 = { ON | OFF }

Abilita o disabilita FORCE_LAST_GOOD_PLAN l'opzione Ottimizzazione automatica.

ON
Il motore di database forza automaticamente l'ultimo piano valido noto nelle query Transact-SQL in cui il nuovo piano di query causa regressioni delle prestazioni. Il motore di database monitora continuamente le prestazioni delle query della query Transact-SQL con il piano forzato. Se si rilevano miglioramenti delle prestazioni, il motore di database continuerà a usare l'ultimo piano valido noto. Se non si rilevano miglioramenti delle prestazioni, il motore di database creerà un nuovo piano di query. L'istruzione avrà esito negativo se Query Store non è abilitato o se non è in modalità di lettura/scrittura.

OFF
Il motore di database segnala potenziali regressioni delle prestazioni delle query causate dalle modifiche apportate al piano di query nella visualizzazione sys.dm_db_tuning_recommendations . I consigli qui segnalati non vengono tuttavia applicati automaticamente. Gli utenti possono monitorare le raccomandazioni attive e risolvere i problemi identificati applicando script Transact-SQL visualizzati nella visualizzazione. Si tratta del valore predefinito.

<> 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 esempi, vedere la sezione Esempi più avanti in questo articolo.

ON 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 }

ON
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 | HOURS | 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 }

ON
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 is_cursor_close_on_commit_on colonna nella visualizzazione del catalogo sys.database 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 Transparent Data Encryption e Transparent Data Encryption con il database SQL di Azure.

Quando la crittografia è abilitata a livello di database, tutti i filegroup vengono crittografati. I nuovi filegroup erediteranno la proprietà di crittografia. Se in un database sono presenti filegroup impostati su READ ONLY, l'operazione di crittografia del database avrà 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.

ON
Abilita Query Store.

OFF
Disabilita Query Store. Si tratta del 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 viene esaurito, la sua modalità operativa passa a 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 database SQL edizione Basic, il valore predefinito è 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.

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 o dall'opzione DATA_FLUSH_INTERVAL_SECONDS della finestra di dialogo Di management Studio Query Store Intervallo di scaricamento dati. Il valore predefinito dell'intervallo è 900 secondi (o 15 minuti). Se Query Store ha violato il limite 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. Dopo la cancellazione di spazio sufficiente, la modalità di Query Store cambierà automaticamente in lettura/scrittura.

Importante

Se si ritiene che per l'acquisizione del carico di lavoro siano necessari più di 10 GB di spazio su disco, è probabile che sia opportuno ripensare e ottimizzare il carico di lavoro in modo da riusare i piani di query (ad esempio, usando la parametrizzazione forzata) oppure modificare le configurazioni di Query Store.
A partire da SQL Server 2019 (15.x) e in Azure SQL Database, è 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 viene attivata automaticamente quando la quantità totale dei dati ha quasi raggiunto le dimensioni massime.

OFF
La pulizia basata sulle dimensioni non viene attivata automaticamente.

AUTO
La pulizia basata sulle dimensioni viene attivata automaticamente quando le dimensioni sul disco raggiungono il 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 | | PERSONALIZZATA 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 Azure SQL Database.

NONE
Consente di arrestare l'acquisizione di nuove query. Query Store continuerà a raccogliere le statistiche di compilazione e runtime per le query che sono già state acquisite. Usare con cautela questa configurazione perché si rischia di perdere 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 verranno acquisite le statistiche di attesa per ogni query.

ON
Verranno acquisite informazioni sulle statistiche di attesa per ogni query. Si tratta del valore di configurazione predefinito.

OFF
Non verranno acquisite informazioni sulle statistiche di attesa per ogni query.

<> 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, il che significa che per la soglia predefinita dei criteri di acquisizione non aggiornati una query deve avere un totale di almeno un secondo del tempo di CPU impiegato durante la compilazione delle query in un giorno per essere salvato in modo permanente nella 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, il che significa che per la soglia predefinita dei criteri di acquisizione non aggiornati, una query deve avere un totale di almeno 100 ms di tempo di CPU trascorso durante l'esecuzione in un giorno per essere persistente nella Query Store. TOTAL_EXECUTION_CPU_TIME_MS è di tipo int.

<> snapshot_option ::=

Determina il livello di isolamento delle transazioni.

ALLOW_SNAPSHOT_ISOLATION { ON | OFF }

ON
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 masterdatabase , , modelmsdbe tempdb . L'impostazione viene mantenuta ogni volta che l'istanza del motore di database viene arrestata e riavviata se si modifica l'impostazione per tempdb. Se si modifica l'impostazione per il model database di sistema, tale impostazione diventa l'impostazione predefinita per tutti i nuovi database creati, ad eccezione tempdbdi .

Per impostazione predefinita, l'opzione è ON per i master database 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 }

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

READ_COMMITTED_SNAPSHOT non può essere attivato per i masterdatabase di sistema , tempdbo msdb . Se si modifica l'impostazione per il model database di sistema, tale impostazione diventa l'impostazione predefinita per tutti 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 si crea una tabella con DURABILITY = SCHEMA_ONLY, e successivamente si modifica READ_COMMITTED_SNAPSHOT usando ALTER DATABASE, i dati della tabella andranno perduti.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }

ON
Quando il livello di isolamento delle transazioni è impostato su qualsiasi livello di isolamento inferiore a SNAPSHOT, tutte le operazioni Transact-SQL interpretate 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 eleva il livello di isolamento delle transazioni per le operazioni Transact-SQL interpretate 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 le regole dei vincoli indipendentemente da questa impostazione.

ON
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 }

ON
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, ANSI_NULLS sarà sempre ON e tutte le applicazioni che impostano esplicitamente l'opzione su OFF genereranno 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 }

ON
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, ANSI_PADDING sarà sempre ON e tutte le applicazioni che impostano esplicitamente l'opzione su OFF genereranno 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 }

ON
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 }

ON
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 = { 150 | 140 | 130 | 120 | 110 | 100 }

Per altre informazioni, vedere Livello di compatibilità ALTER DATABASE.

CONCAT_NULL_YIELDS_NULL { ON | OFF }

ON
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, CONCAT_NULL_YIELDS_NULL sarà sempre ON e tutte le applicazioni che impostano esplicitamente l'opzione su OFF genereranno 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 rilasciano un'impostazione dell'istruzione SET a livello di connessione CONCAT_NULL_YIELDS_NULL su ON per la sessione durante la 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 }

ON
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 nella is_numeric_roundabort_on visualizzazione del catalogo sys.database . È anche possibile determinare lo stato esaminando la proprietà IsNumericRoundAbortEnabled della funzione DATABASEPROPERTYEX.

QUOTED_IDENTIFIER { ON | OFF }

ON
È 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 virgolette non devono seguire le regole Transact-SQL per gli identificatori. Possono essere parole chiave e possono includere caratteri non consentiti negli identificatori Transact-SQL. Se una virgoletta singola (') fa parte della stringa letterale, può essere rappresentata tramite virgolette doppie (").

OFF
Gli identificatori non possono trovarsi tra virgolette e devono seguire tutte le regole Transact-SQL per gli identificatori. È possibile delimitare i valori letterali con virgolette singole o doppie.

SQL Server consente inoltre di delimitare gli identificatori in base alle parentesi quadre ([ ]). Gli identificatori tra parentesi quadre possono essere sempre usati, indipendentemente dall'impostazione di QUOTED_IDENTIFIER. Per altre informazioni, vedere Identificatori del 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 }

ON
È 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 ::=

target_recovery_time_option non è supportato 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 è di 1 minuto, che indica che il database userà checkpoint indiretti. Per le versioni precedenti, il valore predefinito è 0, a indicare che il database userà checkpoint automatici la cui frequenza dipende dall'impostazione dell'intervallo di recupero dell'istanza del server. Microsoft consiglia 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 di terminazione> WITH<. Per altre informazioni, vedere la tabella in Opzioni di impostazione della 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 non è possibile completare immediatamente la modifica richiesta dello stato del database o dell'opzione, senza aspettare il commit o il rollback automatico delle transazioni.

<> temporal_history_retention ::=

TEMPORAL_HISTORY_RETENTION { ON | OFF }

ON per impostazione predefinita, ma anche impostato automaticamente su OFF dopo l'operazione di ripristino temporizzato. Per altre informazioni, tra cui come abilitare questa impostazione, vedere Come configurare i criteri di conservazione.

ON Impostazione predefinita. Abilita i criteri di conservazione delle tabelle temporali. Per altre informazioni, vedere Gestire la conservazione dei dati cronologici nelle tabelle temporali con versione di sistema.

OFF Non eseguire criteri di conservazione cronologici temporali.

Opzioni di impostazione

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 tale scopo, modificare l'opzione di database appropriata nel database di model sistema.

Esempi

R. Abilitare l'isolamento dello snapshot in un database

L'esempio seguente abilita l'opzione framework di isolamento snapshot per il database AdventureWorks2012 .

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 ON

B. Abilitare, modificare o disabilitare il rilevamento delle modifiche

L'esempio seguente abilita il rilevamento delle modifiche per il database AdventureWorks2012 e imposta il periodo di conservazione 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 AdventureWorks2012 .

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 l'Query Store con le 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 l'Query Store con le opzioni dei criteri di acquisizione personalizzate

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

Vedere anche

Passaggi successivi

* Azure Synapse
Analisi *
 

 

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 }

ON
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. Tali statistiche vengono create solo sulle colonne che ancora non sono le prime colonne 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 }

ON
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 Transparent Data Encryption e Transparent Data Encryption con il database SQL di Azure.

Quando la crittografia è abilitata a livello di database, tutti i filegroup vengono crittografati. I nuovi filegroup erediteranno la proprietà di crittografia. Se in un database sono presenti filegroup impostati su READ ONLY, l'operazione di crittografia del database avrà esito negativo.

È possibile visualizzare lo stato di crittografia del database e lo stato dell'analisi della crittografia usando la sys.dm_database_encryption_keys visualizzazione a gestione dinamica.

<> query_store_option ::=

Controlla se Query Store è abilitato in questo data warehouse.

QUERY_STORE { ON | OFF }

ON
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, la Query Store può essere abilitata come in altre piattaforme, ma le opzioni di configurazione aggiuntive non sono supportate.

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

ON
Specifica che i set di risultati delle query restituiti da questo database verranno memorizzati nella cache nel database.

OFF
Specifica che i set di risultati delle query restituiti da questo database non verranno 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 precedentemente salvati in modo permanente verrà immediatamente eliminata dalla risorsa di 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 restituirà 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 result_cache_hit colonna restituisce 1 per riscontri nella cache, 0 per mancati riscontri nella 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 utilizzata insieme a DECRYPTBYKEY. Se questa funzione crittografica 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 è attivata, 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 la risposta di query complessiva 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 }

ON
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'impostazione di READ_COMMITTED_SNAPSHOT su ON o su OFF per un database utente comporterà la terminazione di tutte le connessioni aperte al database. È possibile apportare questa modifica durante l'intervallo di manutenzione del database o attendere fino a quando non esiste alcuna connessione attiva al database, ad eccezione della connessione che esegue il comando ALTER DATABASE. Il database non deve essere 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 is_read_committed_snapshot_on colonna in sys.databases.

In un database con l'impostazione READ_COMMITTED_SNAPSHOT abilitata, è possibile che le query riscontrino prestazioni più lente a causa dell'analisi delle versioni se sono presenti più versioni dei 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 quando ci si connette al master database.

ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON;

Vedere anche

Passaggi successivi