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

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

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

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

10.12.2008 16:26:02
3 ОТВЕТА
РЕШЕНИЕ

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

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

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

0
9.01.2009 16:48:38

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

1
10.12.2008 21:22:08

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

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

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

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

0
11.12.2008 17:53:17