Impostazione delle opzioni di database

Per ogni database è possibile impostare numerose opzioni che ne determinano le caratteristiche. Queste opzioni sono specifiche di ogni database e non hanno effetto su altri database. Alla creazione del database le opzioni vengono impostate sui valori predefiniti ed è possibile modificarle utilizzando la clausola SET dell'istruzione ALTER DATABASE. È inoltre possibile utilizzare SQL Server Management Studio per impostare la maggior parte di queste opzioni.

Nota

Le impostazioni a livello di server vengono configurate utilizzando la stored procedure di sistema sp_configure oppure SQL Server Management Studio. Per ulteriori informazioni, vedere Impostazione delle opzioni di configurazione del server. Le impostazioni a livello di connessione vengono specificate utilizzando le istruzioni SET. Per ulteriori informazioni, vedere Opzioni SET.

Per modificare i valori predefiniti di qualsiasi opzione di database per tutti i nuovi database, modificare l'opzione di database appropriata nel database modello. Ad esempio, se si desidera che l'impostazione predefinita dell'opzione di database AUTO_CLOSE sia True per tutti i nuovi database creati, impostare l'opzione AUTO_CLOSE su True per model.

Dopo aver impostato un'opzione di database, viene creato automaticamente un checkpoint che determina l'applicazione immediata della modifica. Per ulteriori informazioni, vedere CHECKPOINT (Transact-SQL).

Opzioni di database

Nelle tabelle seguenti sono elencate le opzioni di database impostate alla creazione di un database e i valori predefiniti corrispondenti. Per una descrizione completa delle opzioni, vedere ALTER DATABASE (Transact-SQL).

Opzioni per le funzioni automatiche

Controllano alcune funzionalità automatiche.

Opzione

Descrizione

Valore predefinito

AUTO_CLOSE

Se è impostata su ON, il database viene chiuso normalmente e le risorse corrispondenti vengono liberate dopo la disconnessione dell'ultimo utente. Il database viene riaperto automaticamente quando si tenta di utilizzarlo nuovamente.

Se è impostata su OFF, dopo la disconnessione dell'ultimo utente il database rimane aperto.

True per tutti i database quando si utilizza SQL Server 2000 Desktop Engine o SQL Server Express e False per tutte le altre edizioni, indipendentemente dal sistema operativo.

AUTO_CREATE_STATISTICS

Se è impostata su ON, vengono create automaticamente statistiche nelle colonne utilizzate in un predicato.

Se è impostata su OFF, le statistiche non vengono create automaticamente, ma è possibile crearle manualmente.

True

AUTO_UPDATE_STATISTICS

Se è impostata su ON, le statistiche mancanti necessarie per l'ottimizzazione di una query vengono compilate automaticamente durante la fase di ottimizzazione.

Se è impostata su OFF, è necessario creare manualmente le statistiche. Per ulteriori informazioni, vedere Utilizzo di statistiche per migliorare le prestazioni di esecuzione delle query.

True

AUTO_SHRINK

Se è impostata su ON, i file di database vengono compattati periodicamente, se necessario. È possibile compattare automaticamente sia i file di dati e che i file di log tramite SQL Server. AUTO_SHRINK consente di ridurre 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 è impostata su OFF, i file di database non vengono compattati automaticamente durante le verifiche della presenza di spazio inutilizzato che vengono eseguite periodicamente.

False

Auto_Update_Statistics_Asynchronously

Se True, le statistiche vengono aggiornate in modo asincrono.

False

Opzioni di cursore

Controllano il funzionamento e l'ambito dei cursori.

Opzione

Descrizione

Valore predefinito

CURSOR_CLOSE_ON_COMMIT

Se è impostata su ON, quando viene eseguito il commit o il rollback di una transazione tutti i cursori aperti vengono chiusi.

Se è impostata su OFF, quando viene eseguito il commit i cursori rimangono aperti. Quando si esegue il rollback di una transazione, tutti i cursori vengono chiusi, tranne i cursori INSENSITIVE o STATIC.

OFF

CURSOR_DEFAULT

Se si specifica LOCAL e se un cursore non viene definito come GLOBAL al momento della creazione l'ambito del cursore è locale rispetto al batch alla stored procedure o al trigger in cui è stato creato Il nome del cursore è valido solo in questo ambito.

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.

GLOBAL

Opzioni relative alla disponibilità del database

Consentono di impostare il database come online oppure offline, di specificare quali utenti possono connettersi al database e di impostare la modalità di sola lettura per il database.

Opzione

Descrizione

Valore predefinito

OFFLINE | ONLINE | EMERGENCY

Se è impostata su OFFLINE, il database viene chiuso normalmente e contrassegnato come offline.

Se è impostata su ONLINE, il database è aperto e disponibile per l'utilizzo.

Se si specifica EMERGENCY, il database viene impostato come READ_ONLY, la registrazione è disabilitata e l'accesso è consentito ai soli membri del ruolo predefinito del server sysadmin.

ONLINE

READ_ONLY | READ_WRITE

