2009-08-12 18 views
8

domande veloci ...opzioni SET .... dove sono memorizzati

Dove sono i valori per le opzioni SET memorizzati nel database per un SP, Func, Grilletto, ecc? Se sono diversi dalle impostazioni globali?

SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET QUOTED_IDENTIFIER ON
ANSI_NULLS impostato sul
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET NUMERIC_ROUNDABORT OFF

So che le impostazioni globali per un database sono memorizzato nella vista sys.databases. Ma che dire di ogni Proc. Memorizzato o di altri oggetti.

USO [SomeDB]
GO

SET ARITHABORT OFF
SET CONCAT_NULL_YIELDS_NULL OFF
SET QUOTED_IDENTIFIER OFF
GO

CREA usp_SampleProc
AS
BEGIN
- eseguire alcune azioni
FINE

vedo che una coppia potrebbe essere retrived utilizzando:

SELEZIONA OBJECTPROPERTY (OBJECT_ID ('procedure_name'), 'ExecIsQuotedIdentOn')
SELEZIONA OBJECTPROPERTY (OBJECT_ID ('procedure_name'), 'ExecIsAnsiNullsOn')

dove sono il resto ... sono memorizzati persino per ogni Proc memorizzati ..... affatto?
grazie,
_Ub

risposta

6

quelle che si applicano alle procedure, come ANSI_NULLS e QUOTED_IDENTIFIER sono in sys.sql_modules, dove vengono recuperati da da OBJECTPROPERTY.

Quelle che si applicano ai database e sono impostate per database sono disponibili in sys.databases.

Quelle che si applicano alle sessioni sono disponibili in sys.dm_exec_sessions.

Alla fine ciò che viene effettivamente applicato dipende dall'impostazione sull'impostazione e le regole di sovrascrittura e valori predefiniti sono complesse per non dire altro. Alcuni driver client attivano/disattivano le opzioni automaticamente. Non le stesse opzioni e non le stesse impostazioni predefinite, dipendono dal client al client (ODBC, OleDB, SNAC, SqlClient ecc.). generic rule è:

  1. Un'opzione di database sostituisce un'opzione di istanza.
  2. Un'opzione SET sovrascrive un'opzione del database.
  3. Un suggerimento ha la precedenza su un'opzione SET.
+0

grazie per la rapida risposta, ma ha solo uses_quoted_identifier is_schema_bound uses_database_collation is_recompiled ... quanto riguarda il resto. _Ub –

+0

che cosa circa SET ARITHABORT ON SET ANSI_WARNINGS ON per una procedura particolare. questi due sono ciò di cui sono più preoccupato? –

+1

Solo le impostazioni QUOTED_IDENTIFER e ANSI_NULLS vengono acquisite al momento della creazione della procedura. Tutte le altre impostazioni, verrà applicato il valore della sessione corrente. –

Problemi correlati