Wenn man sich mit einer Anwendung zum SQL-Server verbindet, dann kann und sollte man über die Sitzungsseinstellungen das Verhalten des SQL-Servers konfigurieren. Das ist recht kompliziert, weil
- man manche über den Connectionstring angeben kann,
- manche über den SET-Befehl,
andere werden von dem Api automatisch gesetzt (z.B. wird ANSI_NULLS von ODBC und OLEDB gesetzt) und - wird nichts gesetzt, dann wirkt ggf. eine beim Login hinterlegte Default-Sprache oder
- zuletzt eine am Server eingestellte generelle User-Option-Defaults.
Die für eine Session tatsächlich geltenden Optionen kann man auf zwei Arten herausbekommen. Entweder auf die "harte Tour": @@OPTIONS enthält die Werte in kodierter Form. Um sie im Klartext zu bekommen, kann man sich behelfen.
select
name as "SetOption",
(case when @@options&number=number then 1 else 0 end) as "Status"
from master..spt_values
where type=(select type
from master..spt_values
where number=0 and name='@@options')
and number != 0
Das Ergebnis sieht beispielsweise so aus:
SetOption Status ======= ===== disable_def_cnst_check 0 implicit_transactions 0 cursor_close_on_commit 0 ansi_warnings 1 ansi_padding 1 ansi_nulls 1 arithabort 1 arithignore 0 quoted_identifier 1 nocount 0 ansi_null_dflt_on 1 ansi_null_dflt_off 0 concat_null_yields_null 1 numeric_roundabort 0 xact_abort 0
Alternativ kann man auch DBCC verwenden. Hier werden nur die Optionen angezeigt, die tatsächlich aktiv sind. Ein ARITHIGNORE = OFF wird also nicht angezeigt.
dbcc useroptions
Wie man sieht, werden aber auch so nützliche Sachen wie DATEFORMAT oder LANGUAGE angezeigt:
SetOption Value ======= ===== textsize 2147483647 language Deutsch dateformat dmy datefirst 1 lock_timeout -1 quoted_identifier SET arithabort SET ansi_null_dflt_on SET ansi_warnings SET ansi_padding SET ansi_nulls SET concat_null_yields_null SET isolation level read committed