Düzeltme: İşlev bir topluluğu içinde birden çok aramalar için bir kullanıcı tanımlı işlev hatalı sonuçlar iade

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

288957
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
# HATA: 236595 (shiloh_bugs)
Belirtiler
Aşağıdaki koşulların tümü doğruysa, SQL Server için bir sorgu hatalı sonuçlar döndürebilir:
  • Sorgu, aynı toplama işlevi iki veya daha fazla başvuru içeriyor.
  • Bu toplama işlevleri, aynı kullanıcı tanımlı işlevi (UDF) için bir arama sonuçları, parametre olarak alın.
  • UDF çağrıları aynı ilk parametre geçirir.
  • UDF, iki veya daha çok parametre ve bu ikincil parametre değerine bağımlı olan döndürdüğü sonuçlar alır.
Neden
En iyi duruma getiricisi, böylece her benzersiz toplama yalnızca bir kez hesaplanır, Sorguda yinelenen toplama işlevleri bulmaya çalışır. Bu kod için bir UDF geçirilir ve iki toplamları eşdeğer olarak tanımlamak hatalı ikincil parametreleri hesaba katmanız başarısız.
Çözüm
Bu sorunu gidermek için <a0></a0>, Microsoft SQL Server 2000 için en son hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
290211BILGI: en son SQL Server 2000 hizmet paketi nasıl elde edilir

Düzeltme

Not: aşağıdaki düzeltmeyi Microsoft SQL Server 2000 Service Pack 1 için önce oluşturuldu.

Bu düzeltmenin ingilizce sürümünde aşağıdaki dosya öznitelikleri olmalı veya daha yenisi:
   Version      File name       Platform   -------------------------------------   8.00.251     s80251i.exe     x86				
Durum
Microsoft, bu makalenin başında listelenen Microsoft ürünlerinde bir sorun olduğunu onaylamıştır. Bu sorun ilk olarak Microsoft SQL Server 2000 Service Pack 1'de giderilmiştir.
Daha fazla bilgi
Aşağıdaki örnek, sorunu gösterir.

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				
Yalnızca her iki başvuru UDF aynı ilk parametre, bir sütun adı veya işlev için hazır bilgi değeri olarak geçirirseniz hatalı sonuçlar elde edin.

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 288957 - Son İnceleme: 01/16/2015 21:37:57 - Düzeltme: 3.1

  • Microsoft SQL Server 2000 Standard Edition
  • kbnosurvey kbarchive kbmt kbbug kbfix kbqfe kbsqlserv2000sp1fix KB288957 KbMttr
Geri bildirim