План выполнения для текущего выполняющегося оператора SQL в SQL Server 2000

Есть ли у администратора базы данных способ узнать план выполнения длительного запроса в SQL Server 2000? Я знаю, как запустить SQL с помощью fn_get_sql (). И да, теоретически, если открыть новое соединение и установить одинаковые флаги среды, он должен сгенерировать такой же план для SQL. Однако я нахожусь в среде хранилища данных, и этот запрос выполнялся в течение 12 часов с промежуточной загрузкой данных, поэтому нет гарантии, что новый план будет соответствовать старому. Я просто хочу точно знать, что делает сервер.

И нет, я, конечно, не собираюсь убивать текущий выполняющийся оператор, если я не увижу план и не знаю наверняка, что я могу лучше справиться с указаниями индекса и присоединения.

ОБНОВИТЬ: Я чувствую себя так близко, но все же думаю, что это возможно. Это определенно можно сделать в 2K5 и новее. Если вы посмотрите на виртуальную таблицу syscacheobjects, то увидите идентификаторы объектов для каждого кэшированного плана. Вы можете вызывать методы sp_OA * для этих идентификаторов, но без знания объектной модели (которая является проприетарной) я никуда не денусь.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
1 471
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Я не думаю, что вы можете это сделать, его нужно отправить на сервер с исходным запросом:

http://msdn.microsoft.com/en-us/library/aa178303(SQL.80).aspx.

Вы можете загрузить запрос и получить предполагаемый план выполнения.

Нет, ты не можешь. Лучшее, что вы можете сделать, - это запустить DBCC INPUTBUFFER в процессе запроса и посмотреть, какой оператор выполнялся последним. Затем вы можете запустить это в анализаторе запросов и получить план выполнения.

Может быть...

Запустите профилировщик и разверните узел событий «производительности». Выберите один из вариантов SHOWPLAN.

Надеюсь, вам удастся поймать конец казни. Я знаю, что вы можете регистрировать планы запросов, но не знаю, работает ли это в данном случае.

У меня нет профилировщика SQL 2k, только 2k5, чтобы что-то протестировать или посмотреть варианты.

Другие вопросы по теме