Выполнение клиентского запроса Точно так же в SSMS - PullRequest
1 голос
/ 24 мая 2011

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

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

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

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

1 Ответ

0 голосов
/ 30 августа 2011

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

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 

это вернет предполагаемый план, а также другую информацию обо всех запущенных в данный момент запросах (вам необходимо разрешение VIEW SERVER STATE).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...