Advertisement
ffarias

HSQL

Jul 15th, 2019
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 35.20 KB | None | 0 0
  1. -- Listar Vers�o das Inst�ncias:
  2. -->Colar directamente na sheet correcta
  3. DECLARE @SQL NVARCHAR(MAX)
  4.  
  5. SELECT @SQL = '
  6. SELECT @@VERSION AS [SQL Server Version]
  7.     , SERVERPROPERTY(''MachineName'') AS [MachineName]
  8.     , SERVERPROPERTY(''ServerName'') AS [ServerName]
  9.     , SERVERPROPERTY(''InstanceName'') AS [Instance]
  10.     , sqlserver_start_time
  11.     , SERVERPROPERTY(''Edition'') AS [Edition]
  12.     , SERVERPROPERTY(''ProductLevel'') AS [ProductLevel]
  13.     , SERVERPROPERTY(''ProductVersion'') AS [ProductVersion]
  14.     , SERVERPROPERTY(''Collation'') AS [Collation]
  15.     , SERVERPROPERTY(''IsFullTextInstalled'') AS [IsFullTextInstalled]
  16.     , SERVERPROPERTY(''IsIntegratedSecurityOnly'') AS [IsIntegratedSecurityOnly]
  17.     , SERVERPROPERTY(''IsClustered'') AS [IsClustered]
  18.     , SERVERPROPERTY(''ComputerNamePhysicalNetBIOS'') AS [ComputerNamePhysicalNetBIOS]
  19.     , SERVERPROPERTY(''ProcessID'') AS [ProcessID]
  20.     , (SELECT TOP 1 local_tcp_port FROM sys.dm_exec_connections WHERE local_tcp_port IS NOT NULL) PortNumber
  21.     , s1.value_in_use [MaxDOP]
  22.     , s2.value_in_use [Max Memory Setting]
  23.     , pc.cntr_value AS [Page Life Total]
  24.     , CASE WHEN s2.value_in_use = 2147483647
  25.         THEN CONVERT(decimal(18,2),(pc.cntr_value / ((CONVERT(decimal(18,2),(' + CASE WHEN Inst.Vers < 11 THEN 'oif.physical_memory_in_bytes/1048576' ELSE 'oif.physical_memory_kb/1024' END + ')) / 4096)*300)))
  26.         ELSE CONVERT(decimal(18,2),(pc.cntr_value / ((CONVERT(decimal(18,2),s2.value_in_use) / 4096)*300)))
  27.     END AS [Page Life Adjusted]
  28.     , CONVERT(decimal(18,2),(bhr.cntr_value / (bhrb.cntr_value * 0.01))) B_H_Ratio
  29.     , oif.cpu_count AS [Logical CPU Count]
  30.     , ' + CASE WHEN Inst.Vers < 11 THEN 'oif.physical_memory_in_bytes/1048576' ELSE 'oif.physical_memory_kb/1024' END + ' AS [Physical Memory (MB)]
  31.     , oif.hyperthread_ratio AS [Hyperthread Ratio]
  32.     , oif.cpu_count/oif.hyperthread_ratio AS [Physical CPU Count]
  33.     , CASE oif.affinity_type_desc WHEN ''AUTO'' THEN ''AUTO'' WHEN ''MANUAL'' THEN ''MANUAL: '' + CONVERT(VARCHAR(32), s3.value) END [CPU_Affinity_Mask]
  34.     , GETDATE() AS SampleDate
  35. FROM
  36.    sys.configurations s1, sys.configurations s2, sys.configurations s3, sys.dm_os_performance_counters pc WITH (NOLOCK), sys.dm_os_sys_info oif WITH (NOLOCK),
  37.     sys.dm_os_performance_counters bhr, sys.dm_os_performance_counters bhrb
  38. WHERE
  39.    s1.description LIKE ''%max%parallelism%''
  40.     AND s2.name like ''max server memory (MB)''
  41.     AND s3.configuration_id = 1535
  42.     AND pc.[object_name] LIKE N''%Buffer Node%'' -- Handles named instances
  43. --  AND pc.[instance_name] IN ('''', ''_Total'') -- Handles named instances
  44.     AND pc.counter_name = N''Page life expectancy''
  45.     AND bhr.[object_name] LIKE ''%Buffer Manager%'' AND bhr.[counter_name] = ''Buffer cache hit ratio''
  46.     AND bhrb.[object_name] LIKE ''%Buffer Manager%'' AND bhrb.[counter_name] LIKE ''%Buffer cache hit ratio base%'' OPTION (RECOMPILE);
  47. '
  48. FROM (SELECT CONVERT(INT, SUBSTRING(CONVERT(VARCHAR(50), SERVERPROPERTY('ProductVersion')), 1, CHARINDEX('.', CONVERT(VARCHAR(50), SERVERPROPERTY('ProductVersion'))) -1 )) AS Vers) Inst
  49.  
  50. -- SELECT @SQL
  51.  
  52. EXEC sys.sp_executesql @SQL
  53.    
  54. -- Services:
  55.  
  56. SELECT servicename
  57.     , process_id
  58.     , startup_type_desc
  59.     , status_desc
  60.     , last_startup_time
  61.     , service_account
  62.     , is_clustered
  63.     , cluster_nodename
  64.     , [filename]
  65. FROM sys.dm_server_services WITH (NOLOCK) OPTION (RECOMPILE);
  66.  
  67. -- Trace Status: n�o retorna nada
  68.  
  69. DBCC TRACESTATUS (-1);
  70.  
  71. -- Windows Info:
  72.  
  73. SELECT CASE windows_release
  74.     WHEN '5.2' THEN 'Windows XP or Windows Server 2003'
  75.     WHEN '6.0' THEN 'Windows Vista or Windows Server 2008'
  76.     WHEN '6.1' THEN 'Windows 7 or Windows Server 2008 R2'
  77.     WHEN '6.2' THEN 'Windows 8 or Windows Server 2012'
  78.     WHEN '6.3' THEN 'Windows 8.1, Windows 10 or Windows Server 2012 R2'
  79.     WHEN '10.0' THEN 'Windows Server 2016'
  80.     ELSE windows_release END AS "WINDOWS Version"
  81.     , CASE windows_sku
  82.     WHEN '4' THEN 'Enterprise Edition'
  83.     WHEN '7' THEN 'Standard Server Edition'
  84.     WHEN '8' THEN 'Datacenter Server Edition'
  85.     WHEN '10' THEN 'Enterprise Server Edition'
  86.     WHEN '48' THEN 'Professional Edition'
  87.     ELSE windows_release END AS "WINDOWS Version"
  88.     , windows_service_pack_level
  89.     , os_language_version
  90. FROM sys.dm_os_windows_info WITH (NOLOCK) OPTION (RECOMPILE);
  91.  
  92. -- List Backups;(EXECUTAR EM PRD E DEPOIS EM QA)
  93.  
  94. SELECT  name
  95.     , recovery_model_desc
  96.     , state_desc
  97.     , compatibility_level
  98.     , d AS 'Last Full Backup'
  99.     , i AS 'Last Differential Backup'
  100.     , l AS 'Last log Backup'
  101.     , CASE state_desc WHEN 'ONLINE'
  102.         THEN CASE WHEN d IS NULL
  103.             THEN 'MISSING'
  104.             ELSE CASE WHEN DATEDIFF(day, d, GETDATE()) > 2
  105.                 THEN CASE WHEN i IS NULL
  106.                     THEN 'MISSING'
  107.                     ELSE CASE WHEN DATEDIFF(day, i, GETDATE()) > 2 THEN
  108.                         'MISSING'
  109.                         ELSE 'OK'
  110.                     END
  111.                 END
  112.                 ELSE 'OK'
  113.             END
  114.         END
  115.         ELSE 'OFFLINE'
  116.     END AS [Problem DB File]
  117.     , CASE state_desc WHEN 'ONLINE'
  118.         THEN CASE recovery_model_desc WHEN 'FULL'
  119.             THEN CASE WHEN l IS NULL
  120.                 THEN 'MISSING'
  121.                 ELSE CASE WHEN DATEDIFF(day, l, GETDATE()) > 1
  122.                     THEN 'MISSING'
  123.                     ELSE 'OK'
  124.                 END
  125.             END
  126.             ELSE ''
  127.         END
  128.         ELSE 'OFFLINE'
  129.     END AS [Problem LOG File]
  130. FROM ( SELECT    db.name ,
  131. db.state_desc ,
  132. db.recovery_model_desc ,
  133. db.compatibility_level ,
  134. type ,
  135. backup_finish_date
  136. FROM      master.sys.databases db
  137. LEFT OUTER JOIN msdb.dbo.backupset a ON a.database_name = db.name
  138. WHERE db.name NOT LIKE 'tempdb'
  139. ) AS Sourcetable
  140. PIVOT
  141. ( MAX(backup_finish_date) FOR type IN ( D, I, L ) ) AS MostRecentBackup
  142. ORDER BY 'Last Full Backup' DESC
  143.  
  144. -- List DB File Sizes:
  145.  
  146. IF OBJECT_ID('tempdb.dbo.#DBFileSizeTmp') IS NOT NULL
  147.     DROP TABLE #DBFileSizeTmp
  148.  
  149. CREATE TABLE #DBFileSizeTmp (
  150.     Db [varchar](200) NOT NULL
  151.     , database_id INT NOT NULL
  152.     , recovery_model [varchar](20) NULL
  153.     , name [varchar](200) NOT NULL
  154.     , filetype [varchar](50) NOT NULL
  155.     , state [varchar](20) NOT NULL
  156.     , filename [varchar](200) NOT NULL
  157.     , fileid INT NOT NULL
  158.     , MAX_SIZE [varchar](200) NOT NULL
  159.     , GROWTH_VALUE [varchar](200) NOT NULL
  160.     , size DECIMAL(18,2) NOT NULL
  161.     , used DECIMAL(18,2) NOT NULL
  162.     , free DECIMAL(18,2) NOT NULL
  163.     , perc_Free DECIMAL(18,2) NOT NULL
  164. );
  165.  
  166. DECLARE @SQL NVARCHAR(MAX)
  167.  
  168. SELECT @SQL = STUFF((
  169.     SELECT '
  170.     USE [' + d.name + ']
  171.     INSERT INTO #DBFileSizeTmp (Db, database_id, name, filetype, state, filename, fileid, MAX_SIZE, GROWTH_VALUE, size, used, free, perc_Free)    
  172.     select DB_NAME() AS [Database]
  173.         , DB_ID()
  174.         , left(ssf.NAME,len(ssf.NAME))
  175.         , ssf.type_desc
  176.         , ssf.state_desc
  177.         , left(ssf.physical_name,len(ssf.physical_name))
  178.         , ssf.file_id
  179.         , CASE ssf.max_size WHEN -1 THEN ''UNLIMITED'' ELSE CONVERT(varchar(10), ssf.max_size) END AS MAX_SIZE
  180.         , CASE ssf.is_percent_growth WHEN 1 THEN CONVERT(varchar(10), ssf.growth) + '' %'' ELSE CONVERT(varchar(10), round((ssf.growth * 8 /1024),2)) + '' MB'' END AS GROWTH_VALUE
  181.         , convert(decimal(12,2),round(ssf.size/128.000,2))
  182.         , convert(decimal(12,2),round(fileproperty(ssf.name,''SpaceUsed'')/128.000,2))
  183.         , convert(decimal(12,2),round((ssf.size-fileproperty(ssf.name,''SpaceUsed''))/128.000,2))
  184.         , convert(decimal(12,2),round((ssf.size-fileproperty(ssf.name,''SpaceUsed''))/128.000 / (ssf.size/128.000),2)) * 100
  185.     from sys.database_files ssf;'
  186.     FROM sys.databases d
  187.     WHERE d.[state] = 0
  188.     FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '')
  189.  
  190. EXEC sys.sp_executesql @SQL
  191.  
  192. ;WITH tUpdate AS
  193. (
  194.     SELECT d.recovery_model_desc
  195.         , tmp.*
  196.     FROM #DBFileSizeTmp tmp, sys.databases d
  197.     WHERE tmp.database_id = d.database_id
  198. )
  199. UPDATE #DBFileSizeTmp
  200. SET recovery_model = tUpdate.recovery_model_desc
  201. FROM tUpdate
  202. WHERE #DBFileSizeTmp.database_id = tUpdate.database_id
  203.  
  204. SELECT
  205.     tmpFinal.Db AS DB_NAME
  206.     , tmpFinal.recovery_model
  207.     , tmpFinal.total_size_mb AS DBSize_MB
  208.     , tmpFinal.name AS Logical_FILE_Name
  209.     , tmpFinal.filetype
  210.     , tmpFinal.state
  211.     , tmpFinal.filename
  212.     , tmpFinal.fileid
  213.     , tmpFinal.MAX_SIZE
  214.     , tmpFinal.GROWTH_VALUE
  215.     , tmpFinal.size AS File_Size
  216.     , tmpFinal.used AS Space_Used
  217.     , tmpFinal.free AS FreeSpace
  218.     , tmpFinal.perc_Free AS [%_Free]
  219.     , volume_mount_point [Disk Mount Point]
  220.     , file_system_type [File System Type]
  221.     , logical_volume_name as [Logical Drive Name]
  222.     , CONVERT(DECIMAL(18,2),total_bytes/1073741824.0) AS [Total Size in GB] ---1GB = 1073741824 bytes
  223.     , CONVERT(DECIMAL(18,2),available_bytes/1073741824.0) AS [Available Size in GB]
  224.     , CAST(CAST(available_bytes AS FLOAT)/ CAST(total_bytes AS FLOAT) AS DECIMAL(18,2)) * 100 AS [Space Free %]    
  225. FROM
  226. (
  227.     SELECT tmp.*
  228.         , DBSize.total_size_mb
  229.     FROM #DBFileSizeTmp tmp,
  230.     (
  231.     SELECT
  232.           database_name = DB_NAME(database_id)
  233.         , database_id
  234.         , log_size_mb = CAST(SUM(CASE WHEN type_desc = 'LOG' THEN size END) * 8. / 1024 AS DECIMAL(8,2))
  235.         , row_size_mb = CAST(SUM(CASE WHEN type_desc = 'ROWS' THEN size END) * 8. / 1024 AS DECIMAL(8,2))
  236.         , total_size_mb = CAST(SUM(size) * 8. / 1024 AS DECIMAL(8,2))
  237.     FROM sys.master_files WITH(NOWAIT)
  238.     GROUP BY database_id) DBSize
  239.     WHERE tmp.database_id = DBSize.database_id
  240. ) tmpFinal
  241. CROSS APPLY sys.dm_os_volume_stats(tmpFinal.database_id, tmpFinal.fileid)
  242.  
  243. IF OBJECT_ID('tempdb.dbo.#DBFileSizeTmp') IS NOT NULL
  244.     DROP TABLE #DBFileSizeTmp
  245.    
  246. /*
  247. EXEC sp_MSforeachdb
  248.     N'
  249.     USE [?]
  250.     select
  251.     DB_NAME() AS [Database],
  252.     NAME = left(ssf.NAME,len(ssf.NAME)),
  253.     FILE_TYPE = ssf.type_desc,
  254.     STATE = ssf.state_desc,
  255.     FILENAME = left(ssf.physical_name,len(ssf.physical_name)),
  256.     ssf.file_id,
  257.     [FILE_SIZE_MB]  = convert(decimal(12,2),round(ssf.size/128.000,2)),
  258.     [SPACE_USED_MB] = convert(decimal(12,2),round(fileproperty(ssf.name,''SpaceUsed'')/128.000,2)),
  259.     [FREE_SPACE_MB] = convert(decimal(12,2),round((ssf.size-fileproperty(ssf.name,''SpaceUsed''))/128.000,2)),
  260.     [FREE_PERC] = convert(decimal(12,2),round((ssf.size-fileproperty(ssf.name,''SpaceUsed''))/128.000 / (ssf.size/128.000),2))
  261. from sys.database_files ssf';
  262. */
  263.  
  264. -- List DISK SPACE INFO:
  265.  
  266. SELECT DISTINCT
  267.         volume_mount_point [Disk Mount Point],
  268.         file_system_type [File System Type],
  269.         logical_volume_name as [Logical Drive Name],
  270.         CONVERT(DECIMAL(18,2),total_bytes/1073741824.0) AS [Total Size in GB], ---1GB = 1073741824 bytes
  271.         CONVERT(DECIMAL(18,2),available_bytes/1073741824.0) AS [Available Size in GB],  
  272.         CAST(CAST(available_bytes AS FLOAT)/ CAST(total_bytes AS FLOAT) AS DECIMAL(18,2)) * 100 AS [Space Free %]
  273. FROM sys.master_files
  274. CROSS APPLY sys.dm_os_volume_stats(database_id, file_id)
  275. ORDER BY volume_mount_point DESC
  276.  
  277. -- Get DB and LOG Size:
  278.  
  279. with fs
  280. as
  281. (
  282.     select database_id, type, size * 8.0 / 1024 size
  283.     from sys.master_files
  284. )
  285. select name
  286.     , suser_sname( owner_sid ) owner
  287.     , convert(decimal(12,2),(select sum(size) from fs where type = 0 and fs.database_id = db.database_id)) DataFileSizeMB
  288.     , convert(decimal(12,2),(select sum(size) from fs where type = 1 and fs.database_id = db.database_id)) LogFileSizeMB
  289. from sys.databases db
  290.  
  291. -- List Possible New Indexes for All DBs:
  292.  
  293. IF OBJECT_ID('tempdb.dbo.#DBTableSugestedIndexesTmp') IS NOT NULL
  294.     DROP TABLE #DBTableSugestedIndexesTmp
  295.  
  296. CREATE TABLE #DBTableSugestedIndexesTmp (
  297.     DbName [varchar](200) NOT NULL
  298.     , index_advantage DECIMAL(18,2) NOT NULL
  299.     , last_user_seek DATETIME NULL
  300.     , table_full_name [varchar](200) NOT NULL
  301.     , equality_columns [varchar](4000) NULL
  302.     , inequality_columns [varchar](4000) NULL
  303.     , included_columns [varchar](4000) NULL
  304.     , unique_compiles INT NOT NULL
  305.     , user_seeks INT NULL
  306.     , avg_total_user_cost DECIMAL(18,2) NOT NULL
  307.     , avg_user_impact DECIMAL(18,2) NOT NULL
  308.     , table_Name [varchar](200) NOT NULL
  309.     , table_Rows INT NOT NULL
  310. );
  311.  
  312. EXEC sp_MSforeachdb
  313. N'
  314. USE [?]
  315. INSERT INTO #DBTableSugestedIndexesTmp ( index_advantage, DbName, last_user_seek, table_full_name, equality_columns, inequality_columns, included_columns, unique_compiles, user_seeks, avg_total_user_cost, avg_user_impact, table_Name, table_Rows)
  316. SELECT DISTINCT CONVERT(decimal(18,2), user_seeks * avg_total_user_cost * (avg_user_impact * 0.01)) AS [index_advantage]
  317.     , DB_NAME() [DB_NAME]
  318.     , migs.last_user_seek
  319.     , mid.[statement] AS [Database.Schema.Table]
  320.     , mid.equality_columns
  321.     , mid.inequality_columns
  322.     , mid.included_columns
  323.     , migs.unique_compiles
  324.     , migs.user_seeks
  325.     , migs.avg_total_user_cost
  326.     , migs.avg_user_impact
  327.     , OBJECT_NAME(mid.[object_id]) AS [Table Name]
  328.     , p.rows AS [Table Rows]
  329. FROM sys.dm_db_missing_index_group_stats AS migs WITH (NOLOCK)
  330. INNER JOIN sys.dm_db_missing_index_groups AS mig WITH (NOLOCK)
  331. ON migs.group_handle = mig.index_group_handle
  332. INNER JOIN sys.dm_db_missing_index_details AS mid WITH (NOLOCK)
  333. ON mig.index_handle = mid.index_handle
  334. INNER JOIN sys.partitions AS p WITH (NOLOCK)
  335. ON p.[object_id] = mid.[object_id]
  336. WHERE mid.database_id = DB_ID() AND p.index_id < 2
  337. OPTION (RECOMPILE);
  338. ';
  339.  
  340. SELECT * FROM #DBTableSugestedIndexesTmp
  341. ORDER BY index_advantage DESC
  342.  
  343. IF OBJECT_ID('tempdb.dbo.#DBTableSugestedIndexesTmp') IS NOT NULL
  344.     DROP TABLE #DBTableSugestedIndexesTmp
  345.    
  346. -- List Bad NC Indexes for all DBs:
  347.  
  348. IF OBJECT_ID('tempdb.dbo.#DBTableBadNCsTmp') IS NOT NULL
  349.     DROP TABLE #DBTableBadNCsTmp
  350.  
  351. CREATE TABLE #DBTableBadNCsTmp (
  352.     DbName [varchar](200) NOT NULL
  353.     , table_Name [varchar](200) NOT NULL
  354.     , Index_Name [varchar](200) NOT NULL
  355.     , type_desc [varchar](200) NOT NULL
  356.     , create_date DATETIME NULL
  357.     , index_id INT NOT NULL
  358.     , is_disabled INT NOT NULL
  359.     , Total_Writes INT NOT NULL
  360.     , Total_Reads INT NOT NULL
  361.     , Difference INT NOT NULL
  362. );
  363.  
  364.  
  365. EXEC sp_MSforeachdb
  366. N'
  367. USE [?]
  368. INSERT INTO #DBTableBadNCsTmp ( DbName, table_Name, Index_Name, type_desc, create_date, index_id, is_disabled, Total_Writes, Total_Reads, Difference)
  369. SELECT DB_NAME() AS DbName
  370.     , OBJECT_NAME(s.[object_id]) AS [Table_Name]
  371.     , i.name AS [Index_Name]
  372.     , o.[type_desc]
  373.     , o.create_date
  374.     , i.index_id
  375.     , i.is_disabled
  376.     , user_updates AS [Total_Writes]
  377.     , user_seeks + user_scans + user_lookups AS [Total_Reads]
  378.     , user_updates - (user_seeks + user_scans + user_lookups) AS [Difference]
  379. FROM sys.dm_db_index_usage_stats AS s WITH (NOLOCK)
  380. INNER JOIN sys.indexes AS i WITH (NOLOCK)
  381. ON s.[object_id] = i.[object_id] AND i.index_id = s.index_id
  382. INNER JOIN sys.objects AS o WITH (NOLOCK)
  383. ON i.[object_id] = o.[object_id]
  384. WHERE OBJECTPROPERTY(s.[object_id],''IsUserTable'') = 1 AND s.database_id = DB_ID()
  385. AND user_updates > (user_seeks + user_scans + user_lookups) AND i.index_id > 1
  386. OPTION (RECOMPILE);
  387. ';
  388.  
  389. SELECT * FROM #DBTableBadNCsTmp
  390. ORDER BY [Difference] DESC, [Total_Writes] DESC, [Total_Reads] ASC
  391.  
  392. IF OBJECT_ID('tempdb.dbo.#DBTableBadNCsTmp') IS NOT NULL
  393.     DROP TABLE #DBTableBadNCsTmp
  394.    
  395. -- List Fragmentation data for indexes in All DBs: (Pesada - Aten��o na sua execu��o)--> NAO EXECUTAR
  396.  
  397. IF OBJECT_ID('tempdb.dbo.#DBTableFragmentedIndexesTmp') IS NOT NULL
  398.     DROP TABLE #DBTableFragmentedIndexesTmp
  399.  
  400. CREATE TABLE #DBTableFragmentedIndexesTmp (
  401.     DbName [varchar](200) NOT NULL
  402.     , Object_Name [varchar](200) NOT NULL
  403.     , Index_Name [varchar](200) NULL
  404.     , index_id INT NOT NULL
  405.     , index_type_desc [varchar](200) NOT NULL
  406.     , avg_fragmentation_in_percent DECIMAL(18,2) NOT NULL
  407.     , fragment_count INT NULL
  408.     , page_count INT NULL
  409.     , fill_factor INT NULL
  410. );
  411.  
  412. EXEC sp_MSforeachdb
  413. N'
  414. USE [?]
  415. INSERT INTO #DBTableFragmentedIndexesTmp ( DbName, Object_Name, Index_Name, index_id, index_type_desc, avg_fragmentation_in_percent, fragment_count, page_count, fill_factor)
  416. SELECT DB_NAME(ps.database_id) AS [DbName]
  417.     , OBJECT_NAME(ps.OBJECT_ID) AS [Object_Name]
  418.     , i.name AS [Index_Name]
  419.     , ps.index_id
  420.     , ps.index_type_desc
  421.     , ps.avg_fragmentation_in_percent
  422.     , ps.fragment_count
  423.     , ps.page_count
  424.     , i.fill_factor
  425. FROM sys.dm_db_index_physical_stats(DB_ID(),NULL, NULL, NULL , N''LIMITED'') AS ps
  426. INNER JOIN sys.indexes AS i WITH (NOLOCK)
  427. ON ps.[object_id] = i.[object_id] AND ps.index_id = i.index_id
  428. WHERE ps.database_id = DB_ID() AND ps.page_count > 2500
  429. OPTION (RECOMPILE);
  430. ';
  431.  
  432. SELECT * FROM #DBTableFragmentedIndexesTmp
  433. ORDER BY avg_fragmentation_in_percent DESC
  434.  
  435. IF OBJECT_ID('tempdb.dbo.#DBTableFragmentedIndexesTmp') IS NOT NULL
  436.     DROP TABLE #DBTableFragmentedIndexesTmp    
  437.    
  438. -- Index Stats Last Update For All DBs:
  439.  
  440. IF OBJECT_ID('tempdb.dbo.#DBTableStatsLastUpdateTmp') IS NOT NULL
  441.     DROP TABLE #DBTableStatsLastUpdateTmp
  442.  
  443. CREATE TABLE #DBTableStatsLastUpdateTmp (
  444.     DbName [varchar](200) NOT NULL
  445.     , Object_Name [varchar](200) NOT NULL
  446.     , Object_Type [varchar](200) NULL
  447.     , Index_Name [varchar](200) NULL
  448.     , StatisticsDate DATETIME NULL
  449.     , auto_created INT NOT NULL
  450.     , no_recompute INT NOT NULL
  451.     , user_created INT NOT NULL
  452.     , row_count INT NOT NULL
  453.     , used_page_count INT NOT NULL
  454. );
  455.  
  456. EXEC sp_MSforeachdb
  457. N'
  458. USE [?]
  459. INSERT INTO #DBTableStatsLastUpdateTmp ( DbName, Object_Name, Object_Type, Index_Name, StatisticsDate, auto_created, no_recompute, user_created, row_count, used_page_count)
  460. SELECT DB_NAME() AS DbName
  461.     , SCHEMA_NAME(o.Schema_ID) + N''.'' + o.NAME AS [Object_Name]
  462.     , o.type_desc AS [Object_Type]
  463.     , i.name AS [Index_Name]
  464.     , STATS_DATE(i.[object_id], i.index_id) AS [StatisticsDate]
  465.     , s.auto_created
  466.     , s.no_recompute
  467.     , s.user_created
  468.     , st.row_count
  469.     , st.used_page_count
  470. FROM sys.objects AS o WITH (NOLOCK)
  471. INNER JOIN sys.indexes AS i WITH (NOLOCK)
  472. ON o.[object_id] = i.[object_id]
  473. INNER JOIN sys.stats AS s WITH (NOLOCK)
  474. ON i.[object_id] = s.[object_id] AND i.index_id = s.stats_id
  475. INNER JOIN sys.dm_db_partition_stats AS st WITH (NOLOCK)
  476. ON o.[object_id] = st.[object_id] AND i.[index_id] = st.[index_id]
  477. WHERE o.[type] IN (''U'', ''V'') AND st.row_count > 0
  478. OPTION (RECOMPILE);
  479. ';
  480.  
  481. SELECT * FROM #DBTableStatsLastUpdateTmp
  482. ORDER BY StatisticsDate DESC
  483.  
  484. IF OBJECT_ID('tempdb.dbo.#DBTableStatsLastUpdateTmp') IS NOT NULL
  485.     DROP TABLE #DBTableStatsLastUpdateTmp
  486.  
  487. -- CPU By Database.
  488.  
  489. WITH DB_CPU_Stats
  490. AS
  491. (
  492.     SELECT pa.DatabaseID
  493.         , DB_Name(pa.DatabaseID) AS [Database Name]
  494.         , SUM(qs.total_worker_time/1000) AS [CPU_Time_Ms]
  495.     FROM sys.dm_exec_query_stats AS qs WITH (NOLOCK)   
  496.     CROSS APPLY (
  497.         SELECT CONVERT(int, value) AS [DatabaseID]
  498.         FROM sys.dm_exec_plan_attributes(qs.plan_handle)
  499.         WHERE attribute = N'dbid'
  500.     ) AS pa
  501.     GROUP BY DatabaseID
  502. )
  503. SELECT ROW_NUMBER() OVER(ORDER BY [CPU_Time_Ms] DESC) AS [CPU Rank]
  504.     , [Database Name]
  505.     , [CPU_Time_Ms] AS [CPU Time (ms)]
  506.     , CAST([CPU_Time_Ms] * 1.0 / SUM([CPU_Time_Ms]) OVER() * 100.0 AS DECIMAL(5, 2)) AS [CPU Percent]
  507. FROM DB_CPU_Stats
  508. WHERE DatabaseID <> 32767 -- ResourceDB
  509. ORDER BY [CPU Rank] OPTION (RECOMPILE);
  510.  
  511. -- IO By Database.
  512.  
  513. WITH Aggregate_IO_Statistics AS
  514. (
  515.     SELECT DB_NAME(database_id) AS [Database Name]
  516.     , CAST(SUM(num_of_bytes_read + num_of_bytes_written)/1048576 AS DECIMAL(12, 2)) AS io_in_mb
  517.     FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS [DM_IO_STATS]
  518.     GROUP BY database_id
  519. )
  520. SELECT ROW_NUMBER() OVER(ORDER BY io_in_mb DESC) AS [I/O Rank], [Database Name]
  521.     , io_in_mb AS [Total I/O (MB)]
  522.     , CAST(io_in_mb/ SUM(io_in_mb) OVER() * 100.0 AS DECIMAL(5,2)) AS [I/O Percent]
  523. FROM Aggregate_IO_Statistics
  524. ORDER BY [I/O Rank] OPTION (RECOMPILE);
  525.  
  526. -- MEMORY By Database.
  527.  
  528. WITH AggregateBufferPoolUsage AS
  529. (
  530.     SELECT DB_NAME(database_id) AS [Database Name]
  531.     , CAST(COUNT(*) * 8/1024.0 AS DECIMAL (10,2))  AS [CachedSize]
  532.     FROM sys.dm_os_buffer_descriptors WITH (NOLOCK)
  533.     WHERE database_id <> 32767 -- ResourceDB
  534.     GROUP BY DB_NAME(database_id)
  535. )
  536. SELECT ROW_NUMBER() OVER(ORDER BY CachedSize DESC) AS [Buffer Pool Rank]
  537.     , [Database Name]
  538.     , CachedSize AS [Cached Size (MB)]
  539.     , CAST(CachedSize / SUM(CachedSize) OVER() * 100.0 AS DECIMAL(5,2)) AS [Buffer Pool Percent]
  540. FROM AggregateBufferPoolUsage
  541. ORDER BY [Buffer Pool Rank] OPTION (RECOMPILE);
  542.  
  543. -- Top CPU Consumers:
  544.  
  545. SELECT TOP (20) qs.execution_count
  546.     , qs.total_rows
  547.     , qs.total_logical_reads
  548.     , qs.total_physical_reads
  549.     , qs.total_elapsed_time
  550.     , qs.total_worker_time
  551.     , qs.creation_time
  552.     , qs.last_execution_time
  553.     , LEFT(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(SUBSTRING(qt.TEXT,qs.statement_start_offset/2 +1, (CASE WHEN qs.statement_end_offset = -1
  554.         THEN LEN(CONVERT(NVARCHAR(MAX), qt.TEXT)) * 2
  555.         ELSE qs.statement_end_offset + 2 END - qs.statement_start_offset)/2), CHAR(13), ' '), CHAR(10), ' '), CHAR(9), ' '),' ','~^'),'^~',''),'~^',' '), 32700) AS query_text
  556.     , qs.last_rows
  557.     , qs.min_rows
  558.     , qs.max_rows
  559.     , qs.last_logical_reads
  560.     , qs.min_logical_reads
  561.     , qs.max_logical_reads
  562.     , qs.last_physical_reads
  563.     , qs.min_physical_reads
  564.     , qs.max_physical_reads
  565.     , qs.last_elapsed_time
  566.     , qs.min_elapsed_time
  567.     , qs.max_elapsed_time
  568.     , qs.last_worker_time
  569.     , qs.min_worker_time
  570.     , qs.max_worker_time
  571. FROM sys.dm_exec_query_stats AS qs WITH (NOLOCK)
  572. CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
  573. ORDER BY qs.total_logical_reads DESC OPTION (RECOMPILE);
  574.  
  575. -- TOP IO:
  576.  
  577. SELECT  DB_NAME(vfs.database_id) AS database_name ,
  578.         vfs.database_id "DB_ID",
  579.         vfs.FILE_ID ,
  580.         REPLACE(mf.type_desc, 'ROWS','DATA') File_Type,
  581.         vfs.io_stall_read_ms "io_stall_R_ms",
  582.         vfs.num_of_reads "N_Reads",
  583.         vfs.io_stall_read_ms / NULLIF(num_of_reads, 0) AS avg_R_latency ,
  584.         vfs.io_stall_write_ms "io_stall_W_ms",
  585.         vfs.num_of_writes "N_Writes",
  586.         vfs.io_stall_write_ms / NULLIF(num_of_writes, 0)
  587.                                                AS avg_W_latency ,
  588.         vfs.io_stall "io_stall_ms",
  589.         vfs.io_stall / NULLIF(num_of_reads + num_of_writes, 0)
  590.                                                AS avg_T_latency ,
  591.         vfs.num_of_bytes_read "Num_Bytes_R",
  592.         vfs.num_of_bytes_read / NULLIF(num_of_reads, 0)
  593.                                                AS avg_By_per_R ,
  594.         vfs.num_of_bytes_written "Num_Bytes_W",
  595.         vfs.num_of_bytes_written / NULLIF(num_of_writes, 0)
  596.                                                AS avg_By_per_W ,
  597.         size_on_disk_bytes / 1024 / 1024. AS size_on_disk_mbytes ,
  598.         physical_name
  599. FROM    sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs
  600.         JOIN sys.master_files AS mf ON vfs.database_id = mf.database_id
  601.                                        AND vfs.FILE_ID = mf.FILE_ID
  602. ORDER BY avg_T_latency DESC
  603.  
  604. -- Top Waits:
  605.  
  606. WITH [Waits]
  607. AS (SELECT wait_type, wait_time_ms/ 1000.0 AS [WaitS],
  608.           (wait_time_ms - signal_wait_time_ms) / 1000.0 AS [ResourceS],
  609.            signal_wait_time_ms / 1000.0 AS [SignalS],
  610.            waiting_tasks_count AS [WaitCount],
  611.            100.0 *  wait_time_ms / SUM (wait_time_ms) OVER() AS [Percentage],
  612.            ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS [RowNum]
  613.     FROM sys.dm_os_wait_stats WITH (NOLOCK)
  614.     WHERE [wait_type] NOT IN (
  615.         N'BROKER_EVENTHANDLER', N'BROKER_RECEIVE_WAITFOR', N'BROKER_TASK_STOP',
  616.         N'BROKER_TO_FLUSH', N'BROKER_TRANSMITTER', N'CHECKPOINT_QUEUE',
  617.         N'CHKPT', N'CLR_AUTO_EVENT', N'CLR_MANUAL_EVENT', N'CLR_SEMAPHORE',
  618.         N'DBMIRROR_DBM_EVENT', N'DBMIRROR_EVENTS_QUEUE', N'DBMIRROR_WORKER_QUEUE',
  619.         N'DBMIRRORING_CMD', N'DIRTY_PAGE_POLL', N'DISPATCHER_QUEUE_SEMAPHORE',
  620.         N'EXECSYNC', N'FSAGENT', N'FT_IFTS_SCHEDULER_IDLE_WAIT', N'FT_IFTSHC_MUTEX',
  621.         N'HADR_CLUSAPI_CALL', N'HADR_FILESTREAM_IOMGR_IOCOMPLETION', N'HADR_LOGCAPTURE_WAIT',
  622.         N'HADR_NOTIFICATION_DEQUEUE', N'HADR_TIMER_TASK', N'HADR_WORK_QUEUE',
  623.         N'KSOURCE_WAKEUP', N'LAZYWRITER_SLEEP', N'LOGMGR_QUEUE',
  624.         N'MEMORY_ALLOCATION_EXT', N'ONDEMAND_TASK_QUEUE',
  625.         N'PARALLEL_REDO_WORKER_WAIT_WORK',
  626.         N'PREEMPTIVE_HADR_LEASE_MECHANISM', N'PREEMPTIVE_SP_SERVER_DIAGNOSTICS',
  627.         N'PREEMPTIVE_OS_LIBRARYOPS', N'PREEMPTIVE_OS_COMOPS', N'PREEMPTIVE_OS_CRYPTOPS',
  628.         N'PREEMPTIVE_OS_PIPEOPS', N'PREEMPTIVE_OS_AUTHENTICATIONOPS',
  629.         N'PREEMPTIVE_OS_GENERICOPS', N'PREEMPTIVE_OS_VERIFYTRUST',
  630.         N'PREEMPTIVE_OS_FILEOPS', N'PREEMPTIVE_OS_DEVICEOPS', N'PREEMPTIVE_OS_QUERYREGISTRY',
  631.         N'PREEMPTIVE_OS_WRITEFILE',
  632.         N'PREEMPTIVE_XE_CALLBACKEXECUTE', N'PREEMPTIVE_XE_DISPATCHER',
  633.         N'PREEMPTIVE_XE_GETTARGETSTATE', N'PREEMPTIVE_XE_SESSIONCOMMIT',
  634.         N'PREEMPTIVE_XE_TARGETINIT', N'PREEMPTIVE_XE_TARGETFINALIZE',
  635.         N'PWAIT_ALL_COMPONENTS_INITIALIZED', N'PWAIT_DIRECTLOGCONSUMER_GETNEXT',
  636.         N'QDS_PERSIST_TASK_MAIN_LOOP_SLEEP',
  637.         N'QDS_ASYNC_QUEUE',
  638.         N'QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP', N'REQUEST_FOR_DEADLOCK_SEARCH',
  639.         N'RESOURCE_QUEUE', N'SERVER_IDLE_CHECK', N'SLEEP_BPOOL_FLUSH', N'SLEEP_DBSTARTUP',
  640.         N'SLEEP_DCOMSTARTUP', N'SLEEP_MASTERDBREADY', N'SLEEP_MASTERMDREADY',
  641.         N'SLEEP_MASTERUPGRADED', N'SLEEP_MSDBSTARTUP', N'SLEEP_SYSTEMTASK', N'SLEEP_TASK',
  642.         N'SLEEP_TEMPDBSTARTUP', N'SNI_HTTP_ACCEPT', N'SP_SERVER_DIAGNOSTICS_SLEEP',
  643.         N'SQLTRACE_BUFFER_FLUSH', N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP', N'SQLTRACE_WAIT_ENTRIES',
  644.         N'WAIT_FOR_RESULTS', N'WAITFOR', N'WAITFOR_TASKSHUTDOWN', N'WAIT_XTP_HOST_WAIT',
  645.         N'WAIT_XTP_OFFLINE_CKPT_NEW_LOG', N'WAIT_XTP_CKPT_CLOSE', N'WAIT_XTP_RECOVERY',
  646.         N'XE_BUFFERMGR_ALLPROCESSED_EVENT', N'XE_DISPATCHER_JOIN',
  647.         N'XE_DISPATCHER_WAIT', N'XE_LIVE_TARGET_TVF', N'XE_TIMER_EVENT')
  648.     AND waiting_tasks_count > 0)
  649. SELECT
  650.     MAX (W1.wait_type) AS [WaitType],
  651.     CAST (MAX (W1.WaitS) AS DECIMAL (16,2)) AS [Wait_Sec],
  652.     CAST (MAX (W1.ResourceS) AS DECIMAL (16,2)) AS [Resource_Sec],
  653.     CAST (MAX (W1.SignalS) AS DECIMAL (16,2)) AS [Signal_Sec],
  654.     MAX (W1.WaitCount) AS [Wait Count],
  655.     CAST (MAX (W1.Percentage) AS DECIMAL (5,2)) AS [Wait Percentage],
  656.     CAST ((MAX (W1.WaitS) / MAX (W1.WaitCount)) AS DECIMAL (16,4)) AS [AvgWait_Sec],
  657.     CAST ((MAX (W1.ResourceS) / MAX (W1.WaitCount)) AS DECIMAL (16,4)) AS [AvgRes_Sec],
  658.     CAST ((MAX (W1.SignalS) / MAX (W1.WaitCount)) AS DECIMAL (16,4)) AS [AvgSig_Sec]
  659. FROM Waits AS W1
  660. INNER JOIN Waits AS W2
  661. ON W2.RowNum <= W1.RowNum
  662. GROUP BY W1.RowNum
  663. HAVING SUM (W2.Percentage) - MAX (W1.Percentage) < 99 -- percentage threshold
  664. OPTION (RECOMPILE);
  665.  
  666. -- List Jobs:
  667.  
  668. select j.name as 'JobName'
  669.     , run_date
  670.     , run_time
  671.     , CASE h.run_status
  672.         WHEN 0 THEN 'Failed'
  673.         WHEN 1 THEN 'Succeeded'  
  674.         WHEN 2 THEN 'Retry'
  675.         WHEN 3 THEN 'Canceled'
  676.         ELSE 'INVALID' END as run_status
  677.     , CONVERT(varchar(50), msdb.dbo.agent_datetime(run_date, run_time)) AS 'RunDateTime'
  678.     , run_duration
  679.     , ((run_duration/10000*3600 + (run_duration/100)%100*60 + run_duration%100 + 31 ) / 60) as 'RunDurationMinutes'
  680. From msdb.dbo.sysjobs j LEFT JOIN msdb.dbo.sysjobhistory h
  681. ON j.job_id = h.job_id
  682. where j.enabled = 1 AND h.step_id = 0 -- Only Enabled Jobs and the Outcome Step
  683. AND msdb.dbo.agent_datetime(run_date, run_time) >= DATEADD(day,-7, GETDATE())
  684. order by JobName, RunDateTime desc
  685.  
  686. -- List Replication Status:-->EXECUTAR APEBAS NA INSTANCIA: outrasaplicacoes
  687.  
  688. SELECT
  689.     (CASE  
  690.         WHEN mdh.runstatus =  '1' THEN 'Start - '+cast(mdh.runstatus as varchar)
  691.         WHEN mdh.runstatus =  '2' THEN 'Succeed - '+cast(mdh.runstatus as varchar)
  692.         WHEN mdh.runstatus =  '3' THEN 'InProgress - '+cast(mdh.runstatus as varchar)
  693.         WHEN mdh.runstatus =  '4' THEN 'Idle - '+cast(mdh.runstatus as varchar)
  694.         WHEN mdh.runstatus =  '5' THEN 'Retry - '+cast(mdh.runstatus as varchar)
  695.         WHEN mdh.runstatus =  '6' THEN 'Fail - '+cast(mdh.runstatus as varchar)
  696.         ELSE CAST(mdh.runstatus AS VARCHAR)
  697.     END) [Run Status]
  698.     , mda.subscriber_db [Subscriber DB]
  699.     , mda.publication [PUB Name]
  700.     , RIGHT(LEFT(mda.name, LEN(mda.name)-(len(mda.id)+1)), LEN(LEFT(mda.name, LEN(mda.name)-(len(mda.id)+1))) - CHARINDEX('-',LEFT(mda.name, LEN(mda.name)-(len(mda.id)+1)),CHARINDEX('-',LEFT(mda.name, LEN(mda.name)-(len(mda.id)+1)), (CHARINDEX('-',LEFT(mda.name, LEN(mda.name)-(len(mda.id)+1)))+1))+1)) [SUBSCRIBER]
  701.     , CONVERT(VARCHAR(25),mdh.[time]) [LastSynchronized]
  702.     , und.UndelivCmdsInDistDB [UndistCom]
  703.     , mdh.comments [Comments]
  704.     , 'select * from distribution.dbo.msrepl_errors (nolock) where id = ' + CAST(mdh.error_id AS VARCHAR(8)) [Query More Info]
  705.     , mdh.xact_seqno [SEQ_NO]
  706.     , (CASE  
  707.         WHEN mda.subscription_type =  '0' THEN 'Push'
  708.         WHEN mda.subscription_type =  '1' THEN 'Pull'
  709.         WHEN mda.subscription_type =  '2' THEN 'Anonymous'
  710.         ELSE CAST(mda.subscription_type AS VARCHAR)
  711.     END) [SUB Type]
  712.     , mda.publisher_db+' - '+CAST(mda.publisher_database_id as varchar) [Publisher DB]
  713.     , mda.name [Pub - DB - Publication - SUB - AgentID]
  714. FROM distribution.dbo.MSdistribution_agents mda
  715. LEFT JOIN distribution.dbo.MSdistribution_history mdh ON mdh.agent_id = mda.id
  716. JOIN (
  717.     SELECT s.agent_id
  718.         , MaxAgentValue.[time]
  719.         , SUM(CASE WHEN xact_seqno > MaxAgentValue.maxseq THEN 1 ELSE 0 END) AS UndelivCmdsInDistDB
  720.     FROM distribution.dbo.MSrepl_commands t (NOLOCK)  
  721.     JOIN distribution.dbo.MSsubscriptions AS s (NOLOCK)
  722.     ON (t.article_id = s.article_id AND t.publisher_database_id=s.publisher_database_id )
  723.     JOIN (
  724.         SELECT hist.agent_id
  725.             , MAX(hist.[time]) AS [time]
  726.             , h.maxseq  
  727.         FROM distribution.dbo.MSdistribution_history hist (NOLOCK)
  728.         JOIN (
  729.             SELECT agent_id
  730.                 ,ISNULL(MAX(xact_seqno),0x0) AS maxseq
  731.             FROM distribution.dbo.MSdistribution_history (NOLOCK)  
  732.             GROUP BY agent_id) AS h  
  733.             ON (hist.agent_id=h.agent_id AND h.maxseq=hist.xact_seqno)
  734.             GROUP BY hist.agent_id, h.maxseq
  735.         ) AS MaxAgentValue
  736.     ON MaxAgentValue.agent_id = s.agent_id
  737.     GROUP BY s.agent_id, MaxAgentValue.[time]
  738.     ) und
  739. ON mda.id = und.agent_id AND und.[time] = mdh.[time]
  740. where mda.subscriber_db<>'virtual' -- created when your publication has the immediate_sync property set to true. This property dictates whether snapshot is available all the time for new subscriptions to be initialized. This affects the cleanup behavior of transactional replication. If this property is set to true, the transactions will be retained for max retention period instead of it getting cleaned up as soon as all the subscriptions got the change.
  741. --and mdh.runstatus='6' --Fail
  742. --and mdh.runstatus<>'2' --Succeed
  743. order by mdh.[time]
  744.  
  745. -- List PLE Evolution (M3Database):
  746.  
  747. SELECT page_life_expectancy
  748.     , start_date
  749. FROM M3Database.[rsc].[server_memory_status] as mem, M3Database.[dbo].[session] as s
  750. WHERE s.session_id = mem.session_id
  751. AND s.start_date > '2019-06-26'
  752. ORDER BY s.start_date ASC
  753.  
  754.  
  755. -- List CPU Usage Evolution:
  756.  
  757. SELECT AVG(sql_process_utilization) SQLByHour
  758.     , AVG(sql_process_utilization + other_process_utilization) ALLByHour
  759.     , DATEADD(HH,DATEPART(HH,start_date),CAST(CAST(start_date AS DATE) AS DATETIME)) date_H
  760. FROM M3Database.[rsc].server_cpu_status as scs, M3Database.[dbo].[session] as s
  761. WHERE s.session_id = scs.session_id
  762. AND s.start_date > '2019-06-26'
  763. GROUP BY DATEADD(HH,DATEPART(HH,start_date),CAST(CAST(start_date AS DATE) AS DATETIME))
  764. ORDER BY DATEADD(HH,DATEPART(HH,start_date),CAST(CAST(start_date AS DATE) AS DATETIME)) ASC
  765.  
  766.  
  767. -- List regrasComposicaoBreakRentabilidade Evolution:(EXECUTAR APENAS NA INSTANCUA DO GMEDIA)
  768.  
  769. select DATEDIFF(DAY, gesvisProcDataIni, gesvisProcDataFim) Days_Proc, DATEDIFF(SECOND, gesvisDatahora, gesvisDatahoraConclusao) Execution_Time, *
  770. from
  771. GMediaAD.dbo.gesVisProcessamento
  772. where gesVisProcSQLCommand like '%regrascomposicaobreakrentabilidade%'
  773. AND gesvisDatahora > '2019-06-26'
  774. ORDER BY gesvisDatahora DESC
  775. --ORDER BY DATEDIFF(SECOND, gesvisDatahora, gesvisDatahoraConclusao) DESC
  776.  
  777. -- Deadlocks:(EXECUTAR APENAS NO GMEDIA)
  778.  
  779. SELECT CONVERT(date, Interval) Date_Day, Dbid, sum(numEvents) [Count]
  780. FROM [M3Database].[dbo].[DeadLocksReport]
  781. --WHERE dbid = 10
  782. GROUP BY CONVERT(date, Interval), Dbid
  783. ORDER BY Date_Day DESC
  784.  
  785. --APENAS PARA VALIDAR, s� colocar no excel se existir algum problema evidente
  786. -- ALWAYS ON FailOver Events:
  787.  
  788. Declare @TEMP_ERROR_LOG Table (
  789.     LogID int identity(1, 1) not null primary key,
  790.     LogDate datetime null,
  791.     ProcessInfo nvarchar(100) null,
  792.     LogText nvarchar(4000) null
  793. )
  794.  
  795. INSERT INTO @TEMP_ERROR_LOG (LogDate, ProcessInfo, LogText)
  796. EXEC master.dbo.xp_readerrorlog 0, 1, NULL, NULL, NULL, NULL, "desc"
  797.  
  798. SELECT *
  799. FROM @TEMP_ERROR_LOG
  800. WHERE LogText LIKE '%RESOLVING_NORMAL%' OR LogText LIKE '%PRIMARY_PENDING%'
  801. ORDER BY LogID ASC
  802.  
  803. -- ERROR LOG Default Instance:
  804.  
  805. Declare @TEMP_ERROR_LOG Table (
  806.     LogID int identity(1, 1) not null primary key,
  807.     LogDate datetime null,
  808.     ProcessInfo nvarchar(100) null,
  809.     LogText nvarchar(4000) null
  810. )
  811.  
  812. INSERT INTO @TEMP_ERROR_LOG (LogDate, ProcessInfo, LogText)
  813. EXEC master.dbo.xp_readerrorlog 0, 1, NULL, NULL, NULL, NULL, "desc"
  814.  
  815. SELECT *
  816. FROM @TEMP_ERROR_LOG
  817. WHERE LogText NOT LIKE 'Replication-Replication%'
  818. AND LogText NOT LIKE 'Log was backed up%'
  819. AND LogText NOT LIKE 'Database backed up%'
  820. AND LogText NOT LIKE 'Database differential changes were backed up%'
  821. AND LogDate > '2019-06-26'
  822. ORDER BY LogID ASC
  823.  
  824. -- MEMORY DISTRIBUITION
  825.  
  826. --Great query for making the argument to use "Optimize for Ad Hoc Workloads":
  827. SELECT S.CacheType, S.Avg_Use, S.Avg_Multi_Use,
  828.        S.Total_Plan_3orMore_Use, S.Total_Plan_2_Use, S.Total_Plan_1_Use, S.Total_Plan,
  829.        CAST( (S.Total_Plan_1_Use * 1.0 / S.Total_Plan) as Decimal(18,2) )[Pct_Plan_1_Use],
  830.        S.Total_MB_1_Use,   S.Total_MB,
  831.        CAST( (S.Total_MB_1_Use   * 1.0 / S.Total_MB  ) as Decimal(18,2) )[Pct_MB_1_Use]
  832.   FROM
  833.   (
  834.     SELECT CP.objtype[CacheType],
  835.            COUNT(*)[Total_Plan],
  836.            SUM(CASE WHEN CP.usecounts > 2 THEN 1 ELSE 0 END)[Total_Plan_3orMore_Use],
  837.            SUM(CASE WHEN CP.usecounts = 2 THEN 1 ELSE 0 END)[Total_Plan_2_Use],
  838.            SUM(CASE WHEN CP.usecounts = 1 THEN 1 ELSE 0 END)[Total_Plan_1_Use],
  839.            CAST((SUM(CP.size_in_bytes * 1.0) / 1024 / 1024) as Decimal(12,2) )[Total_MB],
  840.            CAST((SUM(CASE WHEN CP.usecounts = 1 THEN (CP.size_in_bytes * 1.0) ELSE 0 END)
  841.                       / 1024 / 1024) as Decimal(18,2) )[Total_MB_1_Use],
  842.            CAST(AVG(CP.usecounts * 1.0) as Decimal(12,2))[Avg_Use],
  843.            CAST(AVG(CASE WHEN CP.usecounts > 1 THEN (CP.usecounts * 1.0)
  844.                          ELSE NULL END) as Decimal(12,2))[Avg_Multi_Use]
  845.       FROM sys.dm_exec_cached_plans as CP
  846.      GROUP BY CP.objtype
  847.   ) AS S
  848.  ORDER BY S.CacheType
  849.  
  850. -- ALWAYS ON FailOver Events:
  851.  
  852. SELECT SERVERPROPERTY('ServerName') AS [ServerName], F.object_name, event_data, timestamp_utc
  853. FROM sys.fn_xe_file_target_read_file('AlwaysOn_health*.xel', null, null, null) AS F
  854. WHERE object_name LIKE 'alwayson_ddl_executed' OR object_name LIKE 'availability_replica_state_change'
  855. ORDER BY timestamp_utc DESC
  856.  
  857. -- ALWAYS ON FailOver Events:
  858.  
  859. DECLARE @FileName NVARCHAR(4000)
  860. SELECT @FileName = target_data.value('(EventFileTarget/File/@name)[1]','nvarchar(4000)')
  861. FROM (
  862.         SELECT CAST(target_data AS XML) target_data FROM sys.dm_xe_sessions s JOIN sys.dm_xe_session_targets t
  863.         ON s.address = t.event_session_address WHERE s.name = N'AlwaysOn_health'
  864.     ) ft
  865.  
  866. SELECT SERVERPROPERTY('ServerName') AS [ServerName],
  867.     XEData.value('(event/@timestamp)[1]','datetime2(3)') AS event_timestamp,
  868.     XEData.value('(event/data[@name="availability_replica_name"]/value)[1]', 'varchar(255)') AS availability_replica_name,
  869.     XEData.value('(event/data[@name="statement"]/value)[1]', 'varchar(255)') AS statement,
  870.     XEData.value('(event/data[@name="client_app_name"]/value)[1]', 'varchar(255)') AS client_app_name,
  871.     XEData.value('(event/data[@name="nt_username"]/value)[1]', 'varchar(255)') AS nt_username,
  872.     XEData.value('(event/data[@name="client_hostname"]/value)[1]', 'varchar(255)') AS client_hostname,
  873.     XEData.value('(event/data[@name="previous_state"]/text)[1]', 'varchar(255)') AS previous_state,
  874.     XEData.value('(event/data[@name="current_state"]/text)[1]', 'varchar(255)') AS current_state
  875.    
  876. FROM (
  877.         SELECT CAST(event_data AS XML) XEData, *
  878.         FROM sys.fn_xe_file_target_read_file(@FileName, NULL, NULL, NULL)
  879.         WHERE object_name = 'alwayson_ddl_executed' OR object_name = 'availability_replica_state_change'
  880.      ) event_data
  881. ORDER BY event_timestamp DESC;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement