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