2011-01-04 2 views
3

SSMS에서 대량의 데이터를 실행하는 쿼리가 있습니다. 약 20 분의 실행 후 쿼리는 '0으로 나누기'오류로 완료됩니다 (일부 결과는 이미 반환 됨).SQL Server 2008 - 오류 (0으로 나누기)가 발생한 데이터 행을 확인하십시오.

어떤 데이터에서 오류가 발생했는지, 즉 오류를 재현 할 수있는 ID/행 누벨을 찾는 것이 도움이됩니다.

쿼리 자체가 복잡하기 때문에 게시하지 않을 것입니다. 문제는 더 기술적입니다 - 어딘가에 로그가 있습니까, 아니면 문제가있는 행을 찾는 다른 방법이 있습니까?

+0

아니요 이미 반환 된 행에서 알아낼 수 있습니까? 780 클라이언트에 반환 된 경우 781 –

+0

행에 문제가있는 것 같아요 수 나누기 위해 그것을 사용하는 대신 약수를 선택할 수 있도록 선택을 수정할 수 없습니다? –

+0

쿼리에서 저장 프로 시저를 사용하고 있으며 그 내부에서 오류가 발생한 것 같습니다. 오류가 발생한 행의 행 번호 (ID)는 디버깅에 유용합니다. – Helena

답변

0

SQL Server에서는 Order 또는 다른 함수가 case 문을 사용하여 프로 시저에 Put 처리를 한 다음 행 순서에 영향을 줄 수 있으므로 쉽게 처리 할 수 ​​없습니다. 이

같은 뭔가가 만약 쿼리는

Select MyFirstField/MySecondField as TestMath 
From myTblOfFacts 

Select 
Case when MySecondField > 0 then MyFirstField/MySecondField 
Else -1 
End as TestMath 
From myTblOfFacts 

이 반환 -1 문제를 가진 행을했다.

2
Select 
    *, 
    Dividend/NULLIF(Divisor, 0) as NullIfBollixedNow 
FROM 
    MyTable 
-- to isolate the rows(s). Without this, you get NULL instead of error in the output 
WHERE 
    Dividend/NULLIF(Divisor, 0) IS NULL