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

Административные скрипты MS SQL > чтобы найти неявные преобразования в планах выполнения запросов, находящихся в процедурном кэше SQL Server, можно воспользоваться запросом.
05.07.2013 15:53:36



Статья:

set ansi_nulls on
go
select 
	db_name(st.dbid), 
	object_schema_name(st.objectid, st.dbid) +N'.'+object_name(st.objectid, st.dbid),
	case when sql_handle IS NULL then ' '
		else ( substring(st.text,(qs.statement_start_offset+2)/2,(
		case when qs.statement_end_offset = -1        
			then len(convert(nvarchar(MAX),st.text))*2      else qs.statement_end_offset    end - qs.statement_start_offset) /2  ) )
	end as query_text, 
	creation_time,
	last_execution_time,
	execution_count,
	total_worker_time/1000 as CPU,
	convert(money, (total_worker_time))/(execution_count*1000)as [AvgCPUTime],
	qs.total_elapsed_time/1000 as TotDuration,
	convert(money, (qs.total_elapsed_time))/(execution_count*1000)as [AvgDur],
	total_logical_reads as [Reads],
	total_logical_writes as [Writes],
	total_logical_reads+total_logical_writes as [AggIO],
	convert(money, (total_logical_reads+total_logical_writes)/(execution_count + 0.0))as [AvgIO],
	convert(xml, N'<ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.1" Build="10.50.1600.1"><BatchSequence><Batch><Statements>'
		+convert(nvarchar(max), sub_query)+N'</Statements></Batch></BatchSequence></ShowPlanXML>') as query_plan
from sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) st
outer apply (
	select 
		Stmt.node.query('declare default element namespace "http://schemas.microsoft.com/sqlserver/2004/07/showplan"; .') sub_query
	from sys.dm_exec_query_plan(qs.plan_handle) pl
	cross apply pl.query_plan.nodes('//*[local-name()="StmtSimple"]') Stmt(node)
	where convert(varbinary(20), Stmt.node.value('@QueryHash', 'varchar(20)'), 1) = qs.query_hash
		 and Stmt.node.exist('//*[local-name()="Convert" and @Implicit = "1"]') = 1
	) p
order by total_logical_reads desc