План выполнения текущего выполняющегося оператора SQL в SQL Server 2000 - PullRequest
2 голосов
/ 10 декабря 2008

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

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

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

Ответы [ 3 ]

1 голос
/ 11 декабря 2008

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

0 голосов
/ 11 декабря 2008

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

Запустите профилировщик и разверните узел событий «производительность». Выберите один из вариантов ШОУПЛАН.

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

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

0 голосов
/ 10 декабря 2008

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

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

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

...