FIX: 함수, 집계 내에서 여러 호출 대상 사용자 정의 함수 잘못된 결과 반환할 수 있다

기술 자료 번역 기술 자료 번역
기술 자료: 288957 - 이 문서가 적용되는 제품 보기.
# 버그: 236595 (SHILOH_BUGS)
모두 확대 | 모두 축소

이 페이지에서

현상

다음 조건이 모두 참인 경우 SQL Server 쿼리의 잘못된 결과를 반환할 수 있습니다.
  • 쿼리 같은 집계 함수 두 개 이상의 참조가 포함되어 있습니다.
  • 이러한 집계 함수를 결과에 UDF) 같은 사용자 정의 함수에 대한 호출에서 해당 매개 변수로 수행할.
  • 동일한 첫 번째 매개 변수가 있는 UDF 호출을 전달합니다.
  • 두 개 이상의 매개 변수 및 이러한 보조 매개 변수의 값에 따라 종속된 반환하는 결과를 있는 UDF가 걸립니다.

원인

최적화 프로그램이 각 고유한 집계 경우에만 한 번 계산되는 있도록 쿼리에서 중복 집계 함수를 찾으려고 시도합니다. 해당 코드가 있는 UDF 전달되는 및 잘못 두 집계 동일하게 식별할 수 있는 보조 매개 변수를 고려하여 실패합니다.

해결 방법

이 문제를 해결하려면 Microsoft SQL Server 2000의 최신 서비스 팩을 구하십시오. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
290211INF: SQL Server 2000의 최신 서비스 팩을 구하는 방법

핫픽스

참고: 다음 이 핫픽스 전에 Microsoft SQL Server 2000 서비스 팩 1 만들어졌습니다.

이 수정의 영어 버전은 다음 파일 특성을 가집니다 또는 나중에:
   Version      File name       Platform
   -------------------------------------

   8.00.251     s80251i.exe     x86

				

현재 상태

Microsoft 문제는 이 문서의 시작 부분에 나열한 제품에서 문제를 확인했습니다. 이 문제는 Microsoft SQL Server 2000 서비스 팩 1에서 처음 수정되었습니다.

추가 정보

다음 예제에서는 문제를 보여 줍니다.

CREATE TABLE functest (c1 int NULL, c2 int NULL, c3 int NULL,
 c4 int NULL, c5 int NULL, c6 int NULL)
GO
INSERT INTO functest VALUES(1,2,3,4,5,6)
go
CREATE FUNCTION t3 (@one int, @two int, @three int) RETURNS int AS
BEGIN
  RETURN (@one*@two*@three)
END
GO
--This works correctly, returns 720
SELECT avg(dbo.t3(c1,c2,c3)) * avg(dbo.t3(c4,c5,c6)) correct FROM functest
go
--This is incorrect, returns 36, should be 180
SELECT avg(dbo.t3(c1,c2,c3)) * avg(dbo.t3(c1,c5,c6)) incorrect FROM functest
go
--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
				
경우에만 해당 UDF 두 참조를 동일한 첫 번째 매개 변수는 열 이름 또는 함수에 리터럴 값을 전달하는 경우 잘못된 결과를 얻는 유의하십시오.

속성

기술 자료: 288957 - 마지막 검토: 2003년 11월 6일 목요일 - 수정: 3.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 2000 Standard Edition
키워드:?
kbmt kbbug kbfix kbqfe kbsqlserv2000sp1fix KB288957 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com