Se si specifica READ_ONLY, gli utenti possono leggere i dati dal database, ma non modificarli.

Se si specifica READ_WRITE, il database è disponibile per le operazioni di lettura e scrittura.

READ_WRITE

SINGLE_USER | RESTRICTED_USER | MULTI_USER

Se si specifica SINGLE_USER, la connessione al database è consentita a un solo utente alla volta. Tutte le altre connessioni utente vengono interrotte.

Se si specifica RESTRICTED_USER, la connessione al database è consentita solo ai membri del ruolo predefinito del database db_owner e dei ruoli predefiniti del server dbcreator e sysadmin, ma senza limiti di numero.

Quando si specifica MULTI_USER, la connessione al database è consentita a tutti gli utenti che dispongono delle autorizzazioni appropriate.

MULTI_USER

Opzioni di ottimizzazione per la correlazione tra date

Controllano l'opzione date_correlation_optimization.

Opzione

Descrizione

Valore predefinito

DATE_CORRELATION_OPTIMIZATION

Se è impostata su ON, SQL Server mantiene le statistiche di correlazione fra le eventuali coppie di tabelle nel database collegate da un vincolo FOREIGN KEY e contenenti colonne datetime.

Se si specifica OFF, le statistiche di correlazione non vengono mantenute.

OFF

Per ulteriori informazioni, vedere Ottimizzazione di query che accedono a colonne datetime correlate.

Opzioni di accesso esterno

Consentono di controllare se il database sia accessibile da risorse esterne, come oggetti di un altro database.

Opzione

Descrizione

Valore predefinito

DB_CHAINING

Se è impostata su ON, il database può essere l'origine o la destinazione di una catena di proprietà tra database.

Se è impostata su OFF, il database non può partecipare alla concatenazione della proprietà tra database.

OFF

TRUSTWORTHY

