Neulich beschrieb ich ein Problem in dem der SQL-Server-Optimizer den Zugriffsplan so wählte, dass er ein anderes Ergebnis lieferte als erwartet. Die Ursache lag daran, dass er eine nicht-deterministische Funktion (d.h. Funktion liefert bei jedem Aufruf anderes Ergebnis) so behandelte wie eine deterministische (d.h. Funktion liefert bei gleichen Parametern immer den gleichen Wert). Der deutsche Microsoft-Support fand das sei kein Bug und wimmelte mich ab. Wie ich erfuhr, musste der Mitarbeiter inzwischen Microsoft sehr kurzfristig verlassen.
Ich wandte mich mit dem Problem inzwischen an Itzik Ben-Gan, weil ich gerade sein sehr gutes Buch "TSQL Querying" lese und gleich im ersten Kapitel angesprochen wird, dass der Optimizer gerne semantisch äquivalente Zugriffspläne auswählt. Das war nun eine Steilvorlage. Itzik hat sich sehr gründlich um das Problem gekümmert und bei Microsoft durchgesetzt, dass es ein Bug ist. Unglaublich – Danke!!!
Hilfreich war dabei offenbar, dass sich der SQL-Server-2000 anders verhielt. Das habe ich Depp natürlich nicht ausprobiert. Was ich nicht wusste: Solche Bugs sind öffentlich zugänglich und können von Kunden bewertet werden. Wenn viele Kunden den Bug als problematisch einstufen, dann wird er wahrscheinlicher gefixt. Leider braucht man dazu einen Microsoft-Account (Passport/Live/…).
Daher meine Bitte: Wer so einen Account hat, den bitte ich gegen diesen Bug zu "stimmen". Hier geht es lang (auf die Sterne klicken).