Запрос был отменен, поскольку оценочная стоимость этого запроса превышает настроенный порог - PullRequest
1 голос
/ 30 ноября 2009

Запрос был отменен, поскольку ориентировочная стоимость этого запроса (1660) превышает настроенное пороговое значение 1500. Обратитесь к системному администратору.

Я получаю сообщение об ошибке, как указано выше, в режиме реального времени при выполнении одного из потоков хранимых процедур, где параметр содержит переменную XML.

Я проверил, что значение конфигурации QUERY_GOVERNOR_COST_LIMIT установлено на 1500. Чтобы решить эту проблему, я добавил SET QUERY_GOVERNOR_COST_LIMIT 0 в хранимых процедурах. И это работает нормально.

Когда я запускаю хранимые процедуры в серверной части с оператором SET QUERY_GOVERNOR_COST_LIMIT 0 и без него, он работает нормально и запускается в течение 0 секунд. Но это создает проблему с приложением .Net и получает ошибку.

Итак, почему он выдает ошибку с приложением, а не с анализатором SQL Query? Даже запрос выполняется в течение 0 секунд, поскольку он может выдать ошибку, если время выполнения превысит 15 секунд (в соответствии с настройкой QUERY_GOVERNOR_COST_LIMIT 1500)?

Пожалуйста, поделитесь своей идеей для анализа и решения.

Ответы [ 3 ]

1 голос
/ 30 ноября 2009

Может быть потому, что SET ARITHABORT выключен из .NET

также может быть проблемой конверсии, посмотрите на план выполнения, видите ли вы конверсии. Как вы выполняете это из .NET и используете ли вы правильные типы данных?

0 голосов
/ 12 июля 2013

QUERY_GOVERNOR_COST_LIMIT - настройка времени выполнения на уровне соединения. Таким образом, при подключении это должно быть установлено. Когда вы тестируете в окне Query SSMS, вам нужно установить этот параметр в окне свойств QueryOption (щелкните правой кнопкой мыши внутри окна запроса, QueryOptions, Advance, ...)

Вы также упомянули, что запрос выполняется за 0 секунд, так почему даже из .NET он выдает ошибку с настройкой 15 секунд? Поскольку этот параметр работает с оценочной стоимостью выполнения запроса, а не с фактической. Итак, правильный вопрос: почему сервер sql оценил стоимость выполнения более 15 секунд? И нет единого ответа на этот вопрос.

Хотя я хотел бы знать, каков пользовательский рабочий процесс / ситуация, когда вам действительно нужно использовать этот параметр. Во многих случаях оценочная стоимость сильно отличается от фактической, поэтому, если dev / dba точно не знает, что они делают и что будет выполнять ... похоже, я не понимаю практического использования этого параметра.

0 голосов
/ 30 ноября 2009

обычно это происходит из-за разных настроек ANSI по умолчанию для SSMS и .net они могут создавать разные планы выполнения. первое, что вам нужно проверить, это планы выполнения из обоих источников. Вы можете сделать это с помощью sql profiler XML event

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...