{"id":575,"date":"2007-05-21T18:57:16","date_gmt":"2007-05-21T16:57:16","guid":{"rendered":"http:\/\/www.glorf.it\/blog\/2007\/05\/21\/sql-talk\/verbindungseinstellungen"},"modified":"2007-05-21T18:57:16","modified_gmt":"2007-05-21T16:57:16","slug":"verbindungseinstellungen","status":"publish","type":"post","link":"http:\/\/www.glorf.it\/blog\/2007\/05\/21\/sql-talk\/verbindungseinstellungen","title":{"rendered":"Verbindungseinstellungen"},"content":{"rendered":"<p>Wenn man sich mit einer Anwendung zum SQL-Server verbindet, dann kann und sollte man &#252;ber die Sitzungsseinstellungen das Verhalten des SQL-Servers konfigurieren. Das ist recht kompliziert, weil <\/p>\n<ul>\n<li>man manche &#252;ber den <a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/ms130822.aspx\">Connectionstring<\/a> angeben kann,\n<\/li>\n<li>manche &#252;ber den <a href=\"http:\/\/msdn2.microsoft.com\/de-de\/library\/ms190356.aspx\">SET-Befehl<\/a>,<br \/>\nandere werden von dem Api automatisch gesetzt (z.B. wird <a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/ms188048.aspx\">ANSI_NULLS von ODBC und OLEDB<\/a> gesetzt) und<\/li>\n<li>wird nichts gesetzt, dann wirkt ggf. eine beim <a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/ms189751.aspx\">Login<\/a> hinterlegte Default-Sprache oder<\/li>\n<li>zuletzt eine am Server eingestellte generelle <a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/ms176031.aspx\">User-Option-Defaults<\/a>.\n<\/li>\n<\/ul>\n<p>Die f&#252;r eine Session tats&#228;chlich geltenden Optionen kann man auf zwei Arten herausbekommen. Entweder auf die &quot;harte Tour&quot;: @@OPTIONS enth&#228;lt die Werte in kodierter Form. Um sie im Klartext zu bekommen, kann man sich behelfen.<\/p>\n<p><code lang=\"sql\">select<br \/>\n        name as &quot;SetOption&quot;,<br \/>\n        (case when @@options&#038;number=number then 1 else 0 end) as &quot;Status&quot;<br \/>\nfrom master..spt_values<br \/>\nwhere type=(select type<br \/>\n        from master..spt_values<br \/>\n        where number=0 and name=&#x0027;@@options&#x0027;)<br \/>\n  and number != 0<\/code><\/p>\n<p>Das Ergebnis sieht beispielsweise so aus:<\/p>\n<pre>SetOption                           Status\r\n=======                             =====\r\ndisable_def_cnst_check              0\r\nimplicit_transactions               0\r\ncursor_close_on_commit              0\r\nansi_warnings                       1\r\nansi_padding                        1\r\nansi_nulls                          1\r\narithabort                          1\r\narithignore                         0\r\nquoted_identifier                   1\r\nnocount                             0\r\nansi_null_dflt_on                   1\r\nansi_null_dflt_off                  0\r\nconcat_null_yields_null             1\r\nnumeric_roundabort                  0\r\nxact_abort                          0<\/pre>\n<p>Alternativ kann man auch DBCC verwenden. Hier werden nur die Optionen angezeigt, die tats&#228;chlich aktiv sind. Ein ARITHIGNORE = OFF wird also nicht angezeigt.<br \/>\n<code lang=\"sql\">dbcc useroptions<\/code><\/p>\n<p>Wie man sieht, werden aber auch so n&#252;tzliche Sachen wie DATEFORMAT oder LANGUAGE angezeigt:<\/p>\n<pre>SetOption                  Value\r\n=======                    =====\r\ntextsize                   2147483647\r\nlanguage                   Deutsch\r\ndateformat                 dmy\r\ndatefirst                  1\r\nlock_timeout               -1\r\nquoted_identifier          SET\r\narithabort                 SET\r\nansi_null_dflt_on          SET\r\nansi_warnings              SET\r\nansi_padding               SET\r\nansi_nulls                 SET\r\nconcat_null_yields_null    SET\r\nisolation level            read committed<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Wenn man sich mit einer Anwendung zum SQL-Server verbindet, dann kann und sollte man &#252;ber die Sitzungsseinstellungen das Verhalten des SQL-Servers konfigurieren. Das ist recht kompliziert, weil man manche &#252;ber den Connectionstring angeben kann, manche &#252;ber den SET-Befehl, andere werden von dem Api automatisch gesetzt (z.B. wird ANSI_NULLS von ODBC und OLEDB gesetzt) und wird [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/575"}],"collection":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/comments?post=575"}],"version-history":[{"count":0,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/575\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/media?parent=575"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/categories?post=575"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/tags?post=575"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}