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 model. 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 applica immediatamente la 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 create 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 in linea o non in linea, 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 non in linea. 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 è disattivata 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 |
Opzioni di accesso esterno
Controllano 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 recupero 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 disattivato 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