SQL-запрос выполняется долго через CLR и использует весь процессор, но только в некоторых базах данных - PullRequest
0 голосов
/ 15 апреля 2019

У нас есть странный случай в поведении запросов к SQL Server.
У нас есть пара запросов, которые отлично выполняются для 1 базы данных, но для другой (с очень похожим количеством записей) она выполняется «навсегда».На одной БД она выполняется примерно за 5 секунд, а на другой я убил процесс через 25 минут.

Что мы знаем:

  • В базе данных, которая занимаетдолгое время запрос начинает использовать 100% ЦП, и весь сервер останавливается.
  • Глядя на таблицу sysprocesses, существует 9x SOS_SCHEDULER_YIELD waittypes для плохой базы данных с высокой загрузкой ЦП (все в работоспособном состоянии)
  • Такое поведение хорошее против плохого, по-видимому, происходит только при запуске кода через .NET CLR (Visual Studio, LinqPad).При получении результирующего оператора SQL и его выполнении в SSMS обе базы данных работают нормально.Таким образом, кажется, что это не что-то в запросе, но, возможно, что-то в БД.
  • Перестройка индексов или восстановление БД не имеет значения.

(яКонечно, кто-то может попросить образец запроса, но, похоже, это происходит по разным запросам. Мы бы предпочли исправить базу данных, а не проходить все запросы и исправлять их по одному.)

Любые советы или предложения приветствуются.

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