CONCAT_NULL_YIELDS_NULL

06/11/2008 - 08:49 von Christoph Muthmann | Report spam
Hallo Leute,
wenn man sich die Einstellungen der Datenbanken auf seinem Server anschaut,
wird man wahrscheinlich feststellen, dass die überwiegende Anzahl der
Datenbanken diese Option noch auf OFF hat, oder?
select name, is_concat_null_yields_null_on
from master.sys.databases

Warum funktioniert es trotzdem? Weil fast alle Clients erst mal diese Option
auf ON schalten.
Schaut man sich aber mal die 2008er-Doku an, stellt man fest, dass dieses
Feature abgekündigt ist, was erst mal vernünftig ist:
http://msdn.microsoft.com/de-de/lib...76056.aspx
Zitat:
In einer spàteren Version von SQL Server wird CONCAT_NULL_YIELDS_NULL immer
auf ON festgelegt, und jede Anwendung, die für die Option explizit OFF
festlegt, löst einen Fehler aus. Verwenden Sie dieses Feature nicht beim
Entwickeln neuer Anwendungen, und planen Sie das Ändern von Anwendungen, in
denen es zurzeit verwendet wird.


Würde es nicht Sinn machen bereits heute die model und alle anderen
Datenbanken so einzustellen und die Anwendungen entsprechend zu testen, ob
sie weiterhin funktionieren?

Wer hat denn schon diesen Schritt vollzogen und kann von seinen Erfahrungen
berichten?


Einen schönen Tag noch,
Christoph
Microsoft SQL Server MVP
http://www.insidesql.org
 

Lesen sie die antworten

#1 Elmar Boye
06/11/2008 - 09:14 | Warnen spam
Hallo Christoph,

Christoph Muthmann schrieb:
wenn man sich die Einstellungen der Datenbanken auf seinem Server anschaut,
wird man wahrscheinlich feststellen, dass die überwiegende Anzahl der
Datenbanken diese Option noch auf OFF hat, oder?
select name, is_concat_null_yields_null_on
from master.sys.databases

Warum funktioniert es trotzdem? Weil fast alle Clients erst mal diese Option
auf ON schalten.




Die Option hat auf Datenbank-Ebene praktisch keinerlei Auswirkungen,
da die Option von den Clients festgelegt wird. Und alle existierenden
Microsoft Treiber verwenden im Standard die ANSI Einstellung.

Würde es nicht Sinn machen bereits heute die model und alle anderen
Datenbanken so einzustellen und die Anwendungen entsprechend zu testen, ob
sie weiterhin funktionieren?



Probleme sind insofern durch Anwendungen zu erwarten, die die Option explizit
ausschalten. Wovon sicherlich die eine oder andere geben wird, so wie es
immer Entwickler gibt, die mit der NULL auf "Kriegsfuß" stehen.

Ein Test wàre also insofern für die Anwendungen selbst angebracht,
ob dort die Option veràndert wird - was mit einem Profilermitschnitt
vermutlich am einfachsten erkennbar wàre.
Was man dann für alle ANSI Einstellungen angehen sollte, da es Überlegungen
gibt, die SET Optionen in der nàchsten SQL Server Version zu bereinigen.

"Zögerlichen" Entwicklern sollte man verdeutlichen, das weniger Optionen
einen besseren (schnelleren) SQL Server bedeuten, da der Optimierer weniger
Sonderfàlle abdecken muß und dann bessere Plàne erzeugen kann.

Gruß Elmar

Ähnliche fragen