Schnelle Fragen ...
Wo sind die Werte für SET OPTIONS in der Datenbank für einen SP, Func, Trigger usw. gespeichert? Wenn sie sich von den globalen Einstellungen unterscheiden?
SET ARITHABORT AUF
SET CONCAT_NULL_YIELDS_NULL auf
SET QUOTED_IDENTIFIER AUF
SET ANSI_NULLS ON
SET ANSI_PADDING auf
SET ANSI_WARNINGS ON
Legen Sie NUMERIC_ROUNDABORT OFF
Ich weiß, dass die globalen Einstellungen für eine Datenbank in der sys.databases-Ansicht gespeichert sind. Aber was ist mit jedem Stored Proc oder anderen Objekten.
VERWENDEN [SomeDB]
GEHEN
SET ARITHABORT AUS
SET CONCAT_NULL_YIELDS_NULL OFF
SET QUOTED_IDENTIFIER OFF
GEHEN
ERSTELLEN usp_SampleProc
AS
BEGIN
- führe eine Aktion durch
ENDE
Ich sehe, dass ein Paar mithilfe von:
abgerufen werden kann SELECT OBJECTPROPERTY (OBJECT_ID ('Prozedur_Name'), 'ExecIsQuotedIdentOn')
SELECT OBJECTPROPERTY (OBJECT_ID ('Prozedur_Name'), 'ExecIsAnsiNullsOn')
Wo ist der Rest ... werden sie überhaupt für jeden Stored Proc gespeichert? ..... überhaupt? Danke, Danke _Ub
Diejenigen, die für Prozeduren gelten, wie ANSI_NULLS
und QUOTED_IDENTIFIER
, befinden sich in sys.sql_module
s , wo sie von OBJECTPROPERTY
abgerufen werden.
Diejenigen, die für Datenbanken gelten und pro Datenbank festgelegt sind, sind in sys.databases
verfügbar.
Diejenigen, die für Sitzungen gelten, sind in sys.dm_exec_sessions
verfügbar.
Am Ende hängt das, was tatsächlich angewendet wird, von Einstellung zu Einstellung ab, und die Regeln der Überschreibungen und Standardeinstellungen sind, gelinde gesagt, komplex. Einige Client-Treiber setzen Optionen automatisch ein / aus. Nicht die gleichen Optionen und nicht die gleichen Standardeinstellungen, hängt von Client zu Client (ODBC, OleDB, SNAC, SqlClient usw.). Die generische Regel lautet:
Tags und Links sql-server sql-server-2005