Se è impostata su ON, i moduli di database (ad esempio funzioni definite dall'utente o stored procedure) che utilizzano un contesto di rappresentazione possono accedere a risorse esterne al database.

Se è impostata su OFF, in un contesto di rappresentazione l'accesso dei moduli a risorse esterne al database non è consentito.

Quando il database viene collegato, l'opzione TRUSTWORTHY viene impostata su OFF.

OFF

Opzione di parametrizzazione

Controlla l'opzione di parametrizzazione.

Opzione

Descrizione

Valore predefinito

PARAMETERIZATION

Se è impostata su SIMPLE, le query vengono parametrizzate in base al comportamento predefinito del database

Se si specifica FORCED, SQL Server parametrizza tutte le query del database.

SIMPLE

Opzioni di recupero

Controllano il modello di recupero del database.

Opzione

Descrizione

Valore predefinito

RECOVERY

Se si specifica FULL, nel caso di errori dei supporti il recupero con registrazione completa viene eseguito mediante i backup del log delle transazioni. Se un file di dati risulta danneggiato, il ripristino dei supporti consente di ripristinare tutte le transazioni di cui è stato eseguito il commit.

Se si specifica BULK_LOGGED, il recupero dopo l'errore dei supporti viene eseguito combinando le migliori prestazioni e il minore utilizzo di spazio di log per operazioni su larga scala o bulk.

Se si specifica SIMPLE, viene implementata una strategia di backup semplice che utilizza una quantità minima dello spazio di log.

FULL

PAGE_VERIFY

Se si specifica CHECKSUM, il Motore di database calcola un checksum sul contenuto dell'intera pagina e, quando la pagina viene scritta su disco, memorizza il valore nell'intestazione di pagina. In fase di lettura della pagina dal disco, il checksum viene ricalcolato e confrontato con il valore di checksum archiviato nell'intestazione di pagina.

Se si specifica TORN_PAGE_DETECTION, quando la pagina viene scritta su disco, per ogni settore da 512 byte nella pagina di database da 8 kilobyte (KB) uno schema a 2 bit specifico viene salvato e archiviato nell'intestazione di pagina del database. Quando la pagina viene letta dal disco, i bit utilizzati per rilevare se la pagina è incompleta memorizzati nell'intestazione di pagina vengono confrontati alle informazioni sul settore di pagina correnti.

Se si specifica NONE, le scritture di pagine del database non generano un valore di CHECKSUM o TORN_PAGE_DETECTION. SQL Server non eseguirà la verifica di un checksum o di una pagina incompleta durante una lettura anche se nell'intestazione di pagina è presente un valore di CHECKSUM o TORN_PAGE_DETECTION.

CHECKSUM

Opzioni relative a Service Broker

Controllano le opzioni relative a Service Broker.

Opzione

Descrizione

Valore predefinito

ENABLE_BROKER | DISABLE_BROKER | NEW_BROKER | ERROR_BROKER_CONVERSATIONS

Se si specifica ENABLE_BROKER, Service Broker viene attivato per il database specificato.

Se si specifica DISABLE_BROKER, Service Broker viene disabilitato per il database specificato.

Se si specifica NEW_BROKER, il database riceve un nuovo identificatore di Service Broker.

Se si specifica ERROR_BROKER_CONVERSATIONS, quando il database viene collegato le conversazioni nel database ricevono un messaggio di errore.

ENABLE_BROKER

Opzioni di isolamento dello snapshot

Determinano il livello di isolamento delle transazioni.

Opzione

Descrizione

Valore predefinito

ALLOW_SNAPSHOT_ISOLATION

Se è impostata su ON, le transazioni possono specificare il livello di isolamento 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 è impostata su OFF, le transazioni non possono specificare il livello di isolamento SNAPSHOT.

OFF

READ_COMMITTED_SNAPSHOT

Se è impostata su ON, le transazioni che specificano il livello di isolamento READ_COMMITTED utilizzano il controllo delle versioni delle righe anziché il blocco. Quando una transazione viene eseguita al livello di isolamento READ_COMMITTED, tutte le istruzioni operano su uno snapshot dei dati esistenti all'avvio dell'istruzione.

Se è impostata su OFF, le transazioni che specificano il livello di isolamento READ_COMMITTED utilizzano il blocco.

Quando si imposta l'opzione READ_COMMITTED_SNAPSHOT, nel database è consentita solo la connessione che esegue il comando ALTER DATABASE. Nel database non devono essere presenti altre connessioni aperte fino al completamento del comando ALTER DATABASE. Non è necessario che il database sia in modalità utente singolo.

OFF

Opzioni SQL

Controllano le opzioni di conformità ANSI.

Opzione

Descrizione

Valore predefinito

ANSI_NULL_DEFAULT

Determina il valore predefinito, NULL oppure NOT NULL, di una colonna, un tipo di dati alias, o un tipo CLR definito dall'utente per i quali il supporto di valori Null non è definito esplicitamente nelle istruzioni CREATE TABLE o ALTER TABLE.

Se è impostata su ON, il valore predefinito è NULL.

Se è impostata su OFF, il valore predefinito è NOT NULL.

OFF

ANSI_NULLS

Se è impostata su ON, tutti i confronti con un valore Null restituiscono UNKNOWN.

Se è impostata su OFF, i confronti di valori non UNICODE con un valore Null restituiscono TRUE se entrambi i valori sono NULL.

OFF

ANSI_PADDING

Se è impostata su ON, gli spazi vuoti finali in valori di tipo carattere inseriti in colonne varchar o nvarchar e gli zeri finali in valori binari inseriti in colonne varbinary non vengono rimossi. I valori non vengono riempiti per l'intera lunghezza della colonna.

Se è impostata su OFF, gli spazi vuoti finali (per varchar o nvarchar) e gli zeri (per varbinary) vengono rimossi. Questa impostazione influisce solo sulla definizione di nuove colonne.

Le colonne di tipo char e binary che supportano valori Null vengono riempite fino alla lunghezza della colonna se l'opzione ANSI_PADDING è impostata su ON, ma gli spazi vuoti finali e gli zeri vengono eliminati se ANSI_PADDING è impostata su OFF. Le colonne char e binary che non consentono valori Null vengono sempre riempite fino alla lunghezza della colonna.

OFF

ANSI_WARNINGS

Se è impostata su ON, vengono generati errori o avvisi se si verificano condizioni quali divisioni per zero oppure se nelle funzioni di aggregazione sono presenti valori Null.

Se è impostata su OFF, se si verificano condizioni quali divisioni per zero non vengono generati avvisi e vengono restituiti valori Null.

OFF

ARITHABORT

Se è impostata su ON, la query viene terminata quando si verifica un errore di divisione per zero o di overflow.

Se è impostata su OFF e si verifica uno di questi errori, viene visualizzato un messaggio di avviso, ma l'elaborazione della query, del batch o della transazione continua come se non fossero stati generati errori.

OFF

CONCAT_NULL_YIELDS_NULL

Se è impostata su ON, il risultato di un'operazione di concatenazione è NULL quando uno degli operandi è NULL.

Se è impostata su OFF, il valore Null viene considerato come una stringa di caratteri vuota.

OFF

QUOTED_IDENTIFIER

Se è impostata su ON, è possibile racchiudere gli identificatori delimitati tra virgolette.

Se è impostata su OFF, gli identificatori non possono essere racchiusi tra virgolette e devono essere conformi a tutte le regole di Transact-SQL per gli identificatori.

OFF

NUMERIC_ROUNDABORT

Se è impostata su ON, quando in un'espressione si verifica una perdita di precisione viene generato un errore.

Se è impostata su OFF, in seguito alla perdita di precisione non viene visualizzato alcun messaggio di errore e il risultato viene arrotondato alla precisione della colonna o della variabile in cui viene archiviato.

OFF

RECURSIVE_TRIGGERS

Se è impostata su ON, è consentita l'attivazione ricorsiva di trigger AFTER.

Se è impostata su OFF, non è consentita l'attivazione ricorsiva diretta di trigger AFTER.

OFF

Per modificare le opzioni di database