Guest User

Untitled

a guest
Jan 16th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. USE [Admin]
  2. GO
  3.  
  4. /*
  5. Name: USP_Fragmentation_Report
  6. Description: This SP uses linked servers to connect to all the servers whose names are present in table
  7. SmartReIndex_servers and pulls the latest reindex details and populates that data into table fragementation_Report
  8. PreRequisite: 1. Smart ReIndex has to be configured in a server in order for this SP to work 2.Server name
  9. should be added to the table SmartReIndex_servers and linked server should be created for that server
  10. */
  11.  
  12.  
  13. CREATE procedure [dbo].[USP_Fragmentation_Report]
  14. AS
  15. Begin
  16. declare @DBName varchar(30), @LatestRunDate datetime, @srvr_name sysname, @str nvarchar(1000), @ParmDefinition nvarchar(1000), @appname varchar(20)
  17.  
  18. declare srvr_list cursor for select server_name,app_name from SmartReIndex_servers order by App_Name,server_name
  19.  
  20. open srvr_list
  21. fetch next from srvr_list into @srvr_name,@appname
  22.  
  23. while(@@FETCH_STATUS=0)
  24. begin
  25.  
  26. set @str='declare dblist cursor for select distinct(Database_Name) from ['+@srvr_name+'].master.dbo.autoindex_audit order by Database_Name'
  27.  
  28. exec(@str)
  29. open dblist
  30.  
  31. fetch next from dblist into @DBName
  32.  
  33.  
  34. while(@@FETCH_STATUS=0)
  35. begin
  36.  
  37. SET @ParmDefinition = N'@retvalOUT datetime OUTPUT'
  38. SET @STR='set @retvalOUT=(select top 1 RunDateTime from ['+@srvr_name+'].master.dbo.autoindex_audit where Database_Name='+''''+@DBName+''''+
  39. ' order by Audit_Id desc)'
  40. EXEC sp_executesql @STR,@ParmDefinition, @retvalOUT=@LatestRunDate OUTPUT;
  41.  
  42. set @str='create synonym AA for ['+@srvr_name+'].master.[dbo].autoindex_audit'
  43. exec(@str)
  44.  
  45.  
  46. begin try
  47.  
  48. insert into Fragmentation_Report select @appname, @srvr_name, Database_Name, Table_Name,Index_Name,Avg_Fragmentation_In_Percent as Fragmentation_Before_ReIndex,
  49. StartDateTime as ReIndex_StartDateTime, EndDateTime as ReIndex_EndDateTime, AFTER_Fragmentation as Fragmentation_After_ReIndex,
  50. DATEDIFF(WEEK, RunDateTime, getdate()),case IsProcessed when 1 then 'Yes' when 0 then 'No' END
  51. from AA where Database_Name=@DBName and RunDateTime=@LatestRunDate and ReOrganize_Or_ReBuild<>'N'
  52.  
  53. end try
  54.  
  55. begin catch
  56. insert into server_fail_audit values (@srvr_name ,error_message(),GETDATE())
  57. end catch
  58.  
  59. drop synonym AA
  60.  
  61. fetch next from dblist into @DBName
  62. end
  63.  
  64.  
  65.  
  66.  
  67. close dblist
  68. deallocate dblist
  69.  
  70. fetch next from srvr_list into @srvr_name,@appname
  71. end
  72.  
  73. close srvr_list
  74. deallocate srvr_list
  75.  
  76. --select server_name, Database_Name, Table_Name, Index_Name, Fragmentation_Before_ReIndex, ReIndex_StartDateTime=case ReIndex_StartDateTime when NULL then 'NULL' else ReIndex_StartDateTime end,
  77. --ReIndex_EndDateTime=case ReIndex_EndDateTime when NULL then 'NUL' else ReIndex_EndDateTime end, fragmentation_After_ReIndex= case Fragmentation_After_ReIndex when NULL then 'NULL' else Fragmentation_After_ReIndex end
  78. select * from Fragmentation_Report
  79.  
  80. truncate table Fragmentation_Report
  81. END
  82.  
  83. GO
Add Comment
Please, Sign In to add comment