Каков наилучший вариант анализа сложных хранимых процедур в SQL server
Я запускаю одну существующую сложную процедуру хранения, и в некоторых случаях я не мог найти неправильных результатов .Я хочу отладить процедуру.Но поскольку данные велики, я не мог отладить процедуру хранения.Я также использовал печатные заявления.
Что я уже пробовал:
Для анализа
1. я использовал заявление печати
2. я также использовал некоторые временные таблицы
3. я попробовал отладку, но она терпит неудачу, так как большие данные и зависает хранимая процедура .
4. Также я попробовал в какой-то степени SQL Server Profiler, но даже тогда я не смог найти ошибку.
Кто-нибудь подскажет мне лучший способ работы с производительностью обработки и идеальный способ отладки хранимой процедуры
CHill60
Вы действительно не можете следить за прогрессом в хранимой процедуре с помощью PRINT - попробуйте вместо этого использовать RAISEERROR с NOWAIT - Использование параметра NOWAIT с инструкцией SQL Server RAISERROR[^]
Другой метод заключается в том, чтобы обрезать хранимую процедуру прямо вниз (даже если это означает, что она ничего не делает), а затем добавить функциональность обратно, пока она не выйдет из строя
suresh shewale
спасибо за ответ...Согласно вашему предложению, я проверю первый вариант NOWait .Но я не понял вашего второго варианта ...Не могли бы вы подробнее рассказать об этом ?....
CHill60
Это трудно объяснить без конкретного примера но представьте себе что ваша процедура хранения содержит 3 блока sql операторов
SQL block 1 SQL block 2 SQL block 3Вам нужно сосредоточиться на каждом разделе, чтобы найти, где находится ошибка, чтобы вы закомментировали все, кроме первого блока, и попытались запустить свой код, например
SQL block 1 /* SQL Block 2 */ /* SQL Block 3 */Если вы получаете ошибку, то вы знаете, что проблема находится в блоке 1, но если вы не получаете никаких ошибок, то вы знаете, что проблема находится в блоке 2 или 3, поэтому раскомментируйте только следующий бит
SQL block 1 SQL Block 2 /* SQL Block 3 */И так далее.
Это поможет?
suresh shewale
извините за задержку ...Спасибо за ваше предложение .Я сейчас работаю над этим и уверен, что получу разрешение вопроса ....Еще раз спасибо тебе и другим дигиманусам,Лопес тоже .....
ZurdoDev
Похоже, ты делаешь правильные вещи.
suresh shewale
спасибо...есть предложения ?
ZurdoDev
Сделайте так, как было предложено в предыдущем комментарии. Вырезать вещи, пока вы не найдете, что не так. Тогда исправь это.
Herman<T>.Instance
Вы можете использовать TRY CATCH в SQL Server. В BEGIN CATCH вы можете узнать, где SP пошел не так.
Matias Lopez
Используйте службы профилирования для SQL, они включены в пакет SQL.
CHill60
ОП говорит, что они уже пробовали SQL Profiler
Matias Lopez
Да, но это лучший вариант, затем запустите инструкцию SP exec (с параметрами профилирования), а затем запустите руководство SP с переменными и попытайтесь поймать ошибку.
Gerry Schmitz
Нет такого понятия, как "сложный SQL-запрос"; только плохо написанные.
Поскольку вы не показываете SQL, вы, должно быть, слишком смущены.
itsmypassion
Вы можете отлаживать хранимую процедуру.
https://msdn.microsoft.com/en-us/library/hh272701(v=против 103).aspx