2013-08-19 2 views
0

У меня есть большой запрос SQL, как это:Pinpoint конкретная переменная ошибка в SQL Server 2008 сценарий

Select Distinct [Student].[Class].roll_nbr as [PERIOD-NBR],[Student].[Class].ent_nbr as [CLASS-NBR], 
    IsNull(Stuff((SELECT CAST(', ' AS Varchar(MAX)) + CAST([Student].[Subject].ent_nbr AS Varchar(MAX)) 
FROM [Student].[Subject] 
WHERE [Student].[Subject].roll_nbr = [Student].[Class].roll_nbr 
and ([Student].[Subject].class_nbr = [Student].[Class].roll_assignment_nbr 
    or ([Student].[Class].roll_assignment_nbr = '0' 
    and [Student].[Subject].class_nbr = [Student].[School].bus_stop)) 
AND [Student].[Subject].ent_nbr <> '' 
FOR XML PATH ('')), 1, 2, ''), '') 
AS [OLD-STUDENT-NBR.OLD],IsNull(Stuff((SELECT CAST(', ' AS Varchar(MAX)) + .... 

Он идет дальше и дальше и страничное запрос, создающая отчет. Проблема, которую я имею некоторые переменное заблудшую с сообщением:

Error converting data type varchar to numeric. 

Это очень общая ошибка не говорит мне, какой переменные. Есть ли способ определить, какая переменная заблуждается в sql 2008?

+0

. , Мой ответ «нет», и я потратил много времени на отладку этой проблемы. Возможно, у кого-то будет лучший ответ. –

+2

Разбейте его на куски, чтобы изолировать ошибку ... нет быстрого способа, о котором я знаю. –

ответ

1

Комментарий из половины столбцов, если ошибка продолжается, прокомментируйте другую половину. Если ошибка останавливается, она находится в разделе, которое вы только что закомментировали. Полоскание-повтор.

0

Когда я сталкивался с этим типом ошибок в прошлом, я сузил его, комментируя части запроса, смотря, выполняется ли он, а затем раскомментирует части запроса до тех пор, пока он не укажет прямо на ошибку.

0

Не знаю, о чем я знаю. Однако вы можете попробовать следующую процедуру:

1) Определите, какие столбцы преобразуются.
2) Выполните выбор с половиной из них. Если он работает хорошо, то проблема находится в другой половине.
3) Повторите 2 (уменьшите количество столбцов в два раза), пока не придете к одному кандидату.

Если выполнение запроса длинное, следите за всеми проверенными комбинациями и их результатом, так как проблема может затрагивать более одного столбца. Это приводит к:

4) Если проблема не исчезла, появится вторая пораженная колонка. Отбросьте все столбцы, присутствующие в запросах, которые были выполнены без проблем, плюс неверный, который только что был обнаружен, и начните снова с этого набора в 2).

5) Повторяйте до тех пор, пока исходный запрос (и необходимые изменения) не будет выполняться без каких-либо проблем.

Смежные вопросы