Update: Mehrere Aufrufe an einen Benutzer benutzerdefinierte Funktion in einer Aggregate Function kann falsche Ergebnisse zurück

Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 288957
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
# FEHLER: 236595 (SHILOH_BUGS)
Problembeschreibung
SQL Server möglicherweise falsche Ergebnisse für eine Abfrage zurück, wenn alle der folgenden Bedingungen erfüllt sind:
  • Die Abfrage enthält zwei oder mehr Verweise auf die gleiche Aggregatfunktion.
  • Diese Aggregatfunktionen nehmen als die Parameter der Ergebnisse eines Aufrufs dieselbe benutzerdefinierte Funktion (UDF).
  • Die Aufrufe an die benutzerdefinierte Funktion übergeben der gleichen ersten Parameter.
  • Die UDF-Datei hat zwei oder mehr Parameter und die Ergebnisse, die es den Wert von diesen sekundären Parametern abhängig sind zurückgibt.
Ursache
Der Abfrageoptimierer versucht, doppelte Aggregatfunktionen in der Abfrage zu finden, so dass jeder eindeutige Aggregat nur einmal berechnet wird. Dieser Code schlägt fehl sekundäre Parameter berücksichtigen, die an einer UDF-Datei übergeben wird und zwei Aggregate möglicherweise falsch als Entsprechung identifizieren.
Lösung
Installieren Sie das neueste Service Pack für Microsoft SQL Server 2000, um dieses Problem zu beheben. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
290211Info: Wie Sie das neueste SQL Server 2000 Service Pack erhalten

Hotfix

Hinweis : der folgende Hotfix wurde vor der Microsoft SQL Server 2000 Service Pack 1 erstellt.

Die englische Version dieses Updates müsste die folgenden Dateiattribute oder höher:
   Version      File name       Platform   -------------------------------------   8.00.251     s80251i.exe     x86				
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt. Dieses Problem wurde erstmals im Microsoft SQL Server 2000 Service Pack 1.
Weitere Informationen
Das folgende Beispiel veranschaulicht das Problem.

CREATE TABLE functest (c1 int NULL, c2 int NULL, c3 int NULL, c4 int NULL, c5 int NULL, c6 int NULL)GOINSERT INTO functest VALUES(1,2,3,4,5,6)goCREATE FUNCTION t3 (@one int, @two int, @three int) RETURNS int ASBEGIN  RETURN (@one*@two*@three)ENDGO--This works correctly, returns 720SELECT avg(dbo.t3(c1,c2,c3)) * avg(dbo.t3(c4,c5,c6)) correct FROM functestgo--This is incorrect, returns 36, should be 180SELECT avg(dbo.t3(c1,c2,c3)) * avg(dbo.t3(c1,c5,c6)) incorrect FROM functestgo--If you swap c1 and c6, the results are correct! (180)SELECT avg(dbo.t3(c1,c2,c3)) * avg(dbo.t3(c6,c5,c1)) correct FROM functest				
Beachten Sie, wie Sie falsche Ergebnisse erhalten, nur wenn beide Verweise auf die benutzerdefinierte Funktion den gleichen ersten Parameter, entweder als Spaltennamen oder Literalwert an die Funktion übergeben.

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 288957 – Letzte Überarbeitung: 01/16/2015 21:37:41 – Revision: 3.1

Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbbug kbfix kbqfe kbsqlserv2000sp1fix KB288957 KbMtde
Feedback