#tsql #stored-procedures
#tsql #хранимые процедуры
Вопрос:
У меня есть сложный отчет, запущенный в T-SQL, который в анализаторе запросов работал нормально, но всякий раз, когда я запускал его из Интернета, время ожидания истекало. Итак, я пытаюсь выяснить, что происходит, и начать отладку с помощью операторов печати до и после каждого вызова. Проблема решена! Теперь веб-сайт загружает отчет быстрее, чем когда-либо загружал его, и все, что я сделал, это добавил print ‘1’, print’2′ и так далее вокруг каждого select nothing else . В противном случае я не изменил ни строчки кода. Я извлекаю эти операторы печати, и код снова взрывается. Из-за операторов печати я знаю, почему я получал ошибку. В одном из моих агрегатов было нулевое значение. Я все еще не устранил проблему с данными. Я не понимаю, почему это решило мою проблему, есть мысли?
Комментарии:
1. Вы что-то изменили и не осознали этого.
2. Возможно, перехват параметров. Когда вы добавили
3. Администраторы баз данных SE, вероятно, были бы немного более квалифицированными, чтобы ответить на этот вопрос. ( dba.stackexchange.com )
4. Если я что-то изменил и не понял этого, то почему я могу воспроизвести это, удалив операторы печати? Я предполагаю, что code fairy code отменяет то, что я сделал, о чем я не знаю, просто чтобы сбить меня с толку.
5. Планы выполнения выглядят одинаково. Я до сих пор не знаю, почему проблема была исправлена в Интернете, возможно, потому, что он вернул что-то с помощью инструкции print и сбросил период ожидания. Я все еще получаю ошибку в данных из нулевой ссылки, и я все еще получаю тайм-аут в Интернете, если я извлекаю операторы печати.
Ответ №1:
Если это длительный запрос, есть вероятность, что вы достигли периода ожидания, как сказал Варуукнал.
Добавление операторов print приведет к сбросу времени ожидания, и вашему запросу будет предоставлено больше времени для возврата основного набора результатов.
Я предлагаю вам либо упростить запрос, если это возможно, на этом сайте есть много людей, которые могли бы вам в этом помочь, либо вы можете увеличить время ожидания в вашем веб-приложении, которое вызывает эту процедуру / отчет для запуска.
Если вы хотите, чтобы кто-то исправил вашу проблему с агрегированным нулевым значением, дайте нам посмотреть запрос, и мы сможем дать несколько советов.
Комментарии:
1. «Добавление операторов печати приведет к сбросу времени ожидания». Звучит маловероятно для меня. Не будет ли тайм-аут команды с момента первой отправки запроса.