suresh shewale Ответов: 0

Каков наилучший вариант анализа сложных хранимых процедур в 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

0 Ответов