Точно такое же выполнение клиентского запроса в SSMS

#sql-server #sql-server-2005 #ado.net

#sql-сервер #sql-server-2005 #ado.net

Вопрос:

У меня проблема с отслеживанием параметров в sql server 2005 для динамического параметризованного запроса, который генерируется в клиенте C # через ado.net и доступ к нему в веб-приложении из IIS с использованием LocalSystem в качестве идентификатора пула приложений.

Когда я запускаю запрос в SSMS, он выполняется очень быстро, но время ожидания истекает через 30 секунд при запуске с клиента, поэтому я уверен в отслеживании параметров.

Теперь я хочу взглянуть на план запроса для запроса, который кэшируется от клиента, но, похоже, я не могу повторить запрос в SSMS, чтобы использовать этот кэшированный план.

Я запустил трассировку и получил точный запрос и все заданные параметры, которые использовал клиент, но это по-прежнему не дает мне кэшированный план запроса, когда я запускаю его в SSMS. Я предполагаю, что это как-то связано либо с именем приложения, либо с именем NTUserName, либо с именем входа (также предоставляемым трассировкой), но я не уверен, какой из них или какую комбинацию из них мне нужно установить (или как это сделать в SSMS) для запуска запроса, чтобы он использовал кэшированный план запроса.

Комментарии:

1. Почему бы не зафиксировать фактический план, используемый приложением? msdn.microsoft.com/en-us/library/ms190233.aspx

2. @Remus трассировка фактически не показывает его, потому что время ожидания истекает до завершения запроса

Ответ №1:

запустите запрос, затем, пока он выполняется, выполните следующий скрипт

 SELECT session_id, blocking_session_id, command, cpu_time, reads, writes, logical_reads, row_count, total_elapsed_time, granted_query_memory, DB_NAME(DATABASE_ID), 
last_wait_type, wait_resource, start_time, open_transaction_count, query_plan, text
FROM master.sys.dm_exec_requests (nolock) CROSS APPLY sys.dm_exec_query_plan(plan_handle) CROSS APPLY sys.dm_exec_sql_text(sql_handle)
WHERE session_id <> @@SPID 
  

это вернет расчетный план, а также другую информацию обо всех выполняемых в данный момент запросах (вам необходимо разрешение на просмотр СОСТОЯНИЯ СЕРВЕРА).

Обычно в таких ситуациях вам поможет ОБНОВЛЕНИЕ СТАТИСТИКИ или создание вашей собственной статистики. Если вам нужна помощь с планом запроса, разместите XML где-нибудь, и я буду рад помочь.