USE [msdb] ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_add_session] Script Date: 05/23/2008 14:48:40 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开愀搀搀开猀攀猀猀椀漀渀崀 ഀഀ @SessionName sysname, ਍   䀀吀甀渀椀渀最伀瀀琀椀漀渀猀 渀琀攀砀琀Ⰰഀഀ @SessionID int OUTPUT ਍愀猀 ഀഀ declare @UserName as nvarchar(256) ਍ऀ搀攀挀氀愀爀攀ऀ䀀砀开匀攀猀猀椀漀渀一愀洀攀 猀礀猀渀愀洀攀ഀഀ declare @ErrorString nvarchar(500) ਍ऀ搀攀挀氀愀爀攀 䀀堀洀氀䐀漀挀甀洀攀渀琀䠀愀渀搀氀攀 椀渀琀ഀഀ declare @retval int ਍ऀ搀攀挀氀愀爀攀 䀀搀戀挀漀甀渀琀 椀渀琀ഀഀ ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ begin transaction ਍ऀऀⴀⴀ 䌀栀攀挀欀 昀漀爀 搀甀瀀氀椀挀愀琀攀 猀攀猀猀椀漀渀 渀愀洀攀ഀഀ select @x_SessionName = @SessionName ਍ऀऀ昀爀漀洀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开椀渀瀀甀琀ഀഀ where SessionName = @SessionName ਍ഀഀ if (@x_SessionName IS NOT NULL) ਍ऀऀऀ戀攀最椀渀ഀഀ rollback transaction ਍ऀऀऀऀ猀攀琀 䀀䔀爀爀漀爀匀琀爀椀渀最 㴀 ✀吀栀攀 猀攀猀猀椀漀渀 ✀ ⬀ ✀∀✀ ⬀ 䰀吀刀䤀䴀⠀刀吀刀䤀䴀⠀䀀匀攀猀猀椀漀渀一愀洀攀⤀⤀ ⬀ ✀∀✀ ⬀✀ 愀氀爀攀愀搀礀 攀砀椀猀琀猀⸀ 倀氀攀愀猀攀 甀猀攀 愀 搀椀昀昀攀爀攀渀琀 猀攀猀猀椀漀渀 渀愀洀攀⸀✀ഀഀ raiserror (31001, -1,-1,@SessionName) ਍ऀऀऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀऀഀഀ -- Create new session ਍ऀऀऀऀഀഀ insert into msdb.dbo.DTA_input (SessionName,TuningOptions) ਍ऀऀ瘀愀氀甀攀猀 ⠀䀀匀攀猀猀椀漀渀一愀洀攀Ⰰ䀀吀甀渀椀渀最伀瀀琀椀漀渀猀⤀ ഀഀ ਍ऀऀ猀攀氀攀挀琀 䀀匀攀猀猀椀漀渀䤀䐀 㴀 䀀䀀椀搀攀渀琀椀琀礀ऀഀഀ ਍ऀऀഀഀ if @@error <> 0 ਍ऀऀऀ戀攀最椀渀ഀഀ rollback transaction ਍ऀऀऀऀ爀攀琀甀爀渀 䀀䀀攀爀爀漀爀ഀഀ end ਍ഀഀ ਍ऀऀ椀昀 䀀䀀攀爀爀漀爀 㰀㸀  ഀഀ begin ਍ऀऀऀऀ爀漀氀氀戀愀挀欀 琀爀愀渀猀愀挀琀椀漀渀ഀഀ return @@error ਍ऀऀऀ攀渀搀ऀऀऀऀഀഀ ਍ऀऀऀऀⴀⴀ 䌀爀攀愀琀攀 愀渀 椀渀琀攀爀渀愀氀 爀攀瀀爀攀猀攀渀琀愀琀椀漀渀 漀昀 琀栀攀 堀䴀䰀 搀漀挀甀洀攀渀琀⸀ഀഀ EXEC sp_xml_preparedocument @XmlDocumentHandle OUTPUT, @TuningOptions, ਍ऀऀऀऀ✀㰀䐀吀䄀堀䴀䰀  砀洀氀渀猀㨀砀猀椀㴀∀栀琀琀瀀㨀⼀⼀眀眀眀⸀眀㌀⸀漀爀最⼀㈀  ㄀⼀堀䴀䰀匀挀栀攀洀愀ⴀ椀渀猀琀愀渀挀攀∀ 砀洀氀渀猀㨀砀㴀∀栀琀琀瀀㨀⼀⼀猀挀栀攀洀愀猀⸀洀椀挀爀漀猀漀昀琀⸀挀漀洀⼀猀焀氀猀攀爀瘀攀爀⼀㈀  㐀⼀ 㜀⼀搀琀愀∀⼀㸀✀ഀഀ ਍ऀऀऀऀ椀昀 䀀䀀攀爀爀漀爀 㰀㸀  ഀഀ begin ਍ऀऀऀऀऀ爀漀氀氀戀愀挀欀 琀爀愀渀猀愀挀琀椀漀渀ഀഀ return @@error ਍ऀऀऀऀ攀渀搀ऀऀഀഀ -- Execute a SELECT statement using OPENXML rowset provider. ਍ഀഀ insert into DTA_reports_database ਍ऀऀऀऀ匀䔀䰀䔀䌀吀    䀀匀攀猀猀椀漀渀䤀䐀Ⰰ嬀砀㨀一愀洀攀崀Ⰰ㄀ഀഀ FROM OPENXML (@XmlDocumentHandle, ਍ऀऀऀऀऀऀऀऀऀ✀⼀砀㨀䐀吀䄀堀䴀䰀⼀砀㨀䐀吀䄀䤀渀瀀甀琀⼀砀㨀匀攀爀瘀攀爀⼀⼀砀㨀䐀愀琀愀戀愀猀攀✀Ⰰ㈀⤀ഀഀ WITH ([x:Name] nvarchar(128) ) ਍ऀऀऀऀഀഀ if @@error <> 0 ਍ऀऀऀऀ戀攀最椀渀ഀഀ rollback transaction ਍ऀऀऀऀऀ爀攀琀甀爀渀 䀀䀀攀爀爀漀爀ഀഀ end ਍ऀऀऀഀഀ EXEC sp_xml_removedocument @XmlDocumentHandle ਍ഀഀ if @@error <> 0 ਍ऀऀऀऀ戀攀最椀渀ഀഀ rollback transaction ਍ऀऀऀऀऀ爀攀琀甀爀渀 䀀䀀攀爀爀漀爀ഀഀ end ਍ऀऀऀऀഀഀ ਍ഀഀ ਍ऀऀऀⴀⴀ 䌀栀攀挀欀 椀昀 愀氀氀漀眀攀搀 琀漀 愀搀搀 猀攀猀猀椀漀渀ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀऀऀ戀攀最椀渀ഀഀ raiserror(31003,-1,-1) ਍ऀऀऀऀ爀漀氀氀戀愀挀欀 琀爀愀渀猀愀挀琀椀漀渀ഀഀ return (1) ਍ऀऀऀ攀渀搀ऀഀഀ ਍ऀऀऀ猀攀氀攀挀琀 䀀搀戀挀漀甀渀琀 㴀 挀漀甀渀琀⠀⨀⤀ 昀爀漀洀 䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀ഀഀ where SessionID = @SessionID ਍ऀऀऀ椀昀 䀀搀戀挀漀甀渀琀 㴀   ഀഀ begin ਍ऀऀऀऀ爀漀氀氀戀愀挀欀 琀爀愀渀猀愀挀琀椀漀渀ഀഀ return (1) ਍ऀऀऀ攀渀搀ഀഀ ਍ऀऀⴀⴀ 䤀渀猀攀爀琀 瀀爀漀最爀攀猀猀 爀攀挀漀爀搀ഀഀ insert into [msdb].[dbo].[DTA_progress] ਍ऀऀ⠀匀攀猀猀椀漀渀䤀䐀Ⰰ圀漀爀欀氀漀愀搀䌀漀渀猀甀洀瀀琀椀漀渀Ⰰ䔀猀琀䤀洀瀀爀漀瘀攀洀攀渀琀Ⰰ吀甀渀椀渀最匀琀愀最攀Ⰰ䌀漀渀猀甀洀椀渀最圀漀爀欀䰀漀愀搀䴀攀猀猀愀最攀Ⰰ倀攀爀昀漀爀洀椀渀最䄀渀愀氀礀猀椀猀䴀攀猀猀愀最攀Ⰰ䜀攀渀攀爀愀琀椀渀最刀攀瀀漀爀琀猀䴀攀猀猀愀最攀⤀ഀഀ values(@SessionID,0,0,0,N'',N'',N'') ਍ഀഀ if @@error <> 0 ਍ऀऀ戀攀最椀渀ഀഀ rollback transaction ਍ऀऀऀ爀攀琀甀爀渀 䀀䀀攀爀爀漀爀ഀഀ end ਍ഀഀ ਍ऀⴀⴀ 䌀漀洀洀椀琀 椀昀 椀渀瀀甀琀⼀瀀爀漀最爀攀猀猀 爀攀挀漀爀搀猀 愀爀攀 甀瀀搀愀琀攀搀ഀഀ commit transaction ਍ऀ爀攀琀甀爀渀  ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_check_permission] Script Date: 05/23/2008 14:48:41 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀崀 ഀഀ @SessionID int ਍愀猀 ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀挀漀搀攀  椀渀琀ഀഀ declare @dbname nvarchar(128) ਍ऀ搀攀挀氀愀爀攀 䀀猀焀氀 渀瘀愀爀挀栀愀爀⠀㈀㔀㘀⤀ഀഀ declare @dbid int ਍ഀഀ set nocount on ਍ऀ猀攀琀 䀀爀攀琀挀漀搀攀 㴀 ㄀ഀഀ ਍ऀⴀⴀ 䌀栀攀挀欀 椀昀 匀䄀ഀഀ if (isnull(IS_SRVROLEMEMBER(N'sysadmin'), 0) = 1) ਍ऀ戀攀最椀渀ഀഀ return(0) ਍ऀ攀渀搀ഀഀ ਍ऀⴀⴀ 椀昀 渀漀琀 礀甀欀漀渀 爀攀琀甀爀渀ഀഀ if (patindex('%9.00.%',@@version) = 0) ਍ऀ戀攀最椀渀ഀഀ return (1) ਍ऀ攀渀搀ഀഀ -- declare and open a cursor and get all the databases specified in the input ਍ऀ搀攀挀氀愀爀攀 搀戀开挀甀爀猀漀爀 挀甀爀猀漀爀 昀漀爀ഀഀ select DatabaseName from DTA_reports_database ਍ऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀 䤀猀䐀愀琀愀戀愀猀攀匀攀氀攀挀琀攀搀吀漀吀甀渀攀  㴀 ㄀ഀഀ -- open ਍ऀ漀瀀攀渀 搀戀开挀甀爀猀漀爀ഀഀ -- fetch first db name ਍ऀ昀攀琀挀栀 渀攀砀琀 昀爀漀洀 搀戀开挀甀爀猀漀爀ഀഀ into @dbname ਍ऀⴀⴀ 氀漀漀瀀 愀渀搀 最攀琀 愀氀氀 琀栀攀 搀愀琀愀戀愀猀攀猀 猀攀氀攀挀琀攀搀 琀漀 琀甀渀攀ഀഀ while @@fetch_status = 0 ਍ऀ戀攀最椀渀ഀഀ -- build use db string ਍ऀऀ猀攀氀攀挀琀  䀀搀戀椀搀 㴀 䐀䈀开䤀䐀⠀䀀搀戀渀愀洀攀⤀ഀഀ ਍ऀऀⴀⴀ 猀攀琀 䀀爀攀琀挀漀搀攀 琀漀 伀䬀⸀ 圀椀氀氀 戀攀 猀攀琀 琀漀 ㄀ 椀渀 挀愀猀攀 漀昀 椀猀猀甀攀猀ഀഀ set @retcode = 0 ਍ഀഀ -- In Yukon this masks the error messages ਍ऀऀ猀攀琀 䀀猀焀氀 㴀 一✀戀攀最椀渀 琀爀礀ഀഀ dbcc autopilot(5,@dbid) WITH NO_INFOMSGS ਍ऀऀ攀渀搀 琀爀礀ഀഀ begin catch ਍ऀऀऀ猀攀琀 䀀爀攀琀挀漀搀攀 㴀 ㄀ഀഀ end catch' ਍ഀഀ execute sp_executesql @sql ਍ऀऀऀⰀ 一✀䀀搀戀椀搀 椀渀琀 漀甀琀瀀甀琀Ⰰ 䀀爀攀琀挀漀搀攀 椀渀琀 伀唀吀倀唀吀✀ ഀഀ , @dbid output ਍ऀऀऀⰀ 䀀爀攀琀挀漀搀攀 漀甀琀瀀甀琀ഀഀ ਍ऀऀⴀⴀ 椀昀 挀愀氀氀攀爀 椀猀 渀漀琀 洀攀洀戀攀爀 漀昀 搀戀漀ഀഀ if (@retcode = 1) ਍ऀऀ戀攀最椀渀ഀഀ -- close and reset cursor,switch context to current ਍ऀऀऀⴀⴀ 搀愀琀愀戀愀猀攀 愀渀搀 爀攀琀甀爀渀 ㄀ഀഀ close db_cursor ਍ऀऀऀ搀攀愀氀氀漀挀愀琀攀 搀戀开挀甀爀猀漀爀ഀഀ return(1) ਍ऀऀ攀渀搀ഀഀ fetch from db_cursor into @dbname ਍ऀ攀渀搀ഀഀ -- close and reset cursor,switch context to current ਍ऀⴀⴀ 搀愀琀愀戀愀猀攀 愀渀搀 爀攀琀甀爀渀 ㄀ഀഀ close db_cursor ਍ऀ搀攀愀氀氀漀挀愀琀攀 搀戀开挀甀爀猀漀爀ഀഀ -- if caller is not member of dbo ਍ऀ椀昀 ⠀䀀爀攀琀挀漀搀攀 㴀 ㄀⤀ഀഀ begin ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀ爀攀琀甀爀渀⠀ ⤀ ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开挀漀氀甀洀渀开愀挀挀攀猀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㄀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_column_access_helper_relational] ਍ऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍ऀऀऀ戀攀最椀渀 猀攀氀攀挀琀 䐀㄀⸀䐀愀琀愀戀愀猀攀一愀洀攀 愀猀 ✀䐀愀琀愀戀愀猀攀 一愀洀攀✀ Ⰰ吀㄀⸀匀挀栀攀洀愀一愀洀攀 愀猀 ✀匀挀栀攀洀愀 一愀洀攀✀ Ⰰ吀㄀⸀吀愀戀氀攀一愀洀攀 愀猀 ✀吀愀戀氀攀⼀嘀椀攀眀 一愀洀攀✀ Ⰰ䌀㄀⸀䌀漀氀甀洀渀一愀洀攀 愀猀 ✀䌀漀氀甀洀渀 一愀洀攀✀ Ⰰ刀⸀䌀漀甀渀琀 愀猀 ✀一甀洀戀攀爀 漀昀 爀攀昀攀爀攀渀挀攀猀✀ Ⰰ䌀䄀匀吀⠀刀⸀唀猀愀最攀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀ 愀猀 ✀倀攀爀挀攀渀琀 唀猀愀最攀✀ 昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_database] as D1 , ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀㄀Ⰰഀഀ [msdb].[dbo].[DTA_reports_column] as C1, ਍ऀऀऀഀഀ ( ਍ऀऀऀऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀吀愀戀氀攀䤀䐀Ⰰ䌀⸀䌀漀氀甀洀渀䤀䐀Ⰰഀഀ SUM(Q.Weight) as Count, ਍ऀऀऀऀऀऀऀ㄀  ⸀  ⨀  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ ⼀ ഀഀ ( 1.0 * ( select CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ਍ऀऀऀऀऀऀऀऀऀऀऀऀ攀氀猀攀 ㄀ഀഀ end ਍ऀऀऀऀऀऀऀऀऀഀഀ from [msdb].[dbo].[DTA_reports_query] as Q ਍ऀऀऀऀऀऀऀऀऀऀ眀栀攀爀攀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 ⤀⤀ഀഀ as Usage ਍ऀऀ昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_column] as C ਍ऀऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ DTA_reports_querycolumn as QC ON QC.ColumnID = C.ColumnID ਍ऀऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ DTA_reports_query as Q ON QC.QueryID = Q.QueryID ਍ऀऀऀऀ䨀伀䤀一ഀഀ DTA_reports_table as T ON C.TableID = T.TableID ਍ऀऀऀऀ䨀伀䤀一ഀഀ DTA_reports_database as D ON T.DatabaseID = D.DatabaseID ਍ऀऀऀऀ愀渀搀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 儀䌀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ Q.SessionID = @SessionID ਍ऀऀऀऀ䜀刀伀唀倀 䈀夀 䌀⸀䌀漀氀甀洀渀䤀䐀Ⰰ吀⸀吀愀戀氀攀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀⤀ 愀猀 刀ഀഀ where R.DatabaseID = D1.DatabaseID and ਍ऀऀऀऀ刀⸀吀愀戀氀攀䤀䐀 㴀 吀㄀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ R.ColumnID = C1.ColumnID and ਍ऀऀऀऀ䐀㄀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ R.Count > 0 ਍ऀऀऀऀ漀爀搀攀爀 戀礀 刀⸀䌀漀甀渀琀 搀攀猀挀 攀渀搀 ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开挀漀氀甀洀渀开愀挀挀攀猀猀开栀攀氀瀀攀爀开砀洀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㈀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_column_access_helper_xml] ਍ऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ select 1 as Tag, ਍ऀऀ一唀䰀䰀          愀猀 倀愀爀攀渀琀Ⰰഀഀ '' as [ColumnAccessReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Database!2!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!4!TableID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Column!5!ColumnID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀䌀漀氀甀洀渀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Column!5!NumberOfReferences!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䌀漀氀甀洀渀℀㔀℀倀攀爀挀攀渀琀唀猀愀最攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ union all ਍ऀ猀攀氀攀挀琀 ㈀ 愀猀 吀愀最Ⰰ ㄀ 愀猀 倀愀爀攀渀琀Ⰰ 一唀䰀䰀Ⰰഀഀ D.DatabaseID,D.DatabaseName, ਍ऀऀऀ一唀䰀䰀Ⰰ一唀䰀䰀Ⰰ一唀䰀䰀Ⰰ一唀䰀䰀Ⰰ一唀䰀䰀Ⰰ一唀䰀䰀Ⰰ一唀䰀䰀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D ਍ऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 椀渀ഀഀ (select D.DatabaseID from ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀挀漀氀甀洀渀崀 愀猀 儀䌀Ⰰഀഀ [msdb].[dbo].[DTA_reports_column] as C, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀऀ眀栀攀爀攀ഀഀ QC.ColumnID = C.ColumnID and ਍ऀऀऀ䌀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ group by D.DatabaseID) ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 3 as Tag, 2 as Parent, NULL, ਍ऀऀऀ刀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀Ⰰഀഀ R.SchemaName,NULL,NULL,NULL,NULL,NULL,NULL ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ ( ਍ऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀 昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_querycolumn] as QC, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开挀漀氀甀洀渀崀 愀猀 䌀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀऀ儀䌀⸀䌀漀氀甀洀渀䤀䐀 㴀 䌀⸀䌀漀氀甀洀渀䤀䐀  愀渀搀ഀഀ C.TableID = T.TableID and ਍ऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ D.SessionID = @SessionID ਍ऀऀ最爀漀甀瀀 戀礀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀ഀഀ ) R ਍ഀഀ where ਍ऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = R.DatabaseID ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 4 as Tag, 3 as Parent, NULL, ਍ऀऀऀ刀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀Ⰰഀഀ R.SchemaName,R.TableID,T.TableName,NULL,NULL,NULL,NULL ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀ⠀ഀഀ select D.DatabaseID,T.SchemaName,T.TableID from ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀挀漀氀甀洀渀崀 愀猀 儀䌀Ⰰഀഀ [msdb].[dbo].[DTA_reports_column] as C, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀ眀栀攀爀攀ഀഀ QC.ColumnID = C.ColumnID and ਍ऀऀ䌀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ group by D.DatabaseID,T.SchemaName,T.TableID ਍⤀ 刀ഀഀ ਍ऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ R.TableID = T.TableID and ਍ऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 5 as Tag, 4 as Parent, NULL, ਍ऀऀऀ䐀㄀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ䐀㄀⸀䐀愀琀愀戀愀猀攀一愀洀攀Ⰰഀഀ T1.SchemaName,T1.TableID,T1.TableName,C1.ColumnID,C1.ColumnName, ਍ऀऀऀ刀⸀䌀漀甀渀琀Ⰰഀഀ CAST(R.Usage as decimal(38,2)) ਍ऀ昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_database]as D1 , ਍ऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀㄀Ⰰഀഀ [msdb].[dbo].[DTA_reports_column] as C1, ਍ऀ⠀ഀഀ select D.DatabaseID,T.TableID,C.ColumnID, ਍ऀऀऀ匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 愀猀 䌀漀甀渀琀Ⰰഀഀ 100.0 * SUM(Q.Weight) / ਍ऀऀऀ⠀ ㄀⸀  ⨀ ⠀ऀ猀攀氀攀挀琀ऀ䌀䄀匀䔀 圀䠀䔀一 匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 㸀   吀䠀䔀一  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ഀഀ else 1 ਍ऀऀऀऀऀ攀渀搀ऀഀഀ from [msdb].[dbo].[DTA_reports_query] as Q ਍ऀऀऀऀऀ眀栀攀爀攀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 ⤀⤀ 愀猀 唀猀愀最攀ഀഀ from ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开挀漀氀甀洀渀崀 愀猀 䌀ഀഀ LEFT OUTER JOIN ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀挀漀氀甀洀渀崀 愀猀 儀䌀 伀一 儀䌀⸀䌀漀氀甀洀渀䤀䐀 㴀 䌀⸀䌀漀氀甀洀渀䤀䐀ഀഀ LEFT OUTER JOIN ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀 伀一 儀䌀⸀儀甀攀爀礀䤀䐀 㴀 儀⸀儀甀攀爀礀䤀䐀ഀഀ JOIN ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀 伀一 䌀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀ഀഀ JOIN ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀 伀一 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ and Q.SessionID = QC.SessionID and ਍ऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ऀऀഀഀ GROUP BY C.ColumnID,T.TableID,D.DatabaseID ) as R ਍ഀഀ where R.DatabaseID = D1.DatabaseID and ਍ऀऀऀ刀⸀吀愀戀氀攀䤀䐀 㴀 吀㄀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ R.ColumnID = C1.ColumnID and ਍ऀऀऀ䐀㄀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ R.Count > 0 ਍ഀഀ order by [Database!2!DatabaseID!hide],[Schema!3!Name!ELEMENT],[Table!4!TableID!hide],[Column!5!NumberOfReferences!ELEMENT] , [Column!5!ColumnID!hide] ਍ऀ䘀伀刀 堀䴀䰀 䔀堀倀䰀䤀䌀䤀吀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开搀愀琀愀戀愀猀攀开愀挀挀攀猀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㈀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_database_access_helper_relational] ਍ऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍ऀऀऀ戀攀最椀渀 猀攀氀攀挀琀 䐀㄀⸀䐀愀琀愀戀愀猀攀一愀洀攀 愀猀 ✀䐀愀琀愀戀愀猀攀 一愀洀攀✀ Ⰰ刀⸀䌀漀甀渀琀 愀猀 ✀一甀洀戀攀爀 漀昀 爀攀昀攀爀攀渀挀攀猀✀ Ⰰ䌀䄀匀吀⠀刀⸀唀猀愀最攀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀ 愀猀 ✀倀攀爀挀攀渀琀 唀猀愀最攀✀ 昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_database] as D1 , ਍ऀऀऀऀ⠀ഀഀ select D.DatabaseID,SUM(Q.Weight) as Count, ਍ऀऀऀऀऀऀऀ㄀  ⸀  ⨀  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ ⼀ ഀഀ ( 1.0 * ( select CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ਍ऀऀऀऀऀऀऀऀऀऀऀऀ攀氀猀攀 ㄀ഀഀ end ਍ऀऀऀऀऀऀऀऀऀഀഀ from [msdb].[dbo].[DTA_reports_query] as Q ਍ऀऀऀऀऀऀऀऀऀऀ眀栀攀爀攀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 ⤀⤀ഀഀ as Usage ਍ऀऀ昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_querydatabase] as QD ON QD.DatabaseID = D.DatabaseID ਍ऀऀऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ DTA_reports_query as Q ON QD.QueryID = Q.QueryID ਍ऀऀऀऀऀ愀渀搀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 儀䐀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ Q.SessionID = @SessionID ਍ऀऀऀऀऀ䜀刀伀唀倀 䈀夀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ ) as R ਍ऀऀऀऀ眀栀攀爀攀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀㄀⸀䐀愀琀愀戀愀猀攀䤀䐀  愀渀搀ഀഀ D1.SessionID = @SessionID and ਍ऀऀऀऀ刀⸀䌀漀甀渀琀 㸀  ഀഀ order by R.Count desc end ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_database_access_helper_xml] Script Date: 05/23/2008 14:48:42 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开搀愀琀愀戀愀猀攀开愀挀挀攀猀猀开栀攀氀瀀攀爀开砀洀氀崀ഀഀ @SessionID int ਍愀猀ഀഀ begin ਍ऀ猀攀氀攀挀琀 ㄀            愀猀 吀愀最Ⰰ ഀഀ NULL as Parent, ਍ऀऀऀ✀✀ 愀猀 嬀䐀愀琀愀戀愀猀攀䄀挀挀攀猀猀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Database!2!Name!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Database!2!PercentUsage!ELEMENT] ਍ऀऀ甀渀椀漀渀 愀氀氀ഀഀ ਍ഀഀ select 2 as Tag, 1 as Parent,NULL,D1.DatabaseName , ਍ऀ刀⸀䌀漀甀渀琀  Ⰰഀഀ CAST(R.Usage as decimal(38,2)) from ਍ऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀㄀ Ⰰഀഀ ( ਍ऀऀऀऀऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 愀猀 䌀漀甀渀琀Ⰰഀഀ 100.0 * SUM(Q.Weight) / ਍ऀऀऀऀऀऀऀऀ⠀ ㄀⸀  ⨀ ⠀ऀ猀攀氀攀挀琀ऀ䌀䄀匀䔀 圀䠀䔀一 匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 㸀   吀䠀䔀一  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ഀഀ else 1 ਍ऀऀऀऀऀऀऀऀऀऀऀऀऀ攀渀搀ऀഀഀ ਍ऀऀऀऀऀऀऀऀऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀ഀഀ where Q.SessionID = @SessionID )) ਍ऀऀऀऀऀ愀猀 唀猀愀最攀ഀഀ from ਍ऀऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ LEFT OUTER JOIN ਍ऀऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀搀愀琀愀戀愀猀攀崀 愀猀 儀䐀 伀一 儀䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ LEFT OUTER JOIN ਍ऀऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀 伀一 儀䐀⸀儀甀攀爀礀䤀䐀 㴀 儀⸀儀甀攀爀礀䤀䐀ഀഀ and Q.SessionID = QD.SessionID and ਍ऀऀऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ऀऀഀഀ GROUP BY D.DatabaseID ਍ऀऀऀऀऀ⤀ 愀猀 刀ഀഀ where R.DatabaseID = D1.DatabaseID and ਍ऀऀऀऀऀ䐀㄀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ R.Count > 0 ਍ऀ漀爀搀攀爀 戀礀 吀愀最Ⰰ嬀䐀愀琀愀戀愀猀攀℀㈀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀 搀攀猀挀ഀഀ FOR XML EXPLICIT ਍攀渀搀ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_delete_session] Script Date: 05/23/2008 14:48:43 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ഀഀ create procedure [dbo].[sp_DTA_delete_session] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀 ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ搀攀氀攀琀攀 昀爀漀洀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开椀渀瀀甀琀 眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开攀渀搀开砀洀氀瀀爀攀昀椀砀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㌀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_end_xmlprefix] ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀攀渀搀吀愀最猀 渀瘀愀爀挀栀愀爀⠀㄀㈀㠀⤀ഀഀ set @endTags = N'' ਍ऀ猀攀氀攀挀琀 䀀攀渀搀吀愀最猀ഀഀ end ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_event_weight_helper_relational] Script Date: 05/23/2008 14:48:43 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ 挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开攀瘀攀渀琀开眀攀椀最栀琀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀ഀഀ @SessionID int ਍ऀऀऀ愀猀ഀഀ begin select 'Event String'= EventString, 'Weight' = CAST(EventWeight as decimal(38,2)) from [msdb].[dbo].[DTA_reports_query] ਍ऀऀऀऀऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀 䔀瘀攀渀琀圀攀椀最栀琀㸀 ഀഀ order by EventWeight desc end ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_event_weight_helper_xml] Script Date: 05/23/2008 14:48:43 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开攀瘀攀渀琀开眀攀椀最栀琀开栀攀氀瀀攀爀开砀洀氀崀 ഀഀ @SessionID int ਍愀猀 ഀഀ begin ਍ऀ猀攀氀攀挀琀 ㄀            愀猀 吀愀最Ⰰ ഀഀ NULL as Parent, ਍ऀऀऀ✀✀ 愀猀 嬀䔀瘀攀渀琀圀攀椀最栀琀刀攀瀀漀爀琀℀㄀℀℀攀氀攀洀攀渀琀崀Ⰰഀഀ NULL as [EventDetails!2!EventString!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䔀瘀攀渀琀䐀攀琀愀椀氀猀℀㈀℀圀攀椀最栀琀℀䔀䰀䔀䴀䔀一吀崀ഀഀ union all ਍ഀഀ select 2 as Tag, ਍ऀऀऀ㄀         愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [QueryCost!1!!element], ਍ऀऀऀ䔀瘀攀渀琀匀琀爀椀渀最 愀猀 嬀䔀瘀攀渀琀䐀攀琀愀椀氀猀℀㈀℀䔀瘀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ CAST(EventWeight as decimal(38,2)) as [EventDetails!2!Weight!ELEMENT] ਍ऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ where SessionID=@SessionID and EventWeight>0 ਍ऀ漀爀搀攀爀 戀礀 吀愀最Ⰰ嬀䔀瘀攀渀琀䐀攀琀愀椀氀猀℀㈀℀圀攀椀最栀琀℀䔀䰀䔀䴀䔀一吀崀 搀攀猀挀  ഀഀ FOR XML EXPLICIT ਍攀渀搀ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_get_columntableids] Script Date: 05/23/2008 14:48:44 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开挀漀氀甀洀渀琀愀戀氀攀椀搀猀崀ഀഀ @SessionID int ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ select ColumnID,DatabaseName,SchemaName,TableName,ColumnName ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开挀漀氀甀洀渀崀 愀猀 䌀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T,[msdb].[dbo].[DTA_reports_database] as D ਍ऀ眀栀攀爀攀 䌀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀 愀渀搀 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀 䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开搀愀琀愀戀愀猀攀琀愀戀氀攀椀搀猀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㐀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_get_databasetableids] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ猀攀氀攀挀琀 䐀愀琀愀戀愀猀攀䤀䐀Ⰰ䐀愀琀愀戀愀猀攀一愀洀攀 ഀഀ from [msdb].[dbo].[DTA_reports_database] as D ਍ऀ眀栀攀爀攀 䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_get_indexableids] Script Date: 05/23/2008 14:48:44 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开椀渀搀攀砀愀戀氀攀椀搀猀崀ഀഀ @SessionID int ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ select IndexID,DatabaseName,SchemaName,TableName,IndexName,SessionUniquefier ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀Ⰰ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀ眀栀攀爀攀 䤀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀 愀渀搀 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀 䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 ഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_get_interactivestatus] Script Date: 05/23/2008 14:48:45 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开椀渀琀攀爀愀挀琀椀瘀攀猀琀愀琀甀猀崀ഀഀ @SessionID int ਍ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ select InteractiveStatus from [msdb].[dbo].[DTA_input] where SessionID = @SessionID ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_get_pftableids] Script Date: 05/23/2008 14:48:45 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开瀀昀琀愀戀氀攀椀搀猀崀ഀഀ @SessionID int ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ select PartitionFunctionID ,DatabaseName ,PartitionFunctionName ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开瀀愀爀琀椀琀椀漀渀昀甀渀挀琀椀漀渀崀  愀猀 倀䘀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀ眀栀攀爀攀 倀䘀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 ഀഀ and D.SessionID = @SessionID ਍ऀഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开瀀猀琀愀戀氀攀椀搀猀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㔀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_get_pstableids] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ猀攀氀攀挀琀 倀愀爀琀椀琀椀漀渀匀挀栀攀洀攀䤀䐀Ⰰ䐀愀琀愀戀愀猀攀一愀洀攀Ⰰ倀愀爀琀椀琀椀漀渀匀挀栀攀洀攀一愀洀攀   ഀഀ from [msdb].[dbo].[DTA_reports_partitionfunction] as PF, ਍ऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开瀀愀爀琀椀琀椀漀渀猀挀栀攀洀攀崀  愀猀 倀匀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀ眀栀攀爀攀 倀匀⸀倀愀爀琀椀琀椀漀渀䘀甀渀挀琀椀漀渀䤀䐀  㴀 倀䘀⸀倀愀爀琀椀琀椀漀渀䘀甀渀挀琀椀漀渀䤀䐀 愀渀搀 ഀഀ PF.DatabaseID = D.DatabaseID and D.SessionID = @SessionID ਍ऀഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开猀攀猀猀椀漀渀开爀攀瀀漀爀琀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㘀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_get_session_report] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀Ⰰ ഀഀ @ReportID int, ਍ऀ䀀刀攀瀀漀爀琀吀礀瀀攀 椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀഀഀ if @ReportType = 0 ਍ऀ戀攀最椀渀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 儀甀攀爀礀 䌀漀猀琀 刀攀瀀漀爀琀                                          ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㈀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀 䀀匀攀猀猀椀漀渀䤀䐀ऀഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Event Frequency Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 3 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_event_weight_helper_relational @SessionID ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 儀甀攀爀礀 䐀攀琀愀椀氀 刀攀瀀漀爀琀                                        ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 㐀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开焀甀攀爀礀开搀攀琀愀椀氀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀  䀀匀攀猀猀椀漀渀䤀䐀ऀഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Current Query Index Relations Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 5 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_query_indexrelations_helper_relational @SessionID,0 ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 刀攀挀漀洀洀攀渀搀攀搀 儀甀攀爀礀 䤀渀搀攀砀 刀攀氀愀琀椀漀渀猀 刀攀瀀漀爀琀                   ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 㘀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开焀甀攀爀礀开椀渀搀攀砀爀攀氀愀琀椀漀渀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀  䀀匀攀猀猀椀漀渀䤀䐀Ⰰ㄀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Current Query Cost Range */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 7 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_query_costrange_helper_relational @SessionID ਍ऀऀ攀渀搀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 刀攀挀漀洀洀攀渀搀攀搀 儀甀攀爀礀 䌀漀猀琀 刀愀渀最攀ऀऀ                            ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 㠀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀爀愀渀最攀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Current Query Index Usage Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 9 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_index_usage_helper_relational @SessionID,0 ਍ऀऀ攀渀搀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 刀攀挀漀洀洀攀渀搀攀搀 儀甀攀爀礀 䤀渀搀攀砀 唀猀愀最攀 刀攀瀀漀爀琀ऀऀ                   ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀ ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开椀渀搀攀砀开甀猀愀最攀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀 䀀匀攀猀猀椀漀渀䤀䐀Ⰰ㄀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Current Index Detail Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 11 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_index_detail_current_helper_relational @SessionID ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 刀攀挀漀洀洀攀渀搀攀搀 䤀渀搀攀砀 䐀攀琀愀椀氀 刀攀瀀漀爀琀                                ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㈀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开椀渀搀攀砀开搀攀琀愀椀氀开爀攀挀漀洀洀攀渀搀攀搀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀  䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* View Table Relations Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 13 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_view_table_helper_relational @SessionID ਍ऀऀ攀渀搀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 圀漀爀欀氀漀愀搀 䄀渀愀氀礀猀椀猀 刀攀瀀漀爀琀                                   ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㐀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开眀欀氀搀开愀渀愀氀礀猀椀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* All object access reports */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 15 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_database_access_helper_relational @SessionID ਍ऀऀ攀渀搀ഀഀ else if @ReportID = 16 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_table_access_helper_relational @SessionID ਍ऀऀ攀渀搀ഀഀ else if @ReportID = 17 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_column_access_helper_relational @SessionID ਍ऀऀ攀渀搀ഀഀ end ਍ऀⴀⴀ 堀䴀䰀 刀攀瀀漀爀琀猀ഀഀ else if @ReportType = 1 ਍ऀ戀攀最椀渀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 儀甀攀爀礀 䌀漀猀琀 刀攀瀀漀爀琀                                          ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㈀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀开栀攀氀瀀攀爀开砀洀氀 䀀匀攀猀猀椀漀渀䤀䐀ऀഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Event Frequency Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 3 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_event_weight_helper_xml @SessionID ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 儀甀攀爀礀 䐀攀琀愀椀氀 刀攀瀀漀爀琀                                        ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 㐀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开焀甀攀爀礀开搀攀琀愀椀氀开栀攀氀瀀攀爀开砀洀氀  䀀匀攀猀猀椀漀渀䤀䐀ऀഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Current Query Index Relations Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 5 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_query_indexrelations_helper_xml @SessionID,0 ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 刀攀挀漀洀洀攀渀搀攀搀 儀甀攀爀礀 䤀渀搀攀砀 刀攀氀愀琀椀漀渀猀 刀攀瀀漀爀琀                   ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 㘀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开焀甀攀爀礀开椀渀搀攀砀爀攀氀愀琀椀漀渀猀开栀攀氀瀀攀爀开砀洀氀  䀀匀攀猀猀椀漀渀䤀䐀Ⰰ㄀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Current Query Cost Range */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 7 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_query_costrange_helper_xml @SessionID ਍ऀऀ攀渀搀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 刀攀挀漀洀洀攀渀搀攀搀 儀甀攀爀礀 䌀漀猀琀 刀愀渀最攀ऀऀ                            ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 㠀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀爀愀渀最攀开栀攀氀瀀攀爀开砀洀氀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Current Query Index Usage Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 9 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_index_usage_helper_xml @SessionID,0 ਍ऀऀ攀渀搀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 刀攀挀漀洀洀攀渀搀攀搀 儀甀攀爀礀 䤀渀搀攀砀 唀猀愀最攀 刀攀瀀漀爀琀ऀऀ                   ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀ ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开椀渀搀攀砀开甀猀愀最攀开栀攀氀瀀攀爀开砀洀氀 䀀匀攀猀猀椀漀渀䤀䐀Ⰰ㄀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Current Index Detail Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 11 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_index_current_detail_helper_xml @SessionID ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 刀攀挀漀洀洀攀渀搀攀搀 䤀渀搀攀砀 䐀攀琀愀椀氀 刀攀瀀漀爀琀                                ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㈀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开椀渀搀攀砀开爀攀挀漀洀洀攀渀搀攀搀开搀攀琀愀椀氀开栀攀氀瀀攀爀开砀洀氀  䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* View Table Relations Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 13 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_view_table_helper_xml @SessionID ਍ऀऀ攀渀搀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 圀漀爀欀氀漀愀搀 䄀渀愀氀礀猀椀猀 刀攀瀀漀爀琀                                   ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㐀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开眀欀氀搀开愀渀愀氀礀猀椀猀开栀攀氀瀀攀爀开砀洀氀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* All object access reports */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 15 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_database_access_helper_xml @SessionID ਍ऀऀ攀渀搀ഀഀ else if @ReportID = 16 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_table_access_helper_xml @SessionID ਍ऀऀ攀渀搀ഀഀ else if @ReportID = 17 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_column_access_helper_xml @SessionID ਍ऀऀ攀渀搀ഀഀ end ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_get_session_tuning_results] Script Date: 05/23/2008 14:48:46 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开猀攀猀猀椀漀渀开琀甀渀椀渀最开爀攀猀甀氀琀猀崀 ഀഀ @SessionID int ਍愀猀 ഀഀ begin ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ declare @retval int ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ select FinishStatus,TuningResults ਍ऀ昀爀漀洀ऀ洀猀搀戀⸀搀戀漀⸀䐀吀䄀开漀甀琀瀀甀琀 ഀഀ where SessionID=@SessionID ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_get_tableids] Script Date: 05/23/2008 14:48:46 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开琀愀戀氀攀椀搀猀崀ഀഀ @SessionID int ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ select TableID,DatabaseName,SchemaName,TableName ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀 ഀഀ where T.DatabaseID = D.DatabaseID and D.SessionID = @SessionID ਍ഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_get_tuninglog] Script Date: 05/23/2008 14:48:47 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ഀഀ create procedure [dbo].[sp_DTA_get_tuninglog] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀Ⰰഀഀ @XML int = 0, ਍    䀀䰀愀猀琀刀漀眀刀攀琀爀椀攀瘀攀搀 椀渀琀 㴀  Ⰰഀഀ @GetFrequencyForRowIDOnly int = 0 ਍ഀഀ as ਍戀攀最椀渀ഀഀ set nocount on ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ഀഀ declare @LogTableName nvarchar(1280) ਍ऀ搀攀挀氀愀爀攀ऀ䀀䐀攀昀愀甀氀琀吀愀戀氀攀一愀洀攀 渀瘀愀爀挀栀愀爀⠀㄀㈀㠀⤀ഀഀ declare @SQLString nvarchar(2048) ਍ऀⴀⴀ䌀愀琀攀最漀爀礀䤀䐀Ⰰ䔀瘀攀渀琀Ⰰ匀琀愀琀攀洀攀渀琀Ⰰ䘀爀攀焀甀攀渀挀礀Ⰰ刀攀愀猀漀渀ഀഀ declare @localized_string_CategoryID nvarchar(128) ਍ऀ搀攀挀氀愀爀攀 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开䔀瘀攀渀琀 渀瘀愀爀挀栀愀爀⠀㄀㈀㠀⤀ഀഀ declare @localized_string_Statement nvarchar(128) ਍ऀ搀攀挀氀愀爀攀 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开䘀爀攀焀甀攀渀挀礀 渀瘀愀爀挀栀愀爀⠀㄀㈀㠀⤀ഀഀ declare @localized_string_Reason nvarchar(128) ਍ഀഀ set @localized_string_CategoryID = N'''CategoryID''' ਍ऀ猀攀琀 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开䔀瘀攀渀琀 㴀 一✀✀✀䔀瘀攀渀琀✀✀✀ഀഀ set @localized_string_Statement = N'''Statement''' ਍ऀ猀攀琀 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开䘀爀攀焀甀攀渀挀礀 㴀 一✀✀✀䘀爀攀焀甀攀渀挀礀✀✀✀ഀഀ set @localized_string_Reason = N'''Reason''' ਍ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ഀഀ ਍ऀ猀攀琀 䀀䐀攀昀愀甀氀琀吀愀戀氀攀一愀洀攀 㴀 ✀嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开琀甀渀椀渀最氀漀最崀✀ഀഀ set @LogTableName = ' ' ਍ऀ猀攀氀攀挀琀 琀漀瀀 ㄀ 䀀䰀漀最吀愀戀氀攀一愀洀攀 㴀 䰀漀最吀愀戀氀攀一愀洀攀 昀爀漀洀 䐀吀䄀开椀渀瀀甀琀 眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 ⠀䀀䰀漀最吀愀戀氀攀一愀洀攀 㴀 ✀ ✀⤀ഀഀ return (0) ਍ഀഀ ਍ऀ椀昀 䀀堀䴀䰀 㴀  ഀഀ begin ਍ऀऀ椀昀 ⠀䀀䜀攀琀䘀爀攀焀甀攀渀挀礀䘀漀爀刀漀眀䤀䐀伀渀氀礀 㴀  ⤀ഀഀ begin ਍ऀऀऀ猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀✀猀攀氀攀挀琀 䌀愀琀攀最漀爀礀䤀䐀 愀猀 ✀ ⬀ 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开䌀愀琀攀最漀爀礀䤀䐀 ⬀ ഀഀ ' ,Event as ' + @localized_string_Event + ਍ऀऀऀऀऀऀऀ✀ Ⰰ匀琀愀琀攀洀攀渀琀 愀猀 ✀ ⬀ 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开匀琀愀琀攀洀攀渀琀 ⬀ഀഀ ' ,Frequency as ' + @localized_string_Frequency + ਍ऀऀऀऀऀऀऀ✀ Ⰰ刀攀愀猀漀渀 愀猀 ✀ ⬀ 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开刀攀愀猀漀渀 ⬀ऀऀऀഀഀ ' from ' ਍ऀऀ攀渀搀ഀഀ else ਍ऀऀ戀攀最椀渀ഀഀ set @SQLString = N' select Frequency from ' ਍ऀऀ攀渀搀ഀഀ set @SQLString = @SQLString + @LogTableName ਍ऀऀ猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 䀀匀儀䰀匀琀爀椀渀最 ⬀ 一✀ 眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 ✀ഀഀ set @SQLString = @SQLString + CONVERT(nvarchar(10),@SessionID) ਍        猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 䀀匀儀䰀匀琀爀椀渀最 ⬀ 一✀ 愀渀搀 刀漀眀䤀䐀 㸀 ✀ഀഀ set @SQLString = @SQLString + CONVERT(nvarchar(10),@LastRowRetrieved) ਍        猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 䀀匀儀䰀匀琀爀椀渀最 ⬀ ✀ 漀爀搀攀爀 戀礀 刀漀眀䤀䐀✀ഀഀ ਍ऀऀ攀砀攀挀 ⠀䀀匀儀䰀匀琀爀椀渀最⤀ഀഀ end ਍ऀ攀氀猀攀ഀഀ begin ਍ऀऀ椀昀 䀀䰀漀最吀愀戀氀攀一愀洀攀 㴀 ऀ䀀䐀攀昀愀甀氀琀吀愀戀氀攀一愀洀攀ഀഀ begin ਍ऀऀऀ椀昀 ⠀䀀䜀攀琀䘀爀攀焀甀攀渀挀礀䘀漀爀刀漀眀䤀䐀伀渀氀礀 㴀  ⤀ഀഀ begin ਍ऀऀऀऀ猀攀氀攀挀琀 䌀愀琀攀最漀爀礀䤀䐀Ⰰ䔀瘀攀渀琀Ⰰ匀琀愀琀攀洀攀渀琀Ⰰ䘀爀攀焀甀攀渀挀礀Ⰰ刀攀愀猀漀渀 昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开琀甀渀椀渀最氀漀最崀ഀഀ where SessionID = @SessionID and RowID > @LastRowRetrieved ਍ऀऀऀऀ䘀伀刀 堀䴀䰀 刀䄀圀ഀഀ end ਍ऀऀऀ攀氀猀攀ഀഀ begin ਍ऀऀऀऀ猀攀氀攀挀琀 䘀爀攀焀甀攀渀挀礀 昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开琀甀渀椀渀最氀漀最崀ഀഀ where SessionID = @SessionID and RowID > @LastRowRetrieved ਍ऀऀऀऀ䘀伀刀 堀䴀䰀 刀䄀圀ഀഀ end ਍ऀऀऀ爀攀琀甀爀渀⠀ ⤀ഀഀ end ਍ഀഀ if (@GetFrequencyForRowIDOnly = 0) ਍ऀऀ戀攀最椀渀ഀഀ set @SQLString = N' select CategoryID,Event,Statement,Frequency,Reason from ' ਍ऀऀ攀渀搀ഀഀ else ਍ऀऀ戀攀最椀渀ഀഀ set @SQLString = N' select Frequency from ' ਍ऀऀ攀渀搀ഀഀ set @SQLString = @SQLString + @LogTableName ਍ऀऀ猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 䀀匀儀䰀匀琀爀椀渀最 ⬀ 一✀ 眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 ✀ഀഀ set @SQLString = @SQLString + CONVERT(nvarchar(10),@SessionID) ਍        猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 䀀匀儀䰀匀琀爀椀渀最 ⬀ 一✀ 愀渀搀 刀漀眀䤀䐀 㸀 ✀ഀഀ set @SQLString = @SQLString + CONVERT(nvarchar(10),@LastRowRetrieved) ਍ऀऀ猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 䀀匀儀䰀匀琀爀椀渀最 ⬀ ✀䘀伀刀 堀䴀䰀 刀䄀圀✀ഀഀ ਍ऀऀ攀砀攀挀 ⠀䀀匀儀䰀匀琀爀椀渀最⤀ഀഀ ਍ऀ攀渀搀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开琀甀渀椀渀最漀瀀琀椀漀渀猀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㜀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_get_tuningoptions] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀 ഀഀ ਍愀猀 ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ select TuningOptions from [msdb].[dbo].[DTA_input] where SessionID = @SessionID ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开栀攀氀瀀开猀攀猀猀椀漀渀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㠀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开栀攀氀瀀开猀攀猀猀椀漀渀崀 ഀഀ @SessionID int = 0, ਍ऀ䀀䤀渀挀氀甀搀攀吀甀渀椀渀最伀瀀琀椀漀渀猀 椀渀琀 㴀  ഀഀ as ਍戀攀最椀渀ഀഀ declare @tuning_owner nvarchar(256) ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ഀഀ declare @InteractiveStatus tinyint ਍ऀ搀攀挀氀愀爀攀 䀀搀攀氀琀愀 椀渀琀ഀഀ ਍ऀ搀攀挀氀愀爀攀 䀀挀甀爀猀攀猀猀椀漀渀䤀䐀 椀渀琀ഀഀ declare @dbname nvarchar(128) ਍ऀ搀攀挀氀愀爀攀 䀀搀戀椀搀 椀渀琀ഀഀ declare @retcode int ਍ऀ搀攀挀氀愀爀攀 䀀猀焀氀 渀瘀愀爀挀栀愀爀⠀㈀㔀㘀⤀ഀഀ ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀⴀⴀ 䰀椀猀琀 愀氀氀 匀攀猀猀椀漀渀猀 洀漀搀攀ഀഀ if @SessionID = 0 ਍ऀ戀攀最椀渀ഀഀ -- If sysadmin role then rowset has all the rows in the table ਍ऀऀⴀⴀ 刀攀琀甀爀渀 攀瘀攀爀礀琀栀椀渀最ഀഀ if (isnull(IS_SRVROLEMEMBER(N'sysadmin'), 0) = 1) ਍ऀऀ戀攀最椀渀ഀഀ ਍ऀऀऀ椀昀 ⠀䀀䤀渀挀氀甀搀攀吀甀渀椀渀最伀瀀琀椀漀渀猀 㴀  ⤀ ഀഀ begin ਍ऀऀऀऀ猀攀氀攀挀琀ऀ䤀⸀匀攀猀猀椀漀渀䤀䐀Ⰰ 䤀⸀匀攀猀猀椀漀渀一愀洀攀Ⰰ 䤀⸀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀Ⰰഀഀ I.CreationTime, I.ScheduledStartTime, O.StopTime,I.GlobalSessionID ਍ऀऀऀऀऀऀ昀爀漀洀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开椀渀瀀甀琀 䤀 氀攀昀琀 漀甀琀攀爀 樀漀椀渀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开漀甀琀瀀甀琀  伀ഀഀ on I.SessionID = O.SessionID ਍ऀऀऀऀ漀爀搀攀爀 戀礀ഀഀ I.SessionID desc ਍ऀऀऀ攀渀搀ഀഀ ਍ऀऀऀ攀氀猀攀 椀昀 ⠀䀀䤀渀挀氀甀搀攀吀甀渀椀渀最伀瀀琀椀漀渀猀 㴀 ㄀⤀ഀഀ begin ਍ऀऀऀऀ猀攀氀攀挀琀ऀ䤀⸀匀攀猀猀椀漀渀䤀䐀Ⰰ 䤀⸀匀攀猀猀椀漀渀一愀洀攀Ⰰ 䤀⸀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀Ⰰഀഀ I.CreationTime, I.ScheduledStartTime, O.StopTime,I.TuningOptions,I.GlobalSessionID ਍ऀऀऀऀऀऀ昀爀漀洀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开椀渀瀀甀琀  䤀 氀攀昀琀 漀甀琀攀爀 樀漀椀渀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开漀甀琀瀀甀琀 愀猀 伀ഀഀ on I.SessionID = O.SessionID ਍ऀऀऀऀ漀爀搀攀爀 戀礀ഀഀ I.SessionID desc ਍ऀऀऀ攀渀搀ऀऀऀऀऀऀऀऀऀഀഀ ਍ऀऀ攀渀搀ഀഀ ਍ऀऀ攀氀猀攀 ഀഀ begin ਍ऀऀऀⴀⴀ 吀攀洀瀀漀爀愀爀礀 琀愀戀氀攀 琀漀 猀琀漀爀攀 猀攀猀猀椀漀渀椀搀 愀渀搀 搀愀琀愀戀愀猀攀猀 瀀愀猀猀攀搀 椀渀 戀礀 甀猀攀爀ഀഀ create table #allDistinctDbIds (DatabaseID int) ਍ऀऀऀⴀⴀ 䤀渀椀琀 瘀愀爀椀愀戀氀攀猀ऀऀऀഀഀ set @dbid = 0 ਍ऀऀऀ猀攀琀 䀀爀攀琀挀漀搀攀 㴀 ㄀ഀഀ -- Get all database names passed in by user (IsDatabaseSelectedToTune =1) ਍ऀऀऀ搀攀挀氀愀爀攀 搀戀开挀甀爀猀漀爀 挀甀爀猀漀爀 昀漀爀ഀഀ select distinct(DatabaseName) from DTA_reports_database ਍ऀऀऀ眀栀攀爀攀  䤀猀䐀愀琀愀戀愀猀攀匀攀氀攀挀琀攀搀吀漀吀甀渀攀  㴀 ㄀ഀഀ -- Open cursor ਍ऀऀऀ漀瀀攀渀 搀戀开挀甀爀猀漀爀ഀഀ -- Fetch first session id and db name ਍ऀऀऀ昀攀琀挀栀 渀攀砀琀 昀爀漀洀 搀戀开挀甀爀猀漀爀ഀഀ into @dbname ਍ऀऀऀഀഀ -- loop and get all the databases selected to tune ਍ऀऀऀ眀栀椀氀攀 䀀䀀昀攀琀挀栀开猀琀愀琀甀猀 㴀  ഀഀ -- Loop ਍ऀऀऀ戀攀最椀渀ഀഀ -- set @retcode = 1 in the beginning to indicate success ਍ऀऀऀऀ猀攀琀 䀀爀攀琀挀漀搀攀 㴀 ㄀ഀഀ -- Get database id ਍ऀऀऀऀ猀攀氀攀挀琀  䀀搀戀椀搀 㴀 䐀䈀开䤀䐀⠀䀀搀戀渀愀洀攀⤀ഀഀ -- In Yukon this masks the error messages.If not owner dont return ਍ऀऀऀऀⴀⴀ 攀爀爀漀爀 洀攀猀猀愀最攀 椀渀 匀倀ഀഀ set @sql = N'begin try ਍ऀऀऀऀऀ搀戀挀挀 愀甀琀漀瀀椀氀漀琀⠀㔀Ⰰ䀀搀戀椀搀⤀ 圀䤀吀䠀 一伀开䤀一䘀伀䴀匀䜀匀 ഀഀ end try ਍ऀऀऀऀ戀攀最椀渀 挀愀琀挀栀ഀഀ set @dbid = 0 ਍ऀऀऀऀऀ猀攀琀 䀀爀攀琀挀漀搀攀 㴀  ഀഀ end catch' ਍ऀऀऀऀ攀砀攀挀甀琀攀 猀瀀开攀砀攀挀甀琀攀猀焀氀 䀀猀焀氀ഀഀ , N'@dbid int output, @retcode int OUTPUT' ਍ऀऀऀऀऀⰀ 䀀搀戀椀搀 漀甀琀瀀甀琀 ഀഀ , @retcode output ਍ऀऀഀഀ -- dbid is 0 if user doesnt have permission to do dbcc call ਍ऀऀऀऀ椀渀猀攀爀琀 椀渀琀漀 ⌀愀氀氀䐀椀猀琀椀渀挀琀䐀戀䤀搀猀⠀䐀愀琀愀戀愀猀攀䤀䐀⤀ 瘀愀氀甀攀猀ഀഀ (@dbid) ਍ऀऀऀऀⴀⴀ 昀攀琀挀栀 渀攀砀琀ऀऀऀऀऀऀऀऀഀഀ fetch from db_cursor into @dbname ਍ऀऀऀⴀⴀ 攀渀搀 琀栀攀 挀甀爀猀漀爀 氀漀漀瀀ऀऀऀऀഀഀ end ਍ऀऀऀⴀⴀ 挀氀攀愀渀 甀瀀 挀甀爀猀漀爀ഀഀ close db_cursor ਍ऀऀऀ搀攀愀氀氀漀挀愀琀攀 搀戀开挀甀爀猀漀爀ഀഀ ਍ഀഀ select SessionID ਍ऀऀऀ椀渀琀漀 ⌀愀氀氀嘀愀氀椀搀匀攀猀猀椀漀渀䤀搀猀ഀഀ from DTA_input as I ਍ऀऀऀ眀栀攀爀攀ഀഀ ((select count(*) from ਍ऀऀऀऀ⌀愀氀氀䐀椀猀琀椀渀挀琀䐀戀䤀搀猀 Ⰰ䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀 愀猀 䐀ഀഀ where #allDistinctDbIds.DatabaseID = DB_ID(D.DatabaseName) ਍ऀऀऀऀ愀渀搀 䤀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䐀⸀匀攀猀猀椀漀渀䤀䐀ഀഀ group by D.SessionID ) = ਍ऀऀऀऀ⠀猀攀氀攀挀琀 挀漀甀渀琀⠀⨀⤀ 昀爀漀洀 䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀 愀猀 䐀ഀഀ where I.SessionID = D.SessionID ਍ऀऀऀऀ愀渀搀 䐀⸀䤀猀䐀愀琀愀戀愀猀攀匀攀氀攀挀琀攀搀吀漀吀甀渀攀 㴀 ㄀ഀഀ group by D.SessionID ) ਍ऀऀऀऀ⤀ ഀഀ group by I.SessionID ਍ऀऀऀഀഀ ਍ऀऀऀⴀⴀ 刀攀琀甀爀渀 漀渀氀礀 猀攀猀猀椀漀渀猀 眀椀琀栀 洀愀琀挀栀椀渀最 甀猀攀爀 渀愀洀攀ഀഀ -- If count of rows with DatabaseID = 0 is > 0 then permission denied ਍ऀऀऀ椀昀 ⠀ 䀀䤀渀挀氀甀搀攀吀甀渀椀渀最伀瀀琀椀漀渀猀 㴀   ⤀ഀഀ begin ਍ऀऀऀऀ猀攀氀攀挀琀ऀ䤀⸀匀攀猀猀椀漀渀䤀䐀 Ⰰ 䤀⸀匀攀猀猀椀漀渀一愀洀攀Ⰰ 䤀⸀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀Ⰰഀഀ I.CreationTime, I.ScheduledStartTime, O.StopTime,I.GlobalSessionID ਍ऀऀऀऀऀऀ昀爀漀洀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开椀渀瀀甀琀 䤀 氀攀昀琀 漀甀琀攀爀 樀漀椀渀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开漀甀琀瀀甀琀  伀 ഀഀ on I.SessionID = O.SessionID ਍ऀऀऀऀऀऀ椀渀渀攀爀  樀漀椀渀 ⌀愀氀氀嘀愀氀椀搀匀攀猀猀椀漀渀䤀搀猀 匀ഀഀ on I.SessionID = S.SessionID ਍ऀऀऀऀऀऀऀऀഀഀ ਍ऀऀऀऀ漀爀搀攀爀 戀礀ഀഀ I.SessionID desc ਍ऀऀऀ攀渀搀ഀഀ ਍ऀऀऀ攀氀猀攀 椀昀 ⠀䀀䤀渀挀氀甀搀攀吀甀渀椀渀最伀瀀琀椀漀渀猀 㴀 ㄀⤀ഀഀ begin ਍ऀऀऀऀ猀攀氀攀挀琀ऀ䤀⸀匀攀猀猀椀漀渀䤀䐀 Ⰰ 䤀⸀匀攀猀猀椀漀渀一愀洀攀Ⰰ 䤀⸀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀Ⰰഀഀ I.CreationTime, I.ScheduledStartTime, O.StopTime,I.TuningOptions,I.GlobalSessionID ਍ऀऀऀऀऀऀ昀爀漀洀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开椀渀瀀甀琀 䤀 氀攀昀琀 漀甀琀攀爀 樀漀椀渀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开漀甀琀瀀甀琀 伀 ഀഀ on I.SessionID = O.SessionID ਍ऀऀऀऀऀऀ椀渀渀攀爀  樀漀椀渀 ⌀愀氀氀嘀愀氀椀搀匀攀猀猀椀漀渀䤀搀猀 匀ഀഀ on I.SessionID = S.SessionID ਍ഀഀ ਍ऀऀऀऀ漀爀搀攀爀 戀礀ഀഀ I.SessionID desc ਍ऀऀऀऀऀऀऀऀऀऀഀഀ end ਍ऀऀऀ搀爀漀瀀 琀愀戀氀攀 ⌀愀氀氀䐀椀猀琀椀渀挀琀䐀戀䤀搀猀ഀഀ drop table #allValidSessionIds ਍ऀऀ攀渀搀ഀഀ end ਍ഀഀ else ਍ऀ戀攀最椀渀ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ऀऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀऀ攀渀搀ऀഀഀ ਍ऀऀ椀昀 ⠀ 䀀䤀渀挀氀甀搀攀吀甀渀椀渀最伀瀀琀椀漀渀猀 㴀  ⤀ ഀഀ begin ਍ऀऀऀ猀攀氀攀挀琀ऀ䤀⸀匀攀猀猀椀漀渀䤀䐀Ⰰ 䤀⸀匀攀猀猀椀漀渀一愀洀攀Ⰰ 䤀⸀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀Ⰰഀഀ I.CreationTime, I.ScheduledStartTime, O.StopTime,I.GlobalSessionID ਍ऀऀऀ昀爀漀洀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开椀渀瀀甀琀 䤀 氀攀昀琀 漀甀琀攀爀 樀漀椀渀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开漀甀琀瀀甀琀 伀ഀഀ on I.SessionID = O.SessionID ਍ऀऀऀ眀栀攀爀攀 䤀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ऀഀഀ end ਍ऀऀ攀氀猀攀 椀昀 ⠀䀀䤀渀挀氀甀搀攀吀甀渀椀渀最伀瀀琀椀漀渀猀 㴀 ㄀⤀ഀഀ begin ਍ऀऀऀ猀攀氀攀挀琀ऀ䤀⸀匀攀猀猀椀漀渀䤀䐀Ⰰ 䤀⸀匀攀猀猀椀漀渀一愀洀攀Ⰰ 䤀⸀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀Ⰰഀഀ I.CreationTime, I.ScheduledStartTime, O.StopTime,I.TuningOptions,I.GlobalSessionID ਍ऀऀऀ昀爀漀洀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开椀渀瀀甀琀 䤀 氀攀昀琀 漀甀琀攀爀 樀漀椀渀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开漀甀琀瀀甀琀 伀ഀഀ on I.SessionID = O.SessionID ਍ऀऀऀ眀栀攀爀攀ऀ䤀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ऀऀऀऀഀഀ end ਍ऀഀഀ -- Second rowset returned for DTA to process progress information ਍ऀऀ猀攀氀攀挀琀ऀ倀爀漀最爀攀猀猀䔀瘀攀渀琀䤀䐀Ⰰ吀甀渀椀渀最匀琀愀最攀Ⰰ圀漀爀欀氀漀愀搀䌀漀渀猀甀洀瀀琀椀漀渀Ⰰ䔀猀琀䤀洀瀀爀漀瘀攀洀攀渀琀Ⰰഀഀ ProgressEventTime ,ConsumingWorkLoadMessage,PerformingAnalysisMessage,GeneratingReportsMessage ਍ऀऀ昀爀漀洀ऀ洀猀搀戀⸀搀戀漀⸀䐀吀䄀开瀀爀漀最爀攀猀猀 ഀഀ where SessionID=@SessionID ਍ऀऀ漀爀搀攀爀 戀礀 倀爀漀最爀攀猀猀䔀瘀攀渀琀䤀䐀ഀഀ ਍ഀഀ -- Set interactive status to 6 if a time of 5 mins has elapsed ਍ऀऀⴀⴀ 一攀砀琀 琀椀洀攀 栀攀氀瀀 猀攀猀猀椀漀渀 椀猀 挀愀氀氀攀搀 䐀吀䄀 眀椀氀氀 攀砀椀琀ഀഀ ਍ऀऀ猀攀氀攀挀琀ऀ 䀀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀㴀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀ഀഀ from msdb.dbo.DTA_input ਍ऀऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ऀഀഀ ਍ऀऀ椀昀 ⠀䀀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 䤀匀 一伀吀 一唀䰀䰀 愀渀搀⠀ 䀀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 㰀㸀 㐀 愀渀搀  䀀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 㰀㸀 㘀⤀⤀ ഀഀ begin ਍ऀऀऀ猀攀氀攀挀琀 䀀搀攀氀琀愀㴀䐀䄀吀䔀䐀䤀䘀䘀⠀洀椀渀甀琀攀 Ⰰ倀爀漀最爀攀猀猀䔀瘀攀渀琀吀椀洀攀Ⰰ最攀琀搀愀琀攀⠀⤀⤀ഀഀ from msdb.dbo.DTA_progress ਍ऀऀऀ眀栀攀爀攀  匀攀猀猀椀漀渀䤀䐀 㴀䀀匀攀猀猀椀漀渀䤀䐀ऀഀഀ order by TuningStage ASC ਍ऀऀऀഀഀ if(@delta > 30) ਍ऀऀऀ戀攀最椀渀ഀഀ update [msdb].[dbo].[DTA_input] set InteractiveStatus = 6 ਍ऀऀऀऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ攀渀搀ഀഀ ਍ऀऀഀഀ end ਍攀渀搀ऀऀऀऀऀऀऀऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_index_current_detail_helper_xml] Script Date: 05/23/2008 14:48:48 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀搀攀砀开挀甀爀爀攀渀琀开搀攀琀愀椀氀开栀攀氀瀀攀爀开砀洀氀崀ഀഀ @SessionID int ਍愀猀ऀऀऀऀऀऀഀഀ begin ਍猀攀氀攀挀琀 ㄀            愀猀 吀愀最Ⰰ ഀഀ NULL as Parent, ਍ऀऀ✀✀ 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ 'true' as [IndexDetailReport!1!Current], ਍ऀऀ一唀䰀䰀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Database!2!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!4!TableID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!IndexID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!Clustered], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀唀渀椀焀甀攀崀Ⰰഀഀ NULL as [Index!5!Heap], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀匀椀稀攀䤀渀䴀䈀崀Ⰰഀഀ NULL as [Index!5!NumberOfRows] ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 2 as Tag, ਍ऀऀ㄀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [IndexDetailReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀刀攀挀漀洀洀攀渀搀攀搀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!3!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!5!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䌀氀甀猀琀攀爀攀搀崀Ⰰഀഀ NULL as [Index!5!Unique], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䠀攀愀瀀崀Ⰰഀഀ NULL as [Index!5!IndexSizeInMB], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀漀眀猀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D ਍ऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 椀渀ഀഀ (select D.DatabaseID from ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀ഀഀ where ਍ऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = T.DatabaseID and ਍ऀऀऀ吀⸀吀愀戀氀攀䤀䐀 㴀 䤀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ I.IsExisting = 1 ਍ऀऀऀ最爀漀甀瀀 戀礀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀⤀ഀഀ union all ਍ऀ猀攀氀攀挀琀 ㌀            愀猀 吀愀最Ⰰ ഀഀ 2 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [IndexDetailReport!1!Recommended], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ刀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!4!TableID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!IndexID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!Clustered], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀唀渀椀焀甀攀崀Ⰰഀഀ NULL as [Index!5!Heap], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀匀椀稀攀䤀渀䴀䈀崀Ⰰഀഀ NULL as [Index!5!NumberOfRows] ਍ऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ ( ਍ऀऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀 ഀഀ from ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀ഀഀ where ਍ऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = T.DatabaseID and ਍ऀऀऀ吀⸀吀愀戀氀攀䤀䐀 㴀 䤀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ I.IsExisting = 1 ਍ऀऀऀ最爀漀甀瀀 戀礀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀ഀഀ ) R ਍ऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ union all ਍ऀ猀攀氀攀挀琀 㐀            愀猀 吀愀最Ⰰ ഀഀ 3 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [IndexDetailReport!1!Recommended], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ刀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.TableID as [Table!4!TableID!hide], ਍ऀऀ吀⸀吀愀戀氀攀一愀洀攀  愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!IndexID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!Clustered], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀唀渀椀焀甀攀崀Ⰰഀഀ NULL as [Index!5!Heap], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀匀椀稀攀䤀渀䴀䈀崀Ⰰഀഀ NULL as [Index!5!NumberOfRows] ਍ऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀ⠀ഀഀ select D.DatabaseID,T.SchemaName,T.TableID ਍ऀऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_index] as I ਍ऀऀऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ T.TableID = I.TableID and ਍ऀऀऀऀ䤀⸀䤀猀䔀砀椀猀琀椀渀最 㴀 ㄀ഀഀ group by D.DatabaseID,T.SchemaName,T.TableID ਍ऀऀ⤀ 刀ഀഀ where ਍ऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = R.DatabaseID and ਍ऀऀ刀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ T.DatabaseID = D.DatabaseID ਍甀渀椀漀渀 愀氀氀ഀഀ ਍ऀ猀攀氀攀挀琀 㔀            愀猀 吀愀最Ⰰ ഀഀ 4 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [IndexDetailReport!1!Recommended], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ吀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ T.TableID as [Table!4!TableID!hide], ਍ऀऀ吀⸀吀愀戀氀攀一愀洀攀  愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ I.IndexID as [Index!5!IndexID!hide], ਍ऀऀ䤀⸀䤀渀搀攀砀一愀洀攀  愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ CASE ਍ऀऀऀ圀䠀䔀一 䤀⸀䤀猀䌀氀甀猀琀攀爀攀搀 㴀 ㄀ 吀䠀䔀一 ✀琀爀甀攀✀ऀഀഀ WHEN I.IsClustered = 0 THEN 'false' ਍ऀऀ攀渀搀ഀഀ as [Index!5!Clustered], ਍ऀऀ䌀䄀匀䔀ഀഀ WHEN I.IsUnique = 1 THEN 'true' ਍ऀऀऀ圀䠀䔀一 䤀⸀䤀猀唀渀椀焀甀攀 㴀   吀䠀䔀一 ✀昀愀氀猀攀✀ഀഀ end ਍ऀऀ愀猀 嬀䤀渀搀攀砀℀㔀℀唀渀椀焀甀攀崀Ⰰऀഀഀ CASE ਍ऀऀऀ圀䠀䔀一 䤀⸀䤀猀䠀攀愀瀀 㴀 ㄀ 吀䠀䔀一 ✀琀爀甀攀✀ऀऀഀഀ WHEN I.IsHeap = 0 THEN 'false' ਍ऀऀ攀渀搀ഀഀ as [Index!5!Heap], ਍ऀऀ䌀䄀匀吀⠀䤀⸀匀琀漀爀愀最攀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀ 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀匀椀稀攀䤀渀䴀䈀崀Ⰰഀഀ I.NumRows as [Index!5!NumberOfRows] ਍ऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_database] D, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_index] as I ਍ऀऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ T.TableID = I.TableID and ਍ऀऀ䤀⸀䤀猀䔀砀椀猀琀椀渀最 㴀 ㄀ഀഀ order by [Database!2!DatabaseID!hide],[Schema!3!Name!ELEMENT],[Table!4!TableID!hide],[Index!5!IndexID!hide] ਍ऀ䘀伀刀 堀䴀䰀 䔀堀倀䰀䤀䌀䤀吀ഀഀ ਍攀渀搀ऀऀऀऀऀऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_index_detail_current_helper_relational] Script Date: 05/23/2008 14:48:48 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ऀ挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀搀攀砀开搀攀琀愀椀氀开挀甀爀爀攀渀琀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀ഀഀ @SessionID int ਍ऀऀऀऀऀऀ愀猀ഀഀ begin select 'Database Name' = D.DatabaseName, 'Schema Name' = T.SchemaName, 'Table/View Name' = T.TableName, 'Index Name' = I.IndexName, 'Clustered' = CASE ਍ऀऀऀऀऀऀ圀䠀䔀一 䤀⸀䤀猀䌀氀甀猀琀攀爀攀搀 㴀 ㄀ 吀䠀䔀一 ✀夀攀猀✀ऀഀഀ WHEN I.IsClustered = 0 THEN 'No' ਍ऀऀऀऀऀऀ攀渀搀Ⰰ ✀唀渀椀焀甀攀✀ 㴀ऀ䌀䄀匀䔀ഀഀ WHEN I.IsUnique = 1 THEN 'Yes' ਍ऀऀऀऀऀऀ圀䠀䔀一 䤀⸀䤀猀唀渀椀焀甀攀 㴀   吀䠀䔀一 ✀一漀✀ഀഀ end , 'Heap' = CASE ਍ऀऀऀऀऀऀ圀䠀䔀一 䤀⸀䤀猀䠀攀愀瀀 㴀 ㄀ 吀䠀䔀一 ✀夀攀猀✀ऀऀഀഀ WHEN I.IsHeap = 0 THEN 'No' ਍ऀऀऀऀऀऀ攀渀搀ऀⰀ ✀䤀渀搀攀砀 匀椀稀攀 ⠀䴀䈀⤀✀㴀 䌀䄀匀吀⠀䤀⸀匀琀漀爀愀最攀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀ Ⰰ ✀一甀洀戀攀爀 漀昀 刀漀眀猀✀㴀 一甀洀刀漀眀猀 ऀ昀爀漀洀 ഀഀ DTA_reports_database D, ਍ऀऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀 吀Ⰰഀഀ DTA_reports_index as I ਍ऀऀऀऀऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀऀऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ T.TableID = I.TableID and ਍ऀऀऀऀऀ䤀⸀䤀猀䔀砀椀猀琀椀渀最 㴀 ㄀  攀渀搀 ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀搀攀砀开搀攀琀愀椀氀开爀攀挀漀洀洀攀渀搀攀搀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㤀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_index_detail_recommended_helper_relational] ਍ऀऀऀऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍ऀऀऀऀऀऀ戀攀最椀渀ऀ猀攀氀攀挀琀 ✀䐀愀琀愀戀愀猀攀 一愀洀攀✀ 㴀 䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀Ⰰ ✀匀挀栀攀洀愀 一愀洀攀✀ 㴀 吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ ✀吀愀戀氀攀⼀嘀椀攀眀 一愀洀攀✀ 㴀 吀⸀吀愀戀氀攀一愀洀攀Ⰰ ✀䤀渀搀攀砀 一愀洀攀✀ 㴀 䤀⸀䤀渀搀攀砀一愀洀攀Ⰰ ✀䌀氀甀猀琀攀爀攀搀✀ 㴀ऀ䌀䄀匀䔀ഀഀ WHEN I.IsClustered = 1 THEN 'Yes' ਍ऀऀऀऀऀऀ圀䠀䔀一 䤀⸀䤀猀䌀氀甀猀琀攀爀攀搀 㴀   吀䠀䔀一 ✀一漀✀ഀഀ end, 'Unique' = CASE ਍ऀऀऀऀऀऀ圀䠀䔀一 䤀⸀䤀猀唀渀椀焀甀攀 㴀 ㄀ 吀䠀䔀一 ✀夀攀猀✀ऀऀഀഀ WHEN I.IsUnique = 0 THEN 'No' ਍ऀऀऀऀऀऀ攀渀搀ऀⰀ ✀䠀攀愀瀀✀ 㴀ऀ䌀䄀匀䔀ഀഀ WHEN I.IsHeap = 1 THEN 'Yes' ਍ऀऀऀऀऀऀ圀䠀䔀一 䤀⸀䤀猀䠀攀愀瀀 㴀   吀䠀䔀一 ✀一漀✀ഀഀ end , 'Index Size (MB)'= CAST(I.RecommendedStorage as decimal(38,2)) , 'Number of Rows'= NumRows from ਍ऀऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀  䐀Ⰰഀഀ DTA_reports_table T, ਍ऀऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀 愀猀 䤀ഀഀ where ਍ऀऀऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = T.DatabaseID and ਍ऀऀऀऀऀ吀⸀吀愀戀氀攀䤀䐀 㴀 䤀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ I.IsRecommended = 1 end ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_index_recommended_detail_helper_xml] Script Date: 05/23/2008 14:48:49 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀搀攀砀开爀攀挀漀洀洀攀渀搀攀搀开搀攀琀愀椀氀开栀攀氀瀀攀爀开砀洀氀崀ഀഀ @SessionID int ਍愀猀ऀऀऀऀऀऀഀഀ begin ਍猀攀氀攀挀琀 ㄀            愀猀 吀愀最Ⰰ ഀഀ NULL as Parent, ਍ऀऀ✀✀ 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ 'false' as [IndexDetailReport!1!Current], ਍ऀऀ一唀䰀䰀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Database!2!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!4!TableID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!IndexID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!Clustered], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀唀渀椀焀甀攀崀Ⰰഀഀ NULL as [Index!5!Heap], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀匀椀稀攀䤀渀䴀䈀崀Ⰰഀഀ NULL as [Index!5!NumberOfRows] ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 2 as Tag, ਍ऀऀ㄀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [IndexDetailReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀刀攀挀漀洀洀攀渀搀攀搀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!3!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!5!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䌀氀甀猀琀攀爀攀搀崀Ⰰഀഀ NULL as [Index!5!Unique], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䠀攀愀瀀崀Ⰰഀഀ NULL as [Index!5!IndexSizeInMB], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀漀眀猀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D ਍ऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 椀渀ഀഀ (select D.DatabaseID from ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀ഀഀ where ਍ऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = T.DatabaseID and ਍ऀऀऀ吀⸀吀愀戀氀攀䤀䐀 㴀 䤀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ IsRecommended = 1 ਍ऀऀऀ最爀漀甀瀀 戀礀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀⤀ഀഀ union all ਍ऀ猀攀氀攀挀琀 ㌀            愀猀 吀愀最Ⰰ ഀഀ 2 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [IndexDetailReport!1!Recommended], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ刀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!4!TableID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!IndexID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!Clustered], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀唀渀椀焀甀攀崀Ⰰഀഀ NULL as [Index!5!Heap], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀匀椀稀攀䤀渀䴀䈀崀Ⰰഀഀ NULL as [Index!5!NumberOfRows] ਍ऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ ( ਍ऀऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀 ഀഀ from ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀ഀഀ where ਍ऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = T.DatabaseID and ਍ऀऀऀ吀⸀吀愀戀氀攀䤀䐀 㴀 䤀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ IsRecommended = 1 ਍ऀऀऀ最爀漀甀瀀 戀礀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀ഀഀ ) R ਍ऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ union all ਍ऀ猀攀氀攀挀琀 㐀            愀猀 吀愀最Ⰰ ഀഀ 3 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [IndexDetailReport!1!Recommended], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ刀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.TableID as [Table!4!TableID!hide], ਍ऀऀ吀⸀吀愀戀氀攀一愀洀攀  愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!IndexID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!Clustered], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀唀渀椀焀甀攀崀Ⰰഀഀ NULL as [Index!5!Heap], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀匀椀稀攀䤀渀䴀䈀崀Ⰰഀഀ NULL as [Index!5!NumberOfRows] ਍ऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀ⠀ഀഀ select D.DatabaseID,T.SchemaName,T.TableID ਍ऀऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_index] as I ਍ऀऀऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ T.TableID = I.TableID and ਍ऀऀऀऀ䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀 㴀 ㄀ഀഀ group by D.DatabaseID,T.SchemaName,T.TableID ਍ऀऀ⤀ 刀ഀഀ where ਍ऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = R.DatabaseID and ਍ऀऀ刀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ T.DatabaseID = D.DatabaseID ਍甀渀椀漀渀 愀氀氀ഀഀ ਍ऀ猀攀氀攀挀琀 㔀            愀猀 吀愀最Ⰰ ഀഀ 4 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [IndexDetailReport!1!Recommended], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ吀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ T.TableID as [Table!4!TableID!hide], ਍ऀऀ吀⸀吀愀戀氀攀一愀洀攀  愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ I.IndexID as [Index!5!IndexID!hide], ਍ऀऀ䤀⸀䤀渀搀攀砀一愀洀攀  愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ CASE ਍ऀऀऀ圀䠀䔀一 䤀⸀䤀猀䌀氀甀猀琀攀爀攀搀 㴀 ㄀ 吀䠀䔀一 ✀琀爀甀攀✀ऀഀഀ WHEN I.IsClustered = 0 THEN 'false' ਍ऀऀ攀渀搀ഀഀ as [Index!5!Clustered], ਍ऀऀ䌀䄀匀䔀ഀഀ WHEN I.IsUnique = 1 THEN 'true' ਍ऀऀऀ圀䠀䔀一 䤀⸀䤀猀唀渀椀焀甀攀 㴀   吀䠀䔀一 ✀昀愀氀猀攀✀ഀഀ end ਍ऀऀ愀猀 嬀䤀渀搀攀砀℀㔀℀唀渀椀焀甀攀崀Ⰰऀഀഀ CASE ਍ऀऀऀ圀䠀䔀一 䤀⸀䤀猀䠀攀愀瀀 㴀 ㄀ 吀䠀䔀一 ✀琀爀甀攀✀ऀऀഀഀ WHEN I.IsHeap = 0 THEN 'false' ਍ऀऀ攀渀搀ഀഀ as [Index!5!Heap], ਍ऀऀ䌀䄀匀吀⠀䤀⸀刀攀挀漀洀洀攀渀搀攀搀匀琀漀爀愀最攀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀ 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀匀椀稀攀䤀渀䴀䈀崀Ⰰഀഀ I.NumRows as [Index!5!NumberOfRows] ਍ऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_database] D, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_index] as I ਍ऀऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ T.TableID = I.TableID and ਍ऀऀ䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀 㴀 ㄀ഀഀ order by [Database!2!DatabaseID!hide],[Schema!3!Name!ELEMENT],[Table!4!TableID!hide],[Index!5!IndexID!hide] ਍ऀ䘀伀刀 堀䴀䰀 䔀堀倀䰀䤀䌀䤀吀ഀഀ ਍攀渀搀ऀऀऀऀऀऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_index_usage_helper_relational] Script Date: 05/23/2008 14:48:49 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀搀攀砀开甀猀愀最攀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀ഀഀ @SessionID int, ਍ऀ䀀䤀猀刀攀挀漀洀洀攀渀搀攀搀ऀ椀渀琀ഀഀ as begin select D1.DatabaseName as 'Database Name' ,T1.SchemaName as 'Schema Name' ,T1.TableName as 'Table/View Name' ,I1.IndexName as 'Index Name' ,R.Count as 'Number of references' ,CAST(R.Usage as decimal(38,2)) as 'Percent Usage' from ਍ऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀 愀猀 䐀㄀ Ⰰഀഀ DTA_reports_index as I1, ਍ऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀 愀猀 吀㄀Ⰰഀഀ ( ਍ऀऀऀऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀吀愀戀氀攀䤀䐀 Ⰰഀഀ I.IndexID ,SUM(Q.Weight) as Count, ਍ऀऀऀऀऀऀऀ㄀  ⸀  ⨀  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ ⼀ ഀഀ ( 1.0 * ( select CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ਍ऀऀऀऀऀऀऀऀऀऀऀऀ攀氀猀攀 ㄀ഀഀ end ਍ऀऀऀऀऀऀऀऀऀഀഀ from [msdb].[dbo].[DTA_reports_query] as Q ਍ऀऀऀऀऀऀऀऀऀऀ眀栀攀爀攀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 ⤀⤀ഀഀ as Usage ਍ऀऀ昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_index] as I ਍ऀऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_queryindex] as QI ON QI.IndexID = I.IndexID ਍ऀऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_query] as Q ON QI.QueryID = Q.QueryID ਍ऀऀऀऀ䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_table] as T ON I.TableID = T.TableID ਍ऀऀऀऀ䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_database] as D ON T.DatabaseID = D.DatabaseID ਍ऀऀऀऀ愀渀搀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 儀䤀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ QI.IsRecommendedConfiguration = @IsRecommended and ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀऀऀऀ䜀刀伀唀倀 䈀夀 䤀⸀䤀渀搀攀砀䤀䐀Ⰰ吀⸀吀愀戀氀攀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀⤀ 愀猀 刀ഀഀ where R.DatabaseID = D1.DatabaseID and ਍ऀऀऀऀ刀⸀吀愀戀氀攀䤀䐀 㴀 吀㄀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ R.IndexID = I1.IndexID and ਍ऀऀऀऀ䐀㄀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀  愀渀搀ഀഀ R.Count > 0 ਍ऀऀऀऀ漀爀搀攀爀 戀礀 刀⸀䌀漀甀渀琀 搀攀猀挀 攀渀搀ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀搀攀砀开甀猀愀最攀开栀攀氀瀀攀爀开砀洀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀  ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_index_usage_helper_xml] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀Ⰰഀഀ @IsRecommended int ਍愀猀ऀഀഀ begin ਍猀攀氀攀挀琀 ㄀            愀猀 吀愀最Ⰰ ഀഀ NULL as Parent, ਍ऀऀ✀✀ 愀猀 嬀䤀渀搀攀砀唀猀愀最攀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ case when @IsRecommended = 1 then 'false' ਍ऀऀ攀氀猀攀 ✀琀爀甀攀✀ 攀渀搀 愀猀 嬀䤀渀搀攀砀唀猀愀最攀刀攀瀀漀爀琀℀㄀℀䌀甀爀爀攀渀琀崀Ⰰഀഀ NULL as [Database!2!DatabaseID!hide], ਍ऀऀ一唀䰀䰀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!3!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!5!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!PercentUsage!ELEMENT] ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 2 as Tag, ਍ऀऀ㄀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [IndexUsageReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀唀猀愀最攀刀攀瀀漀爀琀℀㄀℀䌀甀爀爀攀渀琀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!3!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!5!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!PercentUsage!ELEMENT] ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID in ਍ऀ⠀猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_queryindex] as QI, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀऀऀ儀䤀⸀䤀渀搀攀砀䤀䐀 㴀 䤀⸀䤀渀搀攀砀䤀䐀  愀渀搀ഀഀ I.TableID = T.TableID and ਍ऀऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ D.SessionID = @SessionID and ਍ऀऀऀ儀䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀 㴀 䀀䤀猀刀攀挀漀洀洀攀渀搀攀搀ഀഀ GROUP BY D.DatabaseID) ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 3 as Tag, ਍ऀऀ㈀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [IndexUsageReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀唀猀愀最攀刀攀瀀漀爀琀℀㄀℀䌀甀爀爀攀渀琀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!5!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!PercentUsage!ELEMENT] ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ ( ਍ऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀 昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_queryindex] as QI, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀऀ儀䤀⸀䤀渀搀攀砀䤀䐀 㴀 䤀⸀䤀渀搀攀砀䤀䐀  愀渀搀ഀഀ I.TableID = T.TableID and ਍ऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ QI.IsRecommendedConfiguration = @IsRecommended and ਍ऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ GROUP BY D.DatabaseID,T.SchemaName ਍ऀ⤀ 刀ഀഀ where ਍ऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = R.DatabaseID ਍甀渀椀漀渀 愀氀氀ഀഀ ਍猀攀氀攀挀琀 㐀            愀猀 吀愀最Ⰰ ഀഀ 3 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀唀猀愀最攀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [IndexUsageReport!1!Current], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ刀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.TableID as [Table!4!TableID!hide], ਍ऀऀ吀⸀吀愀戀氀攀一愀洀攀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!IndexID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!NumberOfReferences!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀倀攀爀挀攀渀琀唀猀愀最攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ ਍ऀ昀爀漀洀ऀ 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀ⠀ഀഀ select D.DatabaseID,T.SchemaName,T.TableID from ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀 愀猀 儀䤀Ⰰഀഀ [msdb].[dbo].[DTA_reports_index] as I, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀ眀栀攀爀攀ഀഀ QI.IndexID = I.IndexID and ਍ऀऀ䤀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ QI.IsRecommendedConfiguration = @IsRecommended ਍ऀऀ䜀刀伀唀倀 䈀夀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ 吀⸀吀愀戀氀攀䤀䐀ഀഀ ) R ਍ऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ R.TableID = T.TableID and ਍ऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ ਍甀渀椀漀渀 愀氀氀ഀഀ select 5 as Tag, ਍ऀऀ㐀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [IndexUsageReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀唀猀愀最攀刀攀瀀漀爀琀℀㄀℀䌀甀爀爀攀渀琀崀Ⰰഀഀ D1.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀㄀⸀䐀愀琀愀戀愀猀攀一愀洀攀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ T1.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀ吀㄀⸀吀愀戀氀攀䤀䐀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ T1.TableName as [Table!4!Name!ELEMENT], ਍ऀऀ䤀㄀⸀䤀渀搀攀砀䤀䐀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ I1.IndexName as [Index!5!Name!ELEMENT], ਍ऀऀ刀⸀䌀漀甀渀琀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ CAST(R.Usage as decimal(38,2)) as [Index!5!PercentUsage!ELEMENT] ਍ऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_database] as D1 , ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀㄀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T1, ਍ऀऀऀ⠀ഀഀ select D.DatabaseID,T.TableID , ਍ऀऀऀऀऀऀ䤀⸀䤀渀搀攀砀䤀䐀  Ⰰ匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 愀猀 䌀漀甀渀琀Ⰰഀഀ 100.0 * SUM(Q.Weight) / ਍ऀऀऀऀऀऀ⠀ ㄀⸀  ⨀ ⠀ऀ猀攀氀攀挀琀ऀ䌀䄀匀䔀 圀䠀䔀一 匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 㸀   吀䠀䔀一  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ഀഀ else 1 ਍ऀऀऀऀऀऀऀऀऀऀऀ攀渀搀ऀഀഀ ਍ऀऀऀऀऀऀऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀ഀഀ where Q.SessionID = @SessionID )) ਍ऀऀऀ愀猀 唀猀愀最攀ഀഀ from ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀ऀഀഀ LEFT OUTER JOIN ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀 愀猀 儀䤀 伀一 儀䤀⸀䤀渀搀攀砀䤀䐀 㴀 䤀⸀䤀渀搀攀砀䤀䐀ഀഀ LEFT OUTER JOIN ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀 伀一 儀䤀⸀儀甀攀爀礀䤀䐀 㴀 儀⸀儀甀攀爀礀䤀䐀ഀഀ JOIN ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀 伀一 䤀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀ഀഀ JOIN ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀 伀一 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ and Q.SessionID = QI.SessionID and ਍ऀऀऀ儀䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀 㴀 䀀䤀猀刀攀挀漀洀洀攀渀搀攀搀 愀渀搀ഀഀ Q.SessionID = @SessionID ਍ऀऀऀ䜀刀伀唀倀 䈀夀 䤀⸀䤀渀搀攀砀䤀䐀Ⰰ吀⸀吀愀戀氀攀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀⤀ 愀猀 刀ഀഀ where R.DatabaseID = D1.DatabaseID and ਍ऀऀऀ刀⸀吀愀戀氀攀䤀䐀 㴀 吀㄀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ R.IndexID = I1.IndexID and ਍ऀऀऀ䐀㄀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀  愀渀搀ഀഀ R.Count > 0 ਍ऀ漀爀搀攀爀 戀礀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰ嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰ嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ [Index!5!NumberOfReferences!ELEMENT] , [Index!5!IndexID!hide] ਍ഀഀ FOR XML EXPLICIT ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_DTA_tuninglog] Script Date: 05/23/2008 14:48:50 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开䐀吀䄀开琀甀渀椀渀最氀漀最崀ഀഀ @SessionID int, ਍ऀ䀀刀漀眀䤀䐀 椀渀琀Ⰰഀഀ @CategoryID char(4), ਍ऀ䀀䔀瘀攀渀琀 渀琀攀砀琀Ⰰഀഀ @Statement ntext, ਍ऀ䀀䘀爀攀焀甀攀渀挀礀 椀渀琀Ⰰഀഀ @Reason ntext ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀ椀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开琀甀渀椀渀最氀漀最崀⠀嬀匀攀猀猀椀漀渀䤀䐀崀Ⰰ 嬀刀漀眀䤀䐀崀Ⰰ 嬀䌀愀琀攀最漀爀礀䤀䐀崀Ⰰ 嬀䔀瘀攀渀琀崀Ⰰ 嬀匀琀愀琀攀洀攀渀琀崀Ⰰ 嬀䘀爀攀焀甀攀渀挀礀崀Ⰰ 嬀刀攀愀猀漀渀崀⤀ഀഀ values(@SessionID, @RowID, @CategoryID, @Event, @Statement, @Frequency, @Reason) ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_progressinformation] Script Date: 05/23/2008 14:48:51 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开瀀爀漀最爀攀猀猀椀渀昀漀爀洀愀琀椀漀渀崀ഀഀ @SessionID int, ਍ऀ䀀吀甀渀椀渀最匀琀愀最攀 椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ䤀一匀䔀刀吀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开瀀爀漀最爀攀猀猀崀ഀഀ (SessionID,WorkloadConsumption,EstImprovement,TuningStage,ConsumingWorkLoadMessage,PerformingAnalysisMessage,GeneratingReportsMessage) ਍ऀ瘀愀氀甀攀猀⠀䀀匀攀猀猀椀漀渀䤀䐀Ⰰ Ⰰ Ⰰ䀀吀甀渀椀渀最匀琀愀最攀Ⰰ一✀✀Ⰰ一✀✀Ⰰ一✀✀⤀ഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_reports_column] Script Date: 05/23/2008 14:48:51 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开挀漀氀甀洀渀崀ഀഀ @SessionID int, ਍ऀ䀀吀愀戀氀攀䤀䐀 椀渀琀Ⰰഀഀ @ColumnName sysname ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀഀഀ insert into [msdb].[dbo].[DTA_reports_column]([TableID], [ColumnName]) ਍ऀऀ瘀愀氀甀攀猀⠀ऀ䀀吀愀戀氀攀䤀䐀 Ⰰ䀀䌀漀氀甀洀渀一愀洀攀⤀ഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_reports_database] Script Date: 05/23/2008 14:48:52 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀ഀഀ @SessionID int, ਍ऀ䀀䐀愀琀愀戀愀猀攀一愀洀攀 猀礀猀渀愀洀攀Ⰰഀഀ @IsDatabaseSelectedToTune int ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀഀഀ Insert into [msdb].[dbo].[DTA_reports_database]([SessionID],[DatabaseName],[IsDatabaseSelectedToTune]) values(@SessionID,@DatabaseName,@IsDatabaseSelectedToTune) ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_reports_index] Script Date: 05/23/2008 14:48:52 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀ഀഀ @SessionID int, ਍ऀ䀀吀愀戀氀攀䤀䐀ऀऀऀ椀渀琀Ⰰഀഀ @IndexName sysname, ਍ऀ䀀䤀猀䌀氀甀猀琀攀爀攀搀ऀऀ戀椀琀Ⰰഀഀ @IsUnique bit, ਍ऀ䀀䤀猀䠀攀愀瀀ऀऀऀऀ戀椀琀Ⰰഀഀ @IsExisting bit, ਍ऀ䀀匀琀漀爀愀最攀ऀऀऀ椀渀琀Ⰰഀഀ @NumRows int, ਍ऀ䀀䤀猀刀攀挀漀洀洀攀渀搀攀搀ऀऀ戀椀琀Ⰰഀഀ @RecommendedStorage int, ਍ऀ䀀倀愀爀琀椀琀椀漀渀匀挀栀攀洀攀䤀䐀ऀ椀渀琀Ⰰഀഀ @SessionUniquefier int ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀ椀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀⠀嬀吀愀戀氀攀䤀䐀崀Ⰰ 嬀䤀渀搀攀砀一愀洀攀崀Ⰰ 嬀䤀猀䌀氀甀猀琀攀爀攀搀崀Ⰰ 嬀䤀猀唀渀椀焀甀攀崀Ⰰ 嬀䤀猀䠀攀愀瀀崀Ⰰ嬀䤀猀䔀砀椀猀琀椀渀最崀Ⰰ 嬀匀琀漀爀愀最攀崀Ⰰ 嬀一甀洀刀漀眀猀崀Ⰰ 嬀䤀猀刀攀挀漀洀洀攀渀搀攀搀崀Ⰰ 嬀刀攀挀漀洀洀攀渀搀攀搀匀琀漀爀愀最攀崀Ⰰ 嬀倀愀爀琀椀琀椀漀渀匀挀栀攀洀攀䤀䐀崀Ⰰ嬀匀攀猀猀椀漀渀唀渀椀焀甀攀昀椀攀爀崀⤀ऀഀഀ values(@TableID,@IndexName,@IsClustered,@IsUnique,@IsHeap,@IsExisting,@Storage,@NumRows,@IsRecommended,@RecommendedStorage,@PartitionSchemeID,@SessionUniquefier) ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_reports_indexcolumn] Script Date: 05/23/2008 14:48:53 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开椀渀搀攀砀挀漀氀甀洀渀崀ഀഀ @SessionID int, ਍ऀ䀀䤀渀搀攀砀䤀䐀ऀऀ椀渀琀Ⰰഀഀ @ColumnID int, ਍ऀ䀀䌀漀氀甀洀渀伀爀搀攀爀ऀ椀渀琀Ⰰഀഀ @PartitionColumnOrder int, ਍ऀ䀀䤀猀䬀攀礀䌀漀氀甀洀渀ऀ戀椀琀Ⰰഀഀ @IsDescendingColumn bit ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀ椀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀挀漀氀甀洀渀崀⠀嬀䤀渀搀攀砀䤀䐀崀Ⰰ 嬀䌀漀氀甀洀渀䤀䐀崀Ⰰ 嬀䌀漀氀甀洀渀伀爀搀攀爀崀Ⰰ 嬀倀愀爀琀椀琀椀漀渀䌀漀氀甀洀渀伀爀搀攀爀崀Ⰰ 嬀䤀猀䬀攀礀䌀漀氀甀洀渀崀Ⰰ 嬀䤀猀䐀攀猀挀攀渀搀椀渀最䌀漀氀甀洀渀崀⤀ഀഀ values(@IndexID,@ColumnID,@ColumnOrder,@PartitionColumnOrder,@IsKeyColumn,@IsDescendingColumn) ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_reports_partitionfunction] Script Date: 05/23/2008 14:48:54 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开瀀愀爀琀椀琀椀漀渀昀甀渀挀琀椀漀渀崀ഀഀ @SessionID int, ਍ऀ䀀䐀愀琀愀戀愀猀攀䤀䐀 椀渀琀Ⰰഀഀ @PartitionFunctionName sysname, ਍ऀ䀀倀愀爀琀椀琀椀漀渀䘀甀渀挀琀椀漀渀䐀攀昀椀渀椀琀椀漀渀 渀琀攀砀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ䤀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开瀀愀爀琀椀琀椀漀渀昀甀渀挀琀椀漀渀崀⠀嬀䐀愀琀愀戀愀猀攀䤀䐀崀Ⰰ嬀倀愀爀琀椀琀椀漀渀䘀甀渀挀琀椀漀渀一愀洀攀崀Ⰰ嬀倀愀爀琀椀琀椀漀渀䘀甀渀挀琀椀漀渀䐀攀昀椀渀椀琀椀漀渀崀⤀ ഀഀ values(@DatabaseID,@PartitionFunctionName,@PartitionFunctionDefinition) ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_reports_partitionscheme] Script Date: 05/23/2008 14:48:54 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开瀀愀爀琀椀琀椀漀渀猀挀栀攀洀攀崀ഀഀ @SessionID int, ਍ऀ䀀倀愀爀琀椀琀椀漀渀䘀甀渀挀琀椀漀渀䤀䐀 椀渀琀Ⰰഀഀ @PartitionSchemeName sysname, ਍ऀ䀀倀愀爀琀椀琀椀漀渀匀挀栀攀洀攀䐀攀昀椀渀椀琀椀漀渀 渀琀攀砀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ䤀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开瀀愀爀琀椀琀椀漀渀猀挀栀攀洀攀崀⠀ 嬀倀愀爀琀椀琀椀漀渀䘀甀渀挀琀椀漀渀䤀䐀崀Ⰰ嬀倀愀爀琀椀琀椀漀渀匀挀栀攀洀攀一愀洀攀崀Ⰰ嬀倀愀爀琀椀琀椀漀渀匀挀栀攀洀攀䐀攀昀椀渀椀琀椀漀渀崀⤀ 瘀愀氀甀攀猀⠀䀀倀愀爀琀椀琀椀漀渀䘀甀渀挀琀椀漀渀䤀䐀Ⰰ䀀倀愀爀琀椀琀椀漀渀匀挀栀攀洀攀一愀洀攀Ⰰ䀀倀愀爀琀椀琀椀漀渀匀挀栀攀洀攀䐀攀昀椀渀椀琀椀漀渀⤀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㔀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_reports_query] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀऀ椀渀琀Ⰰഀഀ @QueryID int, ਍ऀ䀀匀琀愀琀攀洀攀渀琀吀礀瀀攀ऀऀ猀洀愀氀氀椀渀琀Ⰰഀഀ @StatementString ntext, ਍ऀ䀀䌀甀爀爀攀渀琀䌀漀猀琀ऀऀ昀氀漀愀琀Ⰰഀഀ @RecommendedCost float, ਍ऀ䀀圀攀椀最栀琀ऀऀऀऀ昀氀漀愀琀Ⰰഀഀ @EventString ntext, ਍ऀ䀀䔀瘀攀渀琀圀攀椀最栀琀ऀऀ昀氀漀愀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ椀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀⠀嬀匀攀猀猀椀漀渀䤀䐀崀Ⰰ嬀儀甀攀爀礀䤀䐀崀Ⰰ 嬀匀琀愀琀攀洀攀渀琀吀礀瀀攀崀Ⰰ 嬀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最崀Ⰰ 嬀䌀甀爀爀攀渀琀䌀漀猀琀崀Ⰰ 嬀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀崀Ⰰ 嬀圀攀椀最栀琀崀Ⰰ 嬀䔀瘀攀渀琀匀琀爀椀渀最崀Ⰰ 嬀䔀瘀攀渀琀圀攀椀最栀琀崀⤀ഀഀ values(@SessionID,@QueryID,@StatementType,@StatementString,@CurrentCost,@RecommendedCost,@Weight,@EventString,@EventWeight) ਍ऀഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_reports_querycolumn] Script Date: 05/23/2008 14:48:56 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开焀甀攀爀礀挀漀氀甀洀渀崀ഀഀ @SessionID int, ਍ऀ䀀儀甀攀爀礀䤀䐀ऀऀ椀渀琀Ⰰഀഀ @ColumnID int ਍愀猀ऀഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀ椀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀挀漀氀甀洀渀崀⠀嬀儀甀攀爀礀䤀䐀崀Ⰰ 嬀䌀漀氀甀洀渀䤀䐀崀Ⰰ嬀匀攀猀猀椀漀渀䤀䐀崀⤀ഀഀ values(@QueryID,@ColumnID,@SessionID ) ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_reports_querydatabase] Script Date: 05/23/2008 14:48:56 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开焀甀攀爀礀搀愀琀愀戀愀猀攀崀ഀഀ @SessionID int, ਍ऀ䀀儀甀攀爀礀䤀䐀ऀऀ椀渀琀Ⰰഀഀ @DatabaseID int ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀ椀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀搀愀琀愀戀愀猀攀崀⠀嬀匀攀猀猀椀漀渀䤀䐀崀Ⰰ 嬀儀甀攀爀礀䤀䐀崀Ⰰ嬀䐀愀琀愀戀愀猀攀䤀䐀崀⤀ഀഀ values(@SessionID,@QueryID,@DatabaseID) ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_reports_queryindex] Script Date: 05/23/2008 14:48:57 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀ഀഀ @SessionID int, ਍ऀ䀀儀甀攀爀礀䤀䐀ऀ椀渀琀Ⰰഀഀ @IndexID int, ਍ऀ䀀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀ऀ戀椀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ insert into [msdb].[dbo].[DTA_reports_queryindex]([SessionID],[QueryID],[IndexID], [IsRecommendedConfiguration]) ਍ऀ瘀愀氀甀攀猀⠀䀀匀攀猀猀椀漀渀䤀䐀Ⰰ䀀儀甀攀爀礀䤀䐀Ⰰ䀀䤀渀搀攀砀䤀䐀Ⰰ䀀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀⤀ഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_reports_querytable] Script Date: 05/23/2008 14:48:57 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开焀甀攀爀礀琀愀戀氀攀崀ഀഀ @SessionID int, ਍ऀ䀀儀甀攀爀礀䤀䐀ऀऀ椀渀琀Ⰰഀഀ @TableID int ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀ椀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀琀愀戀氀攀崀⠀嬀匀攀猀猀椀漀渀䤀䐀崀Ⰰ 嬀儀甀攀爀礀䤀䐀崀Ⰰ嬀吀愀戀氀攀䤀䐀崀⤀ഀഀ values(@SessionID,@QueryID,@TableID) ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_reports_table] Script Date: 05/23/2008 14:48:58 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀ഀഀ @SessionID int, ਍ऀ䀀䐀愀琀愀戀愀猀攀䤀䐀ऀ椀渀琀Ⰰഀഀ @SchemaName sysname, ਍ऀ䀀吀愀戀氀攀一愀洀攀ऀ猀礀猀渀愀洀攀Ⰰഀഀ @IsView bit ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀ椀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀⠀嬀䐀愀琀愀戀愀猀攀䤀䐀崀Ⰰ 嬀匀挀栀攀洀愀一愀洀攀崀Ⰰ 嬀吀愀戀氀攀一愀洀攀崀Ⰰ 嬀䤀猀嘀椀攀眀崀⤀ഀഀ values(@DatabaseID,@SchemaName,@TableName,@IsView) ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_reports_tableview] Script Date: 05/23/2008 14:48:58 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开琀愀戀氀攀瘀椀攀眀崀ഀഀ @SessionID int, ਍ऀ䀀吀愀戀氀攀䤀䐀ऀ椀渀琀Ⰰഀഀ @ViewID int ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ insert into [msdb].[dbo].[DTA_reports_tableview]([TableID], [ViewID]) ਍ऀ瘀愀氀甀攀猀⠀䀀吀愀戀氀攀䤀䐀Ⰰ䀀嘀椀攀眀䤀䐀⤀ഀഀ ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㤀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_query_cost_helper_relational] ਍ऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍ऀऀऀ戀攀最椀渀 ऀ猀攀氀攀挀琀 ✀匀琀愀琀攀洀攀渀琀 䤀搀✀ 㴀 儀甀攀爀礀䤀䐀Ⰰ ✀匀琀愀琀攀洀攀渀琀 匀琀爀椀渀最✀ 㴀 匀琀愀琀攀洀攀渀琀匀琀爀椀渀最Ⰰ ✀倀攀爀挀攀渀琀 䤀洀瀀爀漀瘀攀洀攀渀琀✀ 㴀 ऀഀഀ CASE ਍ऀऀऀऀऀऀ圀䠀䔀一 䌀甀爀爀攀渀琀䌀漀猀琀 㴀   吀䠀䔀一  ⸀  ഀഀ WHEN CurrentCost <> 0 THEN ਍ऀऀऀऀऀऀ䌀䄀匀吀⠀⠀㄀  ⸀ ⨀⠀䌀甀爀爀攀渀琀䌀漀猀琀 ⴀ 刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⤀⼀䌀甀爀爀攀渀琀䌀漀猀琀⤀ 愀猀 搀攀挀椀洀愀氀 ⠀㈀ Ⰰ㈀⤀⤀ഀഀ end , 'Statement Type' = CASE ਍ऀऀऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀   吀䠀䔀一 ✀匀攀氀攀挀琀✀ഀഀ WHEN StatementType = 1 THEN 'Update' ਍ऀऀऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㈀ 吀䠀䔀一 ✀䤀渀猀攀爀琀✀ഀഀ WHEN StatementType = 3 THEN 'Delete' ਍ऀऀऀऀऀऀऀ攀渀搀 ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ where SessionID=@SessionID ਍ऀऀऀऀऀ漀爀搀攀爀 戀礀 ✀倀攀爀挀攀渀琀 䤀洀瀀爀漀瘀攀洀攀渀琀✀ 搀攀猀挀  攀渀搀 ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀开栀攀氀瀀攀爀开砀洀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㤀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_query_cost_helper_xml] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀 ഀഀ as ਍戀攀最椀渀ഀഀ select 1 as Tag, ਍ऀऀऀ一唀䰀䰀          愀猀 倀愀爀攀渀琀Ⰰഀഀ '' as [StatementCostReport!1!!element], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀匀琀愀琀攀洀攀渀琀䤀䐀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Statement!2!StatementString!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀倀攀爀挀攀渀琀䤀洀瀀爀漀瘀攀洀攀渀琀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Statement!2!Type!ELEMENT] ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ ਍ऀ猀攀氀攀挀琀 ㈀            愀猀 吀愀最Ⰰ ഀഀ 1 as Parent, ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀䌀漀猀琀刀攀瀀漀爀琀℀㄀℀℀攀氀攀洀攀渀琀崀Ⰰഀഀ QueryID as [Statement!2!StatementID!ELEMENT], ਍ऀऀऀ匀琀愀琀攀洀攀渀琀匀琀爀椀渀最 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ CASE ਍ऀऀऀऀ圀䠀䔀一 䌀甀爀爀攀渀琀䌀漀猀琀 㴀   吀䠀䔀一  ⸀  ഀഀ WHEN CurrentCost <> 0 THEN ਍ऀऀऀऀ䌀䄀匀吀⠀⠀㄀  ⸀ ⨀⠀䌀甀爀爀攀渀琀䌀漀猀琀 ⴀ 刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⤀⼀䌀甀爀爀攀渀琀䌀漀猀琀⤀ 愀猀 搀攀挀椀洀愀氀 ⠀㈀ Ⰰ㈀⤀⤀ഀഀ end as [Statement!2!PercentImprovement!ELEMENT], ਍ऀऀऀ䌀䄀匀䔀 ഀഀ WHEN StatementType = 0 THEN 'Select' ਍ऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㄀ 吀䠀䔀一 ✀唀瀀搀愀琀攀✀ഀഀ WHEN StatementType = 2 THEN 'Insert' ਍ऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㌀ 吀䠀䔀一 ✀䐀攀氀攀琀攀✀ഀഀ end as [Statement!2!Type!ELEMENT] ਍ഀഀ from [msdb].[dbo].[DTA_reports_query] ਍ऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ order by Tag,[Statement!2!PercentImprovement!ELEMENT] desc ਍ऀ䘀伀刀 堀䴀䰀 䔀堀倀䰀䤀䌀䤀吀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀爀愀渀最攀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㤀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_query_costrange_helper_relational] ਍ऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀ഀഀ as ਍ऀऀऀ戀攀最椀渀ഀഀ declare @maxCost float ਍ऀऀऀ搀攀挀氀愀爀攀 䀀洀椀渀䌀漀猀琀 昀氀漀愀琀ഀഀ declare @maxCurrentCost float ਍ऀऀऀ搀攀挀氀愀爀攀 䀀洀椀渀䌀甀爀爀攀渀琀䌀漀猀琀 昀氀漀愀琀ഀഀ declare @maxRecommendedCost float ਍ऀऀऀ搀攀挀氀愀爀攀 䀀洀椀渀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀 昀氀漀愀琀ഀഀ ਍ऀऀऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ select @minCurrentCost = min(CurrentCost*Weight),@maxCurrentCost = max(CurrentCost*Weight), ਍ऀऀऀऀऀ䀀洀椀渀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀 㴀 洀椀渀⠀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⨀圀攀椀最栀琀⤀Ⰰഀഀ @maxRecommendedCost = max(RecommendedCost*Weight) ਍ऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ where SessionID = @SessionID ਍ഀഀ -- Set the bucket boundaries ਍ऀऀऀ椀昀 䀀洀愀砀䌀甀爀爀攀渀琀䌀漀猀琀 㸀 䀀洀愀砀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀ഀഀ set @maxCost = @maxCurrentCost ਍ऀऀऀ攀氀猀攀ഀഀ set @maxCost = @maxRecommendedCost ਍ഀഀ if @minCurrentCost < @minRecommendedCost ਍ऀऀऀऀ猀攀琀 䀀洀椀渀䌀漀猀琀 㴀  䀀洀椀渀䌀甀爀爀攀渀琀䌀漀猀琀ഀഀ else ਍ऀऀऀऀ猀攀琀 䀀洀椀渀䌀漀猀琀 㴀  䀀洀椀渀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀ഀഀ ਍ऀऀऀ挀爀攀愀琀攀 琀愀戀氀攀 ⌀猀琀爀椀渀最洀愀瀀⠀伀甀琀瀀甀琀匀琀爀椀渀最 渀瘀愀爀挀栀愀爀⠀㌀ ⤀Ⰰ渀甀洀 椀渀琀⤀ഀഀ insert into #stringmap values(N'0% - 10%',0) ਍ऀऀऀऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㄀㄀─ ⴀ ㈀ ─✀Ⰰ㄀⤀ഀഀ insert into #stringmap values(N'21% - 30%',2) ਍ऀऀऀऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㌀㄀─ ⴀ 㐀 ─✀Ⰰ㌀⤀ഀഀ insert into #stringmap values(N'41% - 50%',4) ਍ऀऀऀऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㔀㄀─ ⴀ 㘀 ─✀Ⰰ㔀⤀ഀഀ insert into #stringmap values(N'61% - 70%',6) ਍ऀऀऀऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㜀㄀─ ⴀ 㠀 ─✀Ⰰ㜀⤀ഀഀ insert into #stringmap values(N'81% - 90%',8) ਍ऀऀऀऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㤀㄀─ ⴀ ㄀  ─✀Ⰰ㤀⤀ഀഀ ਍ഀഀ ਍ऀऀऀ猀攀氀攀挀琀 渀甀洀Ⰰ挀漀甀渀琀⠀⨀⤀ 愀猀 挀渀琀ഀഀ into #c ਍ऀऀऀ昀爀漀洀ഀഀ ( ਍ऀऀऀऀ猀攀氀攀挀琀 挀愀猀攀 ഀഀ when (@maxCost=@minCost) then 9 ਍ऀऀऀऀ眀栀攀渀 ⠀䌀甀爀爀攀渀琀䌀漀猀琀⨀圀攀椀最栀琀ⴀ䀀洀椀渀䌀漀猀琀⤀⼀⠀䀀洀愀砀䌀漀猀琀ⴀ䀀洀椀渀䌀漀猀琀⤀ 㴀 ㄀ 琀栀攀渀 㤀ഀഀ else convert(int,floor(10*(CurrentCost*Weight-@minCost)/(@maxCost-@minCost))) ਍ऀऀऀऀ攀渀搀 愀猀 渀甀洀ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ where CurrentCost*Weight >= @minCost and ਍ऀऀऀऀ䌀甀爀爀攀渀琀䌀漀猀琀⨀圀攀椀最栀琀 㰀㴀 䀀洀愀砀䌀漀猀琀ഀഀ and SessionID = @SessionID ਍ऀऀऀ⤀ 琀ഀഀ group by num ਍ഀഀ select num,count(*) as cnt ਍ऀऀऀ椀渀琀漀 ⌀爀ഀഀ from ਍ऀऀऀ⠀ऀ猀攀氀攀挀琀 挀愀猀攀 ഀഀ when (@maxCost=@minCost) then 9 ਍ऀऀऀऀ眀栀攀渀 ⠀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⨀圀攀椀最栀琀ⴀ䀀洀椀渀䌀漀猀琀⤀⼀⠀䀀洀愀砀䌀漀猀琀ⴀ䀀洀椀渀䌀漀猀琀⤀ 㴀 ㄀ 琀栀攀渀 㤀ഀഀ else convert(int,floor(10*(RecommendedCost*Weight-@minCost)/(@maxCost-@minCost))) ਍ऀऀऀऀ攀渀搀 愀猀 渀甀洀ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ where RecommendedCost*Weight >= @minCost and ਍ऀऀऀऀ刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⨀圀攀椀最栀琀 㰀㴀 䀀洀愀砀䌀漀猀琀ഀഀ and SessionID = @SessionID ਍ऀऀऀ⤀ 琀ഀഀ group by num select 'Cost Range' =OutputString, 'Number of statements (Current)' = ISNULL(c.cnt,0) , 'Number of statements (Recommended)' = ISNULL(r.cnt,0) from ਍ऀऀऀ⠀ഀഀ select #stringmap.num, #r.cnt ਍ऀऀऀ昀爀漀洀 ⌀猀琀爀椀渀最洀愀瀀 䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一 ⌀爀ഀഀ ON #stringmap.num = #r.num ਍ऀऀऀ⤀ 爀Ⰰഀഀ ( ਍ऀऀऀ猀攀氀攀挀琀 ⌀猀琀爀椀渀最洀愀瀀⸀渀甀洀Ⰰ ⌀挀⸀挀渀琀ഀഀ from #stringmap LEFT OUTER JOIN #c ਍ऀऀऀ伀一 ⌀猀琀爀椀渀最洀愀瀀⸀渀甀洀 㴀 ⌀挀⸀渀甀洀ഀഀ ) c, ਍ऀऀऀ⌀猀琀爀椀渀最洀愀瀀ഀഀ where #stringmap.num = r.num and ਍ऀऀऀ⌀猀琀爀椀渀最洀愀瀀⸀渀甀洀 㴀 挀⸀渀甀洀ഀഀ drop table #r ਍ऀऀऀ搀爀漀瀀 琀愀戀氀攀 ⌀挀ഀഀ drop table #stringmap ਍ऀऀऀ攀渀搀ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_query_costrange_helper_xml] Script Date: 05/23/2008 14:49:00 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀爀愀渀最攀开栀攀氀瀀攀爀开砀洀氀崀ഀഀ @SessionID int ਍ऀऀऀ愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀洀愀砀䌀漀猀琀 昀氀漀愀琀ഀഀ declare @minCost float ਍ऀ搀攀挀氀愀爀攀 䀀洀愀砀䌀甀爀爀攀渀琀䌀漀猀琀 昀氀漀愀琀ഀഀ declare @minCurrentCost float ਍ऀ搀攀挀氀愀爀攀 䀀洀愀砀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀 昀氀漀愀琀ഀഀ declare @minRecommendedCost float ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ select @minCurrentCost = min(CurrentCost*Weight),@maxCurrentCost = max(CurrentCost*Weight), ਍ऀऀऀ䀀洀椀渀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀 㴀 洀椀渀⠀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⨀圀攀椀最栀琀⤀Ⰰഀഀ @maxRecommendedCost = max(RecommendedCost*Weight) ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ where SessionID = @SessionID ਍ऀⴀⴀ 匀攀琀 琀栀攀 戀甀挀欀攀琀 戀漀甀渀搀愀爀椀攀猀ഀഀ if @maxCurrentCost > @maxRecommendedCost ਍ऀऀ猀攀琀 䀀洀愀砀䌀漀猀琀 㴀  䀀洀愀砀䌀甀爀爀攀渀琀䌀漀猀琀ഀഀ else ਍ऀऀ猀攀琀 䀀洀愀砀䌀漀猀琀 㴀  䀀洀愀砀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀ഀഀ ਍ऀ椀昀 䀀洀椀渀䌀甀爀爀攀渀琀䌀漀猀琀 㰀 䀀洀椀渀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀ഀഀ set @minCost = @minCurrentCost ਍ऀ攀氀猀攀ഀഀ set @minCost = @minRecommendedCost ਍ഀഀ create table #stringmap(OutputString nvarchar(30),num int) ਍ऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀ ─ ⴀ ㄀ ─✀Ⰰ ⤀ഀഀ insert into #stringmap values(N'11% - 20%',1) ਍ऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㈀㄀─ ⴀ ㌀ ─✀Ⰰ㈀⤀ഀഀ insert into #stringmap values(N'31% - 40%',3) ਍ऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㐀㄀─ ⴀ 㔀 ─✀Ⰰ㐀⤀ഀഀ insert into #stringmap values(N'51% - 60%',5) ਍ऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㘀㄀─ ⴀ 㜀 ─✀Ⰰ㘀⤀ഀഀ insert into #stringmap values(N'71% - 80%',7) ਍ऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㠀㄀─ ⴀ 㤀 ─✀Ⰰ㠀⤀ഀഀ insert into #stringmap values(N'91% - 100%',9) ਍ഀഀ ਍ഀഀ select num,count(*) as cnt ਍ऀ椀渀琀漀 ⌀挀ഀഀ from ਍ऀ⠀ऀ猀攀氀攀挀琀 挀愀猀攀 ഀഀ when (@maxCost=@minCost) then 9 ਍ऀऀ眀栀攀渀 ⠀䌀甀爀爀攀渀琀䌀漀猀琀⨀圀攀椀最栀琀ⴀ䀀洀椀渀䌀漀猀琀⤀⼀⠀䀀洀愀砀䌀漀猀琀ⴀ䀀洀椀渀䌀漀猀琀⤀ 㴀 ㄀ 琀栀攀渀 㤀ഀഀ else convert(int,floor(10*(CurrentCost*Weight-@minCost)/(@maxCost-@minCost))) ਍ऀऀ攀渀搀 愀猀 渀甀洀ഀഀ from ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ where CurrentCost*Weight >= @minCost and ਍ऀऀ䌀甀爀爀攀渀琀䌀漀猀琀⨀圀攀椀最栀琀 㰀㴀 䀀洀愀砀䌀漀猀琀ഀഀ and SessionID = @SessionID ਍ऀ⤀ 琀ഀഀ group by num ਍ഀഀ select num,count(*) as cnt ਍ऀ椀渀琀漀 ⌀爀ഀഀ from ਍ऀ⠀ऀ猀攀氀攀挀琀 挀愀猀攀 ഀഀ when (@maxCost=@minCost) then 9 ਍ऀऀ眀栀攀渀 ⠀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⨀圀攀椀最栀琀ⴀ䀀洀椀渀䌀漀猀琀⤀⼀⠀䀀洀愀砀䌀漀猀琀ⴀ䀀洀椀渀䌀漀猀琀⤀ 㴀 ㄀ 琀栀攀渀 㤀ഀഀ else convert(int,floor(10*(RecommendedCost*Weight-@minCost)/(@maxCost-@minCost))) ਍ऀऀ攀渀搀 愀猀 渀甀洀ഀഀ from ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ where RecommendedCost*Weight >= @minCost and ਍ऀऀ刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⨀圀攀椀最栀琀 㰀㴀 䀀洀愀砀䌀漀猀琀ഀഀ and SessionID = @SessionID ਍ऀ⤀ 琀ഀഀ group by num ਍ഀഀ select 1 as Tag, ਍ऀऀऀ一唀䰀䰀          愀猀 倀愀爀攀渀琀Ⰰഀഀ '' as [StatementCostRangeReport!1!!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䌀漀猀琀刀愀渀最攀℀㈀℀倀攀爀挀攀渀琀崀 Ⰰഀഀ NULL as [CostRange!2!NumStatementsCurrent!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䌀漀猀琀刀愀渀最攀℀㈀℀一甀洀匀琀愀琀攀洀攀渀琀猀刀攀挀漀洀洀攀渀搀攀搀℀䔀䰀䔀䴀䔀一吀崀ഀഀ union all ਍ऀ猀攀氀攀挀琀 ㈀            愀猀 吀愀最Ⰰ ഀഀ 1 as Parent, ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀䌀漀猀琀刀愀渀最攀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ OutputString as [CostRange!2!ELEMENT] , ਍ऀऀऀ䤀匀一唀䰀䰀⠀挀⸀挀渀琀Ⰰ ⤀ 愀猀 嬀䌀漀猀琀刀愀渀最攀℀㈀℀一甀洀匀琀愀琀攀洀攀渀琀猀䌀甀爀爀攀渀琀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ ISNULL(r.cnt,0) as [CostRange!2!NumStatementsRecommended!ELEMENT] ਍ऀ昀爀漀洀ഀഀ ( ਍ऀ猀攀氀攀挀琀 ⌀猀琀爀椀渀最洀愀瀀⸀渀甀洀Ⰰ ⌀爀⸀挀渀琀ഀഀ from #stringmap LEFT OUTER JOIN #r ਍ऀ伀一 ⌀猀琀爀椀渀最洀愀瀀⸀渀甀洀 㴀 ⌀爀⸀渀甀洀ഀഀ ) r, ਍ऀ⠀ഀഀ select #stringmap.num, #c.cnt ਍ऀ昀爀漀洀 ⌀猀琀爀椀渀最洀愀瀀 䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一 ⌀挀ഀഀ ON #stringmap.num = #c.num ਍ऀ⤀ 挀Ⰰഀഀ #stringmap ਍ऀ眀栀攀爀攀 ⌀猀琀爀椀渀最洀愀瀀⸀渀甀洀 㴀 爀⸀渀甀洀 愀渀搀ഀഀ #stringmap.num = c.num ਍ഀഀ FOR XML EXPLICIT ਍ഀഀ drop table #r ਍ऀ搀爀漀瀀 琀愀戀氀攀 ⌀挀ഀഀ drop table #stringmap ਍攀渀搀ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_query_detail_helper_relational] Script Date: 05/23/2008 14:49:00 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ 挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开搀攀琀愀椀氀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀ഀഀ @SessionID int ਍ऀऀऀ愀猀ഀഀ begin select 'Statement Id' =QueryID, 'Statement String' =StatementString, 'Statement Type' = CASE ਍ऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀   吀䠀䔀一 ✀匀攀氀攀挀琀✀ഀഀ WHEN StatementType = 1 THEN 'Update' ਍ऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㈀ 吀䠀䔀一 ✀䤀渀猀攀爀琀✀ഀഀ WHEN StatementType = 3 THEN 'Delete' ਍ऀऀऀऀऀ攀渀搀Ⰰ✀䌀甀爀爀攀渀琀 匀琀愀琀攀洀攀渀琀 䌀漀猀琀✀ 㴀䌀䄀匀吀⠀䌀甀爀爀攀渀琀䌀漀猀琀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㜀⤀⤀Ⰰ ✀刀攀挀漀洀洀攀渀搀攀搀 匀琀愀琀攀洀攀渀琀 䌀漀猀琀✀ 㴀䌀䄀匀吀⠀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㜀⤀⤀Ⰰ ✀䔀瘀攀渀琀 匀琀爀椀渀最✀ 㴀䔀瘀攀渀琀匀琀爀椀渀最ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ where SessionID=@SessionID order by QueryID ASC end ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_query_detail_helper_xml] Script Date: 05/23/2008 14:49:00 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开搀攀琀愀椀氀开栀攀氀瀀攀爀开砀洀氀崀 ഀഀ @SessionID int ਍愀猀 ഀഀ begin ਍ऀ猀攀氀攀挀琀 ㄀            愀猀 吀愀最Ⰰ ഀഀ NULL as Parent, ਍ऀऀऀ✀✀ 愀猀 嬀匀琀愀琀攀洀攀渀琀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀℀攀氀攀洀攀渀琀崀Ⰰഀഀ NULL as [Statement!2!StatementID!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Statement!2!Type!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀䌀甀爀爀攀渀琀䌀漀猀琀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Statement!2!RecommendedCost!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀䔀瘀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀ഀഀ union all ਍ഀഀ select 2 as Tag, ਍ऀऀऀ㄀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [QueryCost!1!!element], ਍ऀऀऀ儀甀攀爀礀䤀䐀 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀匀琀愀琀攀洀攀渀琀䤀䐀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ StatementString as [Statement!2!StatementString!ELEMENT] , ਍ऀऀऀ䌀䄀匀䔀 ഀഀ WHEN StatementType = 0 THEN 'Select' ਍ऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㄀ 吀䠀䔀一 ✀唀瀀搀愀琀攀✀ഀഀ WHEN StatementType = 2 THEN 'Insert' ਍ऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㌀ 吀䠀䔀一 ✀䐀攀氀攀琀攀✀ഀഀ end as [Statement!2!Type!ELEMENT!element], ਍ऀऀऀ䌀䄀匀吀⠀䌀甀爀爀攀渀琀䌀漀猀琀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㜀⤀⤀ 愀猀ऀ 嬀匀琀愀琀攀洀攀渀琀℀㈀℀䌀甀爀爀攀渀琀䌀漀猀琀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ CAST(RecommendedCost as decimal(38,7)) as [Statement!2!RecommendedCost!ELEMENT], ਍ऀऀऀ䔀瘀攀渀琀匀琀爀椀渀最 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀䔀瘀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀ഀഀ from [msdb].[dbo].[DTA_reports_query] ਍ऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ FOR XML EXPLICIT ਍攀渀搀ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_query_indexrelations_helper_relational] Script Date: 05/23/2008 14:49:01 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ऀ挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开椀渀搀攀砀爀攀氀愀琀椀漀渀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀ഀഀ @SessionID int, ਍ऀऀऀऀऀऀऀ䀀刀攀挀漀洀洀攀渀搀攀搀ऀ椀渀琀ഀഀ as ਍ऀऀऀऀऀऀऀ戀攀最椀渀 ऀ猀攀氀攀挀琀 ✀匀琀愀琀攀洀攀渀琀 䤀搀✀ 㴀儀⸀儀甀攀爀礀䤀䐀Ⰰ ✀匀琀愀琀攀洀攀渀琀 匀琀爀椀渀最✀ 㴀儀⸀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最Ⰰ✀䐀愀琀愀戀愀猀攀 一愀洀攀✀ 㴀䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀Ⰰ ✀匀挀栀攀洀愀 一愀洀攀✀ 㴀吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ ✀吀愀戀氀攀⼀嘀椀攀眀 一愀洀攀✀ 㴀吀⸀吀愀戀氀攀一愀洀攀Ⰰ ✀䤀渀搀攀砀 一愀洀攀✀ 㴀䤀⸀䤀渀搀攀砀一愀洀攀 ऀ 昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_query] Q, ਍ऀऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀 儀䤀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_index] I, ਍ऀऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] D ਍ऀऀऀऀऀऀ眀栀攀爀攀 ഀഀ Q.SessionID=QI.SessionID and ਍ऀऀऀऀऀऀ儀⸀儀甀攀爀礀䤀䐀㴀儀䤀⸀儀甀攀爀礀䤀䐀 愀渀搀 ഀഀ QI.IndexID=I.IndexID and ਍ऀऀऀऀऀऀ䤀⸀吀愀戀氀攀䤀䐀㴀吀⸀吀愀戀氀攀䤀䐀 愀渀搀 ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀऀऀऀऀ儀䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀 㴀 䀀刀攀挀漀洀洀攀渀搀攀搀 愀渀搀ഀഀ Q.SessionID=@SessionID order by Q.QueryID end ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_query_indexrelations_helper_xml] Script Date: 05/23/2008 14:49:01 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开椀渀搀攀砀爀攀氀愀琀椀漀渀猀开栀攀氀瀀攀爀开砀洀氀崀 ഀഀ @SessionID int , ਍ऀ䀀刀攀挀漀洀洀攀渀搀攀搀ऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ ਍ऀ猀攀氀攀挀琀 ㄀            愀猀 吀愀最Ⰰ ഀഀ NULL as Parent, ਍ऀऀऀ✀✀ 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ case when @Recommended = 1 then 'false' ਍ऀऀऀ攀氀猀攀✀琀爀甀攀✀ 攀渀搀ഀഀ as [StatementIndexReport!1!Current], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀䐀攀琀愀椀氀℀㈀℀猀琀洀琀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [StatementIndexDetail!2!StatementString!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㌀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Database!3!Name!ELEMENT] , ਍ऀऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!5!TableID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!6!IndexID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㘀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ union all ਍ऀ猀攀氀攀挀琀 ㈀            愀猀 吀愀最Ⰰ ഀഀ 1 as Parent, ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [StatementIndexReport!1!Current], ਍ऀऀऀ儀⸀儀甀攀爀礀䤀䐀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀䐀攀琀愀椀氀℀㈀℀猀琀洀琀䤀䐀℀栀椀搀攀崀Ⰰഀഀ Q.StatementString as [StatementIndexDetail!2!StatementString!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㌀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Database!3!Name!ELEMENT] , ਍ऀऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!5!TableID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!6!IndexID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㘀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 儀Ⰰഀഀ ( select Q.QueryID,D.DatabaseID ਍ऀऀऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_query] Q, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀 儀䤀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_index] I, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] D ਍ऀऀऀऀ眀栀攀爀攀 ഀഀ Q.SessionID=QI.SessionID and ਍ऀऀऀऀ儀⸀儀甀攀爀礀䤀䐀㴀儀䤀⸀儀甀攀爀礀䤀䐀 愀渀搀 ഀഀ QI.IndexID=I.IndexID and ਍ऀऀऀऀ䤀⸀吀愀戀氀攀䤀䐀㴀吀⸀吀愀戀氀攀䤀䐀 愀渀搀 ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀऀऀ儀䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀 㴀 䀀刀攀挀漀洀洀攀渀搀攀搀 愀渀搀ഀഀ Q.SessionID=@SessionID ਍ऀऀऀऀ最爀漀甀瀀 戀礀 儀⸀儀甀攀爀礀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀⤀ 愀猀 刀ഀഀ where ਍ऀऀऀऀ刀⸀儀甀攀爀礀䤀䐀 㴀 儀⸀儀甀攀爀礀䤀䐀 愀渀搀ഀഀ R.DatabaseID = D.DatabaseID and ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ and R.DatabaseID IS NOT NULL ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 3 as Tag, ਍ऀऀऀ㈀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [StatementIndexReport!1!!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀刀攀瀀漀爀琀℀㄀℀䌀甀爀爀攀渀琀崀Ⰰഀഀ Q.QueryID as [StatementIndexDetail!2!stmtID!hide], ਍ऀऀऀ儀⸀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最  愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀䐀攀琀愀椀氀℀㈀℀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ D.DatabaseID as [Database!3!DatabaseID!hide], ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!4!Name!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!5!Name!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㘀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!6!Name!ELEMENT] ਍ऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_query] Q, ਍ऀऀऀ⠀ऀ猀攀氀攀挀琀 儀⸀儀甀攀爀礀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 儀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_queryindex] QI, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 䤀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_table] T, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 䐀ഀഀ where ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀㴀儀䤀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ Q.QueryID=QI.QueryID and ਍ऀऀऀऀ儀䤀⸀䤀渀搀攀砀䤀䐀㴀䤀⸀䤀渀搀攀砀䤀䐀 愀渀搀 ഀഀ I.TableID=T.TableID and ਍ऀऀऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ QI.IsRecommendedConfiguration = @Recommended and ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ group by Q.QueryID,D.DatabaseID) as R ਍ऀऀऀऀ眀栀攀爀攀ഀഀ R.QueryID = Q.QueryID and ਍ऀऀऀऀ刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ Q.SessionID = @SessionID ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 4 as Tag, ਍ऀऀऀ㌀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [StatementIndexReport!1!!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀刀攀瀀漀爀琀℀㄀℀䌀甀爀爀攀渀琀崀Ⰰഀഀ Q.QueryID as [StatementIndexDetail!2!stmtID!hide], ਍ऀऀऀ儀⸀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最  愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀䐀攀琀愀椀氀℀㈀℀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ D.DatabaseID as [Database!3!DatabaseID!hide], ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.SchemaName as [Schema!4!Name!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!5!Name!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㘀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!6!Name!ELEMENT] ਍ऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_query] Q, ਍ऀऀऀ⠀ऀ猀攀氀攀挀琀 儀⸀儀甀攀爀礀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 儀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_queryindex] QI, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 䤀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_table] T, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 䐀ഀഀ where ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀㴀儀䤀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ Q.QueryID=QI.QueryID and ਍ऀऀऀऀ儀䤀⸀䤀渀搀攀砀䤀䐀㴀䤀⸀䤀渀搀攀砀䤀䐀 愀渀搀 ഀഀ I.TableID=T.TableID and ਍ऀऀऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ QI.IsRecommendedConfiguration = @Recommended and ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ group by Q.QueryID,D.DatabaseID,T.SchemaName) as R ਍ऀऀऀऀ眀栀攀爀攀ഀഀ R.QueryID = Q.QueryID and ਍ऀऀऀऀ刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ Q.SessionID = @SessionID ਍ഀഀ union all ਍ऀ猀攀氀攀挀琀 㔀            愀猀 吀愀最Ⰰ ഀഀ 4 as Parent, ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [StatementIndexReport!1!Current], ਍ऀऀऀ儀⸀儀甀攀爀礀䤀䐀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀䐀攀琀愀椀氀℀㈀℀猀琀洀琀䤀䐀℀栀椀搀攀崀Ⰰഀഀ Q.StatementString as [StatementIndexDetail!2!StatementString!ELEMENT] , ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㌀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!3!Name!ELEMENT] , ਍ऀऀऀ刀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.TableID as [Table!5!TableID!hide], ਍ऀऀऀ吀⸀吀愀戀氀攀一愀洀攀 愀猀 嬀吀愀戀氀攀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!6!IndexID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㘀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 儀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] T, ਍ऀऀऀ⠀ऀ猀攀氀攀挀琀 儀⸀儀甀攀爀礀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ吀⸀吀愀戀氀攀䤀䐀ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 儀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_queryindex] QI, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 䤀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_table] T, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 䐀ഀഀ where ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀㴀儀䤀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ Q.QueryID=QI.QueryID and ਍ऀऀऀऀ儀䤀⸀䤀渀搀攀砀䤀䐀㴀䤀⸀䤀渀搀攀砀䤀䐀 愀渀搀 ഀഀ I.TableID=T.TableID and ਍ऀऀऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ QI.IsRecommendedConfiguration = @Recommended and ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ group by Q.QueryID,D.DatabaseID,T.SchemaName,T.TableID) as R ਍ऀऀऀऀ眀栀攀爀攀ഀഀ R.QueryID = Q.QueryID and ਍ऀऀऀऀ刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ Q.SessionID = @SessionID and ਍ऀऀऀऀ刀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀ഀഀ union all ਍ऀ猀攀氀攀挀琀 㘀            愀猀 吀愀最Ⰰ ഀഀ 5 as Parent, ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [StatementIndexReport!1!Current], ਍ऀऀऀ儀⸀儀甀攀爀礀䤀䐀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀䐀攀琀愀椀氀℀㈀℀猀琀洀琀䤀䐀℀栀椀搀攀崀Ⰰഀഀ Q.StatementString as [StatementIndexDetail!2!StatementString!ELEMENT] , ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㌀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!3!Name!ELEMENT] , ਍ऀऀऀ吀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ T.TableID as [Table!5!TableID!hide], ਍ऀऀऀ吀⸀吀愀戀氀攀一愀洀攀 愀猀 嬀吀愀戀氀攀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ I.IndexID as [Index!6!IndexID!hide], ਍ऀऀऀ䤀⸀䤀渀搀攀砀一愀洀攀 愀猀 嬀䤀渀搀攀砀℀㘀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 儀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_queryindex] QI, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 䤀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_table] T, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 䐀ഀഀ where ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀㴀儀䤀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ Q.QueryID=QI.QueryID and ਍ऀऀऀऀ儀䤀⸀䤀渀搀攀砀䤀䐀㴀䤀⸀䤀渀搀攀砀䤀䐀 愀渀搀 ഀഀ I.TableID=T.TableID and ਍ऀऀऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ QI.IsRecommendedConfiguration = @Recommended and ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ order by [StatementIndexDetail!2!stmtID!hide],[Database!3!DatabaseID!hide], ਍ऀऀऀ嬀匀挀栀攀洀愀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰ嬀吀愀戀氀攀℀㔀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰ嬀䤀渀搀攀砀℀㘀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀ഀഀ FOR XML EXPLICIT ਍攀渀搀ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_set_interactivestatus] Script Date: 05/23/2008 14:49:02 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开猀攀琀开椀渀琀攀爀愀挀琀椀瘀攀猀琀愀琀甀猀崀ഀഀ @InterActiveStatus int, ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀 ഀഀ ਍愀猀 ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ update [msdb].[dbo].[DTA_input] set InteractiveStatus = @InterActiveStatus where SessionID = @SessionID ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开猀攀琀开漀甀琀瀀甀琀椀渀昀漀爀洀愀琀椀漀渀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 ㈀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_set_outputinformation] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀Ⰰഀഀ @TuningResults ntext, ਍ऀ䀀䘀椀渀椀猀栀匀琀愀琀甀猀 琀椀渀礀椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ䤀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开漀甀琀瀀甀琀崀⠀嬀匀攀猀猀椀漀渀䤀䐀崀Ⰰ 嬀吀甀渀椀渀最刀攀猀甀氀琀猀崀Ⰰ嬀䘀椀渀椀猀栀匀琀愀琀甀猀崀⤀ 瘀愀氀甀攀猀⠀䀀匀攀猀猀椀漀渀䤀䐀Ⰰ䀀吀甀渀椀渀最刀攀猀甀氀琀猀Ⰰ䀀䘀椀渀椀猀栀匀琀愀琀甀猀⤀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开猀攀琀开瀀爀漀最爀攀猀猀椀渀昀漀爀洀愀琀椀漀渀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 ㈀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_set_progressinformation] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀Ⰰഀഀ @WorkloadConsumption int, ਍ऀ䀀吀甀渀椀渀最匀琀愀最攀 椀渀琀Ⰰഀഀ @EstImprovement int, ਍ऀ䀀䌀漀渀猀甀洀椀渀最圀漀爀欀䰀漀愀搀䴀攀猀猀愀最攀 渀瘀愀爀挀栀愀爀⠀㈀㔀㘀⤀ 㴀 一✀✀Ⰰഀഀ @PerformingAnalysisMessage nvarchar(256)= N'', ਍ऀ䀀䜀攀渀攀爀愀琀椀渀最刀攀瀀漀爀琀猀䴀攀猀猀愀最攀 渀瘀愀爀挀栀愀爀⠀㈀㔀㘀⤀㴀 一✀✀ഀഀ ਍ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ update [msdb].[dbo].[DTA_progress] ਍ऀ猀攀琀 圀漀爀欀氀漀愀搀䌀漀渀猀甀洀瀀琀椀漀渀 㴀 䀀圀漀爀欀氀漀愀搀䌀漀渀猀甀洀瀀琀椀漀渀Ⰰഀഀ EstImprovement = @EstImprovement, ਍ऀ倀爀漀最爀攀猀猀䔀瘀攀渀琀吀椀洀攀 㴀 䜀攀琀䐀愀琀攀⠀⤀Ⰰഀഀ ConsumingWorkLoadMessage = @ConsumingWorkLoadMessage , ਍ऀ倀攀爀昀漀爀洀椀渀最䄀渀愀氀礀猀椀猀䴀攀猀猀愀最攀 㴀ऀ䀀倀攀爀昀漀爀洀椀渀最䄀渀愀氀礀猀椀猀䴀攀猀猀愀最攀Ⰰഀഀ GeneratingReportsMessage = @GeneratingReportsMessage ਍ऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ and TuningStage = @TuningStage ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_set_tuninglogtablename] Script Date: 05/23/2008 14:49:03 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开猀攀琀开琀甀渀椀渀最氀漀最琀愀戀氀攀渀愀洀攀崀ഀഀ @LogTableName nvarchar(1280), ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀 ഀഀ ਍愀猀 ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ update [msdb].[dbo].[DTA_input] set LogTableName = @LogTableName where SessionID = @SessionID ਍ऀഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_start_xmlprefix] Script Date: 05/23/2008 14:49:03 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开猀琀愀爀琀开砀洀氀瀀爀攀昀椀砀崀ഀഀ as ਍戀攀最椀渀ഀഀ declare @startTags nvarchar(128) ਍ऀ猀攀琀 䀀猀琀愀爀琀吀愀最猀 㴀 一✀㰀䐀吀䄀堀䴀䰀㸀㰀䐀吀䄀伀甀琀瀀甀琀㸀㰀䄀渀愀氀礀猀椀猀刀攀瀀漀爀琀㸀✀ഀഀ select @startTags ਍攀渀搀ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_table_access_helper_relational] Script Date: 05/23/2008 14:49:04 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ 挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开琀愀戀氀攀开愀挀挀攀猀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀ഀഀ @SessionID int ਍ऀऀऀ愀猀ഀഀ begin select D1.DatabaseName as 'Database Name' ,T1.SchemaName as 'Schema Name' ,T1.TableName as 'Table Name' ,R.Count as 'Number of references' ,CAST(R.Usage as decimal(38,2)) as 'Percent Usage' from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀㄀ Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T1, ਍ऀऀऀऀ⠀ഀഀ select D.DatabaseID,T.TableID ਍ऀऀऀऀऀऀऀⰀ匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 愀猀 䌀漀甀渀琀Ⰰഀഀ 100.0 * SUM(Q.Weight) / ਍ऀऀऀऀऀऀऀ⠀ ㄀⸀  ⨀ ⠀ऀ猀攀氀攀挀琀ऀ䌀䄀匀䔀 圀䠀䔀一 匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 㸀   吀䠀䔀一  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ഀഀ else 1 ਍ऀऀऀऀऀऀऀऀऀऀऀऀ攀渀搀ऀഀഀ ਍ऀऀऀऀऀऀऀऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀ഀഀ where Q.SessionID = @SessionID )) ਍ऀऀऀऀ愀猀 唀猀愀最攀ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀ഀഀ LEFT OUTER JOIN ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀琀愀戀氀攀崀 愀猀 儀吀 伀一 儀吀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀ഀഀ LEFT OUTER JOIN ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀 伀一 儀吀⸀儀甀攀爀礀䤀䐀 㴀 儀⸀儀甀攀爀礀䤀䐀ഀഀ JOIN ਍ऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀 愀猀 䐀 伀一 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ and Q.SessionID = QT.SessionID and ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ऀऀഀഀ GROUP BY T.TableID,D.DatabaseID) as R ਍ऀऀऀऀ眀栀攀爀攀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀㄀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ R.TableID = T1.TableID and ਍ऀऀऀऀ䐀㄀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ R.Count > 0 ਍ऀऀऀऀ漀爀搀攀爀 戀礀 刀⸀䌀漀甀渀琀 搀攀猀挀  攀渀搀 ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开琀愀戀氀攀开愀挀挀攀猀猀开栀攀氀瀀攀爀开砀洀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 㐀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_table_access_helper_xml] ਍ऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ select 1 as Tag, ਍ऀऀ一唀䰀䰀          愀猀 倀愀爀攀渀琀Ⰰഀഀ '' as [TableAccessReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Database!2!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!4!TableID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Table!4!NumberOfReferences!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀倀攀爀挀攀渀琀唀猀愀最攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ union all ਍ऀ猀攀氀攀挀琀 ഀഀ 2 as Tag, ਍ऀऀ㄀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [TableAccessReport!1!!ELEMENT], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!4!TableID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Table!4!NumberOfReferences!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀倀攀爀挀攀渀琀唀猀愀最攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D ਍ऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 椀渀ഀഀ (select D.DatabaseID from ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀琀愀戀氀攀崀 愀猀 儀吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀऀऀ儀吀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀  愀渀搀ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ group by D.DatabaseID) ਍ऀഀഀ ਍甀渀椀漀渀 愀氀氀ഀഀ ਍ऀ猀攀氀攀挀琀 ㌀ 愀猀 吀愀最Ⰰ ㈀ 愀猀 倀愀爀攀渀琀Ⰰ ഀഀ NULL as [TableAccessReport!1!!ELEMENT], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ刀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!4!TableID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Table!4!NumberOfReferences!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀倀攀爀挀攀渀琀唀猀愀最攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ ( ਍ऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀 昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_querytable] as QT, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀ眀栀攀爀攀ഀഀ QT.TableID = T.TableID and ਍ऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ D.SessionID = @SessionID ਍ऀऀ最爀漀甀瀀 戀礀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀ഀഀ ) R ਍ഀഀ where ਍ऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = R.DatabaseID ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ ਍ऀ猀攀氀攀挀琀 㐀 愀猀 吀愀最Ⰰ ㌀ 愀猀 倀愀爀攀渀琀Ⰰഀഀ ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀䄀挀挀攀猀猀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ D1.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀㄀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ T1.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀ吀㄀⸀吀愀戀氀攀䤀䐀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ T1.TableName as [Table!4!Name!ELEMENT], ਍ऀऀ刀⸀䌀漀甀渀琀 愀猀 嬀吀愀戀氀攀℀㐀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ CAST(R.Usage as decimal(38,2)) as [Table!4!PercentUsage!ELEMENT] ਍ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀㄀ Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T1, ਍ऀऀऀऀ⠀ഀഀ select D.DatabaseID,T.TableID ਍ऀऀऀऀऀऀऀⰀ匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 愀猀 䌀漀甀渀琀Ⰰഀഀ 100.0 * SUM(Q.Weight) / ਍ऀऀऀऀऀऀऀ⠀ ㄀⸀  ⨀ ⠀ऀ猀攀氀攀挀琀ऀ䌀䄀匀䔀 圀䠀䔀一 匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 㸀   吀䠀䔀一  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ഀഀ else 1 ਍ऀऀऀऀऀऀऀऀऀऀऀऀ攀渀搀ऀഀഀ ਍ऀऀऀऀऀऀऀऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀ഀഀ where Q.SessionID = @SessionID )) ਍ऀऀऀऀ愀猀 唀猀愀最攀ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀ഀഀ LEFT OUTER JOIN ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀琀愀戀氀攀崀 愀猀 儀吀 伀一 儀吀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀ഀഀ LEFT OUTER JOIN ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀 伀一 儀吀⸀儀甀攀爀礀䤀䐀 㴀 儀⸀儀甀攀爀礀䤀䐀ഀഀ JOIN ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀 伀一 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ and Q.SessionID = QT.SessionID and ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ऀऀഀഀ GROUP BY T.TableID,D.DatabaseID) as R ਍ऀऀऀऀ眀栀攀爀攀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀㄀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ R.TableID = T1.TableID and ਍ऀऀऀऀ䐀㄀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ R.Count > 0 ਍ഀഀ order by [Database!2!DatabaseID!hide],[Schema!3!Name!ELEMENT],[Table!4!TableID!hide],[Table!4!NumberOfReferences!ELEMENT] ਍ഀഀ FOR XML EXPLICIT ਍攀渀搀ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_update_session] Script Date: 05/23/2008 14:49:04 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开甀瀀搀愀琀攀开猀攀猀猀椀漀渀崀 ഀഀ @SessionID int, ਍ऀ䀀匀攀猀猀椀漀渀一愀洀攀 猀礀猀渀愀洀攀 㴀 一唀䰀䰀Ⰰ ഀഀ @InteractiveStatus tinyint = NULL ਍愀猀 ഀഀ begin ਍ऀ搀攀挀氀愀爀攀ऀ䀀砀开匀攀猀猀椀漀渀一愀洀攀 猀礀猀渀愀洀攀ഀഀ declare @x_InteractiveStatus tinyint ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ഀഀ declare @ErrorString nvarchar(500) ਍ഀഀ ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ select @SessionName = LTRIM(RTRIM(@SessionName)) ਍ऀഀഀ ਍ऀ搀攀挀氀愀爀攀ऀ䀀搀甀瀀开匀攀猀猀椀漀渀一愀洀攀 猀礀猀渀愀洀攀ഀഀ ਍ऀ椀昀 䀀匀攀猀猀椀漀渀一愀洀攀 䤀匀 一伀吀 一唀䰀䰀ഀഀ begin ਍ऀऀ猀攀氀攀挀琀 䀀搀甀瀀开匀攀猀猀椀漀渀一愀洀攀 㴀 䀀匀攀猀猀椀漀渀一愀洀攀ഀഀ from msdb.dbo.DTA_input ਍ऀऀ眀栀攀爀攀 匀攀猀猀椀漀渀一愀洀攀 㴀 䀀匀攀猀猀椀漀渀一愀洀攀ഀഀ ਍ऀऀ椀昀 ⠀䀀搀甀瀀开匀攀猀猀椀漀渀一愀洀攀 䤀匀 一伀吀 一唀䰀䰀⤀ഀഀ begin ਍ऀऀऀऀ猀攀琀 䀀䔀爀爀漀爀匀琀爀椀渀最 㴀 ✀吀栀攀 猀攀猀猀椀漀渀 ✀ ⬀ ✀∀✀ ⬀ 䰀吀刀䤀䴀⠀刀吀刀䤀䴀⠀䀀匀攀猀猀椀漀渀一愀洀攀⤀⤀ ⬀ ✀∀✀ ⬀✀ 愀氀爀攀愀搀礀 攀砀椀猀琀猀⸀ 倀氀攀愀猀攀 甀猀攀 愀 搀椀昀昀攀爀攀渀琀 猀攀猀猀椀漀渀 渀愀洀攀⸀✀ഀഀ raiserror (31001, -1,-1,@SessionName) ਍ऀऀऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀ攀渀搀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀഀഀ if ((@SessionName IS NOT NULL) OR ਍ऀऀ⠀䀀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 䤀匀 一伀吀 一唀䰀䰀⤀ഀഀ ) ਍ऀ戀攀最椀渀ഀഀ select @x_SessionName = SessionName, ਍ऀऀऀऀ䀀砀开䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 㴀 䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀ഀഀ from msdb.dbo.DTA_input ਍ऀऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀऀ椀昀 ⠀䀀匀攀猀猀椀漀渀一愀洀攀 䤀匀 一唀䰀䰀⤀ 猀攀氀攀挀琀 䀀匀攀猀猀椀漀渀一愀洀攀 㴀 䀀砀开匀攀猀猀椀漀渀一愀洀攀ഀഀ if (@InteractiveStatus IS NULL) select @InteractiveStatus = @x_InteractiveStatus ਍ഀഀ update msdb.dbo.DTA_input ਍ऀऀ猀攀琀 匀攀猀猀椀漀渀一愀洀攀 㴀 䀀匀攀猀猀椀漀渀一愀洀攀Ⰰഀഀ InteractiveStatus = @InteractiveStatus ਍ऀऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开甀瀀搀愀琀攀开琀甀渀椀渀最氀漀最开攀爀爀漀爀昀爀攀焀甀攀渀挀礀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 㔀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_update_tuninglog_errorfrequency] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀Ⰰഀഀ @Frequency int, ਍ऀ䀀刀漀眀䤀䐀ऀऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ甀瀀搀愀琀攀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开琀甀渀椀渀最氀漀最崀ഀഀ set [Frequency]=@Frequency ਍ऀ眀栀攀爀攀 嬀刀漀眀䤀䐀崀㴀䀀刀漀眀䤀䐀 愀渀搀 嬀匀攀猀猀椀漀渀䤀䐀崀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_view_table_helper_relational] Script Date: 05/23/2008 14:49:05 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ऀ挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开瘀椀攀眀开琀愀戀氀攀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀ഀഀ @SessionID int ਍ऀऀऀऀऀऀ愀猀ഀഀ begin select 'View Id' =T2.TableID, 'Database Name' =D.DatabaseName, 'Schema Name' =T2.SchemaName, 'View Name' =T2.TableName, 'Database Name' =D.DatabaseName, 'Schema Name' =T1.SchemaName, 'Table Name' =T1.TableName from ਍ऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 䐀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_tableview] TV, ਍ऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 吀㄀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] T2 ਍ऀऀऀऀऀ眀栀攀爀攀 ഀഀ D.DatabaseID=T1.DatabaseID and ਍ऀऀऀऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀㴀吀㈀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ T1.TableID=TV.TableID and ਍ऀऀऀऀऀऀ吀㈀⸀吀愀戀氀攀䤀䐀㴀吀嘀⸀嘀椀攀眀䤀䐀 愀渀搀ഀഀ D.SessionID=@SessionID ਍ऀऀऀऀऀऀ漀爀搀攀爀 戀礀 吀嘀⸀嘀椀攀眀䤀䐀  攀渀搀 ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开瘀椀攀眀开琀愀戀氀攀开栀攀氀瀀攀爀开砀洀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 㘀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_view_table_helper_xml] ਍ऀऀऀऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ select 1 as Tag, ਍ऀऀऀ一唀䰀䰀          愀猀 倀愀爀攀渀琀Ⰰഀഀ '' as [ViewTableReport!1!!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Database!2!Name!ELEMENT] , ਍ऀऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [View!4!ViewID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀嘀椀攀眀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Table!5!TableID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ union all ਍ऀ猀攀氀攀挀琀 ㈀            愀猀 吀愀最Ⰰ ഀഀ 1 as Parent, ਍ऀऀऀ一唀䰀䰀 愀猀 嬀嘀椀攀眀吀愀戀氀攀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!3!Name!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀嘀椀攀眀℀㐀℀嘀椀攀眀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [View!4!Name!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!5!Name!ELEMENT] ਍ऀऀऀ昀爀漀洀ऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID in ਍ऀऀऀऀ⠀ഀഀ select D.DatabaseID ਍ऀऀऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀऀऀऀऀ眀栀攀爀攀ഀഀ T.IsView = 1 and ਍ऀऀऀऀऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ D.SessionID = @SessionID ਍ऀऀऀऀऀऀ䜀刀伀唀倀 䈀夀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀⤀ഀഀ union all ਍ऀ猀攀氀攀挀琀 ㌀            愀猀 吀愀最Ⰰ ഀഀ 2 as Parent, ਍ऀऀऀ一唀䰀䰀 愀猀 嬀嘀椀攀眀吀愀戀氀攀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀嘀椀攀眀℀㐀℀嘀椀攀眀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [View!4!Name!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!5!Name!ELEMENT] ਍ऀऀऀ昀爀漀洀ऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ (select D.DatabaseID,T.SchemaName ਍ऀऀऀऀऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀऀऀऀऀऀ眀栀攀爀攀ഀഀ T.IsView = 1 and ਍ऀऀऀऀऀऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ D.SessionID = @SessionID ਍ऀऀऀऀऀऀऀ䜀刀伀唀倀 䈀夀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀ഀഀ ) R ਍ऀऀऀ眀栀攀爀攀ഀഀ R.DatabaseID = D.DatabaseID and ਍ऀऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 4 as Tag, ਍ऀऀऀ㌀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [ViewTableReport!1!!ELEMENT], ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀऀ刀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ T.TableID as [View!4!ViewID!hide], ਍ऀऀऀ吀⸀吀愀戀氀攀一愀洀攀 愀猀 嬀嘀椀攀眀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Table!5!TableID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ (select D.DatabaseID,T.SchemaName,T.TableID ਍ऀऀऀऀऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀऀऀऀऀऀ眀栀攀爀攀ഀഀ T.IsView = 1 and ਍ऀऀऀऀऀऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ D.SessionID = @SessionID ਍ऀऀऀऀऀऀऀ䜀刀伀唀倀 䈀夀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ吀⸀吀愀戀氀攀䤀䐀ഀഀ ) R ਍ऀऀऀ眀栀攀爀攀ഀഀ R.DatabaseID = D.DatabaseID and ਍ऀऀऀऀ吀⸀吀愀戀氀攀䤀䐀 㴀 刀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ D.SessionID = @SessionID ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 5 as Tag, ਍ऀऀऀ㐀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [ViewTableReport!1!!ELEMENT], ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀऀ吀㈀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ T2.TableID as [View!4!ViewID!hide], ਍ऀऀऀ吀㈀⸀吀愀戀氀攀一愀洀攀 愀猀 嬀嘀椀攀眀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ T1.TableID as [Table!5!TableID!hide], ਍ऀऀऀ吀㄀⸀吀愀戀氀攀一愀洀攀 愀猀 嬀吀愀戀氀攀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 䐀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_tableview] TV, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 吀㄀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] T2 ਍ऀऀ眀栀攀爀攀 ഀഀ D.DatabaseID=T1.DatabaseID and ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀㴀吀㈀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ T1.TableID=TV.TableID and ਍ऀऀऀ吀㈀⸀吀愀戀氀攀䤀䐀㴀吀嘀⸀嘀椀攀眀䤀䐀 愀渀搀ഀഀ D.SessionID = @SessionID ਍ഀഀ order by [Database!2!DatabaseID!hide],[Schema!3!Name!ELEMENT],[View!4!ViewID!hide],[Table!5!TableID!hide] ਍ऀ䘀伀刀 堀䴀䰀 䔀堀倀䰀䤀䌀䤀吀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开眀欀氀搀开愀渀愀氀礀猀椀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 㘀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_wkld_analysis_helper_relational] ਍ऀऀऀऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍ऀऀऀऀऀऀ戀攀最椀渀ऀ猀攀氀攀挀琀 ✀匀琀愀琀攀洀攀渀琀 吀礀瀀攀✀ 㴀 䌀䄀匀䔀 ഀഀ WHEN StatementType = 0 THEN 'Select' ਍ऀऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㄀ 吀䠀䔀一 ✀唀瀀搀愀琀攀✀ഀഀ WHEN StatementType = 2 THEN 'Insert' ਍ऀऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㌀ 吀䠀䔀一 ✀䐀攀氀攀琀攀✀ഀഀ end, 'Number of Statements' =COUNT(QueryID), 'Cost Decreased' =SUM(CASE ਍ऀऀऀऀऀऀऀऀऀऀऀऀऀऀऀ圀䠀䔀一 刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀㰀䌀甀爀爀攀渀琀䌀漀猀琀 吀䠀䔀一 ㄀ 攀氀猀攀   攀渀搀⤀Ⰰ ✀䌀漀猀琀 䤀渀挀爀攀愀猀攀搀✀ 㴀匀唀䴀⠀䌀䄀匀䔀ഀഀ WHEN RecommendedCost>CurrentCost THEN 1 else 0 end), 'No Change' =SUM(CASE ਍ऀऀऀऀऀऀ圀䠀䔀一 刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀㴀䌀甀爀爀攀渀琀䌀漀猀琀 吀䠀䔀一 ㄀ 攀氀猀攀   攀渀搀⤀ ऀ昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_query] ਍ऀऀऀऀऀऀ眀栀攀爀攀 ഀഀ SessionID=@SessionID group by StatementType end ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_wkld_analysis_helper_xml] Script Date: 05/23/2008 14:49:06 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开眀欀氀搀开愀渀愀氀礀猀椀猀开栀攀氀瀀攀爀开砀洀氀崀ഀഀ @SessionID int ਍愀猀ഀഀ begin ਍ऀ猀攀氀攀挀琀 ㄀            愀猀 吀愀最Ⰰ ഀഀ NULL as Parent, ਍ऀऀऀ✀✀ 愀猀 嬀圀漀爀欀氀漀愀搀䄀渀愀氀礀猀椀猀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Statements!2!Type!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀猀℀㈀℀一甀洀戀攀爀伀昀匀琀愀琀攀洀攀渀琀猀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Statements!2!CostDecreased!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀猀℀㈀℀䌀漀猀琀䤀渀挀爀攀愀猀攀搀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Statements!2!CostSame!ELEMENT] ਍ऀऀ甀渀椀漀渀 愀氀氀ഀഀ select 2 as Tag, ਍ऀऀऀ㄀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [WorkloadAnalysis!1!!ELEMENT], ਍ऀऀऀ䌀䄀匀䔀 ഀഀ WHEN StatementType = 0 THEN 'Select' ਍ऀऀऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㄀ 吀䠀䔀一 ✀唀瀀搀愀琀攀✀ഀഀ WHEN StatementType = 2 THEN 'Insert' ਍ऀऀऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㌀ 吀䠀䔀一 ✀䐀攀氀攀琀攀✀ഀഀ end as [Statements!2!Type!ELEMENT] , ਍ऀऀऀ䌀伀唀一吀⠀儀甀攀爀礀䤀䐀⤀ 愀猀 嬀匀琀愀琀攀洀攀渀琀猀℀㈀℀一甀洀戀攀爀伀昀匀琀愀琀攀洀攀渀琀猀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ SUM(CASE WHEN RecommendedCost 0 ਍ऀऀऀ戀攀最椀渀ഀഀ rollback transaction ਍ऀऀऀऀ爀攀琀甀爀渀 䀀䀀攀爀爀漀爀ഀഀ end ਍ഀഀ -- Create an internal representation of the XML document. ਍ऀऀऀऀ䔀堀䔀䌀 猀瀀开砀洀氀开瀀爀攀瀀愀爀攀搀漀挀甀洀攀渀琀 䀀堀洀氀䐀漀挀甀洀攀渀琀䠀愀渀搀氀攀 伀唀吀倀唀吀Ⰰ 䀀吀甀渀椀渀最伀瀀琀椀漀渀猀Ⰰഀഀ '' ਍ऀऀऀऀഀഀ if @@error <> 0 ਍ऀऀऀऀ戀攀最椀渀ഀഀ rollback transaction ਍ऀऀऀऀऀ爀攀琀甀爀渀 䀀䀀攀爀爀漀爀ഀഀ end ਍ऀऀऀऀⴀⴀ 䔀砀攀挀甀琀攀 愀 匀䔀䰀䔀䌀吀 猀琀愀琀攀洀攀渀琀 甀猀椀渀最 伀倀䔀一堀䴀䰀 爀漀眀猀攀琀 瀀爀漀瘀椀搀攀爀⸀ഀഀ ਍ऀऀऀऀ椀渀猀攀爀琀 椀渀琀漀 䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀ഀഀ SELECT @SessionID,[x:Name],1 ਍ऀऀऀऀ䘀刀伀䴀      伀倀䔀一堀䴀䰀 ⠀䀀堀洀氀䐀漀挀甀洀攀渀琀䠀愀渀搀氀攀Ⰰ ഀഀ '/x:DTAXML/x:DTAInput/x:Server//x:Database',2) ਍ऀऀऀऀऀऀ圀䤀吀䠀 ⠀嬀砀㨀一愀洀攀崀  渀瘀愀爀挀栀愀爀⠀㄀㈀㠀⤀ ⤀ ഀഀ ਍ऀऀऀऀ椀昀 䀀䀀攀爀爀漀爀 㰀㸀  ഀഀ begin ਍ऀऀऀऀऀ爀漀氀氀戀愀挀欀 琀爀愀渀猀愀挀琀椀漀渀ഀഀ return @@error ਍ऀऀऀऀ攀渀搀ऀऀഀഀ ਍ऀऀऀऀ䔀堀䔀䌀 猀瀀开砀洀氀开爀攀洀漀瘀攀搀漀挀甀洀攀渀琀 䀀堀洀氀䐀漀挀甀洀攀渀琀䠀愀渀搀氀攀ഀഀ ਍ऀऀऀऀ椀昀 䀀䀀攀爀爀漀爀 㰀㸀  ഀഀ begin ਍ऀऀऀऀऀ爀漀氀氀戀愀挀欀 琀爀愀渀猀愀挀琀椀漀渀ഀഀ return @@error ਍ऀऀऀऀ攀渀搀ऀऀഀഀ ਍ऀऀऀऀഀഀ ਍ऀऀഀഀ -- Check if allowed to add session ਍ऀऀऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀऀऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㌀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ rollback transaction ਍ऀऀऀऀ爀攀琀甀爀渀 ⠀㄀⤀ഀഀ end ਍ഀഀ select @dbcount = count(*) from DTA_reports_database ਍ऀऀऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ऀऀऀഀഀ if @dbcount = 0 ਍ऀऀऀ戀攀最椀渀ഀഀ rollback transaction ਍ऀऀऀऀ爀攀琀甀爀渀 ⠀㄀⤀ഀഀ end ਍ഀഀ -- Insert progress record ਍ऀऀ椀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开瀀爀漀最爀攀猀猀崀ഀഀ (SessionID,WorkloadConsumption,EstImprovement,TuningStage,ConsumingWorkLoadMessage,PerformingAnalysisMessage,GeneratingReportsMessage) ਍ऀऀ瘀愀氀甀攀猀⠀䀀匀攀猀猀椀漀渀䤀䐀Ⰰ Ⰰ Ⰰ Ⰰ一✀✀Ⰰ一✀✀Ⰰ一✀✀⤀ഀഀ ਍ऀऀ椀昀 䀀䀀攀爀爀漀爀 㰀㸀  ഀഀ begin ਍ऀऀऀ爀漀氀氀戀愀挀欀 琀爀愀渀猀愀挀琀椀漀渀ഀഀ return @@error ਍ऀऀ攀渀搀ऀऀഀഀ ਍ऀऀഀഀ -- Commit if input/progress records are updated ਍ऀ挀漀洀洀椀琀 琀爀愀渀猀愀挀琀椀漀渀ഀഀ return 0 ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㄀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_check_permission] ਍ऀऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retcode int ਍ऀ搀攀挀氀愀爀攀 䀀搀戀渀愀洀攀 渀瘀愀爀挀栀愀爀⠀㄀㈀㠀⤀ഀഀ declare @sql nvarchar(256) ਍ऀ搀攀挀氀愀爀攀 䀀搀戀椀搀 椀渀琀ഀഀ ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ set @retcode = 1 ਍ഀഀ -- Check if SA ਍ऀ椀昀 ⠀椀猀渀甀氀氀⠀䤀匀开匀刀嘀刀伀䰀䔀䴀䔀䴀䈀䔀刀⠀一✀猀礀猀愀搀洀椀渀✀⤀Ⰰ  ⤀ 㴀 ㄀⤀ഀഀ begin ਍ऀऀ爀攀琀甀爀渀⠀ ⤀ ഀഀ end ਍ഀഀ -- if not yukon return ਍ऀ椀昀 ⠀瀀愀琀椀渀搀攀砀⠀✀─㤀⸀  ⸀─✀Ⰰ䀀䀀瘀攀爀猀椀漀渀⤀ 㴀  ⤀ഀഀ begin ਍ऀऀ爀攀琀甀爀渀 ⠀㄀⤀ഀഀ end ਍ऀⴀⴀ 搀攀挀氀愀爀攀 愀渀搀 漀瀀攀渀 愀 挀甀爀猀漀爀 愀渀搀 最攀琀 愀氀氀 琀栀攀 搀愀琀愀戀愀猀攀猀 猀瀀攀挀椀昀椀攀搀 椀渀 琀栀攀 椀渀瀀甀琀ഀഀ declare db_cursor cursor for ਍ऀ猀攀氀攀挀琀 䐀愀琀愀戀愀猀攀一愀洀攀 昀爀漀洀 䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀ഀഀ where SessionID = @SessionID and IsDatabaseSelectedToTune = 1 ਍ऀⴀⴀ 漀瀀攀渀ഀഀ open db_cursor ਍ऀⴀⴀ 昀攀琀挀栀 昀椀爀猀琀 搀戀 渀愀洀攀ഀഀ fetch next from db_cursor ਍ऀ椀渀琀漀 䀀搀戀渀愀洀攀ഀഀ -- loop and get all the databases selected to tune ਍ऀ眀栀椀氀攀 䀀䀀昀攀琀挀栀开猀琀愀琀甀猀 㴀  ഀഀ begin ਍ऀऀⴀⴀ 戀甀椀氀搀 甀猀攀 搀戀 猀琀爀椀渀最ഀഀ select @dbid = DB_ID(@dbname) ਍ऀഀഀ -- set @retcode to OK. Will be set to 1 in case of issues ਍ऀऀ猀攀琀 䀀爀攀琀挀漀搀攀 㴀  ഀഀ ਍ऀऀⴀⴀ 䤀渀 夀甀欀漀渀 琀栀椀猀 洀愀猀欀猀 琀栀攀 攀爀爀漀爀 洀攀猀猀愀最攀猀ഀഀ set @sql = N'begin try ਍ऀऀऀ搀戀挀挀 愀甀琀漀瀀椀氀漀琀⠀㔀Ⰰ䀀搀戀椀搀⤀ 圀䤀吀䠀 一伀开䤀一䘀伀䴀匀䜀匀 ഀഀ end try ਍ऀऀ戀攀最椀渀 挀愀琀挀栀ഀഀ set @retcode = 1 ਍ऀऀ攀渀搀 挀愀琀挀栀✀ഀഀ ਍ऀऀ攀砀攀挀甀琀攀 猀瀀开攀砀攀挀甀琀攀猀焀氀 䀀猀焀氀ഀഀ , N'@dbid int output, @retcode int OUTPUT' ਍ऀऀऀⰀ 䀀搀戀椀搀 漀甀琀瀀甀琀 ഀഀ , @retcode output ਍ऀഀഀ -- if caller is not member of dbo ਍ऀऀ椀昀 ⠀䀀爀攀琀挀漀搀攀 㴀 ㄀⤀ഀഀ begin ਍ऀऀऀⴀⴀ 挀氀漀猀攀 愀渀搀 爀攀猀攀琀 挀甀爀猀漀爀Ⰰ猀眀椀琀挀栀 挀漀渀琀攀砀琀 琀漀 挀甀爀爀攀渀琀ഀഀ -- database and return 1 ਍ऀऀऀ挀氀漀猀攀 搀戀开挀甀爀猀漀爀ഀഀ deallocate db_cursor ਍ऀऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀऀ昀攀琀挀栀 昀爀漀洀 搀戀开挀甀爀猀漀爀 椀渀琀漀 䀀搀戀渀愀洀攀ഀഀ end ਍ऀⴀⴀ 挀氀漀猀攀 愀渀搀 爀攀猀攀琀 挀甀爀猀漀爀Ⰰ猀眀椀琀挀栀 挀漀渀琀攀砀琀 琀漀 挀甀爀爀攀渀琀ഀഀ -- database and return 1 ਍ऀ挀氀漀猀攀 搀戀开挀甀爀猀漀爀ഀഀ deallocate db_cursor ਍ऀⴀⴀ 椀昀 挀愀氀氀攀爀 椀猀 渀漀琀 洀攀洀戀攀爀 漀昀 搀戀漀ഀഀ if (@retcode = 1) ਍ऀ戀攀最椀渀ഀഀ return(1) ਍ऀ攀渀搀ഀഀ return(0) ਍攀渀搀ऀऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_column_access_helper_relational] Script Date: 05/23/2008 14:48:41 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ 挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开挀漀氀甀洀渀开愀挀挀攀猀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀ഀഀ @SessionID int ਍ऀऀऀ愀猀ഀഀ begin select D1.DatabaseName as 'Database Name' ,T1.SchemaName as 'Schema Name' ,T1.TableName as 'Table/View Name' ,C1.ColumnName as 'Column Name' ,R.Count as 'Number of references' ,CAST(R.Usage as decimal(38,2)) as 'Percent Usage' from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀㄀ Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T1, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开挀漀氀甀洀渀崀 愀猀 䌀㄀Ⰰഀഀ ਍ऀऀऀऀ⠀ഀഀ select D.DatabaseID,T.TableID,C.ColumnID, ਍ऀऀऀऀऀऀऀ匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 愀猀 䌀漀甀渀琀Ⰰഀഀ 100.0 * SUM(Q.Weight) / ਍ऀऀऀऀऀऀऀ⠀ ㄀⸀  ⨀ ⠀ऀ猀攀氀攀挀琀ऀ䌀䄀匀䔀 圀䠀䔀一 匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 㸀   吀䠀䔀一  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ഀഀ else 1 ਍ऀऀऀऀऀऀऀऀऀऀऀऀ攀渀搀ऀഀഀ ਍ऀऀऀऀऀऀऀऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀ഀഀ where Q.SessionID = @SessionID )) ਍ऀऀऀऀ愀猀 唀猀愀最攀ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开挀漀氀甀洀渀崀 愀猀 䌀ഀഀ LEFT OUTER JOIN ਍ऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀挀漀氀甀洀渀 愀猀 儀䌀 伀一 儀䌀⸀䌀漀氀甀洀渀䤀䐀 㴀 䌀⸀䌀漀氀甀洀渀䤀䐀ഀഀ LEFT OUTER JOIN ਍ऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀 愀猀 儀 伀一 儀䌀⸀儀甀攀爀礀䤀䐀 㴀 儀⸀儀甀攀爀礀䤀䐀ഀഀ JOIN ਍ऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀 愀猀 吀 伀一 䌀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀ഀഀ JOIN ਍ऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀 愀猀 䐀 伀一 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ and Q.SessionID = QC.SessionID and ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ऀऀഀഀ GROUP BY C.ColumnID,T.TableID,D.DatabaseID) as R ਍ऀऀऀऀ眀栀攀爀攀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀㄀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ R.TableID = T1.TableID and ਍ऀऀऀऀ刀⸀䌀漀氀甀洀渀䤀䐀 㴀 䌀㄀⸀䌀漀氀甀洀渀䤀䐀 愀渀搀ഀഀ D1.SessionID = @SessionID and ਍ऀऀऀऀ刀⸀䌀漀甀渀琀 㸀  ഀഀ order by R.Count desc end ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_column_access_helper_xml] Script Date: 05/23/2008 14:48:42 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开挀漀氀甀洀渀开愀挀挀攀猀猀开栀攀氀瀀攀爀开砀洀氀崀ഀഀ @SessionID int ਍愀猀ഀഀ begin ਍ऀऀ猀攀氀攀挀琀 ㄀            愀猀 吀愀最Ⰰ ഀഀ NULL as Parent, ਍ऀऀ✀✀ 愀猀 嬀䌀漀氀甀洀渀䄀挀挀攀猀猀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Database!2!DatabaseID!hide], ਍ऀऀ一唀䰀䰀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!3!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䌀漀氀甀洀渀℀㔀℀䌀漀氀甀洀渀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Column!5!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䌀漀氀甀洀渀℀㔀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Column!5!PercentUsage!ELEMENT] ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 2 as Tag, 1 as Parent, NULL, ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀Ⰰഀഀ NULL,NULL,NULL,NULL,NULL,NULL,NULL ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID in ਍ऀ⠀猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_querycolumn] as QC, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开挀漀氀甀洀渀崀 愀猀 䌀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀऀऀ儀䌀⸀䌀漀氀甀洀渀䤀䐀 㴀 䌀⸀䌀漀氀甀洀渀䤀䐀  愀渀搀ഀഀ C.TableID = T.TableID and ਍ऀऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ D.SessionID = @SessionID ਍ऀऀऀ最爀漀甀瀀 戀礀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀⤀ഀഀ union all ਍ऀ猀攀氀攀挀琀 ㌀ 愀猀 吀愀最Ⰰ ㈀ 愀猀 倀愀爀攀渀琀Ⰰ 一唀䰀䰀Ⰰഀഀ R.DatabaseID,D.DatabaseName, ਍ऀऀऀ刀⸀匀挀栀攀洀愀一愀洀攀Ⰰ一唀䰀䰀Ⰰ一唀䰀䰀Ⰰ一唀䰀䰀Ⰰ一唀䰀䰀Ⰰ一唀䰀䰀Ⰰ一唀䰀䰀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀ⠀ഀഀ select D.DatabaseID,T.SchemaName from ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀挀漀氀甀洀渀崀 愀猀 儀䌀Ⰰഀഀ [msdb].[dbo].[DTA_reports_column] as C, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀ眀栀攀爀攀ഀഀ QC.ColumnID = C.ColumnID and ਍ऀऀ䌀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ group by D.DatabaseID,T.SchemaName ਍⤀ 刀ഀഀ ਍ऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ union all ਍ऀ猀攀氀攀挀琀 㐀 愀猀 吀愀最Ⰰ ㌀ 愀猀 倀愀爀攀渀琀Ⰰ 一唀䰀䰀Ⰰഀഀ R.DatabaseID,D.DatabaseName, ਍ऀऀऀ刀⸀匀挀栀攀洀愀一愀洀攀Ⰰ刀⸀吀愀戀氀攀䤀䐀Ⰰ吀⸀吀愀戀氀攀一愀洀攀Ⰰ一唀䰀䰀Ⰰ一唀䰀䰀Ⰰ一唀䰀䰀Ⰰ一唀䰀䰀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀ 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ ( ਍ऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ吀⸀吀愀戀氀攀䤀䐀 昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_querycolumn] as QC, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开挀漀氀甀洀渀崀 愀猀 䌀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀऀ儀䌀⸀䌀漀氀甀洀渀䤀䐀 㴀 䌀⸀䌀漀氀甀洀渀䤀䐀  愀渀搀ഀഀ C.TableID = T.TableID and ਍ऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ D.SessionID = @SessionID ਍ऀऀ最爀漀甀瀀 戀礀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ吀⸀吀愀戀氀攀䤀䐀ഀഀ ) R ਍ഀഀ where ਍ऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = R.DatabaseID and ਍ऀ刀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ T.DatabaseID = D.DatabaseID ਍ഀഀ union all ਍ऀ猀攀氀攀挀琀 㔀 愀猀 吀愀最Ⰰ 㐀 愀猀 倀愀爀攀渀琀Ⰰ 一唀䰀䰀Ⰰഀഀ D1.DatabaseID,D1.DatabaseName, ਍ऀऀऀ吀㄀⸀匀挀栀攀洀愀一愀洀攀Ⰰ吀㄀⸀吀愀戀氀攀䤀䐀Ⰰ吀㄀⸀吀愀戀氀攀一愀洀攀Ⰰ䌀㄀⸀䌀漀氀甀洀渀䤀䐀Ⰰ䌀㄀⸀䌀漀氀甀洀渀一愀洀攀Ⰰഀഀ R.Count, ਍ऀऀऀ䌀䄀匀吀⠀刀⸀唀猀愀最攀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀ഀഀ from ਍ऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀愀猀 䐀㄀ Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T1, ਍ऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开挀漀氀甀洀渀崀 愀猀 䌀㄀Ⰰഀഀ ( ਍ऀऀ猀攀氀攀挀琀 ऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀吀愀戀氀攀䤀䐀Ⰰ䌀⸀䌀漀氀甀洀渀䤀䐀Ⰰഀഀ SUM(Q.Weight) as Count, ਍ऀऀऀ㄀  ⸀  ⨀  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ ⼀ ഀഀ ( 1.0 * ( select CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ਍ऀऀऀऀऀ攀氀猀攀 ㄀ഀഀ end ਍ऀऀऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀ഀഀ where Q.SessionID = @SessionID )) as Usage ਍ऀऀ昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_column] as C ਍ऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_querycolumn] as QC ON QC.ColumnID = C.ColumnID ਍ऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_query] as Q ON QC.QueryID = Q.QueryID ਍ऀऀऀ䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_table] as T ON C.TableID = T.TableID ਍ऀऀऀ䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_database] as D ON T.DatabaseID = D.DatabaseID ਍ऀऀऀ愀渀搀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 儀䌀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ Q.SessionID = @SessionID ਍ऀऀऀ䜀刀伀唀倀 䈀夀 䌀⸀䌀漀氀甀洀渀䤀䐀Ⰰ吀⸀吀愀戀氀攀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 ⤀ 愀猀 刀ഀഀ ਍ऀऀऀ眀栀攀爀攀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀㄀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ R.TableID = T1.TableID and ਍ऀऀऀ刀⸀䌀漀氀甀洀渀䤀䐀 㴀 䌀㄀⸀䌀漀氀甀洀渀䤀䐀 愀渀搀ഀഀ D1.SessionID = @SessionID and ਍ऀऀऀ刀⸀䌀漀甀渀琀 㸀  ഀഀ ਍ऀ漀爀搀攀爀 戀礀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰ嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰ嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰ嬀䌀漀氀甀洀渀℀㔀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀 Ⰰ 嬀䌀漀氀甀洀渀℀㔀℀䌀漀氀甀洀渀䤀䐀℀栀椀搀攀崀 ഀഀ FOR XML EXPLICIT ਍攀渀搀ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_database_access_helper_relational] Script Date: 05/23/2008 14:48:42 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ 挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开搀愀琀愀戀愀猀攀开愀挀挀攀猀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀ഀഀ @SessionID int ਍ऀऀऀ愀猀ഀഀ begin select D1.DatabaseName as 'Database Name' ,R.Count as 'Number of references' ,CAST(R.Usage as decimal(38,2)) as 'Percent Usage' from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀㄀ Ⰰഀഀ ( ਍ऀऀऀऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 愀猀 䌀漀甀渀琀Ⰰഀഀ 100.0 * SUM(Q.Weight) / ਍ऀऀऀऀऀऀऀ⠀ ㄀⸀  ⨀ ⠀ऀ猀攀氀攀挀琀ऀ䌀䄀匀䔀 圀䠀䔀一 匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 㸀   吀䠀䔀一  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ഀഀ else 1 ਍ऀऀऀऀऀऀऀऀऀऀऀऀ攀渀搀ऀഀഀ ਍ऀऀऀऀऀऀऀऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀ഀഀ where Q.SessionID = @SessionID )) ਍ऀऀऀऀ愀猀 唀猀愀最攀ഀഀ from ਍ऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ LEFT OUTER JOIN ਍ऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀搀愀琀愀戀愀猀攀崀 愀猀 儀䐀 伀一 儀䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ LEFT OUTER JOIN ਍ऀऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀 愀猀 儀 伀一 儀䐀⸀儀甀攀爀礀䤀䐀 㴀 儀⸀儀甀攀爀礀䤀䐀ഀഀ and Q.SessionID = QD.SessionID and ਍ऀऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ऀऀഀഀ GROUP BY D.DatabaseID ਍ऀऀऀऀ⤀ 愀猀 刀ഀഀ where R.DatabaseID = D1.DatabaseID and ਍ऀऀऀऀ䐀㄀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ R.Count > 0 ਍ऀऀऀऀ漀爀搀攀爀 戀礀 刀⸀䌀漀甀渀琀 搀攀猀挀  攀渀搀ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开搀愀琀愀戀愀猀攀开愀挀挀攀猀猀开栀攀氀瀀攀爀开砀洀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㈀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_database_access_helper_xml] ਍ऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ select 1 as Tag, ਍ऀऀऀ一唀䰀䰀          愀猀 倀愀爀攀渀琀Ⰰഀഀ '' as [DatabaseAccessReport!1!!ELEMENT], ਍ऀऀऀ一唀䰀䰀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Database!2!NumberOfReferences!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀倀攀爀挀攀渀琀唀猀愀最攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ union all ਍ഀഀ ਍ऀ猀攀氀攀挀琀 ㈀ 愀猀 吀愀最Ⰰ ㄀ 愀猀 倀愀爀攀渀琀Ⰰ一唀䰀䰀Ⰰ䐀㄀⸀䐀愀琀愀戀愀猀攀一愀洀攀  Ⰰഀഀ R.Count , ਍ऀ䌀䄀匀吀⠀刀⸀唀猀愀最攀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀  昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_database] as D1 , ਍ऀऀऀऀऀ⠀ഀഀ select D.DatabaseID,SUM(Q.Weight) as Count, ਍ऀऀऀऀऀऀऀऀ㄀  ⸀  ⨀  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ ⼀ ഀഀ ( 1.0 * ( select CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ਍ऀऀऀऀऀऀऀऀऀऀऀऀऀ攀氀猀攀 ㄀ഀഀ end ਍ऀऀऀऀऀऀऀऀऀऀഀഀ from [msdb].[dbo].[DTA_reports_query] as Q ਍ऀऀऀऀऀऀऀऀऀऀऀ眀栀攀爀攀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 ⤀⤀ഀഀ as Usage ਍ऀऀऀ昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀऀऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_querydatabase] as QD ON QD.DatabaseID = D.DatabaseID ਍ऀऀऀऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_query] as Q ON QD.QueryID = Q.QueryID ਍ऀऀऀऀऀऀ愀渀搀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 儀䐀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ Q.SessionID = @SessionID ਍ऀऀऀऀऀऀ䜀刀伀唀倀 䈀夀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ ) as R ਍ऀऀऀऀऀ眀栀攀爀攀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀㄀⸀䐀愀琀愀戀愀猀攀䤀䐀  愀渀搀ഀഀ D1.SessionID = @SessionID and ਍ऀऀऀऀऀ刀⸀䌀漀甀渀琀 㸀  ഀഀ order by Tag,[Database!2!NumberOfReferences!ELEMENT] desc ਍ऀ䘀伀刀 堀䴀䰀 䔀堀倀䰀䤀䌀䤀吀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开搀攀氀攀琀攀开猀攀猀猀椀漀渀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㌀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开搀攀氀攀琀攀开猀攀猀猀椀漀渀崀 ഀഀ @SessionID int ਍愀猀 ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ delete from msdb.dbo.DTA_input where SessionID=@SessionID ਍攀渀搀ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_end_xmlprefix] Script Date: 05/23/2008 14:48:43 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开攀渀搀开砀洀氀瀀爀攀昀椀砀崀ഀഀ as ਍戀攀最椀渀ഀഀ declare @endTags nvarchar(128) ਍ऀ猀攀琀 䀀攀渀搀吀愀最猀 㴀 一✀㰀⼀䄀渀愀氀礀猀椀猀刀攀瀀漀爀琀㸀㰀⼀䐀吀䄀伀甀琀瀀甀琀㸀㰀⼀䐀吀䄀堀䴀䰀㸀✀ഀഀ select @endTags ਍攀渀搀ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开攀瘀攀渀琀开眀攀椀最栀琀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㌀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_event_weight_helper_relational] ਍ऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍ऀऀऀ戀攀最椀渀ऀ猀攀氀攀挀琀 ✀䔀瘀攀渀琀 匀琀爀椀渀最✀㴀 䔀瘀攀渀琀匀琀爀椀渀最Ⰰ ✀圀攀椀最栀琀✀ 㴀 䌀䄀匀吀⠀䔀瘀攀渀琀圀攀椀最栀琀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀ ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ where SessionID=@SessionID and EventWeight>0 ਍ऀऀऀऀऀ漀爀搀攀爀 戀礀 䔀瘀攀渀琀圀攀椀最栀琀 搀攀猀挀  攀渀搀 ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开攀瘀攀渀琀开眀攀椀最栀琀开栀攀氀瀀攀爀开砀洀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㌀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_event_weight_helper_xml] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀 ഀഀ as ਍戀攀最椀渀ഀഀ select 1 as Tag, ਍ऀऀऀ一唀䰀䰀          愀猀 倀愀爀攀渀琀Ⰰഀഀ '' as [EventWeightReport!1!!element], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䔀瘀攀渀琀䐀攀琀愀椀氀猀℀㈀℀䔀瘀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [EventDetails!2!Weight!ELEMENT] ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ ਍ऀ猀攀氀攀挀琀 ㈀         愀猀 吀愀最Ⰰ ഀഀ 1 as Parent, ਍ऀऀऀ一唀䰀䰀 愀猀 嬀儀甀攀爀礀䌀漀猀琀℀㄀℀℀攀氀攀洀攀渀琀崀Ⰰഀഀ EventString as [EventDetails!2!EventString!ELEMENT] , ਍ऀऀऀ䌀䄀匀吀⠀䔀瘀攀渀琀圀攀椀最栀琀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀ 愀猀 嬀䔀瘀攀渀琀䐀攀琀愀椀氀猀℀㈀℀圀攀椀最栀琀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from [msdb].[dbo].[DTA_reports_query] ਍ऀऀऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀 䔀瘀攀渀琀圀攀椀最栀琀㸀 ഀഀ order by Tag,[EventDetails!2!Weight!ELEMENT] desc ਍ऀ䘀伀刀 堀䴀䰀 䔀堀倀䰀䤀䌀䤀吀ऀഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开挀漀氀甀洀渀琀愀戀氀攀椀搀猀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㐀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_get_columntableids] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ猀攀氀攀挀琀 䌀漀氀甀洀渀䤀䐀Ⰰ䐀愀琀愀戀愀猀攀一愀洀攀Ⰰ匀挀栀攀洀愀一愀洀攀Ⰰ吀愀戀氀攀一愀洀攀Ⰰ䌀漀氀甀洀渀一愀洀攀 ഀഀ from [msdb].[dbo].[DTA_reports_column] as C, ਍ऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀 ഀഀ where C.TableID = T.TableID and T.DatabaseID = D.DatabaseID and D.SessionID = @SessionID ਍ഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_get_databasetableids] Script Date: 05/23/2008 14:48:44 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开搀愀琀愀戀愀猀攀琀愀戀氀攀椀搀猀崀ഀഀ @SessionID int ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ select DatabaseID,DatabaseName ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀 ഀഀ where D.SessionID = @SessionID ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开椀渀搀攀砀愀戀氀攀椀搀猀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㐀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_get_indexableids] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ猀攀氀攀挀琀 䤀渀搀攀砀䤀䐀Ⰰ䐀愀琀愀戀愀猀攀一愀洀攀Ⰰ匀挀栀攀洀愀一愀洀攀Ⰰ吀愀戀氀攀一愀洀攀Ⰰ䤀渀搀攀砀一愀洀攀Ⰰ匀攀猀猀椀漀渀唀渀椀焀甀攀昀椀攀爀 ഀഀ from [msdb].[dbo].[DTA_reports_index] as I,[msdb].[dbo].[DTA_reports_table] as T, ਍ऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀 ഀഀ where I.TableID = T.TableID and T.DatabaseID = D.DatabaseID and D.SessionID = @SessionID ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开椀渀琀攀爀愀挀琀椀瘀攀猀琀愀琀甀猀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㔀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_get_interactivestatus] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀 ഀഀ ਍愀猀 ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀ猀攀氀攀挀琀 䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开椀渀瀀甀琀崀 眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开瀀昀琀愀戀氀攀椀搀猀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㔀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_get_pftableids] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ猀攀氀攀挀琀 倀愀爀琀椀琀椀漀渀䘀甀渀挀琀椀漀渀䤀䐀 Ⰰ䐀愀琀愀戀愀猀攀一愀洀攀 Ⰰ倀愀爀琀椀琀椀漀渀䘀甀渀挀琀椀漀渀一愀洀攀  ഀഀ from [msdb].[dbo].[DTA_reports_partitionfunction] as PF, ਍ऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀 ഀഀ where PF.DatabaseID = D.DatabaseID ਍ऀ愀渀搀 䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_get_pstableids] Script Date: 05/23/2008 14:48:45 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开瀀猀琀愀戀氀攀椀搀猀崀ഀഀ @SessionID int ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ select PartitionSchemeID,DatabaseName,PartitionSchemeName ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开瀀愀爀琀椀琀椀漀渀昀甀渀挀琀椀漀渀崀  愀猀 倀䘀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_partitionscheme] as PS, ਍ऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀 ഀഀ where PS.PartitionFunctionID = PF.PartitionFunctionID and ਍ऀ倀䘀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀 䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ऀഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_get_session_report] Script Date: 05/23/2008 14:48:46 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开猀攀猀猀椀漀渀开爀攀瀀漀爀琀崀 ഀഀ @SessionID int, ਍ऀ䀀刀攀瀀漀爀琀䤀䐀 椀渀琀Ⰰഀഀ @ReportType int ਍愀猀 ഀഀ begin ਍ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ椀昀 䀀刀攀瀀漀爀琀吀礀瀀攀 㴀  ഀഀ begin ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Query Cost Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ if @ReportID = 2 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_query_cost_helper_relational @SessionID ਍ऀऀ攀渀搀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 䔀瘀攀渀琀 䘀爀攀焀甀攀渀挀礀 刀攀瀀漀爀琀                                     ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㌀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开攀瘀攀渀琀开眀攀椀最栀琀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀 䀀匀攀猀猀椀漀渀䤀䐀ऀऀऀऀऀऀऀऀഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Query Detail Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 4 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_query_detail_helper_relational @SessionID ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 䌀甀爀爀攀渀琀 儀甀攀爀礀 䤀渀搀攀砀 刀攀氀愀琀椀漀渀猀 刀攀瀀漀爀琀                        ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 㔀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开焀甀攀爀礀开椀渀搀攀砀爀攀氀愀琀椀漀渀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀  䀀匀攀猀猀椀漀渀䤀䐀Ⰰ ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Recommended Query Index Relations Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 6 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_query_indexrelations_helper_relational @SessionID,1 ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 䌀甀爀爀攀渀琀 儀甀攀爀礀 䌀漀猀琀 刀愀渀最攀ऀऀ                             ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 㜀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀爀愀渀最攀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Recommended Query Cost Range */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 8 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_query_costrange_helper_relational @SessionID ਍ऀऀ攀渀搀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 䌀甀爀爀攀渀琀 儀甀攀爀礀 䤀渀搀攀砀 唀猀愀最攀 刀攀瀀漀爀琀ऀऀ                       ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 㤀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开椀渀搀攀砀开甀猀愀最攀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀 䀀匀攀猀猀椀漀渀䤀䐀Ⰰ ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Recommended Query Index Usage Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 10 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_index_usage_helper_relational @SessionID,1 ਍ऀऀ攀渀搀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 䌀甀爀爀攀渀琀 䤀渀搀攀砀 䐀攀琀愀椀氀 刀攀瀀漀爀琀                                ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㄀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开椀渀搀攀砀开搀攀琀愀椀氀开挀甀爀爀攀渀琀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀  䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Recommended Index Detail Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 12 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_index_detail_recommended_helper_relational @SessionID ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 嘀椀攀眀 吀愀戀氀攀 刀攀氀愀琀椀漀渀猀 刀攀瀀漀爀琀                                ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㌀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开瘀椀攀眀开琀愀戀氀攀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀  䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Workload Analysis Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 14 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_wkld_analysis_helper_relational @SessionID ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 䄀氀氀 漀戀樀攀挀琀 愀挀挀攀猀猀 爀攀瀀漀爀琀猀                                   ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㔀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开搀愀琀愀戀愀猀攀开愀挀挀攀猀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㘀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开琀愀戀氀攀开愀挀挀攀猀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㜀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开挀漀氀甀洀渀开愀挀挀攀猀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀ攀渀搀ഀഀ -- XML Reports ਍ऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀吀礀瀀攀 㴀 ㄀ഀഀ begin ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Query Cost Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ if @ReportID = 2 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_query_cost_helper_xml @SessionID ਍ऀऀ攀渀搀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 䔀瘀攀渀琀 䘀爀攀焀甀攀渀挀礀 刀攀瀀漀爀琀                                     ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㌀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开攀瘀攀渀琀开眀攀椀最栀琀开栀攀氀瀀攀爀开砀洀氀 䀀匀攀猀猀椀漀渀䤀䐀ऀऀऀऀऀऀऀऀഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Query Detail Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 4 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_query_detail_helper_xml @SessionID ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 䌀甀爀爀攀渀琀 儀甀攀爀礀 䤀渀搀攀砀 刀攀氀愀琀椀漀渀猀 刀攀瀀漀爀琀                        ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 㔀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开焀甀攀爀礀开椀渀搀攀砀爀攀氀愀琀椀漀渀猀开栀攀氀瀀攀爀开砀洀氀  䀀匀攀猀猀椀漀渀䤀䐀Ⰰ ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Recommended Query Index Relations Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 6 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_query_indexrelations_helper_xml @SessionID,1 ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 䌀甀爀爀攀渀琀 儀甀攀爀礀 䌀漀猀琀 刀愀渀最攀ऀऀ                             ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 㜀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀爀愀渀最攀开栀攀氀瀀攀爀开砀洀氀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Recommended Query Cost Range */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 8 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_query_costrange_helper_xml @SessionID ਍ऀऀ攀渀搀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 䌀甀爀爀攀渀琀 儀甀攀爀礀 䤀渀搀攀砀 唀猀愀最攀 刀攀瀀漀爀琀ऀऀ                       ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 㤀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开椀渀搀攀砀开甀猀愀最攀开栀攀氀瀀攀爀开砀洀氀 䀀匀攀猀猀椀漀渀䤀䐀Ⰰ ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Recommended Query Index Usage Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 10 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_index_usage_helper_xml @SessionID,1 ਍ऀऀ攀渀搀ഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 䌀甀爀爀攀渀琀 䤀渀搀攀砀 䐀攀琀愀椀氀 刀攀瀀漀爀琀                                ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㄀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开椀渀搀攀砀开挀甀爀爀攀渀琀开搀攀琀愀椀氀开栀攀氀瀀攀爀开砀洀氀  䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Recommended Index Detail Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 12 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_index_recommended_detail_helper_xml @SessionID ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 嘀椀攀眀 吀愀戀氀攀 刀攀氀愀琀椀漀渀猀 刀攀瀀漀爀琀                                ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㌀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开瘀椀攀眀开琀愀戀氀攀开栀攀氀瀀攀爀开砀洀氀  䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ /* Workload Analysis Report */ ਍ऀऀ⼀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⨀⼀ഀഀ else if @ReportID = 14 ਍ऀऀ戀攀最椀渀ഀഀ exec sp_DTA_wkld_analysis_helper_xml @SessionID ਍ऀऀ攀渀搀ऀഀഀ /**************************************************************/ ਍ऀऀ⼀⨀ 䄀氀氀 漀戀樀攀挀琀 愀挀挀攀猀猀 爀攀瀀漀爀琀猀                                   ⨀⼀ഀഀ /**************************************************************/ ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㔀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开搀愀琀愀戀愀猀攀开愀挀挀攀猀猀开栀攀氀瀀攀爀开砀洀氀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㘀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开琀愀戀氀攀开愀挀挀攀猀猀开栀攀氀瀀攀爀开砀洀氀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀऀ攀氀猀攀 椀昀 䀀刀攀瀀漀爀琀䤀䐀 㴀 ㄀㜀ഀഀ begin ਍ऀऀऀ攀砀攀挀 猀瀀开䐀吀䄀开挀漀氀甀洀渀开愀挀挀攀猀猀开栀攀氀瀀攀爀开砀洀氀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ऀ攀渀搀ऀऀഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开猀攀猀猀椀漀渀开琀甀渀椀渀最开爀攀猀甀氀琀猀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㘀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_get_session_tuning_results] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀 ഀഀ as ਍戀攀最椀渀ഀഀ set nocount on ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀ猀攀氀攀挀琀ऀ䘀椀渀椀猀栀匀琀愀琀甀猀Ⰰ吀甀渀椀渀最刀攀猀甀氀琀猀 ഀഀ from msdb.dbo.DTA_output ਍ऀ眀栀攀爀攀ऀ匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开琀愀戀氀攀椀搀猀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㘀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_get_tableids] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ猀攀氀攀挀琀 吀愀戀氀攀䤀䐀Ⰰ䐀愀琀愀戀愀猀攀一愀洀攀Ⰰ匀挀栀攀洀愀一愀洀攀Ⰰ吀愀戀氀攀一愀洀攀 ഀഀ from [msdb].[dbo].[DTA_reports_table] as T,[msdb].[dbo].[DTA_reports_database] as D ਍ऀ眀栀攀爀攀 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀 䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开琀甀渀椀渀最氀漀最崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㜀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开琀甀渀椀渀最氀漀最崀ഀഀ @SessionID int, ਍ऀ䀀堀䴀䰀 椀渀琀 㴀  Ⰰഀഀ @LastRowRetrieved int = 0, ਍    䀀䜀攀琀䘀爀攀焀甀攀渀挀礀䘀漀爀刀漀眀䤀䐀伀渀氀礀 椀渀琀 㴀  ഀഀ ਍愀猀ഀഀ begin ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ declare @retval int ਍ऀ搀攀挀氀愀爀攀ऀ䀀䰀漀最吀愀戀氀攀一愀洀攀 渀瘀愀爀挀栀愀爀⠀㄀㈀㠀 ⤀ഀഀ declare @DefaultTableName nvarchar(128) ਍ऀ搀攀挀氀愀爀攀 䀀匀儀䰀匀琀爀椀渀最 渀瘀愀爀挀栀愀爀⠀㈀ 㐀㠀⤀ഀഀ --CategoryID,Event,Statement,Frequency,Reason ਍ऀ搀攀挀氀愀爀攀 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开䌀愀琀攀最漀爀礀䤀䐀 渀瘀愀爀挀栀愀爀⠀㄀㈀㠀⤀ഀഀ declare @localized_string_Event nvarchar(128) ਍ऀ搀攀挀氀愀爀攀 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开匀琀愀琀攀洀攀渀琀 渀瘀愀爀挀栀愀爀⠀㄀㈀㠀⤀ഀഀ declare @localized_string_Frequency nvarchar(128) ਍ऀ搀攀挀氀愀爀攀 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开刀攀愀猀漀渀 渀瘀愀爀挀栀愀爀⠀㄀㈀㠀⤀ഀഀ ਍ऀ猀攀琀 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开䌀愀琀攀最漀爀礀䤀䐀 㴀 一✀✀✀䌀愀琀攀最漀爀礀䤀䐀✀✀✀ഀഀ set @localized_string_Event = N'''Event''' ਍ऀ猀攀琀 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开匀琀愀琀攀洀攀渀琀 㴀 一✀✀✀匀琀愀琀攀洀攀渀琀✀✀✀ഀഀ set @localized_string_Frequency = N'''Frequency''' ਍ऀ猀攀琀 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开刀攀愀猀漀渀 㴀 一✀✀✀刀攀愀猀漀渀✀✀✀ഀഀ ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ set @DefaultTableName = '[msdb].[dbo].[DTA_tuninglog]' ਍ऀ猀攀琀 䀀䰀漀最吀愀戀氀攀一愀洀攀 㴀 ✀ ✀ഀഀ select top 1 @LogTableName = LogTableName from DTA_input where SessionID = @SessionID ਍ഀഀ if (@LogTableName = ' ') ਍ऀऀ爀攀琀甀爀渀 ⠀ ⤀ഀഀ ਍ഀഀ if @XML = 0 ਍ऀ戀攀最椀渀ഀഀ if (@GetFrequencyForRowIDOnly = 0) ਍ऀऀ戀攀最椀渀ഀഀ set @SQLString ='select CategoryID as ' + @localized_string_CategoryID + ਍ऀऀऀऀऀऀऀ✀ Ⰰ䔀瘀攀渀琀 愀猀 ✀ ⬀  䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开䔀瘀攀渀琀 ⬀ഀഀ ' ,Statement as ' + @localized_string_Statement + ਍ऀऀऀऀऀऀऀ✀ Ⰰ䘀爀攀焀甀攀渀挀礀 愀猀 ✀ ⬀ 䀀氀漀挀愀氀椀稀攀搀开猀琀爀椀渀最开䘀爀攀焀甀攀渀挀礀 ⬀ഀഀ ' ,Reason as ' + @localized_string_Reason + ਍ऀऀऀऀऀऀऀ✀ 昀爀漀洀 ✀ഀഀ end ਍ऀऀ攀氀猀攀ഀഀ begin ਍ऀऀऀ猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 一✀ 猀攀氀攀挀琀 䘀爀攀焀甀攀渀挀礀 昀爀漀洀 ✀ഀഀ end ਍ऀऀ猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 䀀匀儀䰀匀琀爀椀渀最 ⬀ 䀀䰀漀最吀愀戀氀攀一愀洀攀ഀഀ set @SQLString = @SQLString + N' where SessionID = ' ਍ऀऀ猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 䀀匀儀䰀匀琀爀椀渀最 ⬀ 䌀伀一嘀䔀刀吀⠀渀瘀愀爀挀栀愀爀⠀㄀ ⤀Ⰰ䀀匀攀猀猀椀漀渀䤀䐀⤀ഀഀ set @SQLString = @SQLString + N' and RowID > ' ਍        猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 䀀匀儀䰀匀琀爀椀渀最 ⬀ 䌀伀一嘀䔀刀吀⠀渀瘀愀爀挀栀愀爀⠀㄀ ⤀Ⰰ䀀䰀愀猀琀刀漀眀刀攀琀爀椀攀瘀攀搀⤀ഀഀ set @SQLString = @SQLString + ' order by RowID' ਍ഀഀ exec (@SQLString) ਍ऀ攀渀搀ഀഀ else ਍ऀ戀攀最椀渀ഀഀ if @LogTableName = @DefaultTableName ਍ऀऀ戀攀最椀渀ഀഀ if (@GetFrequencyForRowIDOnly = 0) ਍ऀऀऀ戀攀最椀渀ഀഀ select CategoryID,Event,Statement,Frequency,Reason from [msdb].[dbo].[DTA_tuninglog] ਍ऀऀऀऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀 刀漀眀䤀䐀 㸀 䀀䰀愀猀琀刀漀眀刀攀琀爀椀攀瘀攀搀ഀഀ FOR XML RAW ਍ऀऀऀ攀渀搀ഀഀ else ਍ऀऀऀ戀攀最椀渀ഀഀ select Frequency from [msdb].[dbo].[DTA_tuninglog] ਍ऀऀऀऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀 刀漀眀䤀䐀 㸀 䀀䰀愀猀琀刀漀眀刀攀琀爀椀攀瘀攀搀ഀഀ FOR XML RAW ਍ऀऀऀ攀渀搀ഀഀ return(0) ਍ऀऀ攀渀搀ഀഀ ਍ऀऀ椀昀 ⠀䀀䜀攀琀䘀爀攀焀甀攀渀挀礀䘀漀爀刀漀眀䤀䐀伀渀氀礀 㴀  ⤀ഀഀ begin ਍ऀऀऀ猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 一✀ 猀攀氀攀挀琀 䌀愀琀攀最漀爀礀䤀䐀Ⰰ䔀瘀攀渀琀Ⰰ匀琀愀琀攀洀攀渀琀Ⰰ䘀爀攀焀甀攀渀挀礀Ⰰ刀攀愀猀漀渀 昀爀漀洀 ✀ഀഀ end ਍ऀऀ攀氀猀攀ഀഀ begin ਍ऀऀऀ猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 一✀ 猀攀氀攀挀琀 䘀爀攀焀甀攀渀挀礀 昀爀漀洀 ✀ഀഀ end ਍ऀऀ猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀  䀀匀儀䰀匀琀爀椀渀最 ⬀ 䀀䰀漀最吀愀戀氀攀一愀洀攀ഀഀ set @SQLString = @SQLString + N' where SessionID = ' ਍ऀऀ猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 䀀匀儀䰀匀琀爀椀渀最 ⬀ 䌀伀一嘀䔀刀吀⠀渀瘀愀爀挀栀愀爀⠀㄀ ⤀Ⰰ䀀匀攀猀猀椀漀渀䤀䐀⤀ഀഀ set @SQLString = @SQLString + N' and RowID > ' ਍        猀攀琀 䀀匀儀䰀匀琀爀椀渀最 㴀 䀀匀儀䰀匀琀爀椀渀最 ⬀ 䌀伀一嘀䔀刀吀⠀渀瘀愀爀挀栀愀爀⠀㄀ ⤀Ⰰ䀀䰀愀猀琀刀漀眀刀攀琀爀椀攀瘀攀搀⤀ഀഀ set @SQLString = @SQLString + 'FOR XML RAW' ਍ഀഀ exec (@SQLString) ਍ഀഀ end ਍攀渀搀ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_get_tuningoptions] Script Date: 05/23/2008 14:48:47 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开最攀琀开琀甀渀椀渀最漀瀀琀椀漀渀猀崀ഀഀ @SessionID int ਍ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ猀攀氀攀挀琀 吀甀渀椀渀最伀瀀琀椀漀渀猀 昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开椀渀瀀甀琀崀 眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ऀഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_help_session] Script Date: 05/23/2008 14:48:48 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ഀഀ create procedure [dbo].[sp_DTA_help_session] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀 㴀  Ⰰഀഀ @IncludeTuningOptions int = 0 ਍愀猀 ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀琀甀渀椀渀最开漀眀渀攀爀 渀瘀愀爀挀栀愀爀⠀㈀㔀㘀⤀ഀഀ declare @retval int ਍ऀ搀攀挀氀愀爀攀 䀀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 琀椀渀礀椀渀琀ഀഀ declare @delta int ਍ഀഀ declare @cursessionID int ਍ऀ搀攀挀氀愀爀攀 䀀搀戀渀愀洀攀 渀瘀愀爀挀栀愀爀⠀㄀㈀㠀⤀ഀഀ declare @dbid int ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀挀漀搀攀 椀渀琀ഀഀ declare @sql nvarchar(256) ਍ऀഀഀ set nocount on ਍ഀഀ -- List all Sessions mode ਍ऀ椀昀 䀀匀攀猀猀椀漀渀䤀䐀 㴀  ഀഀ begin ਍ऀऀⴀⴀ 䤀昀 猀礀猀愀搀洀椀渀 爀漀氀攀 琀栀攀渀 爀漀眀猀攀琀 栀愀猀 愀氀氀 琀栀攀 爀漀眀猀 椀渀 琀栀攀 琀愀戀氀攀ഀഀ -- Return everything ਍ऀऀ椀昀 ⠀椀猀渀甀氀氀⠀䤀匀开匀刀嘀刀伀䰀䔀䴀䔀䴀䈀䔀刀⠀一✀猀礀猀愀搀洀椀渀✀⤀Ⰰ  ⤀ 㴀 ㄀⤀ഀഀ begin ਍ऀऀഀഀ if (@IncludeTuningOptions = 0) ਍ऀऀऀ戀攀最椀渀ഀഀ select I.SessionID, I.SessionName, I.InteractiveStatus, ਍ऀऀऀऀऀऀ䤀⸀䌀爀攀愀琀椀漀渀吀椀洀攀Ⰰ 䤀⸀匀挀栀攀搀甀氀攀搀匀琀愀爀琀吀椀洀攀Ⰰ 伀⸀匀琀漀瀀吀椀洀攀Ⰰ䤀⸀䜀氀漀戀愀氀匀攀猀猀椀漀渀䤀䐀ഀഀ from msdb.dbo.DTA_input I left outer join msdb.dbo.DTA_output O ਍ऀऀऀऀऀऀ漀渀 䤀⸀匀攀猀猀椀漀渀䤀䐀 㴀 伀⸀匀攀猀猀椀漀渀䤀䐀ऀഀഀ order by ਍ऀऀऀऀऀऀ䤀⸀匀攀猀猀椀漀渀䤀䐀ऀ搀攀猀挀ऀऀऀऀऀഀഀ end ਍ऀऀऀഀഀ else if (@IncludeTuningOptions = 1) ਍ऀऀऀ戀攀最椀渀ഀഀ select I.SessionID, I.SessionName, I.InteractiveStatus, ਍ऀऀऀऀऀऀ䤀⸀䌀爀攀愀琀椀漀渀吀椀洀攀Ⰰ 䤀⸀匀挀栀攀搀甀氀攀搀匀琀愀爀琀吀椀洀攀Ⰰ 伀⸀匀琀漀瀀吀椀洀攀Ⰰ䤀⸀吀甀渀椀渀最伀瀀琀椀漀渀猀Ⰰ䤀⸀䜀氀漀戀愀氀匀攀猀猀椀漀渀䤀䐀ഀഀ from msdb.dbo.DTA_input I left outer join msdb.dbo.DTA_output as O ਍ऀऀऀऀऀऀ漀渀 䤀⸀匀攀猀猀椀漀渀䤀䐀 㴀 伀⸀匀攀猀猀椀漀渀䤀䐀ഀഀ order by ਍ऀऀऀऀऀऀ䤀⸀匀攀猀猀椀漀渀䤀䐀ऀ搀攀猀挀ഀഀ end ਍ऀഀഀ end ਍ऀऀഀഀ else ਍ऀऀ戀攀最椀渀ഀഀ -- Temporary table to store sessionid and databases passed in by user ਍ऀऀऀ挀爀攀愀琀攀 琀愀戀氀攀 ⌀愀氀氀䐀椀猀琀椀渀挀琀䐀戀䤀搀猀 ⠀䐀愀琀愀戀愀猀攀䤀䐀 椀渀琀⤀ഀഀ -- Init variables ਍ऀऀऀ猀攀琀 䀀搀戀椀搀 㴀  ഀഀ set @retcode = 1 ਍ऀऀऀⴀⴀ 䜀攀琀 愀氀氀 搀愀琀愀戀愀猀攀 渀愀洀攀猀 瀀愀猀猀攀搀 椀渀 戀礀 甀猀攀爀 ⠀䤀猀䐀愀琀愀戀愀猀攀匀攀氀攀挀琀攀搀吀漀吀甀渀攀 㴀㄀⤀ഀഀ declare db_cursor cursor for ਍ऀऀऀ猀攀氀攀挀琀 搀椀猀琀椀渀挀琀⠀䐀愀琀愀戀愀猀攀一愀洀攀⤀ 昀爀漀洀 䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀ഀഀ where IsDatabaseSelectedToTune = 1 ਍ऀऀऀⴀⴀ 伀瀀攀渀 挀甀爀猀漀爀ഀഀ open db_cursor ਍ऀऀऀⴀⴀ 䘀攀琀挀栀 昀椀爀猀琀 猀攀猀猀椀漀渀 椀搀 愀渀搀 搀戀 渀愀洀攀ഀഀ fetch next from db_cursor ਍ऀऀऀ椀渀琀漀 䀀搀戀渀愀洀攀ഀഀ ਍ऀऀऀⴀⴀ 氀漀漀瀀 愀渀搀 最攀琀 愀氀氀 琀栀攀 搀愀琀愀戀愀猀攀猀 猀攀氀攀挀琀攀搀 琀漀 琀甀渀攀ഀഀ while @@fetch_status = 0 ਍ऀऀऀⴀⴀ 䰀漀漀瀀ഀഀ begin ਍ऀऀऀऀⴀⴀ 猀攀琀 䀀爀攀琀挀漀搀攀 㴀 ㄀ 椀渀 琀栀攀 戀攀最椀渀渀椀渀最 琀漀 椀渀搀椀挀愀琀攀 猀甀挀挀攀猀猀ഀഀ set @retcode = 1 ਍ऀऀऀऀⴀⴀ 䜀攀琀 搀愀琀愀戀愀猀攀 椀搀ഀഀ select @dbid = DB_ID(@dbname) ਍ऀऀऀऀⴀⴀ 䤀渀 夀甀欀漀渀 琀栀椀猀 洀愀猀欀猀 琀栀攀 攀爀爀漀爀 洀攀猀猀愀最攀猀⸀䤀昀 渀漀琀 漀眀渀攀爀 搀漀渀琀 爀攀琀甀爀渀ഀഀ -- error message in SP ਍ऀऀऀऀ猀攀琀 䀀猀焀氀 㴀 一✀戀攀最椀渀 琀爀礀ഀഀ dbcc autopilot(5,@dbid) WITH NO_INFOMSGS ਍ऀऀऀऀ攀渀搀 琀爀礀ഀഀ begin catch ਍ऀऀऀऀऀ猀攀琀 䀀搀戀椀搀 㴀  ഀഀ set @retcode = 0 ਍ऀऀऀऀ攀渀搀 挀愀琀挀栀✀ഀഀ execute sp_executesql @sql ਍ऀऀऀऀऀⰀ 一✀䀀搀戀椀搀 椀渀琀 漀甀琀瀀甀琀Ⰰ 䀀爀攀琀挀漀搀攀 椀渀琀 伀唀吀倀唀吀✀ ഀഀ , @dbid output ਍ऀऀऀऀऀⰀ 䀀爀攀琀挀漀搀攀 漀甀琀瀀甀琀ഀഀ ਍ऀऀऀऀⴀⴀ 搀戀椀搀 椀猀   椀昀 甀猀攀爀 搀漀攀猀渀琀 栀愀瘀攀 瀀攀爀洀椀猀猀椀漀渀 琀漀 搀漀 搀戀挀挀 挀愀氀氀ഀഀ insert into #allDistinctDbIds(DatabaseID) values ਍ऀऀऀऀऀऀऀऀ⠀䀀搀戀椀搀⤀ഀഀ -- fetch next ਍ऀऀऀऀ昀攀琀挀栀 昀爀漀洀 搀戀开挀甀爀猀漀爀 椀渀琀漀 䀀搀戀渀愀洀攀ऀऀഀഀ -- end the cursor loop ਍ऀऀऀ攀渀搀ऀऀഀഀ -- clean up cursor ਍ऀऀऀ挀氀漀猀攀 搀戀开挀甀爀猀漀爀ഀഀ deallocate db_cursor ਍ഀഀ ਍ऀऀऀ猀攀氀攀挀琀 匀攀猀猀椀漀渀䤀䐀 ഀഀ into #allValidSessionIds ਍ऀऀऀ昀爀漀洀 䐀吀䄀开椀渀瀀甀琀 愀猀 䤀ഀഀ where ਍ऀऀऀऀ⠀⠀猀攀氀攀挀琀 挀漀甀渀琀⠀⨀⤀ 昀爀漀洀ഀഀ #allDistinctDbIds ,DTA_reports_database as D ਍ऀऀऀऀ眀栀攀爀攀 ⌀愀氀氀䐀椀猀琀椀渀挀琀䐀戀䤀搀猀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀䈀开䤀䐀⠀䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀⤀ഀഀ and I.SessionID = D.SessionID ਍ऀऀऀऀ最爀漀甀瀀 戀礀 䐀⸀匀攀猀猀椀漀渀䤀䐀 ⤀ 㴀 ഀഀ (select count(*) from DTA_reports_database as D ਍ऀऀऀऀ眀栀攀爀攀 䤀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䐀⸀匀攀猀猀椀漀渀䤀䐀ഀഀ and D.IsDatabaseSelectedToTune = 1 ਍ऀऀऀऀ最爀漀甀瀀 戀礀 䐀⸀匀攀猀猀椀漀渀䤀䐀 ⤀ഀഀ ) ਍ऀऀऀ最爀漀甀瀀 戀礀 䤀⸀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ഀഀ -- Return only sessions with matching user name ਍ऀऀऀⴀⴀ 䤀昀 挀漀甀渀琀 漀昀 爀漀眀猀 眀椀琀栀 䐀愀琀愀戀愀猀攀䤀䐀 㴀   椀猀 㸀   琀栀攀渀 瀀攀爀洀椀猀猀椀漀渀 搀攀渀椀攀搀ഀഀ if ( @IncludeTuningOptions = 0 ) ਍ऀऀऀ戀攀最椀渀ഀഀ select I.SessionID , I.SessionName, I.InteractiveStatus, ਍ऀऀऀऀऀऀ䤀⸀䌀爀攀愀琀椀漀渀吀椀洀攀Ⰰ 䤀⸀匀挀栀攀搀甀氀攀搀匀琀愀爀琀吀椀洀攀Ⰰ 伀⸀匀琀漀瀀吀椀洀攀Ⰰ䤀⸀䜀氀漀戀愀氀匀攀猀猀椀漀渀䤀䐀ഀഀ from msdb.dbo.DTA_input I left outer join msdb.dbo.DTA_output O ਍ऀऀऀऀऀऀ漀渀  䤀⸀匀攀猀猀椀漀渀䤀䐀 㴀 伀⸀匀攀猀猀椀漀渀䤀䐀ഀഀ inner join #allValidSessionIds S ਍ऀऀऀऀऀऀ漀渀ऀ䤀⸀匀攀猀猀椀漀渀䤀䐀 㴀 匀⸀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀऀऀऀऀऀഀഀ order by ਍ऀऀऀऀऀऀ䤀⸀匀攀猀猀椀漀渀䤀䐀ऀ搀攀猀挀ऀऀऀऀऀഀഀ end ਍ऀऀऀഀഀ else if (@IncludeTuningOptions = 1) ਍ऀऀऀ戀攀最椀渀ഀഀ select I.SessionID , I.SessionName, I.InteractiveStatus, ਍ऀऀऀऀऀऀ䤀⸀䌀爀攀愀琀椀漀渀吀椀洀攀Ⰰ 䤀⸀匀挀栀攀搀甀氀攀搀匀琀愀爀琀吀椀洀攀Ⰰ 伀⸀匀琀漀瀀吀椀洀攀Ⰰ䤀⸀吀甀渀椀渀最伀瀀琀椀漀渀猀Ⰰ䤀⸀䜀氀漀戀愀氀匀攀猀猀椀漀渀䤀䐀ഀഀ from msdb.dbo.DTA_input I left outer join msdb.dbo.DTA_output O ਍ऀऀऀऀऀऀ漀渀  䤀⸀匀攀猀猀椀漀渀䤀䐀 㴀 伀⸀匀攀猀猀椀漀渀䤀䐀ഀഀ inner join #allValidSessionIds S ਍ऀऀऀऀऀऀ漀渀ऀ䤀⸀匀攀猀猀椀漀渀䤀䐀 㴀 匀⸀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀऀऀऀऀऀഀഀ order by ਍ऀऀऀऀऀऀ䤀⸀匀攀猀猀椀漀渀䤀䐀ऀ搀攀猀挀ऀऀऀऀऀഀഀ ਍ऀऀऀ攀渀搀ഀഀ drop table #allDistinctDbIds ਍ऀऀऀ搀爀漀瀀 琀愀戀氀攀 ⌀愀氀氀嘀愀氀椀搀匀攀猀猀椀漀渀䤀搀猀ഀഀ end ਍ऀ攀渀搀ഀഀ ਍ऀ攀氀猀攀ഀഀ begin ਍ऀऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ if @retval = 1 ਍ऀऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀഀഀ if ( @IncludeTuningOptions = 0) ਍ऀऀ戀攀最椀渀ഀഀ select I.SessionID, I.SessionName, I.InteractiveStatus, ਍ऀऀऀऀऀ䤀⸀䌀爀攀愀琀椀漀渀吀椀洀攀Ⰰ 䤀⸀匀挀栀攀搀甀氀攀搀匀琀愀爀琀吀椀洀攀Ⰰ 伀⸀匀琀漀瀀吀椀洀攀Ⰰ䤀⸀䜀氀漀戀愀氀匀攀猀猀椀漀渀䤀䐀ഀഀ from msdb.dbo.DTA_input I left outer join msdb.dbo.DTA_output O ਍ऀऀऀ漀渀  䤀⸀匀攀猀猀椀漀渀䤀䐀 㴀 伀⸀匀攀猀猀椀漀渀䤀䐀ഀഀ where I.SessionID = @SessionID ਍ऀऀ攀渀搀ഀഀ else if (@IncludeTuningOptions = 1) ਍ऀऀ戀攀最椀渀ഀഀ select I.SessionID, I.SessionName, I.InteractiveStatus, ਍ऀऀऀऀऀ䤀⸀䌀爀攀愀琀椀漀渀吀椀洀攀Ⰰ 䤀⸀匀挀栀攀搀甀氀攀搀匀琀愀爀琀吀椀洀攀Ⰰ 伀⸀匀琀漀瀀吀椀洀攀Ⰰ䤀⸀吀甀渀椀渀最伀瀀琀椀漀渀猀Ⰰ䤀⸀䜀氀漀戀愀氀匀攀猀猀椀漀渀䤀䐀ഀഀ from msdb.dbo.DTA_input I left outer join msdb.dbo.DTA_output O ਍ऀऀऀ漀渀  䤀⸀匀攀猀猀椀漀渀䤀䐀 㴀 伀⸀匀攀猀猀椀漀渀䤀䐀ഀഀ where I.SessionID = @SessionID ਍ऀऀ攀渀搀ഀഀ ਍ऀऀⴀⴀ 匀攀挀漀渀搀 爀漀眀猀攀琀 爀攀琀甀爀渀攀搀 昀漀爀 䐀吀䄀 琀漀 瀀爀漀挀攀猀猀 瀀爀漀最爀攀猀猀 椀渀昀漀爀洀愀琀椀漀渀ഀഀ select ProgressEventID,TuningStage,WorkloadConsumption,EstImprovement, ਍ऀऀऀऀ倀爀漀最爀攀猀猀䔀瘀攀渀琀吀椀洀攀 Ⰰ䌀漀渀猀甀洀椀渀最圀漀爀欀䰀漀愀搀䴀攀猀猀愀最攀Ⰰ倀攀爀昀漀爀洀椀渀最䄀渀愀氀礀猀椀猀䴀攀猀猀愀最攀Ⰰ䜀攀渀攀爀愀琀椀渀最刀攀瀀漀爀琀猀䴀攀猀猀愀最攀ഀഀ from msdb.dbo.DTA_progress ਍ऀऀ眀栀攀爀攀ऀ匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ order by ProgressEventID ਍ऀऀऀऀഀഀ ਍ऀऀⴀⴀ 匀攀琀 椀渀琀攀爀愀挀琀椀瘀攀 猀琀愀琀甀猀 琀漀 㘀 椀昀 愀 琀椀洀攀 漀昀 㔀 洀椀渀猀 栀愀猀 攀氀愀瀀猀攀搀ഀഀ -- Next time help session is called DTA will exit ਍ऀऀഀഀ select @InteractiveStatus=InteractiveStatus ਍ऀऀ昀爀漀洀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开椀渀瀀甀琀ഀഀ where SessionID = @SessionID ਍ഀഀ if (@InteractiveStatus IS NOT NULL and( @InteractiveStatus <> 4 and @InteractiveStatus <> 6)) ਍ऀऀ戀攀最椀渀ഀഀ select @delta=DATEDIFF(minute ,ProgressEventTime,getdate()) ਍ऀऀऀ昀爀漀洀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开瀀爀漀最爀攀猀猀 ഀഀ where SessionID =@SessionID ਍ऀऀऀ漀爀搀攀爀 戀礀 吀甀渀椀渀最匀琀愀最攀 䄀匀䌀ഀഀ ਍ऀऀऀ椀昀⠀䀀搀攀氀琀愀 㸀 ㌀ ⤀ഀഀ begin ਍ऀऀऀऀ甀瀀搀愀琀攀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开椀渀瀀甀琀崀 猀攀琀 䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 㴀 㘀ഀഀ where SessionID = @SessionID ਍ऀऀऀ攀渀搀ഀഀ end ਍ഀഀ ਍ऀ攀渀搀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀搀攀砀开挀甀爀爀攀渀琀开搀攀琀愀椀氀开栀攀氀瀀攀爀开砀洀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㠀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_index_current_detail_helper_xml] ਍ऀऀऀऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ select 1 as Tag, ਍ऀऀ一唀䰀䰀          愀猀 倀愀爀攀渀琀Ⰰഀഀ '' as [IndexDetailReport!1!!ELEMENT], ਍ऀऀ✀琀爀甀攀✀ 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀䌀甀爀爀攀渀琀崀Ⰰഀഀ NULL as [Database!2!DatabaseID!hide], ਍ऀऀ一唀䰀䰀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!3!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!5!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䌀氀甀猀琀攀爀攀搀崀Ⰰഀഀ NULL as [Index!5!Unique], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䠀攀愀瀀崀Ⰰഀഀ NULL as [Index!5!IndexSizeInMB], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀漀眀猀崀ഀഀ union all ਍ऀ猀攀氀攀挀琀 ㈀            愀猀 吀愀最Ⰰ ഀഀ 1 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [IndexDetailReport!1!Recommended], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!4!TableID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!IndexID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!Clustered], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀唀渀椀焀甀攀崀Ⰰഀഀ NULL as [Index!5!Heap], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀匀椀稀攀䤀渀䴀䈀崀Ⰰഀഀ NULL as [Index!5!NumberOfRows] ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID in ਍ऀ⠀猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_index] as I ਍ऀऀऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ T.TableID = I.TableID and ਍ऀऀऀ䤀⸀䤀猀䔀砀椀猀琀椀渀最 㴀 ㄀ഀഀ group by D.DatabaseID) ਍甀渀椀漀渀 愀氀氀ഀഀ select 3 as Tag, ਍ऀऀ㈀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [IndexDetailReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀刀攀挀漀洀洀攀渀搀攀搀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!5!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䌀氀甀猀琀攀爀攀搀崀Ⰰഀഀ NULL as [Index!5!Unique], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䠀攀愀瀀崀Ⰰഀഀ NULL as [Index!5!IndexSizeInMB], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀漀眀猀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀ⠀ഀഀ select D.DatabaseID,T.SchemaName ਍ऀऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_index] as I ਍ऀऀऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ T.TableID = I.TableID and ਍ऀऀऀ䤀⸀䤀猀䔀砀椀猀琀椀渀最 㴀 ㄀ഀഀ group by D.DatabaseID,T.SchemaName ਍ऀऀ⤀ 刀ഀഀ where ਍ऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = R.DatabaseID ਍甀渀椀漀渀 愀氀氀ഀഀ select 4 as Tag, ਍ऀऀ㌀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [IndexDetailReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀刀攀挀漀洀洀攀渀搀攀搀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀ刀⸀吀愀戀氀攀䤀䐀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ T.TableName as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!5!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䌀氀甀猀琀攀爀攀搀崀Ⰰഀഀ NULL as [Index!5!Unique], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䠀攀愀瀀崀Ⰰഀഀ NULL as [Index!5!IndexSizeInMB], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀漀眀猀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀ 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ ( ਍ऀऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ吀⸀吀愀戀氀攀䤀䐀ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀ഀഀ where ਍ऀऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = T.DatabaseID and ਍ऀऀऀऀ吀⸀吀愀戀氀攀䤀䐀 㴀 䤀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ I.IsExisting = 1 ਍ऀऀऀ最爀漀甀瀀 戀礀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ吀⸀吀愀戀氀攀䤀䐀ഀഀ ) R ਍ऀऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ R.TableID = T.TableID and ਍ऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ union all ਍ഀഀ select 5 as Tag, ਍ऀऀ㐀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [IndexDetailReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀刀攀挀漀洀洀攀渀搀攀搀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ T.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀ吀⸀吀愀戀氀攀䤀䐀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ T.TableName as [Table!4!Name!ELEMENT], ਍ऀऀ䤀⸀䤀渀搀攀砀䤀䐀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ I.IndexName as [Index!5!Name!ELEMENT], ਍ऀऀ䌀䄀匀䔀ഀഀ WHEN I.IsClustered = 1 THEN 'true' ਍ऀऀऀ圀䠀䔀一 䤀⸀䤀猀䌀氀甀猀琀攀爀攀搀 㴀   吀䠀䔀一 ✀昀愀氀猀攀✀ഀഀ end ਍ऀऀ愀猀 嬀䤀渀搀攀砀℀㔀℀䌀氀甀猀琀攀爀攀搀崀Ⰰഀഀ CASE ਍ऀऀऀ圀䠀䔀一 䤀⸀䤀猀唀渀椀焀甀攀 㴀 ㄀ 吀䠀䔀一 ✀琀爀甀攀✀ऀऀഀഀ WHEN I.IsUnique = 0 THEN 'false' ਍ऀऀ攀渀搀ഀഀ as [Index!5!Unique], ਍ऀऀ䌀䄀匀䔀ഀഀ WHEN I.IsHeap = 1 THEN 'true' ਍ऀऀऀ圀䠀䔀一 䤀⸀䤀猀䠀攀愀瀀 㴀   吀䠀䔀一 ✀昀愀氀猀攀✀ഀഀ end ਍ऀऀ愀猀 嬀䤀渀搀攀砀℀㔀℀䠀攀愀瀀崀Ⰰऀऀഀഀ CAST(I.Storage as decimal(38,2)) as [Index!5!IndexSizeInMB], ਍ऀऀ䤀⸀一甀洀刀漀眀猀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀漀眀猀崀ഀഀ from ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀  䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] T, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀ഀഀ where ਍ऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = T.DatabaseID and ਍ऀऀ吀⸀吀愀戀氀攀䤀䐀 㴀 䤀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ I.IsExisting = 1 ਍ऀऀ漀爀搀攀爀 戀礀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰ嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰ嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰ嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀 ഀഀ FOR XML EXPLICIT ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀搀攀砀开搀攀琀愀椀氀开挀甀爀爀攀渀琀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㠀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_index_detail_current_helper_relational] ਍ऀऀऀऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍ऀऀऀऀऀऀ戀攀最椀渀ऀ猀攀氀攀挀琀 ✀䐀愀琀愀戀愀猀攀 一愀洀攀✀ 㴀 䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀Ⰰ ✀匀挀栀攀洀愀 一愀洀攀✀ 㴀 吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ ✀吀愀戀氀攀⼀嘀椀攀眀 一愀洀攀✀ 㴀 吀⸀吀愀戀氀攀一愀洀攀Ⰰ ✀䤀渀搀攀砀 一愀洀攀✀ 㴀 䤀⸀䤀渀搀攀砀一愀洀攀Ⰰ ✀䌀氀甀猀琀攀爀攀搀✀ 㴀ऀ䌀䄀匀䔀ഀഀ WHEN I.IsClustered = 1 THEN 'Yes' ਍ऀऀऀऀऀऀ圀䠀䔀一 䤀⸀䤀猀䌀氀甀猀琀攀爀攀搀 㴀   吀䠀䔀一 ✀一漀✀ഀഀ end, 'Unique' = CASE ਍ऀऀऀऀऀऀ圀䠀䔀一 䤀⸀䤀猀唀渀椀焀甀攀 㴀 ㄀ 吀䠀䔀一 ✀夀攀猀✀ऀऀഀഀ WHEN I.IsUnique = 0 THEN 'No' ਍ऀऀऀऀऀऀ攀渀搀ऀⰀ ✀䠀攀愀瀀✀ 㴀ऀ䌀䄀匀䔀ഀഀ WHEN I.IsHeap = 1 THEN 'Yes' ਍ऀऀऀऀऀऀ圀䠀䔀一 䤀⸀䤀猀䠀攀愀瀀 㴀   吀䠀䔀一 ✀一漀✀ഀഀ end , 'Index Size (MB)'= CAST(I.Storage as decimal(38,2)) , 'Number of Rows'= NumRows from ਍ऀऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀  䐀Ⰰഀഀ DTA_reports_table T, ਍ऀऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀 愀猀 䤀ഀഀ where ਍ऀऀऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = T.DatabaseID and ਍ऀऀऀऀऀ吀⸀吀愀戀氀攀䤀䐀 㴀 䤀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ I.IsExisting = 1 end ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_index_detail_recommended_helper_relational] Script Date: 05/23/2008 14:48:49 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ऀ挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀搀攀砀开搀攀琀愀椀氀开爀攀挀漀洀洀攀渀搀攀搀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀ഀഀ @SessionID int ਍ऀऀऀऀऀऀ愀猀ഀഀ begin select 'Database Name' = D.DatabaseName, 'Schema Name' = T.SchemaName, 'Table/View Name' = T.TableName, 'Index Name' = I.IndexName, 'Clustered' = CASE ਍ऀऀऀऀऀऀ圀䠀䔀一 䤀⸀䤀猀䌀氀甀猀琀攀爀攀搀 㴀 ㄀ 吀䠀䔀一 ✀夀攀猀✀ऀഀഀ WHEN I.IsClustered = 0 THEN 'No' ਍ऀऀऀऀऀऀ攀渀搀Ⰰ ✀唀渀椀焀甀攀✀ 㴀ऀ䌀䄀匀䔀ഀഀ WHEN I.IsUnique = 1 THEN 'Yes' ਍ऀऀऀऀऀऀ圀䠀䔀一 䤀⸀䤀猀唀渀椀焀甀攀 㴀   吀䠀䔀一 ✀一漀✀ഀഀ end , 'Heap' = CASE ਍ऀऀऀऀऀऀ圀䠀䔀一 䤀⸀䤀猀䠀攀愀瀀 㴀 ㄀ 吀䠀䔀一 ✀夀攀猀✀ऀऀഀഀ WHEN I.IsHeap = 0 THEN 'No' ਍ऀऀऀऀऀऀ攀渀搀ऀⰀ ✀䤀渀搀攀砀 匀椀稀攀 ⠀䴀䈀⤀✀㴀 䌀䄀匀吀⠀䤀⸀刀攀挀漀洀洀攀渀搀攀搀匀琀漀爀愀最攀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀ Ⰰ ✀一甀洀戀攀爀 漀昀 刀漀眀猀✀㴀 一甀洀刀漀眀猀 ऀ昀爀漀洀 ഀഀ DTA_reports_database D, ਍ऀऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀 吀Ⰰഀഀ DTA_reports_index as I ਍ऀऀऀऀऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀऀऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ T.TableID = I.TableID and ਍ऀऀऀऀऀ䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀 㴀 ㄀  攀渀搀 ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀搀攀砀开爀攀挀漀洀洀攀渀搀攀搀开搀攀琀愀椀氀开栀攀氀瀀攀爀开砀洀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㤀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_index_recommended_detail_helper_xml] ਍ऀऀऀऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ select 1 as Tag, ਍ऀऀ一唀䰀䰀          愀猀 倀愀爀攀渀琀Ⰰഀഀ '' as [IndexDetailReport!1!!ELEMENT], ਍ऀऀ✀昀愀氀猀攀✀ 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀䌀甀爀爀攀渀琀崀Ⰰഀഀ NULL as [Database!2!DatabaseID!hide], ਍ऀऀ一唀䰀䰀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!3!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!5!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䌀氀甀猀琀攀爀攀搀崀Ⰰഀഀ NULL as [Index!5!Unique], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䠀攀愀瀀崀Ⰰഀഀ NULL as [Index!5!IndexSizeInMB], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀漀眀猀崀ഀഀ union all ਍ऀ猀攀氀攀挀琀 ㈀            愀猀 吀愀最Ⰰ ഀഀ 1 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [IndexDetailReport!1!Recommended], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!4!TableID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!IndexID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!Clustered], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀唀渀椀焀甀攀崀Ⰰഀഀ NULL as [Index!5!Heap], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀匀椀稀攀䤀渀䴀䈀崀Ⰰഀഀ NULL as [Index!5!NumberOfRows] ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID in ਍ऀ⠀猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_index] as I ਍ऀऀऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ T.TableID = I.TableID and ਍ऀऀऀ䤀猀刀攀挀漀洀洀攀渀搀攀搀 㴀 ㄀ഀഀ group by D.DatabaseID) ਍甀渀椀漀渀 愀氀氀ഀഀ select 3 as Tag, ਍ऀऀ㈀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [IndexDetailReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀刀攀挀漀洀洀攀渀搀攀搀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!5!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䌀氀甀猀琀攀爀攀搀崀Ⰰഀഀ NULL as [Index!5!Unique], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䠀攀愀瀀崀Ⰰഀഀ NULL as [Index!5!IndexSizeInMB], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀漀眀猀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀ⠀ഀഀ select D.DatabaseID,T.SchemaName ਍ऀऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_index] as I ਍ऀऀऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ T.TableID = I.TableID and ਍ऀऀऀ䤀猀刀攀挀漀洀洀攀渀搀攀搀 㴀 ㄀ഀഀ group by D.DatabaseID,T.SchemaName ਍ऀऀ⤀ 刀ഀഀ where ਍ऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = R.DatabaseID ਍甀渀椀漀渀 愀氀氀ഀഀ select 4 as Tag, ਍ऀऀ㌀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [IndexDetailReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀刀攀挀漀洀洀攀渀搀攀搀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀ刀⸀吀愀戀氀攀䤀䐀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ T.TableName as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!5!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䌀氀甀猀琀攀爀攀搀崀Ⰰഀഀ NULL as [Index!5!Unique], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䠀攀愀瀀崀Ⰰഀഀ NULL as [Index!5!IndexSizeInMB], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀漀眀猀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀ 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ ( ਍ऀऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ吀⸀吀愀戀氀攀䤀䐀ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀ഀഀ where ਍ऀऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = T.DatabaseID and ਍ऀऀऀऀ吀⸀吀愀戀氀攀䤀䐀 㴀 䤀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ I.IsRecommended = 1 ਍ऀऀऀ最爀漀甀瀀 戀礀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ吀⸀吀愀戀氀攀䤀䐀ഀഀ ) R ਍ऀऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ R.TableID = T.TableID and ਍ऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ union all ਍ഀഀ select 5 as Tag, ਍ऀऀ㐀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [IndexDetailReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀䐀攀琀愀椀氀刀攀瀀漀爀琀℀㄀℀刀攀挀漀洀洀攀渀搀攀搀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ T.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀ吀⸀吀愀戀氀攀䤀䐀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ T.TableName as [Table!4!Name!ELEMENT], ਍ऀऀ䤀⸀䤀渀搀攀砀䤀䐀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ I.IndexName as [Index!5!Name!ELEMENT], ਍ऀऀ䌀䄀匀䔀ഀഀ WHEN I.IsClustered = 1 THEN 'true' ਍ऀऀऀ圀䠀䔀一 䤀⸀䤀猀䌀氀甀猀琀攀爀攀搀 㴀   吀䠀䔀一 ✀昀愀氀猀攀✀ഀഀ end ਍ऀऀ愀猀 嬀䤀渀搀攀砀℀㔀℀䌀氀甀猀琀攀爀攀搀崀Ⰰഀഀ CASE ਍ऀऀऀ圀䠀䔀一 䤀⸀䤀猀唀渀椀焀甀攀 㴀 ㄀ 吀䠀䔀一 ✀琀爀甀攀✀ऀऀഀഀ WHEN I.IsUnique = 0 THEN 'false' ਍ऀऀ攀渀搀ഀഀ as [Index!5!Unique], ਍ऀऀ䌀䄀匀䔀ഀഀ WHEN I.IsHeap = 1 THEN 'true' ਍ऀऀऀ圀䠀䔀一 䤀⸀䤀猀䠀攀愀瀀 㴀   吀䠀䔀一 ✀昀愀氀猀攀✀ഀഀ end ਍ऀऀ愀猀 嬀䤀渀搀攀砀℀㔀℀䠀攀愀瀀崀Ⰰऀऀഀഀ CAST(I.RecommendedStorage as decimal(38,2)) as [Index!5!IndexSizeInMB], ਍ऀऀ䤀⸀一甀洀刀漀眀猀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀漀眀猀崀ഀഀ from ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀  䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] T, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀ഀഀ where ਍ऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = T.DatabaseID and ਍ऀऀ吀⸀吀愀戀氀攀䤀䐀 㴀 䤀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ I.IsRecommended = 1 ਍ऀऀ漀爀搀攀爀 戀礀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰ嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰ嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰ嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀 ഀഀ FOR XML EXPLICIT ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀搀攀砀开甀猀愀最攀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㐀㤀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_index_usage_helper_relational] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀Ⰰഀഀ @IsRecommended int ਍ऀ愀猀 戀攀最椀渀 猀攀氀攀挀琀 䐀㄀⸀䐀愀琀愀戀愀猀攀一愀洀攀 愀猀 ✀䐀愀琀愀戀愀猀攀 一愀洀攀✀ Ⰰ吀㄀⸀匀挀栀攀洀愀一愀洀攀 愀猀 ✀匀挀栀攀洀愀 一愀洀攀✀ Ⰰ吀㄀⸀吀愀戀氀攀一愀洀攀 愀猀 ✀吀愀戀氀攀⼀嘀椀攀眀 一愀洀攀✀ Ⰰ䤀㄀⸀䤀渀搀攀砀一愀洀攀 愀猀 ✀䤀渀搀攀砀 一愀洀攀✀ Ⰰ刀⸀䌀漀甀渀琀 愀猀 ✀一甀洀戀攀爀 漀昀 爀攀昀攀爀攀渀挀攀猀✀ Ⰰ䌀䄀匀吀⠀刀⸀唀猀愀最攀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀ 愀猀 ✀倀攀爀挀攀渀琀 唀猀愀最攀✀ 昀爀漀洀 ഀഀ DTA_reports_database as D1 , ਍ऀऀऀऀ䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀 愀猀 䤀㄀Ⰰഀഀ DTA_reports_table as T1, ਍ऀऀऀऀ⠀ഀഀ select D.DatabaseID,T.TableID , ਍ऀऀऀऀऀऀऀ䤀⸀䤀渀搀攀砀䤀䐀  Ⰰ匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 愀猀 䌀漀甀渀琀Ⰰഀഀ 100.0 * SUM(Q.Weight) / ਍ऀऀऀऀऀऀऀ⠀ ㄀⸀  ⨀ ⠀ऀ猀攀氀攀挀琀ऀ䌀䄀匀䔀 圀䠀䔀一 匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ 㸀   吀䠀䔀一  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ഀഀ else 1 ਍ऀऀऀऀऀऀऀऀऀऀऀऀ攀渀搀ऀഀഀ ਍ऀऀऀऀऀऀऀऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀ഀഀ where Q.SessionID = @SessionID )) ਍ऀऀऀऀ愀猀 唀猀愀最攀ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀ऀഀഀ LEFT OUTER JOIN ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀 愀猀 儀䤀 伀一 儀䤀⸀䤀渀搀攀砀䤀䐀 㴀 䤀⸀䤀渀搀攀砀䤀䐀ഀഀ LEFT OUTER JOIN ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 愀猀 儀 伀一 儀䤀⸀儀甀攀爀礀䤀䐀 㴀 儀⸀儀甀攀爀礀䤀䐀ഀഀ JOIN ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀 伀一 䤀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀ഀഀ JOIN ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀 伀一 吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ and Q.SessionID = QI.SessionID and ਍ऀऀऀऀ儀䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀 㴀 䀀䤀猀刀攀挀漀洀洀攀渀搀攀搀 愀渀搀ഀഀ Q.SessionID = @SessionID ਍ऀऀऀऀഀഀ GROUP BY I.IndexID,T.TableID,D.DatabaseID) as R ਍ऀऀऀऀ眀栀攀爀攀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀㄀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ R.TableID = T1.TableID and ਍ऀऀऀऀ刀⸀䤀渀搀攀砀䤀䐀 㴀 䤀㄀⸀䤀渀搀攀砀䤀䐀 愀渀搀ഀഀ D1.SessionID = @SessionID and ਍ऀऀऀऀ刀⸀䌀漀甀渀琀 㸀  ഀഀ order by R.Count desc end ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_index_usage_helper_xml] Script Date: 05/23/2008 14:48:50 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀搀攀砀开甀猀愀最攀开栀攀氀瀀攀爀开砀洀氀崀ഀഀ @SessionID int, ਍ऀ䀀䤀猀刀攀挀漀洀洀攀渀搀攀搀ऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ select 1 as Tag, ਍ऀऀ一唀䰀䰀          愀猀 倀愀爀攀渀琀Ⰰഀഀ '' as [IndexUsageReport!1!!ELEMENT], ਍ऀऀ挀愀猀攀 眀栀攀渀 䀀䤀猀刀攀挀漀洀洀攀渀搀攀搀 㴀 ㄀ 琀栀攀渀 ✀昀愀氀猀攀✀ഀഀ else 'true' end as [IndexUsageReport!1!Current], ਍ऀऀ一唀䰀䰀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Database!2!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!4!TableID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!IndexID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!NumberOfReferences!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀倀攀爀挀攀渀琀唀猀愀最攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ union all ਍猀攀氀攀挀琀 ㈀            愀猀 吀愀最Ⰰ ഀഀ 1 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀唀猀愀最攀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [IndexUsageReport!1!Current], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!4!TableID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!IndexID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!NumberOfReferences!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀倀攀爀挀攀渀琀唀猀愀最攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D ਍ऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 椀渀ഀഀ (select D.DatabaseID from ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀 愀猀 儀䤀Ⰰഀഀ [msdb].[dbo].[DTA_reports_index] as I, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀऀ眀栀攀爀攀ഀഀ QI.IndexID = I.IndexID and ਍ऀऀऀ䤀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ QI.IsRecommendedConfiguration = @IsRecommended ਍ऀऀऀ䜀刀伀唀倀 䈀夀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀⤀ഀഀ union all ਍猀攀氀攀挀琀 ㌀            愀猀 吀愀最Ⰰ ഀഀ 2 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀唀猀愀最攀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [IndexUsageReport!1!Current], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ刀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!4!TableID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!IndexID!hide], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!NumberOfReferences!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀倀攀爀挀攀渀琀唀猀愀最攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀ⠀ഀഀ select D.DatabaseID,T.SchemaName from ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀 愀猀 儀䤀Ⰰഀഀ [msdb].[dbo].[DTA_reports_index] as I, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀ眀栀攀爀攀ഀഀ QI.IndexID = I.IndexID and ਍ऀऀ䤀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀ儀䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀 㴀 䀀䤀猀刀攀挀漀洀洀攀渀搀攀搀 愀渀搀ഀഀ D.SessionID = @SessionID ਍ऀऀ䜀刀伀唀倀 䈀夀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀ഀഀ ) R ਍ऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ union all ਍ഀഀ select 4 as Tag, ਍ऀऀ㌀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [IndexUsageReport!1!!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀唀猀愀最攀刀攀瀀漀爀琀℀㄀℀䌀甀爀爀攀渀琀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀ刀⸀吀愀戀氀攀䤀䐀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ T.TableName as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!5!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!5!PercentUsage!ELEMENT] ਍ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ ( ਍ऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ吀⸀吀愀戀氀攀䤀䐀 昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_queryindex] as QI, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 愀猀 䤀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀऀ儀䤀⸀䤀渀搀攀砀䤀䐀 㴀 䤀⸀䤀渀搀攀砀䤀䐀  愀渀搀ഀഀ I.TableID = T.TableID and ਍ऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ D.SessionID = @SessionID and ਍ऀऀ儀䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀 㴀 䀀䤀猀刀攀挀漀洀洀攀渀搀攀搀ഀഀ GROUP BY D.DatabaseID,T.SchemaName, T.TableID ਍ऀ⤀ 刀ഀഀ where ਍ऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID = R.DatabaseID and ਍ऀ刀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ T.DatabaseID = D.DatabaseID ਍ഀഀ union all ਍猀攀氀攀挀琀 㔀            愀猀 吀愀最Ⰰ ഀഀ 4 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀唀猀愀最攀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [IndexUsageReport!1!Current], ਍ऀऀ䐀㄀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D1.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ吀㄀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ T1.TableID as [Table!4!TableID!hide], ਍ऀऀ吀㄀⸀吀愀戀氀攀一愀洀攀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ I1.IndexID as [Index!5!IndexID!hide], ਍ऀऀ䤀㄀⸀䤀渀搀攀砀一愀洀攀 愀猀 嬀䤀渀搀攀砀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ R.Count as [Index!5!NumberOfReferences!ELEMENT], ਍ऀऀ䌀䄀匀吀⠀刀⸀唀猀愀最攀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀  愀猀 嬀䤀渀搀攀砀℀㔀℀倀攀爀挀攀渀琀唀猀愀最攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀㄀ Ⰰഀഀ [msdb].[dbo].[DTA_reports_index] as I1, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀㄀Ⰰഀഀ ( ਍ऀऀऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀吀愀戀氀攀䤀䐀 Ⰰഀഀ I.IndexID ,SUM(Q.Weight) as Count, ਍ऀऀऀऀऀऀ㄀  ⸀  ⨀  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ ⼀ ഀഀ ( 1.0 * ( select CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ਍ऀऀऀऀऀऀऀऀऀऀऀ攀氀猀攀 ㄀ഀഀ end ਍ऀऀऀऀऀऀऀऀഀഀ from [msdb].[dbo].[DTA_reports_query] as Q ਍ऀऀऀऀऀऀऀऀऀ眀栀攀爀攀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 ⤀⤀ഀഀ as Usage ਍ऀऀ昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_index] as I ਍ऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_queryindex] as QI ON QI.IndexID = I.IndexID ਍ऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_query] as Q ON QI.QueryID = Q.QueryID ਍ऀऀऀ䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_table] as T ON I.TableID = T.TableID ਍ऀऀऀ䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_database] as D ON T.DatabaseID = D.DatabaseID ਍ऀऀऀ愀渀搀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 儀䤀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ QI.IsRecommendedConfiguration = @IsRecommended and ਍ऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ GROUP BY I.IndexID,T.TableID,D.DatabaseID) as R ਍ऀऀऀ眀栀攀爀攀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀㄀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ R.TableID = T1.TableID and ਍ऀऀऀ刀⸀䤀渀搀攀砀䤀䐀 㴀 䤀㄀⸀䤀渀搀攀砀䤀䐀 愀渀搀ഀഀ D1.SessionID = @SessionID and ਍ऀऀऀ刀⸀䌀漀甀渀琀 㸀  ഀഀ order by [Database!2!DatabaseID!hide],[Schema!3!Name!ELEMENT],[Table!4!TableID!hide], ਍ऀऀऀ嬀䤀渀搀攀砀℀㔀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀 Ⰰ 嬀䤀渀搀攀砀℀㔀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀 ഀഀ ਍ऀ䘀伀刀 堀䴀䰀 䔀堀倀䰀䤀䌀䤀吀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开䐀吀䄀开琀甀渀椀渀最氀漀最崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀  ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_DTA_tuninglog] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀Ⰰഀഀ @RowID int, ਍ऀ䀀䌀愀琀攀最漀爀礀䤀䐀 挀栀愀爀⠀㐀⤀Ⰰഀഀ @Event ntext, ਍ऀ䀀匀琀愀琀攀洀攀渀琀 渀琀攀砀琀Ⰰഀഀ @Frequency int, ਍ऀ䀀刀攀愀猀漀渀 渀琀攀砀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ insert into [msdb].[dbo].[DTA_tuninglog]([SessionID], [RowID], [CategoryID], [Event], [Statement], [Frequency], [Reason]) ਍ऀ瘀愀氀甀攀猀⠀䀀匀攀猀猀椀漀渀䤀䐀Ⰰ 䀀刀漀眀䤀䐀Ⰰ 䀀䌀愀琀攀最漀爀礀䤀䐀Ⰰ 䀀䔀瘀攀渀琀Ⰰ 䀀匀琀愀琀攀洀攀渀琀Ⰰ 䀀䘀爀攀焀甀攀渀挀礀Ⰰ 䀀刀攀愀猀漀渀⤀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开瀀爀漀最爀攀猀猀椀渀昀漀爀洀愀琀椀漀渀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㄀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_progressinformation] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀Ⰰഀഀ @TuningStage int ਍愀猀 ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ INSERT into [msdb].[dbo].[DTA_progress] ਍ऀऀ⠀匀攀猀猀椀漀渀䤀䐀Ⰰ圀漀爀欀氀漀愀搀䌀漀渀猀甀洀瀀琀椀漀渀Ⰰ䔀猀琀䤀洀瀀爀漀瘀攀洀攀渀琀Ⰰ吀甀渀椀渀最匀琀愀最攀Ⰰ䌀漀渀猀甀洀椀渀最圀漀爀欀䰀漀愀搀䴀攀猀猀愀最攀Ⰰ倀攀爀昀漀爀洀椀渀最䄀渀愀氀礀猀椀猀䴀攀猀猀愀最攀Ⰰ䜀攀渀攀爀愀琀椀渀最刀攀瀀漀爀琀猀䴀攀猀猀愀最攀⤀ഀഀ values(@SessionID,0,0,@TuningStage,N'',N'',N'') ਍ऀഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开挀漀氀甀洀渀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㄀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_reports_column] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀Ⰰഀഀ @TableID int, ਍ऀ䀀䌀漀氀甀洀渀一愀洀攀 猀礀猀渀愀洀攀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ椀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开挀漀氀甀洀渀崀⠀嬀吀愀戀氀攀䤀䐀崀Ⰰ 嬀䌀漀氀甀洀渀一愀洀攀崀⤀ഀഀ values( @TableID ,@ColumnName) ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㈀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_reports_database] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀Ⰰഀഀ @DatabaseName sysname, ਍ऀ䀀䤀猀䐀愀琀愀戀愀猀攀匀攀氀攀挀琀攀搀吀漀吀甀渀攀 椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ䤀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀⠀嬀匀攀猀猀椀漀渀䤀䐀崀Ⰰ嬀䐀愀琀愀戀愀猀攀一愀洀攀崀Ⰰ嬀䤀猀䐀愀琀愀戀愀猀攀匀攀氀攀挀琀攀搀吀漀吀甀渀攀崀⤀ 瘀愀氀甀攀猀⠀䀀匀攀猀猀椀漀渀䤀䐀Ⰰ䀀䐀愀琀愀戀愀猀攀一愀洀攀Ⰰ䀀䤀猀䐀愀琀愀戀愀猀攀匀攀氀攀挀琀攀搀吀漀吀甀渀攀⤀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㈀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_reports_index] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀऀ椀渀琀Ⰰഀഀ @TableID int, ਍ऀ䀀䤀渀搀攀砀一愀洀攀ऀऀऀ猀礀猀渀愀洀攀Ⰰഀഀ @IsClustered bit, ਍ऀ䀀䤀猀唀渀椀焀甀攀ऀऀऀ戀椀琀Ⰰഀഀ @IsHeap bit, ਍ऀ䀀䤀猀䔀砀椀猀琀椀渀最ऀऀऀ戀椀琀Ⰰഀഀ @Storage int, ਍ऀ䀀一甀洀刀漀眀猀ऀऀऀ椀渀琀Ⰰഀഀ @IsRecommended bit, ਍ऀ䀀刀攀挀漀洀洀攀渀搀攀搀匀琀漀爀愀最攀 椀渀琀Ⰰഀഀ @PartitionSchemeID int, ਍ऀ䀀匀攀猀猀椀漀渀唀渀椀焀甀攀昀椀攀爀  椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ insert into [msdb].[dbo].[DTA_reports_index]([TableID], [IndexName], [IsClustered], [IsUnique], [IsHeap],[IsExisting], [Storage], [NumRows], [IsRecommended], [RecommendedStorage], [PartitionSchemeID],[SessionUniquefier]) ਍ऀ瘀愀氀甀攀猀⠀䀀吀愀戀氀攀䤀䐀Ⰰ䀀䤀渀搀攀砀一愀洀攀Ⰰ䀀䤀猀䌀氀甀猀琀攀爀攀搀Ⰰ䀀䤀猀唀渀椀焀甀攀Ⰰ䀀䤀猀䠀攀愀瀀Ⰰ䀀䤀猀䔀砀椀猀琀椀渀最Ⰰ䀀匀琀漀爀愀最攀Ⰰ䀀一甀洀刀漀眀猀Ⰰ䀀䤀猀刀攀挀漀洀洀攀渀搀攀搀Ⰰ䀀刀攀挀漀洀洀攀渀搀攀搀匀琀漀爀愀最攀Ⰰ䀀倀愀爀琀椀琀椀漀渀匀挀栀攀洀攀䤀䐀Ⰰ䀀匀攀猀猀椀漀渀唀渀椀焀甀攀昀椀攀爀⤀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开椀渀搀攀砀挀漀氀甀洀渀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㌀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_reports_indexcolumn] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀Ⰰഀഀ @IndexID int, ਍ऀ䀀䌀漀氀甀洀渀䤀䐀ऀऀ椀渀琀Ⰰഀഀ @ColumnOrder int, ਍ऀ䀀倀愀爀琀椀琀椀漀渀䌀漀氀甀洀渀伀爀搀攀爀ऀ椀渀琀Ⰰഀഀ @IsKeyColumn bit, ਍ऀ䀀䤀猀䐀攀猀挀攀渀搀椀渀最䌀漀氀甀洀渀ऀ戀椀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ insert into [msdb].[dbo].[DTA_reports_indexcolumn]([IndexID], [ColumnID], [ColumnOrder], [PartitionColumnOrder], [IsKeyColumn], [IsDescendingColumn]) ਍ऀ瘀愀氀甀攀猀⠀䀀䤀渀搀攀砀䤀䐀Ⰰ䀀䌀漀氀甀洀渀䤀䐀Ⰰ䀀䌀漀氀甀洀渀伀爀搀攀爀Ⰰ䀀倀愀爀琀椀琀椀漀渀䌀漀氀甀洀渀伀爀搀攀爀Ⰰ䀀䤀猀䬀攀礀䌀漀氀甀洀渀Ⰰ䀀䤀猀䐀攀猀挀攀渀搀椀渀最䌀漀氀甀洀渀⤀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开瀀愀爀琀椀琀椀漀渀昀甀渀挀琀椀漀渀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㐀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_reports_partitionfunction] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀Ⰰഀഀ @DatabaseID int, ਍ऀ䀀倀愀爀琀椀琀椀漀渀䘀甀渀挀琀椀漀渀一愀洀攀 猀礀猀渀愀洀攀Ⰰഀഀ @PartitionFunctionDefinition ntext ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀഀഀ Insert into [msdb].[dbo].[DTA_reports_partitionfunction]([DatabaseID],[PartitionFunctionName],[PartitionFunctionDefinition]) ਍ऀ瘀愀氀甀攀猀⠀䀀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ䀀倀愀爀琀椀琀椀漀渀䘀甀渀挀琀椀漀渀一愀洀攀Ⰰ䀀倀愀爀琀椀琀椀漀渀䘀甀渀挀琀椀漀渀䐀攀昀椀渀椀琀椀漀渀⤀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开瀀愀爀琀椀琀椀漀渀猀挀栀攀洀攀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㐀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_reports_partitionscheme] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀Ⰰ   ഀഀ @PartitionFunctionID int, ਍ऀ䀀倀愀爀琀椀琀椀漀渀匀挀栀攀洀攀一愀洀攀 猀礀猀渀愀洀攀Ⰰഀഀ @PartitionSchemeDefinition ntext ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀഀഀ Insert into [msdb].[dbo].[DTA_reports_partitionscheme]( [PartitionFunctionID],[PartitionSchemeName],[PartitionSchemeDefinition]) values(@PartitionFunctionID,@PartitionSchemeName,@PartitionSchemeDefinition) ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_insert_reports_query] Script Date: 05/23/2008 14:48:55 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ @SessionID int, ਍ऀ䀀儀甀攀爀礀䤀䐀ऀऀऀ椀渀琀Ⰰഀഀ @StatementType smallint, ਍ऀ䀀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最ऀ渀琀攀砀琀Ⰰഀഀ @CurrentCost float, ਍ऀ䀀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀ऀ昀氀漀愀琀Ⰰഀഀ @Weight float, ਍ऀ䀀䔀瘀攀渀琀匀琀爀椀渀最ऀऀ渀琀攀砀琀Ⰰഀഀ @EventWeight float ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ insert into [msdb].[dbo].[DTA_reports_query]([SessionID],[QueryID], [StatementType], [StatementString], [CurrentCost], [RecommendedCost], [Weight], [EventString], [EventWeight]) ਍ऀ瘀愀氀甀攀猀⠀䀀匀攀猀猀椀漀渀䤀䐀Ⰰ䀀儀甀攀爀礀䤀䐀Ⰰ䀀匀琀愀琀攀洀攀渀琀吀礀瀀攀Ⰰ䀀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最Ⰰ䀀䌀甀爀爀攀渀琀䌀漀猀琀Ⰰ䀀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀Ⰰ䀀圀攀椀最栀琀Ⰰ䀀䔀瘀攀渀琀匀琀爀椀渀最Ⰰ䀀䔀瘀攀渀琀圀攀椀最栀琀⤀ഀഀ ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开焀甀攀爀礀挀漀氀甀洀渀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㘀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_reports_querycolumn] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀Ⰰഀഀ @QueryID int, ਍ऀ䀀䌀漀氀甀洀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ insert into [msdb].[dbo].[DTA_reports_querycolumn]([QueryID], [ColumnID],[SessionID]) ਍ऀ瘀愀氀甀攀猀⠀䀀儀甀攀爀礀䤀䐀Ⰰ䀀䌀漀氀甀洀渀䤀䐀Ⰰ䀀匀攀猀猀椀漀渀䤀䐀 ⤀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开焀甀攀爀礀搀愀琀愀戀愀猀攀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㘀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_reports_querydatabase] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀Ⰰഀഀ @QueryID int, ਍ऀ䀀䐀愀琀愀戀愀猀攀䤀䐀ऀऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ insert into [msdb].[dbo].[DTA_reports_querydatabase]([SessionID], [QueryID],[DatabaseID]) ਍ऀ瘀愀氀甀攀猀⠀䀀匀攀猀猀椀漀渀䤀䐀Ⰰ䀀儀甀攀爀礀䤀䐀Ⰰ䀀䐀愀琀愀戀愀猀攀䤀䐀⤀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㜀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_reports_queryindex] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀Ⰰഀഀ @QueryID int, ਍ऀ䀀䤀渀搀攀砀䤀䐀ऀ椀渀琀Ⰰഀഀ @IsRecommendedConfiguration bit ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀ椀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀⠀嬀匀攀猀猀椀漀渀䤀䐀崀Ⰰ嬀儀甀攀爀礀䤀䐀崀Ⰰ嬀䤀渀搀攀砀䤀䐀崀Ⰰ 嬀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀崀⤀ഀഀ values(@SessionID,@QueryID,@IndexID,@IsRecommendedConfiguration) ਍ऀഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开焀甀攀爀礀琀愀戀氀攀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㜀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_reports_querytable] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀Ⰰഀഀ @QueryID int, ਍ऀ䀀吀愀戀氀攀䤀䐀ऀऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ insert into [msdb].[dbo].[DTA_reports_querytable]([SessionID], [QueryID],[TableID]) ਍ऀ瘀愀氀甀攀猀⠀䀀匀攀猀猀椀漀渀䤀䐀Ⰰ䀀儀甀攀爀礀䤀䐀Ⰰ䀀吀愀戀氀攀䤀䐀⤀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㠀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_reports_table] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀Ⰰഀഀ @DatabaseID int, ਍ऀ䀀匀挀栀攀洀愀一愀洀攀ऀ猀礀猀渀愀洀攀Ⰰഀഀ @TableName sysname, ਍ऀ䀀䤀猀嘀椀攀眀ऀऀ戀椀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ insert into [msdb].[dbo].[DTA_reports_table]([DatabaseID], [SchemaName], [TableName], [IsView]) ਍ऀ瘀愀氀甀攀猀⠀䀀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ䀀匀挀栀攀洀愀一愀洀攀Ⰰ䀀吀愀戀氀攀一愀洀攀Ⰰ䀀䤀猀嘀椀攀眀⤀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开椀渀猀攀爀琀开爀攀瀀漀爀琀猀开琀愀戀氀攀瘀椀攀眀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㠀㨀㔀㠀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_insert_reports_tableview] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀Ⰰഀഀ @TableID int, ਍ऀ䀀嘀椀攀眀䤀䐀ऀऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ椀渀猀攀爀琀 椀渀琀漀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀瘀椀攀眀崀⠀嬀吀愀戀氀攀䤀䐀崀Ⰰ 嬀嘀椀攀眀䤀䐀崀⤀ഀഀ values(@TableID,@ViewID) ਍ऀഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_query_cost_helper_relational] Script Date: 05/23/2008 14:48:59 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ 挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀ഀഀ @SessionID int ਍ऀऀऀ愀猀ഀഀ begin select 'Statement Id' = QueryID, 'Statement String' = StatementString, 'Percent Improvement' = ਍ऀऀऀऀऀ䌀䄀匀䔀ഀഀ WHEN CurrentCost = 0 THEN 0.00 ਍ऀऀऀऀऀऀ圀䠀䔀一 䌀甀爀爀攀渀琀䌀漀猀琀 㰀㸀   吀䠀䔀一ഀഀ CAST((100.0*(CurrentCost - RecommendedCost)/CurrentCost) as decimal (20,2)) ਍ऀऀऀऀऀ攀渀搀 Ⰰ ✀匀琀愀琀攀洀攀渀琀 吀礀瀀攀✀ 㴀 䌀䄀匀䔀 ഀഀ WHEN StatementType = 0 THEN 'Select' ਍ऀऀऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㄀ 吀䠀䔀一 ✀唀瀀搀愀琀攀✀ഀഀ WHEN StatementType = 2 THEN 'Insert' ਍ऀऀऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㌀ 吀䠀䔀一 ✀䐀攀氀攀琀攀✀ഀഀ end from [msdb].[dbo].[DTA_reports_query] ਍ऀऀऀऀऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ order by 'Percent Improvement' desc end ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_query_cost_helper_xml] Script Date: 05/23/2008 14:48:59 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀开栀攀氀瀀攀爀开砀洀氀崀 ഀഀ @SessionID int ਍愀猀 ഀഀ begin ਍ऀ猀攀氀攀挀琀 ㄀            愀猀 吀愀最Ⰰ ഀഀ NULL as Parent, ਍ऀऀऀ✀✀ 愀猀 嬀匀琀愀琀攀洀攀渀琀䌀漀猀琀刀攀瀀漀爀琀℀㄀℀℀攀氀攀洀攀渀琀崀Ⰰഀഀ NULL as [Statement!2!StatementID!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Statement!2!PercentImprovement!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀吀礀瀀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ union all ਍ഀഀ select 2 as Tag, ਍ऀऀऀ㄀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [StatementCostReport!1!!element], ਍ऀऀऀ儀甀攀爀礀䤀䐀 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀匀琀愀琀攀洀攀渀琀䤀䐀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ StatementString as [Statement!2!StatementString!ELEMENT] , ਍ऀऀऀ䌀䄀匀䔀ഀഀ WHEN CurrentCost = 0 THEN 0.00 ਍ऀऀऀऀ圀䠀䔀一 䌀甀爀爀攀渀琀䌀漀猀琀 㰀㸀   吀䠀䔀一ഀഀ CAST((100.0*(CurrentCost - RecommendedCost)/CurrentCost) as decimal (20,2)) ਍ऀऀऀ攀渀搀 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀倀攀爀挀攀渀琀䤀洀瀀爀漀瘀攀洀攀渀琀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ CASE ਍ऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀   吀䠀䔀一 ✀匀攀氀攀挀琀✀ഀഀ WHEN StatementType = 1 THEN 'Update' ਍ऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㈀ 吀䠀䔀一 ✀䤀渀猀攀爀琀✀ഀഀ WHEN StatementType = 3 THEN 'Delete' ਍ऀऀऀ攀渀搀  愀猀  嬀匀琀愀琀攀洀攀渀琀℀㈀℀吀礀瀀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ where SessionID=@SessionID ਍ऀ漀爀搀攀爀 戀礀 吀愀最Ⰰ嬀匀琀愀琀攀洀攀渀琀℀㈀℀倀攀爀挀攀渀琀䤀洀瀀爀漀瘀攀洀攀渀琀℀䔀䰀䔀䴀䔀一吀崀 搀攀猀挀ഀഀ FOR XML EXPLICIT ਍攀渀搀ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_query_costrange_helper_relational] Script Date: 05/23/2008 14:48:59 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀爀愀渀最攀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀ഀഀ @SessionID int ਍ऀऀऀ愀猀ഀഀ begin ਍ऀऀऀ搀攀挀氀愀爀攀 䀀洀愀砀䌀漀猀琀 昀氀漀愀琀ഀഀ declare @minCost float ਍ऀऀऀ搀攀挀氀愀爀攀 䀀洀愀砀䌀甀爀爀攀渀琀䌀漀猀琀 昀氀漀愀琀ഀഀ declare @minCurrentCost float ਍ऀऀऀ搀攀挀氀愀爀攀 䀀洀愀砀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀 昀氀漀愀琀ഀഀ declare @minRecommendedCost float ਍ഀഀ set nocount on ਍ऀऀऀ猀攀氀攀挀琀 䀀洀椀渀䌀甀爀爀攀渀琀䌀漀猀琀 㴀 洀椀渀⠀䌀甀爀爀攀渀琀䌀漀猀琀⨀圀攀椀最栀琀⤀Ⰰ䀀洀愀砀䌀甀爀爀攀渀琀䌀漀猀琀 㴀 洀愀砀⠀䌀甀爀爀攀渀琀䌀漀猀琀⨀圀攀椀最栀琀⤀Ⰰഀഀ @minRecommendedCost = min(RecommendedCost*Weight), ਍ऀऀऀऀऀ䀀洀愀砀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀 㴀 洀愀砀⠀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⨀圀攀椀最栀琀⤀ഀഀ from [msdb].[dbo].[DTA_reports_query] ਍ऀऀऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀऀऀⴀⴀ 匀攀琀 琀栀攀 戀甀挀欀攀琀 戀漀甀渀搀愀爀椀攀猀ഀഀ if @maxCurrentCost > @maxRecommendedCost ਍ऀऀऀऀ猀攀琀 䀀洀愀砀䌀漀猀琀 㴀  䀀洀愀砀䌀甀爀爀攀渀琀䌀漀猀琀ഀഀ else ਍ऀऀऀऀ猀攀琀 䀀洀愀砀䌀漀猀琀 㴀  䀀洀愀砀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀ഀഀ ਍ऀऀऀ椀昀 䀀洀椀渀䌀甀爀爀攀渀琀䌀漀猀琀 㰀 䀀洀椀渀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀ഀഀ set @minCost = @minCurrentCost ਍ऀऀऀ攀氀猀攀ഀഀ set @minCost = @minRecommendedCost ਍ഀഀ create table #stringmap(OutputString nvarchar(30),num int) ਍ऀऀऀऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀ ─ ⴀ ㄀ ─✀Ⰰ ⤀ഀഀ insert into #stringmap values(N'11% - 20%',1) ਍ऀऀऀऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㈀㄀─ ⴀ ㌀ ─✀Ⰰ㈀⤀ഀഀ insert into #stringmap values(N'31% - 40%',3) ਍ऀऀऀऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㐀㄀─ ⴀ 㔀 ─✀Ⰰ㐀⤀ഀഀ insert into #stringmap values(N'51% - 60%',5) ਍ऀऀऀऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㘀㄀─ ⴀ 㜀 ─✀Ⰰ㘀⤀ഀഀ insert into #stringmap values(N'71% - 80%',7) ਍ऀऀऀऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㠀㄀─ ⴀ 㤀 ─✀Ⰰ㠀⤀ഀഀ insert into #stringmap values(N'91% - 100%',9) ਍ഀഀ ਍ഀഀ select num,count(*) as cnt ਍ऀऀऀ椀渀琀漀 ⌀挀ഀഀ from ਍ऀऀऀ⠀ऀഀഀ select case ਍ऀऀऀऀ眀栀攀渀 ⠀䀀洀愀砀䌀漀猀琀㴀䀀洀椀渀䌀漀猀琀⤀ 琀栀攀渀 㤀 ഀഀ when (CurrentCost*Weight-@minCost)/(@maxCost-@minCost) = 1 then 9 ਍ऀऀऀऀ攀氀猀攀 挀漀渀瘀攀爀琀⠀椀渀琀Ⰰ昀氀漀漀爀⠀㄀ ⨀⠀䌀甀爀爀攀渀琀䌀漀猀琀⨀圀攀椀最栀琀ⴀ䀀洀椀渀䌀漀猀琀⤀⼀⠀䀀洀愀砀䌀漀猀琀ⴀ䀀洀椀渀䌀漀猀琀⤀⤀⤀ഀഀ end as num ਍ऀऀऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_query] ਍ऀऀऀऀ眀栀攀爀攀 䌀甀爀爀攀渀琀䌀漀猀琀⨀圀攀椀最栀琀 㸀㴀 䀀洀椀渀䌀漀猀琀 愀渀搀 ഀഀ CurrentCost*Weight <= @maxCost ਍ऀऀऀऀ愀渀搀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ) t ਍ऀऀऀ最爀漀甀瀀 戀礀 渀甀洀ഀഀ ਍ऀऀऀ猀攀氀攀挀琀 渀甀洀Ⰰ挀漀甀渀琀⠀⨀⤀ 愀猀 挀渀琀ഀഀ into #r ਍ऀऀऀ昀爀漀洀ഀഀ ( select case ਍ऀऀऀऀ眀栀攀渀 ⠀䀀洀愀砀䌀漀猀琀㴀䀀洀椀渀䌀漀猀琀⤀ 琀栀攀渀 㤀 ഀഀ when (RecommendedCost*Weight-@minCost)/(@maxCost-@minCost) = 1 then 9 ਍ऀऀऀऀ攀氀猀攀 挀漀渀瘀攀爀琀⠀椀渀琀Ⰰ昀氀漀漀爀⠀㄀ ⨀⠀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⨀圀攀椀最栀琀ⴀ䀀洀椀渀䌀漀猀琀⤀⼀⠀䀀洀愀砀䌀漀猀琀ⴀ䀀洀椀渀䌀漀猀琀⤀⤀⤀ഀഀ end as num ਍ऀऀऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_query] ਍ऀऀऀऀ眀栀攀爀攀 刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⨀圀攀椀最栀琀 㸀㴀 䀀洀椀渀䌀漀猀琀 愀渀搀 ഀഀ RecommendedCost*Weight <= @maxCost ਍ऀऀऀऀ愀渀搀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ) t ਍ऀऀऀ最爀漀甀瀀 戀礀 渀甀洀  猀攀氀攀挀琀 ✀䌀漀猀琀 刀愀渀最攀✀ 㴀伀甀琀瀀甀琀匀琀爀椀渀最Ⰰ ✀一甀洀戀攀爀 漀昀 猀琀愀琀攀洀攀渀琀猀 ⠀䌀甀爀爀攀渀琀⤀✀ 㴀 䤀匀一唀䰀䰀⠀挀⸀挀渀琀Ⰰ ⤀ Ⰰ ✀一甀洀戀攀爀 漀昀 猀琀愀琀攀洀攀渀琀猀 ⠀刀攀挀漀洀洀攀渀搀攀搀⤀✀ 㴀 䤀匀一唀䰀䰀⠀爀⸀挀渀琀Ⰰ ⤀  昀爀漀洀ഀഀ ( ਍ऀऀऀ猀攀氀攀挀琀 ⌀猀琀爀椀渀最洀愀瀀⸀渀甀洀Ⰰ ⌀爀⸀挀渀琀ഀഀ from #stringmap LEFT OUTER JOIN #r ਍ऀऀऀ伀一 ⌀猀琀爀椀渀最洀愀瀀⸀渀甀洀 㴀 ⌀爀⸀渀甀洀ഀഀ ) r, ਍ऀऀऀ⠀ഀഀ select #stringmap.num, #c.cnt ਍ऀऀऀ昀爀漀洀 ⌀猀琀爀椀渀最洀愀瀀 䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一 ⌀挀ഀഀ ON #stringmap.num = #c.num ਍ऀऀऀ⤀ 挀Ⰰഀഀ #stringmap ਍ऀऀऀ眀栀攀爀攀 ⌀猀琀爀椀渀最洀愀瀀⸀渀甀洀 㴀 爀⸀渀甀洀 愀渀搀ഀഀ #stringmap.num = c.num ਍ऀऀऀ搀爀漀瀀 琀愀戀氀攀 ⌀爀ഀഀ drop table #c ਍ऀऀऀ搀爀漀瀀 琀愀戀氀攀 ⌀猀琀爀椀渀最洀愀瀀ഀഀ end ਍ऀऀऀഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开挀漀猀琀爀愀渀最攀开栀攀氀瀀攀爀开砀洀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀   ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_query_costrange_helper_xml] ਍ऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀ椀渀琀ഀഀ as ਍戀攀最椀渀ഀഀ declare @maxCost float ਍ऀ搀攀挀氀愀爀攀 䀀洀椀渀䌀漀猀琀 昀氀漀愀琀ഀഀ declare @maxCurrentCost float ਍ऀ搀攀挀氀愀爀攀 䀀洀椀渀䌀甀爀爀攀渀琀䌀漀猀琀 昀氀漀愀琀ഀഀ declare @maxRecommendedCost float ਍ऀ搀攀挀氀愀爀攀 䀀洀椀渀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀 昀氀漀愀琀ഀഀ set nocount on ਍ऀ猀攀氀攀挀琀 䀀洀椀渀䌀甀爀爀攀渀琀䌀漀猀琀 㴀 洀椀渀⠀䌀甀爀爀攀渀琀䌀漀猀琀⨀圀攀椀最栀琀⤀Ⰰ䀀洀愀砀䌀甀爀爀攀渀琀䌀漀猀琀 㴀 洀愀砀⠀䌀甀爀爀攀渀琀䌀漀猀琀⨀圀攀椀最栀琀⤀Ⰰഀഀ @minRecommendedCost = min(RecommendedCost*Weight), ਍ऀऀऀ䀀洀愀砀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀 㴀 洀愀砀⠀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⨀圀攀椀最栀琀⤀ഀഀ from [msdb].[dbo].[DTA_reports_query] ਍ऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ -- Set the bucket boundaries ਍ऀ椀昀 䀀洀愀砀䌀甀爀爀攀渀琀䌀漀猀琀 㸀 䀀洀愀砀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀ഀഀ set @maxCost = @maxCurrentCost ਍ऀ攀氀猀攀ഀഀ set @maxCost = @maxRecommendedCost ਍ഀഀ if @minCurrentCost < @minRecommendedCost ਍ऀऀ猀攀琀 䀀洀椀渀䌀漀猀琀 㴀  䀀洀椀渀䌀甀爀爀攀渀琀䌀漀猀琀ഀഀ else ਍ऀऀ猀攀琀 䀀洀椀渀䌀漀猀琀 㴀  䀀洀椀渀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀ഀഀ ਍ऀ挀爀攀愀琀攀 琀愀戀氀攀 ⌀猀琀爀椀渀最洀愀瀀⠀伀甀琀瀀甀琀匀琀爀椀渀最 渀瘀愀爀挀栀愀爀⠀㌀ ⤀Ⰰ渀甀洀 椀渀琀⤀ഀഀ insert into #stringmap values(N'0% - 10%',0) ਍ऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㄀㄀─ ⴀ ㈀ ─✀Ⰰ㄀⤀ഀഀ insert into #stringmap values(N'21% - 30%',2) ਍ऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㌀㄀─ ⴀ 㐀 ─✀Ⰰ㌀⤀ഀഀ insert into #stringmap values(N'41% - 50%',4) ਍ऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㔀㄀─ ⴀ 㘀 ─✀Ⰰ㔀⤀ഀഀ insert into #stringmap values(N'61% - 70%',6) ਍ऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㜀㄀─ ⴀ 㠀 ─✀Ⰰ㜀⤀ഀഀ insert into #stringmap values(N'81% - 90%',8) ਍ऀ椀渀猀攀爀琀 椀渀琀漀 ⌀猀琀爀椀渀最洀愀瀀 瘀愀氀甀攀猀⠀一✀㤀㄀─ ⴀ ㄀  ─✀Ⰰ㤀⤀ഀഀ ਍ഀഀ ਍ऀ猀攀氀攀挀琀 渀甀洀Ⰰ挀漀甀渀琀⠀⨀⤀ 愀猀 挀渀琀ഀഀ into #c ਍ऀ昀爀漀洀ഀഀ ( select case ਍ऀऀ眀栀攀渀 ⠀䀀洀愀砀䌀漀猀琀㴀䀀洀椀渀䌀漀猀琀⤀ 琀栀攀渀 㤀 ഀഀ when (CurrentCost*Weight-@minCost)/(@maxCost-@minCost) = 1 then 9 ਍ऀऀ攀氀猀攀 挀漀渀瘀攀爀琀⠀椀渀琀Ⰰ昀氀漀漀爀⠀㄀ ⨀⠀䌀甀爀爀攀渀琀䌀漀猀琀⨀圀攀椀最栀琀ⴀ䀀洀椀渀䌀漀猀琀⤀⼀⠀䀀洀愀砀䌀漀猀琀ⴀ䀀洀椀渀䌀漀猀琀⤀⤀⤀ഀഀ end as num ਍ऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_query] ਍ऀऀ眀栀攀爀攀 䌀甀爀爀攀渀琀䌀漀猀琀⨀圀攀椀最栀琀 㸀㴀 䀀洀椀渀䌀漀猀琀 愀渀搀 ഀഀ CurrentCost*Weight <= @maxCost ਍ऀऀ愀渀搀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ) t ਍ऀ最爀漀甀瀀 戀礀 渀甀洀ഀഀ ਍ऀ猀攀氀攀挀琀 渀甀洀Ⰰ挀漀甀渀琀⠀⨀⤀ 愀猀 挀渀琀ഀഀ into #r ਍ऀ昀爀漀洀ഀഀ ( select case ਍ऀऀ眀栀攀渀 ⠀䀀洀愀砀䌀漀猀琀㴀䀀洀椀渀䌀漀猀琀⤀ 琀栀攀渀 㤀 ഀഀ when (RecommendedCost*Weight-@minCost)/(@maxCost-@minCost) = 1 then 9 ਍ऀऀ攀氀猀攀 挀漀渀瘀攀爀琀⠀椀渀琀Ⰰ昀氀漀漀爀⠀㄀ ⨀⠀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⨀圀攀椀最栀琀ⴀ䀀洀椀渀䌀漀猀琀⤀⼀⠀䀀洀愀砀䌀漀猀琀ⴀ䀀洀椀渀䌀漀猀琀⤀⤀⤀ഀഀ end as num ਍ऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_query] ਍ऀऀ眀栀攀爀攀 刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀⨀圀攀椀最栀琀 㸀㴀 䀀洀椀渀䌀漀猀琀 愀渀搀 ഀഀ RecommendedCost*Weight <= @maxCost ਍ऀऀ愀渀搀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ) t ਍ऀ最爀漀甀瀀 戀礀 渀甀洀ഀഀ ਍ऀ猀攀氀攀挀琀 ㄀            愀猀 吀愀最Ⰰ ഀഀ NULL as Parent, ਍ऀऀऀ✀✀ 愀猀 嬀匀琀愀琀攀洀攀渀琀䌀漀猀琀刀愀渀最攀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [CostRange!2!Percent] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䌀漀猀琀刀愀渀最攀℀㈀℀一甀洀匀琀愀琀攀洀攀渀琀猀䌀甀爀爀攀渀琀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [CostRange!2!NumStatementsRecommended!ELEMENT] ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 2 as Tag, ਍ऀऀऀ㄀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [StatementCostRangeReport!1!!ELEMENT], ਍ऀऀऀ伀甀琀瀀甀琀匀琀爀椀渀最 愀猀 嬀䌀漀猀琀刀愀渀最攀℀㈀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ ISNULL(c.cnt,0) as [CostRange!2!NumStatementsCurrent!ELEMENT], ਍ऀऀऀ䤀匀一唀䰀䰀⠀爀⸀挀渀琀Ⰰ ⤀ 愀猀 嬀䌀漀猀琀刀愀渀最攀℀㈀℀一甀洀匀琀愀琀攀洀攀渀琀猀刀攀挀漀洀洀攀渀搀攀搀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from ਍ऀ⠀ഀഀ select #stringmap.num, #r.cnt ਍ऀ昀爀漀洀 ⌀猀琀爀椀渀最洀愀瀀 䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一 ⌀爀ഀഀ ON #stringmap.num = #r.num ਍ऀ⤀ 爀Ⰰഀഀ ( ਍ऀ猀攀氀攀挀琀 ⌀猀琀爀椀渀最洀愀瀀⸀渀甀洀Ⰰ ⌀挀⸀挀渀琀ഀഀ from #stringmap LEFT OUTER JOIN #c ਍ऀ伀一 ⌀猀琀爀椀渀最洀愀瀀⸀渀甀洀 㴀 ⌀挀⸀渀甀洀ഀഀ ) c, ਍ऀ⌀猀琀爀椀渀最洀愀瀀ഀഀ where #stringmap.num = r.num and ਍ऀ⌀猀琀爀椀渀最洀愀瀀⸀渀甀洀 㴀 挀⸀渀甀洀ഀഀ ਍ऀ䘀伀刀 堀䴀䰀 䔀堀倀䰀䤀䌀䤀吀ഀഀ ਍ऀ搀爀漀瀀 琀愀戀氀攀 ⌀爀ഀഀ drop table #c ਍ऀ搀爀漀瀀 琀愀戀氀攀 ⌀猀琀爀椀渀最洀愀瀀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开搀攀琀愀椀氀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀   ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_query_detail_helper_relational] ਍ऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍ऀऀऀ戀攀最椀渀 猀攀氀攀挀琀 ✀匀琀愀琀攀洀攀渀琀 䤀搀✀ 㴀儀甀攀爀礀䤀䐀Ⰰ ✀匀琀愀琀攀洀攀渀琀 匀琀爀椀渀最✀ 㴀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最Ⰰ ✀匀琀愀琀攀洀攀渀琀 吀礀瀀攀✀ 㴀 䌀䄀匀䔀 ഀഀ WHEN StatementType = 0 THEN 'Select' ਍ऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㄀ 吀䠀䔀一 ✀唀瀀搀愀琀攀✀ഀഀ WHEN StatementType = 2 THEN 'Insert' ਍ऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㌀ 吀䠀䔀一 ✀䐀攀氀攀琀攀✀ഀഀ end,'Current Statement Cost' =CAST(CurrentCost as decimal(38,7)), 'Recommended Statement Cost' =CAST(RecommendedCost as decimal(38,7)), 'Event String' =EventString from [msdb].[dbo].[DTA_reports_query] ਍ऀऀऀऀऀऀ眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀  漀爀搀攀爀 戀礀 儀甀攀爀礀䤀䐀 䄀匀䌀 攀渀搀 ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开搀攀琀愀椀氀开栀攀氀瀀攀爀开砀洀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀   ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_query_detail_helper_xml] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀 ഀഀ as ਍戀攀最椀渀ഀഀ select 1 as Tag, ਍ऀऀऀ一唀䰀䰀          愀猀 倀愀爀攀渀琀Ⰰഀഀ '' as [StatementDetailReport!1!!element], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀匀琀愀琀攀洀攀渀琀䤀䐀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Statement!2!StatementString!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀吀礀瀀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Statement!2!CurrentCost!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Statement!2!EventString!ELEMENT] ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ ਍ऀ猀攀氀攀挀琀 ㈀            愀猀 吀愀最Ⰰ ഀഀ 1 as Parent, ਍ऀऀऀ一唀䰀䰀 愀猀 嬀儀甀攀爀礀䌀漀猀琀℀㄀℀℀攀氀攀洀攀渀琀崀Ⰰഀഀ QueryID as [Statement!2!StatementID!ELEMENT], ਍ऀऀऀ匀琀愀琀攀洀攀渀琀匀琀爀椀渀最 愀猀 嬀匀琀愀琀攀洀攀渀琀℀㈀℀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ CASE ਍ऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀   吀䠀䔀一 ✀匀攀氀攀挀琀✀ഀഀ WHEN StatementType = 1 THEN 'Update' ਍ऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㈀ 吀䠀䔀一 ✀䤀渀猀攀爀琀✀ഀഀ WHEN StatementType = 3 THEN 'Delete' ਍ऀऀऀ攀渀搀  愀猀  嬀匀琀愀琀攀洀攀渀琀℀㈀℀吀礀瀀攀℀䔀䰀䔀䴀䔀一吀℀攀氀攀洀攀渀琀崀Ⰰഀഀ CAST(CurrentCost as decimal(38,7)) as [Statement!2!CurrentCost!ELEMENT], ਍ऀऀऀ䌀䄀匀吀⠀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㜀⤀⤀ 愀猀  嬀匀琀愀琀攀洀攀渀琀℀㈀℀刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ EventString as [Statement!2!EventString!ELEMENT] ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ where SessionID=@SessionID ਍ऀ䘀伀刀 堀䴀䰀 䔀堀倀䰀䤀䌀䤀吀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开椀渀搀攀砀爀攀氀愀琀椀漀渀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 ㄀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_query_indexrelations_helper_relational] ਍ऀऀऀऀऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀Ⰰഀഀ @Recommended int ਍ऀऀऀऀऀऀऀ愀猀ഀഀ begin select 'Statement Id' =Q.QueryID, 'Statement String' =Q.StatementString,'Database Name' =D.DatabaseName, 'Schema Name' =T.SchemaName, 'Table/View Name' =T.TableName, 'Index Name' =I.IndexName from ਍ऀऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 儀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_queryindex] QI, ਍ऀऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 䤀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_table] T, ਍ऀऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 䐀ഀഀ where ਍ऀऀऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀㴀儀䤀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ Q.QueryID=QI.QueryID and ਍ऀऀऀऀऀऀ儀䤀⸀䤀渀搀攀砀䤀䐀㴀䤀⸀䤀渀搀攀砀䤀䐀 愀渀搀 ഀഀ I.TableID=T.TableID and ਍ऀऀऀऀऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ QI.IsRecommendedConfiguration = @Recommended and ਍ऀऀऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀 漀爀搀攀爀 戀礀 儀⸀儀甀攀爀礀䤀䐀  攀渀搀 ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开焀甀攀爀礀开椀渀搀攀砀爀攀氀愀琀椀漀渀猀开栀攀氀瀀攀爀开砀洀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 ㄀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_query_indexrelations_helper_xml] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀 Ⰰഀഀ @Recommended int ਍愀猀 ഀഀ begin ਍ഀഀ select 1 as Tag, ਍ऀऀऀ一唀䰀䰀          愀猀 倀愀爀攀渀琀Ⰰഀഀ '' as [StatementIndexReport!1!!ELEMENT], ਍ऀऀऀ挀愀猀攀 眀栀攀渀 䀀刀攀挀漀洀洀攀渀搀攀搀 㴀 ㄀ 琀栀攀渀 ✀昀愀氀猀攀✀ഀഀ else'true' end ਍ऀऀऀ愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀刀攀瀀漀爀琀℀㄀℀䌀甀爀爀攀渀琀崀Ⰰऀഀഀ NULL as [StatementIndexDetail!2!stmtID!hide], ਍ऀऀऀ一唀䰀䰀  愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀䐀攀琀愀椀氀℀㈀℀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Database!3!DatabaseID!hide], ਍ऀऀऀ一唀䰀䰀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!4!Name!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!5!Name!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㘀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!6!Name!ELEMENT] ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 2 as Tag, ਍ऀऀऀ㄀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [StatementIndexReport!1!!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀刀攀瀀漀爀琀℀㄀℀䌀甀爀爀攀渀琀崀Ⰰഀഀ Q.QueryID as [StatementIndexDetail!2!stmtID!hide], ਍ऀऀऀ儀⸀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最  愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀䐀攀琀愀椀氀℀㈀℀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Database!3!DatabaseID!hide], ਍ऀऀऀ一唀䰀䰀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!4!Name!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!5!Name!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㘀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!6!Name!ELEMENT] ਍ऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_query] Q, ਍ऀऀऀ⠀ऀ猀攀氀攀挀琀 儀⸀儀甀攀爀礀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ from ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 儀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_queryindex] QI, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开椀渀搀攀砀崀 䤀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_table] T, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 䐀ഀഀ where ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀㴀儀䤀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ Q.QueryID=QI.QueryID and ਍ऀऀऀऀ儀䤀⸀䤀渀搀攀砀䤀䐀㴀䤀⸀䤀渀搀攀砀䤀䐀 愀渀搀 ഀഀ I.TableID=T.TableID and ਍ऀऀऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ QI.IsRecommendedConfiguration = @Recommended and ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ group by Q.QueryID,D.DatabaseID) as R ਍ऀऀऀऀ眀栀攀爀攀ഀഀ R.QueryID = Q.QueryID and ਍ऀऀऀऀ刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ Q.SessionID = @SessionID ਍ऀऀऀऀ愀渀搀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀 䤀匀 一伀吀 一唀䰀䰀ഀഀ union all ਍ऀ猀攀氀攀挀琀 ㌀            愀猀 吀愀最Ⰰ ഀഀ 2 as Parent, ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [StatementIndexReport!1!Current], ਍ऀऀऀ儀⸀儀甀攀爀礀䤀䐀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀䐀攀琀愀椀氀℀㈀℀猀琀洀琀䤀䐀℀栀椀搀攀崀Ⰰഀഀ Q.StatementString as [StatementIndexDetail!2!StatementString!ELEMENT] , ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㌀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!3!Name!ELEMENT] , ਍ऀऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!5!TableID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!6!IndexID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㘀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 儀Ⰰഀഀ ( select Q.QueryID,D.DatabaseID ਍ऀऀऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_query] Q, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀 儀䤀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_index] I, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] D ਍ऀऀऀऀ眀栀攀爀攀 ഀഀ Q.SessionID=QI.SessionID and ਍ऀऀऀऀ儀⸀儀甀攀爀礀䤀䐀㴀儀䤀⸀儀甀攀爀礀䤀䐀 愀渀搀 ഀഀ QI.IndexID=I.IndexID and ਍ऀऀऀऀ䤀⸀吀愀戀氀攀䤀䐀㴀吀⸀吀愀戀氀攀䤀䐀 愀渀搀 ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀऀऀ儀䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀 㴀 䀀刀攀挀漀洀洀攀渀搀攀搀 愀渀搀ഀഀ Q.SessionID=@SessionID ਍ऀऀऀऀ最爀漀甀瀀 戀礀 儀⸀儀甀攀爀礀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀⤀ 愀猀 刀ഀഀ where ਍ऀऀऀऀ刀⸀儀甀攀爀礀䤀䐀 㴀 儀⸀儀甀攀爀礀䤀䐀 愀渀搀ഀഀ R.DatabaseID = D.DatabaseID and ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ union all ਍ऀ猀攀氀攀挀琀 㐀            愀猀 吀愀最Ⰰ ഀഀ 3 as Parent, ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [StatementIndexReport!1!Current], ਍ऀऀऀ儀⸀儀甀攀爀礀䤀䐀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀䐀攀琀愀椀氀℀㈀℀猀琀洀琀䤀䐀℀栀椀搀攀崀Ⰰഀഀ Q.StatementString as [StatementIndexDetail!2!StatementString!ELEMENT] , ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㌀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!3!Name!ELEMENT] , ਍ऀऀऀ刀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Table!5!TableID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Index!6!IndexID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㘀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀 儀Ⰰഀഀ ( select Q.QueryID,D.DatabaseID,T.SchemaName ਍ऀऀऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_query] Q, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀 儀䤀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_index] I, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] D ਍ऀऀऀऀ眀栀攀爀攀 ഀഀ Q.SessionID=QI.SessionID and ਍ऀऀऀऀ儀⸀儀甀攀爀礀䤀䐀㴀儀䤀⸀儀甀攀爀礀䤀䐀 愀渀搀 ഀഀ QI.IndexID=I.IndexID and ਍ऀऀऀऀ䤀⸀吀愀戀氀攀䤀䐀㴀吀⸀吀愀戀氀攀䤀䐀 愀渀搀 ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀऀऀ儀䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀 㴀 䀀刀攀挀漀洀洀攀渀搀攀搀 愀渀搀ഀഀ Q.SessionID=@SessionID ਍ऀऀऀऀ最爀漀甀瀀 戀礀 儀⸀儀甀攀爀礀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀⤀ 愀猀 刀ഀഀ where ਍ऀऀऀऀ刀⸀儀甀攀爀礀䤀䐀 㴀 儀⸀儀甀攀爀礀䤀䐀 愀渀搀ഀഀ R.DatabaseID = D.DatabaseID and ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 5 as Tag, ਍ऀऀऀ㐀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [StatementIndexReport!1!!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀刀攀瀀漀爀琀℀㄀℀䌀甀爀爀攀渀琀崀Ⰰഀഀ Q.QueryID as [StatementIndexDetail!2!stmtID!hide], ਍ऀऀऀ儀⸀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最  愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀䐀攀琀愀椀氀℀㈀℀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ D.DatabaseID as [Database!3!DatabaseID!hide], ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.SchemaName as [Schema!4!Name!ELEMENT] , ਍ऀऀऀ刀⸀吀愀戀氀攀䤀䐀 愀猀 嬀吀愀戀氀攀℀㔀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ T.TableName as [Table!5!Name!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀䤀渀搀攀砀℀㘀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Index!6!Name!ELEMENT] ਍ऀऀऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀Ⰰഀഀ [msdb].[dbo].[DTA_reports_query] Q, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 吀Ⰰഀഀ ( select Q.QueryID,D.DatabaseID,T.SchemaName,T.TableID ਍ऀऀऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_query] Q, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀 儀䤀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_index] I, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] D ਍ऀऀऀऀ眀栀攀爀攀 ഀഀ Q.SessionID=QI.SessionID and ਍ऀऀऀऀ儀⸀儀甀攀爀礀䤀䐀㴀儀䤀⸀儀甀攀爀礀䤀䐀 愀渀搀 ഀഀ QI.IndexID=I.IndexID and ਍ऀऀऀऀ䤀⸀吀愀戀氀攀䤀䐀㴀吀⸀吀愀戀氀攀䤀䐀 愀渀搀 ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀऀऀ儀䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀 㴀 䀀刀攀挀漀洀洀攀渀搀攀搀 愀渀搀ഀഀ Q.SessionID=@SessionID ਍ऀऀऀऀ最爀漀甀瀀 戀礀 儀⸀儀甀攀爀礀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ吀⸀吀愀戀氀攀䤀䐀⤀ 愀猀 刀ഀഀ where ਍ऀऀऀऀ刀⸀儀甀攀爀礀䤀䐀 㴀 儀⸀儀甀攀爀礀䤀䐀 愀渀搀ഀഀ R.DatabaseID = D.DatabaseID and ਍ऀऀऀऀ儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ R.TableID = T.TableID ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 6 as Tag, ਍ऀऀऀ㔀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [StatementIndexReport!1!!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀刀攀瀀漀爀琀℀㄀℀䌀甀爀爀攀渀琀崀Ⰰഀഀ Q.QueryID as [StatementIndexDetail!2!stmtID!hide], ਍ऀऀऀ儀⸀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最  愀猀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀䐀攀琀愀椀氀℀㈀℀匀琀愀琀攀洀攀渀琀匀琀爀椀渀最℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ D.DatabaseID as [Database!3!DatabaseID!hide], ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ T.SchemaName as [Schema!4!Name!ELEMENT] , ਍ऀऀऀ吀⸀吀愀戀氀攀䤀䐀 愀猀 嬀吀愀戀氀攀℀㔀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ T.TableName as [Table!5!Name!ELEMENT], ਍ऀऀऀ䤀⸀䤀渀搀攀砀䤀䐀 愀猀 嬀䤀渀搀攀砀℀㘀℀䤀渀搀攀砀䤀䐀℀栀椀搀攀崀Ⰰഀഀ I.IndexName as [Index!6!Name!ELEMENT] ਍ऀऀऀ昀爀漀洀 ऀऀഀഀ [msdb].[dbo].[DTA_reports_query] Q, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀椀渀搀攀砀崀 儀䤀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_index] I, ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] D ਍ऀऀऀऀ眀栀攀爀攀 ഀഀ Q.SessionID=QI.SessionID and ਍ऀऀऀऀ儀⸀儀甀攀爀礀䤀䐀㴀儀䤀⸀儀甀攀爀礀䤀䐀 愀渀搀 ഀഀ QI.IndexID=I.IndexID and ਍ऀऀऀऀ䤀⸀吀愀戀氀攀䤀䐀㴀吀⸀吀愀戀氀攀䤀䐀 愀渀搀 ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀऀऀ儀䤀⸀䤀猀刀攀挀漀洀洀攀渀搀攀搀䌀漀渀昀椀最甀爀愀琀椀漀渀 㴀 䀀刀攀挀漀洀洀攀渀搀攀搀 愀渀搀ഀഀ Q.SessionID=@SessionID ਍ऀ漀爀搀攀爀 戀礀 嬀匀琀愀琀攀洀攀渀琀䤀渀搀攀砀䐀攀琀愀椀氀℀㈀℀猀琀洀琀䤀䐀℀栀椀搀攀崀Ⰰ嬀䐀愀琀愀戀愀猀攀℀㌀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ [Schema!4!Name!ELEMENT],[Table!5!TableID!hide],[Index!6!IndexID!hide] ਍ऀ䘀伀刀 堀䴀䰀 䔀堀倀䰀䤀䌀䤀吀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开猀攀琀开椀渀琀攀爀愀挀琀椀瘀攀猀琀愀琀甀猀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 ㈀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_set_interactivestatus] ਍ऀ䀀䤀渀琀攀爀䄀挀琀椀瘀攀匀琀愀琀甀猀 椀渀琀Ⰰഀഀ @SessionID int ਍ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ甀瀀搀愀琀攀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开椀渀瀀甀琀崀 猀攀琀 䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 㴀 䀀䤀渀琀攀爀䄀挀琀椀瘀攀匀琀愀琀甀猀 眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_set_outputinformation] Script Date: 05/23/2008 14:49:02 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开猀攀琀开漀甀琀瀀甀琀椀渀昀漀爀洀愀琀椀漀渀崀ഀഀ @SessionID int, ਍ऀ䀀吀甀渀椀渀最刀攀猀甀氀琀猀 渀琀攀砀琀Ⰰഀഀ @FinishStatus tinyint ਍愀猀 ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀഀഀ Insert into [msdb].[dbo].[DTA_output]([SessionID], [TuningResults],[FinishStatus]) values(@SessionID,@TuningResults,@FinishStatus) ਍攀渀搀ऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_set_progressinformation] Script Date: 05/23/2008 14:49:02 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开猀攀琀开瀀爀漀最爀攀猀猀椀渀昀漀爀洀愀琀椀漀渀崀ഀഀ @SessionID int, ਍ऀ䀀圀漀爀欀氀漀愀搀䌀漀渀猀甀洀瀀琀椀漀渀 椀渀琀Ⰰഀഀ @TuningStage int, ਍ऀ䀀䔀猀琀䤀洀瀀爀漀瘀攀洀攀渀琀 椀渀琀Ⰰഀഀ @ConsumingWorkLoadMessage nvarchar(256) = N'', ਍ऀ䀀倀攀爀昀漀爀洀椀渀最䄀渀愀氀礀猀椀猀䴀攀猀猀愀最攀 渀瘀愀爀挀栀愀爀⠀㈀㔀㘀⤀㴀 一✀✀Ⰰഀഀ @GeneratingReportsMessage nvarchar(256)= N'' ਍ഀഀ ਍愀猀 ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ऀ甀瀀搀愀琀攀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开瀀爀漀最爀攀猀猀崀ഀഀ set WorkloadConsumption = @WorkloadConsumption, ਍ऀ䔀猀琀䤀洀瀀爀漀瘀攀洀攀渀琀 㴀 䀀䔀猀琀䤀洀瀀爀漀瘀攀洀攀渀琀Ⰰഀഀ ProgressEventTime = GetDate(), ਍ऀ䌀漀渀猀甀洀椀渀最圀漀爀欀䰀漀愀搀䴀攀猀猀愀最攀 㴀ऀ䀀䌀漀渀猀甀洀椀渀最圀漀爀欀䰀漀愀搀䴀攀猀猀愀最攀 Ⰰഀഀ PerformingAnalysisMessage = @PerformingAnalysisMessage, ਍ऀ䜀攀渀攀爀愀琀椀渀最刀攀瀀漀爀琀猀䴀攀猀猀愀最攀 㴀ऀ䀀䜀攀渀攀爀愀琀椀渀最刀攀瀀漀爀琀猀䴀攀猀猀愀最攀ഀഀ where SessionID=@SessionID ਍ऀ愀渀搀 吀甀渀椀渀最匀琀愀最攀 㴀 䀀吀甀渀椀渀最匀琀愀最攀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开猀攀琀开琀甀渀椀渀最氀漀最琀愀戀氀攀渀愀洀攀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 ㌀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_set_tuninglogtablename] ਍ऀ䀀䰀漀最吀愀戀氀攀一愀洀攀 渀瘀愀爀挀栀愀爀⠀㄀㈀㠀 ⤀Ⰰ ഀഀ @SessionID int ਍ഀഀ as ਍戀攀最椀渀ഀഀ declare @retval int ਍ऀ猀攀琀 渀漀挀漀甀渀琀 漀渀ഀഀ ਍ऀ攀砀攀挀 䀀爀攀琀瘀愀氀 㴀  猀瀀开䐀吀䄀开挀栀攀挀欀开瀀攀爀洀椀猀猀椀漀渀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ऀഀഀ ਍ऀ甀瀀搀愀琀攀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开椀渀瀀甀琀崀 猀攀琀 䰀漀最吀愀戀氀攀一愀洀攀 㴀 䀀䰀漀最吀愀戀氀攀一愀洀攀 眀栀攀爀攀 匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开猀琀愀爀琀开砀洀氀瀀爀攀昀椀砀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 ㌀ ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_start_xmlprefix] ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀猀琀愀爀琀吀愀最猀 渀瘀愀爀挀栀愀爀⠀㄀㈀㠀⤀ഀഀ set @startTags = N'' ਍ऀ猀攀氀攀挀琀 䀀猀琀愀爀琀吀愀最猀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开琀愀戀氀攀开愀挀挀攀猀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 㐀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_table_access_helper_relational] ਍ऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍ऀऀऀ戀攀最椀渀 猀攀氀攀挀琀 䐀㄀⸀䐀愀琀愀戀愀猀攀一愀洀攀 愀猀 ✀䐀愀琀愀戀愀猀攀 一愀洀攀✀ Ⰰ吀㄀⸀匀挀栀攀洀愀一愀洀攀 愀猀 ✀匀挀栀攀洀愀 一愀洀攀✀ Ⰰ吀㄀⸀吀愀戀氀攀一愀洀攀 愀猀 ✀吀愀戀氀攀 一愀洀攀✀ Ⰰ刀⸀䌀漀甀渀琀 愀猀 ✀一甀洀戀攀爀 漀昀 爀攀昀攀爀攀渀挀攀猀✀ Ⰰ䌀䄀匀吀⠀刀⸀唀猀愀最攀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀ 愀猀 ✀倀攀爀挀攀渀琀 唀猀愀最攀✀ 昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_database] as D1 , ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀㄀Ⰰഀഀ ( ਍ऀऀऀऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀吀愀戀氀攀䤀䐀 ഀഀ ,SUM(Q.Weight) as Count, ਍ऀऀऀऀऀऀऀ㄀  ⸀  ⨀  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ ⼀ ഀഀ ( 1.0 * ( select CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ਍ऀऀऀऀऀऀऀऀऀऀऀऀ攀氀猀攀 ㄀ഀഀ end ਍ऀऀऀऀऀऀऀऀऀഀഀ from [msdb].[dbo].[DTA_reports_query] as Q ਍ऀऀऀऀऀऀऀऀऀऀ眀栀攀爀攀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 ⤀⤀ഀഀ as Usage ਍ऀऀ昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_table] as T ਍ऀऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_querytable] as QT ON QT.TableID = T.TableID ਍ऀऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_query] as Q ON QT.QueryID = Q.QueryID ਍ऀऀऀऀ䨀伀䤀一ഀഀ DTA_reports_database as D ON T.DatabaseID = D.DatabaseID ਍ऀऀऀऀ愀渀搀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 儀吀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ Q.SessionID = @SessionID ਍ऀऀऀऀ䜀刀伀唀倀 䈀夀 吀⸀吀愀戀氀攀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀⤀ 愀猀 刀ഀഀ where R.DatabaseID = D1.DatabaseID and ਍ऀऀऀऀ刀⸀吀愀戀氀攀䤀䐀 㴀 吀㄀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ D1.SessionID = @SessionID and ਍ऀऀऀऀ刀⸀䌀漀甀渀琀 㸀  ഀഀ order by R.Count desc end ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_table_access_helper_xml] Script Date: 05/23/2008 14:49:04 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开琀愀戀氀攀开愀挀挀攀猀猀开栀攀氀瀀攀爀开砀洀氀崀ഀഀ @SessionID int ਍愀猀ഀഀ begin ਍猀攀氀攀挀琀 ㄀            愀猀 吀愀最Ⰰ ഀഀ NULL as Parent, ਍ऀऀ✀✀ 愀猀 嬀吀愀戀氀攀䄀挀挀攀猀猀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Database!2!DatabaseID!hide], ਍ऀऀ一唀䰀䰀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!3!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Table!4!PercentUsage!ELEMENT] ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select ਍ऀऀ㈀            愀猀 吀愀最Ⰰ ഀഀ 1 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀䄀挀挀攀猀猀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!3!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Table!4!PercentUsage!ELEMENT] ਍ऀ昀爀漀洀 嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 愀渀搀ഀഀ D.DatabaseID in ਍ऀ⠀猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_querytable] as QT, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀऀ眀栀攀爀攀ഀഀ QT.TableID = T.TableID and ਍ऀऀऀ吀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ D.SessionID = @SessionID ਍ऀऀऀ最爀漀甀瀀 戀礀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀⤀ഀഀ ਍ഀഀ union all ਍ഀഀ select 3 as Tag, 2 as Parent, ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀䄀挀挀攀猀猀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!4!Name!ELEMENT], ਍ऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㐀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Table!4!PercentUsage!ELEMENT] ਍ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀ⠀ഀഀ select D.DatabaseID,T.SchemaName from ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀琀愀戀氀攀崀 愀猀 儀吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀऀ儀吀⸀吀愀戀氀攀䤀䐀 㴀 吀⸀吀愀戀氀攀䤀䐀  愀渀搀ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ group by D.DatabaseID,T.SchemaName ਍⤀ 刀ഀഀ ਍ऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 刀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ union all ਍ऀഀഀ select 4 as Tag, 3 as Parent, ਍ഀഀ NULL as [TableAccessReport!1!!ELEMENT], ਍ऀऀ䐀㄀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D1.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀ吀㄀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ T1.TableID as [Table!4!TableID!hide], ਍ऀऀ吀㄀⸀吀愀戀氀攀一愀洀攀 愀猀 嬀吀愀戀氀攀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ R.Count as [Table!4!NumberOfReferences!ELEMENT], ਍ऀऀ䌀䄀匀吀⠀刀⸀唀猀愀最攀 愀猀 搀攀挀椀洀愀氀⠀㌀㠀Ⰰ㈀⤀⤀ 愀猀 嬀吀愀戀氀攀℀㐀℀倀攀爀挀攀渀琀唀猀愀最攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ ਍昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_database] as D1 , ਍ऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀㄀Ⰰഀഀ ( ਍ऀऀऀऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀吀愀戀氀攀䤀䐀 ഀഀ ,SUM(Q.Weight) as Count, ਍ऀऀऀऀऀऀऀ㄀  ⸀  ⨀  匀唀䴀⠀儀⸀圀攀椀最栀琀⤀ ⼀ ഀഀ ( 1.0 * ( select CASE WHEN SUM(Q.Weight) > 0 THEN SUM(Q.Weight) ਍ऀऀऀऀऀऀऀऀऀऀऀऀ攀氀猀攀 ㄀ഀഀ end ਍ऀऀऀऀऀऀऀऀऀഀഀ from [msdb].[dbo].[DTA_reports_query] as Q ਍ऀऀऀऀऀऀऀऀऀऀ眀栀攀爀攀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀 ⤀⤀ഀഀ as Usage ਍ऀऀ昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_table] as T ਍ऀऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_querytable] as QT ON QT.TableID = T.TableID ਍ऀऀऀऀ䰀䔀䘀吀 伀唀吀䔀刀 䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_query] as Q ON QT.QueryID = Q.QueryID ਍ऀऀऀऀ䨀伀䤀一ഀഀ [msdb].[dbo].[DTA_reports_database] as D ON T.DatabaseID = D.DatabaseID ਍ऀऀऀऀ愀渀搀 儀⸀匀攀猀猀椀漀渀䤀䐀 㴀 儀吀⸀匀攀猀猀椀漀渀䤀䐀 愀渀搀 ഀഀ Q.SessionID = @SessionID ਍ऀऀऀऀ䜀刀伀唀倀 䈀夀 吀⸀吀愀戀氀攀䤀䐀Ⰰ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀⤀ 愀猀 刀ഀഀ where R.DatabaseID = D1.DatabaseID and ਍ऀऀऀऀ刀⸀吀愀戀氀攀䤀䐀 㴀 吀㄀⸀吀愀戀氀攀䤀䐀 愀渀搀ഀഀ D1.SessionID = @SessionID and ਍ऀऀऀऀ刀⸀䌀漀甀渀琀 㸀  ഀഀ ਍ऀ漀爀搀攀爀 戀礀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰ嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰ嬀吀愀戀氀攀℀㐀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰ嬀吀愀戀氀攀℀㐀℀一甀洀戀攀爀伀昀刀攀昀攀爀攀渀挀攀猀℀䔀䰀䔀䴀䔀一吀崀 ഀഀ ਍ऀ䘀伀刀 堀䴀䰀 䔀堀倀䰀䤀䌀䤀吀ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开甀瀀搀愀琀攀开猀攀猀猀椀漀渀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 㐀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_update_session] ਍ऀ䀀匀攀猀猀椀漀渀䤀䐀 椀渀琀Ⰰ ഀഀ @SessionName sysname = NULL, ਍ऀ䀀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 琀椀渀礀椀渀琀 㴀 一唀䰀䰀ഀഀ as ਍戀攀最椀渀  ഀഀ declare @x_SessionName sysname ਍ऀ搀攀挀氀愀爀攀 䀀砀开䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 琀椀渀礀椀渀琀ഀഀ declare @retval int ਍ऀ搀攀挀氀愀爀攀 䀀䔀爀爀漀爀匀琀爀椀渀最 渀瘀愀爀挀栀愀爀⠀㔀  ⤀ഀഀ ਍ഀഀ set nocount on ਍ऀ猀攀氀攀挀琀 䀀匀攀猀猀椀漀渀一愀洀攀 㴀 䰀吀刀䤀䴀⠀刀吀刀䤀䴀⠀䀀匀攀猀猀椀漀渀一愀洀攀⤀⤀ഀഀ ਍ऀഀഀ declare @dup_SessionName sysname ਍ഀഀ if @SessionName IS NOT NULL ਍ऀ戀攀最椀渀ഀഀ select @dup_SessionName = @SessionName ਍ऀऀ昀爀漀洀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开椀渀瀀甀琀ഀഀ where SessionName = @SessionName ਍ऀഀഀ if (@dup_SessionName IS NOT NULL) ਍ऀऀऀ戀攀最椀渀ഀഀ set @ErrorString = 'The session ' + '"' + LTRIM(RTRIM(@SessionName)) + '"' +' already exists. Please use a different session name.' ਍ऀऀऀऀ爀愀椀猀攀爀爀漀爀 ⠀㌀㄀  ㄀Ⰰ ⴀ㄀Ⰰⴀ㄀Ⰰ䀀匀攀猀猀椀漀渀一愀洀攀⤀ഀഀ return(1) ਍ऀऀऀ攀渀搀ऀऀऀऀഀഀ end ਍ऀഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ऀ椀昀 䀀爀攀琀瘀愀氀 㴀 ㄀ഀഀ begin ਍ऀऀ爀愀椀猀攀爀爀漀爀⠀㌀㄀  ㈀Ⰰⴀ㄀Ⰰⴀ㄀⤀ഀഀ return(1) ਍ऀ攀渀搀ഀഀ ਍ऀ椀昀ऀ⠀⠀䀀匀攀猀猀椀漀渀一愀洀攀 䤀匀 一伀吀 一唀䰀䰀⤀ 伀刀ഀഀ (@InteractiveStatus IS NOT NULL) ਍ऀऀ⤀ഀഀ begin ਍ऀऀ猀攀氀攀挀琀ऀ䀀砀开匀攀猀猀椀漀渀一愀洀攀 㴀 匀攀猀猀椀漀渀一愀洀攀Ⰰഀഀ @x_InteractiveStatus = InteractiveStatus ਍ऀऀ昀爀漀洀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开椀渀瀀甀琀ഀഀ where SessionID = @SessionID ਍ഀഀ if (@SessionName IS NULL) select @SessionName = @x_SessionName ਍ऀऀ椀昀 ⠀䀀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 䤀匀 一唀䰀䰀⤀ 猀攀氀攀挀琀 䀀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 㴀 䀀砀开䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀ഀഀ ਍ऀऀ甀瀀搀愀琀攀 洀猀搀戀⸀搀戀漀⸀䐀吀䄀开椀渀瀀甀琀ഀഀ set SessionName = @SessionName, ਍ऀऀऀ䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀 㴀 䀀䤀渀琀攀爀愀挀琀椀瘀攀匀琀愀琀甀猀ഀഀ where SessionID = @SessionID ਍ऀ攀渀搀ऀऀഀഀ ਍攀渀搀ഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_update_tuninglog_errorfrequency] Script Date: 05/23/2008 14:49:05 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开甀瀀搀愀琀攀开琀甀渀椀渀最氀漀最开攀爀爀漀爀昀爀攀焀甀攀渀挀礀崀ഀഀ @SessionID int, ਍ऀ䀀䘀爀攀焀甀攀渀挀礀ऀ椀渀琀Ⰰഀഀ @RowID int ਍愀猀ഀഀ begin ਍ऀ搀攀挀氀愀爀攀 䀀爀攀琀瘀愀氀  椀渀琀ऀऀऀऀऀऀऀഀഀ set nocount on ਍ഀഀ exec @retval = sp_DTA_check_permission @SessionID ਍ഀഀ if @retval = 1 ਍ऀ戀攀最椀渀ഀഀ raiserror(31002,-1,-1) ਍ऀऀ爀攀琀甀爀渀⠀㄀⤀ഀഀ end ਍ഀഀ update [msdb].[dbo].[DTA_tuninglog] ਍ऀ猀攀琀 嬀䘀爀攀焀甀攀渀挀礀崀㴀䀀䘀爀攀焀甀攀渀挀礀ഀഀ where [RowID]=@RowID and [SessionID] = @SessionID ਍ഀഀ end ਍ഀഀ GO ਍⼀⨀⨀⨀⨀⨀⨀ 伀戀樀攀挀琀㨀  匀琀漀爀攀搀倀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开瘀椀攀眀开琀愀戀氀攀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀    匀挀爀椀瀀琀 䐀愀琀攀㨀  㔀⼀㈀㌀⼀㈀  㠀 ㄀㐀㨀㐀㤀㨀 㔀 ⨀⨀⨀⨀⨀⨀⼀ഀഀ SET ANSI_NULLS ON ਍䜀伀ഀഀ SET QUOTED_IDENTIFIER ON ਍䜀伀ഀഀ create procedure [dbo].[sp_DTA_view_table_helper_relational] ਍ऀऀऀऀऀऀ䀀匀攀猀猀椀漀渀䤀䐀ऀऀ椀渀琀ഀഀ as ਍ऀऀऀऀऀऀ戀攀最椀渀  猀攀氀攀挀琀 ✀嘀椀攀眀 䤀搀✀ 㴀吀㈀⸀吀愀戀氀攀䤀䐀Ⰰ ✀䐀愀琀愀戀愀猀攀 一愀洀攀✀ 㴀䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀Ⰰ ✀匀挀栀攀洀愀 一愀洀攀✀ 㴀吀㈀⸀匀挀栀攀洀愀一愀洀攀Ⰰ ✀嘀椀攀眀 一愀洀攀✀ 㴀吀㈀⸀吀愀戀氀攀一愀洀攀Ⰰ ✀䐀愀琀愀戀愀猀攀 一愀洀攀✀ 㴀䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀Ⰰ ✀匀挀栀攀洀愀 一愀洀攀✀ 㴀吀㄀⸀匀挀栀攀洀愀一愀洀攀Ⰰ ✀吀愀戀氀攀 一愀洀攀✀ 㴀吀㄀⸀吀愀戀氀攀一愀洀攀 ऀ昀爀漀洀 ഀഀ [msdb].[dbo].[DTA_reports_database] D, ਍ऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀瘀椀攀眀崀 吀嘀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_table] T1, ਍ऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 吀㈀ഀഀ where ਍ऀऀऀऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀㴀吀㄀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀 ഀഀ D.DatabaseID=T2.DatabaseID and ਍ऀऀऀऀऀऀ吀㄀⸀吀愀戀氀攀䤀䐀㴀吀嘀⸀吀愀戀氀攀䤀䐀 愀渀搀 ഀഀ T2.TableID=TV.ViewID and ਍ऀऀऀऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ order by TV.ViewID end ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_view_table_helper_xml] Script Date: 05/23/2008 14:49:06 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开瘀椀攀眀开琀愀戀氀攀开栀攀氀瀀攀爀开砀洀氀崀ഀഀ @SessionID int ਍愀猀ഀഀ begin ਍ऀ猀攀氀攀挀琀 ㄀            愀猀 吀愀最Ⰰ ഀഀ NULL as Parent, ਍ऀऀऀ✀✀ 愀猀 嬀嘀椀攀眀吀愀戀氀攀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Database!2!DatabaseID!hide], ਍ऀऀऀ一唀䰀䰀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [Schema!3!Name!ELEMENT] , ਍ऀऀऀ一唀䰀䰀 愀猀 嬀嘀椀攀眀℀㐀℀嘀椀攀眀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [View!4!Name!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!5!Name!ELEMENT] ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 2 as Tag, ਍ऀऀऀ㄀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [ViewTableReport!1!!ELEMENT], ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀऀ一唀䰀䰀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [View!4!ViewID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀嘀椀攀眀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Table!5!TableID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D ਍ऀऀऀ眀栀攀爀攀ഀഀ D.SessionID = @SessionID and ਍ऀऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 椀渀 ഀഀ ( ਍ऀऀऀऀऀ猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀ഀഀ from [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀऀऀऀऀऀ吀⸀䤀猀嘀椀攀眀 㴀 ㄀ 愀渀搀ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀऀऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ GROUP BY D.DatabaseID) ਍ऀ甀渀椀漀渀 愀氀氀ഀഀ select 3 as Tag, ਍ऀऀऀ㈀          愀猀 倀愀爀攀渀琀Ⰰഀഀ NULL as [ViewTableReport!1!!ELEMENT], ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ D.DatabaseName as [Database!2!Name!ELEMENT] , ਍ऀऀऀ刀⸀匀挀栀攀洀愀一愀洀攀  愀猀 嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ NULL as [View!4!ViewID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀嘀椀攀眀℀㐀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ NULL as [Table!5!TableID!hide], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀऀऀऀ⠀猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀ഀഀ from [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀऀऀऀऀऀऀ吀⸀䤀猀嘀椀攀眀 㴀 ㄀ 愀渀搀ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀऀऀऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ GROUP BY D.DatabaseID,T.SchemaName ਍ऀऀऀऀऀ⤀ 刀ഀഀ where ਍ऀऀऀऀ刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ D.SessionID = @SessionID ਍ഀഀ union all ਍ऀ猀攀氀攀挀琀 㐀            愀猀 吀愀最Ⰰ ഀഀ 3 as Parent, ਍ऀऀऀ一唀䰀䰀 愀猀 嬀嘀椀攀眀吀愀戀氀攀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ R.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀऀ吀⸀吀愀戀氀攀䤀䐀 愀猀 嬀嘀椀攀眀℀㐀℀嘀椀攀眀䤀䐀℀栀椀搀攀崀Ⰰഀഀ T.TableName as [View!4!Name!ELEMENT], ਍ऀऀऀ一唀䰀䰀 愀猀 嬀吀愀戀氀攀℀㔀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ NULL as [Table!5!Name!ELEMENT] ਍ऀऀऀ昀爀漀洀ऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 愀猀 吀Ⰰഀഀ [msdb].[dbo].[DTA_reports_database] as D, ਍ऀऀऀऀऀ⠀猀攀氀攀挀琀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀Ⰰ吀⸀匀挀栀攀洀愀一愀洀攀Ⰰ吀⸀吀愀戀氀攀䤀䐀ഀഀ from [msdb].[dbo].[DTA_reports_table] as T, ਍ऀऀऀऀऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开搀愀琀愀戀愀猀攀崀 愀猀 䐀ഀഀ where ਍ऀऀऀऀऀऀऀ吀⸀䤀猀嘀椀攀眀 㴀 ㄀ 愀渀搀ഀഀ T.DatabaseID = D.DatabaseID and ਍ऀऀऀऀऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ GROUP BY D.DatabaseID,T.SchemaName,T.TableID ਍ऀऀऀऀऀ⤀ 刀ഀഀ where ਍ऀऀऀऀ刀⸀䐀愀琀愀戀愀猀攀䤀䐀 㴀 䐀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀ഀഀ T.TableID = R.TableID and ਍ऀऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ union all ਍ऀ猀攀氀攀挀琀 㔀            愀猀 吀愀最Ⰰ ഀഀ 4 as Parent, ਍ऀऀऀ一唀䰀䰀 愀猀 嬀嘀椀攀眀吀愀戀氀攀刀攀瀀漀爀琀℀㄀℀℀䔀䰀䔀䴀䔀一吀崀Ⰰഀഀ D.DatabaseID as [Database!2!DatabaseID!hide], ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀一愀洀攀  愀猀 嬀䐀愀琀愀戀愀猀攀℀㈀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀 Ⰰഀഀ T2.SchemaName as [Schema!3!Name!ELEMENT] , ਍ऀऀऀ吀㈀⸀吀愀戀氀攀䤀䐀 愀猀 嬀嘀椀攀眀℀㐀℀嘀椀攀眀䤀䐀℀栀椀搀攀崀Ⰰഀഀ T2.TableName as [View!4!Name!ELEMENT], ਍ऀऀऀ吀㄀⸀吀愀戀氀攀䤀䐀 愀猀 嬀吀愀戀氀攀℀㔀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀Ⰰഀഀ T1.TableName as [Table!5!Name!ELEMENT] ਍ऀऀऀ昀爀漀洀ഀഀ [msdb].[dbo].[DTA_reports_database] D, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀瘀椀攀眀崀 吀嘀Ⰰ ഀഀ [msdb].[dbo].[DTA_reports_table] T1, ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开琀愀戀氀攀崀 吀㈀ഀഀ where ਍ऀऀऀ䐀⸀䐀愀琀愀戀愀猀攀䤀䐀㴀吀㄀⸀䐀愀琀愀戀愀猀攀䤀䐀 愀渀搀 ഀഀ D.DatabaseID=T2.DatabaseID and ਍ऀऀऀ吀㄀⸀吀愀戀氀攀䤀䐀㴀吀嘀⸀吀愀戀氀攀䤀䐀 愀渀搀 ഀഀ T2.TableID=TV.ViewID and ਍ऀऀऀ䐀⸀匀攀猀猀椀漀渀䤀䐀 㴀 䀀匀攀猀猀椀漀渀䤀䐀ഀഀ ਍ऀ漀爀搀攀爀 戀礀 嬀䐀愀琀愀戀愀猀攀℀㈀℀䐀愀琀愀戀愀猀攀䤀䐀℀栀椀搀攀崀Ⰰ嬀匀挀栀攀洀愀℀㌀℀一愀洀攀℀䔀䰀䔀䴀䔀一吀崀Ⰰ嬀嘀椀攀眀℀㐀℀嘀椀攀眀䤀䐀℀栀椀搀攀崀Ⰰ嬀吀愀戀氀攀℀㔀℀吀愀戀氀攀䤀䐀℀栀椀搀攀崀ഀഀ FOR XML EXPLICIT ਍攀渀搀ऀऀऀऀऀऀഀഀ ਍䜀伀ഀഀ /****** Object: StoredProcedure [dbo].[sp_DTA_wkld_analysis_helper_relational] Script Date: 05/23/2008 14:49:06 ******/ ਍匀䔀吀 䄀一匀䤀开一唀䰀䰀匀 伀一ഀഀ GO ਍匀䔀吀 儀唀伀吀䔀䐀开䤀䐀䔀一吀䤀䘀䤀䔀刀 伀一ഀഀ GO ਍ऀ挀爀攀愀琀攀 瀀爀漀挀攀搀甀爀攀 嬀搀戀漀崀⸀嬀猀瀀开䐀吀䄀开眀欀氀搀开愀渀愀氀礀猀椀猀开栀攀氀瀀攀爀开爀攀氀愀琀椀漀渀愀氀崀ഀഀ @SessionID int ਍ऀऀऀऀऀऀ愀猀ഀഀ begin select 'Statement Type' = CASE ਍ऀऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀   吀䠀䔀一 ✀匀攀氀攀挀琀✀ഀഀ WHEN StatementType = 1 THEN 'Update' ਍ऀऀऀऀऀऀ圀䠀䔀一 匀琀愀琀攀洀攀渀琀吀礀瀀攀 㴀 ㈀ 吀䠀䔀一 ✀䤀渀猀攀爀琀✀ഀഀ WHEN StatementType = 3 THEN 'Delete' ਍ऀऀऀऀऀऀ攀渀搀Ⰰ ✀一甀洀戀攀爀 漀昀 匀琀愀琀攀洀攀渀琀猀✀ 㴀䌀伀唀一吀⠀儀甀攀爀礀䤀䐀⤀Ⰰ ✀䌀漀猀琀 䐀攀挀爀攀愀猀攀搀✀ 㴀匀唀䴀⠀䌀䄀匀䔀ഀഀ WHEN RecommendedCostCurrentCost THEN 1 else 0 end) as [Statements!2!CostIncreased!ELEMENT], ਍ऀऀऀ匀唀䴀⠀䌀䄀匀䔀 圀䠀䔀一 刀攀挀漀洀洀攀渀搀攀搀䌀漀猀琀㴀䌀甀爀爀攀渀琀䌀漀猀琀 吀䠀䔀一 ㄀ 攀氀猀攀   攀渀搀⤀ 愀猀 嬀匀琀愀琀攀洀攀渀琀猀℀㈀℀䌀漀猀琀匀愀洀攀℀䔀䰀䔀䴀䔀一吀崀ഀഀ from ਍ऀऀऀ嬀洀猀搀戀崀⸀嬀搀戀漀崀⸀嬀䐀吀䄀开爀攀瀀漀爀琀猀开焀甀攀爀礀崀ഀഀ where ਍ऀऀऀ匀攀猀猀椀漀渀䤀䐀㴀䀀匀攀猀猀椀漀渀䤀䐀ഀഀ group by StatementType ਍ऀऀऀ䘀伀刀 堀䴀䰀 䔀堀倀䰀䤀䌀䤀吀ഀഀ end ਍