1
1
2
2
-- SQL Server 2016 SP2 Diagnostic Information Queries
3
3
-- Glenn Berry
4
- -- Last Modified: September 1 , 2022
4
+ -- Last Modified: September 6 , 2022
5
5
-- https://glennsqlperformance.com/
6
6
-- https://sqlserverperformance.wordpress.com/
7
7
-- YouTube: https://bit.ly/2PkoAM1
@@ -1339,13 +1339,26 @@ ORDER BY total_worker_time DESC OPTION (RECOMPILE);
1339
1339
-- Showplan Enhancements for UDFs
1340
1340
-- https://bit.ly/2LVqiQ1
1341
1341
1342
+
1343
+ -- Look for long duration buffer pool scans (Query 50) (Long Buffer Pool Scans)
1344
+ EXEC sys .xp_readerrorlog 0 , 1 , N ' Buffer pool scan took' ;
1345
+ -- ----
1346
+
1347
+ -- Finds buffer pool scans that took more than 10 seconds in the current SQL Server Error log
1348
+ -- Only in SQL Server 2016 SP3 and later
1349
+
1350
+ -- Operations that trigger buffer pool scan may run slowly on large-memory computers - SQL Server | Microsoft Docs
1351
+ -- https://bit.ly/3QrFC81
1352
+
1353
+
1354
+
1342
1355
-- Database specific queries *****************************************************************
1343
1356
1344
1357
-- **** Please switch to a user database that you are interested in! *****
1345
1358
-- USE YourDatabaseName; -- make sure to change to an actual database on your instance, not the master system database
1346
1359
-- GO
1347
1360
1348
- -- Individual File Sizes and space available for current database (Query 50 ) (File Sizes and Space)
1361
+ -- Individual File Sizes and space available for current database (Query 51 ) (File Sizes and Space)
1349
1362
SELECT f .name AS [File Name] , f .physical_name AS [Physical Name],
1350
1363
CAST ((f .size / 128 .0 ) AS DECIMAL (15 ,2 )) AS [Total Size in MB],
1351
1364
CAST (f .size / 128 .0 - CAST (FILEPROPERTY (f .name , ' SpaceUsed' ) AS int )/ 128 .0 AS DECIMAL (15 ,2 ))
@@ -1370,7 +1383,7 @@ ORDER BY f.[file_id] OPTION (RECOMPILE);
1370
1383
-- https://bit.ly/2evRZSR
1371
1384
1372
1385
1373
- -- Log space usage for current database (Query 51 ) (Log Space Usage)
1386
+ -- Log space usage for current database (Query 52 ) (Log Space Usage)
1374
1387
SELECT DB_NAME (lsu .database_id ) AS [Database Name], db .recovery_model_desc AS [Recovery Model],
1375
1388
CAST (lsu .total_log_size_in_bytes / 1048576 .0 AS DECIMAL (10 , 2 )) AS [Total Log Space (MB)],
1376
1389
CAST (lsu .used_log_space_in_bytes / 1048576 .0 AS DECIMAL (10 , 2 )) AS [Used Log Space (MB)],
@@ -1389,7 +1402,7 @@ OPTION (RECOMPILE);
1389
1402
-- https://bit.ly/2H4MQw9
1390
1403
1391
1404
1392
- -- Status of last VLF for current database (Query 52 ) (Last VLF Status)
1405
+ -- Status of last VLF for current database (Query 53 ) (Last VLF Status)
1393
1406
SELECT TOP (1 ) DB_NAME (li .database_id ) AS [Database Name], li.[file_id],
1394
1407
li .vlf_size_mb , li .vlf_sequence_number , li .vlf_active , li .vlf_status
1395
1408
FROM sys .dm_db_log_info (DB_ID ()) AS li
@@ -1408,7 +1421,7 @@ ORDER BY vlf_sequence_number DESC OPTION (RECOMPILE);
1408
1421
1409
1422
1410
1423
1411
- -- Get database scoped configuration values for current database (Query 53 ) (Database-scoped Configurations)
1424
+ -- Get database scoped configuration values for current database (Query 54 ) (Database-scoped Configurations)
1412
1425
SELECT configuration_id, name , [value] AS [value_for_primary], value_for_secondary
1413
1426
FROM sys .database_scoped_configurations WITH (NOLOCK ) OPTION (RECOMPILE );
1414
1427
-- ----
@@ -1422,7 +1435,7 @@ FROM sys.database_scoped_configurations WITH (NOLOCK) OPTION (RECOMPILE);
1422
1435
-- https://bit.ly/2sOH7nb
1423
1436
1424
1437
1425
- -- I/O Statistics by file for the current database (Query 54 ) (IO Stats By File)
1438
+ -- I/O Statistics by file for the current database (Query 55 ) (IO Stats By File)
1426
1439
SELECT DB_NAME (DB_ID ()) AS [Database Name], df .name AS [Logical Name], vfs.[file_id], df .type_desc ,
1427
1440
df .physical_name AS [Physical Name], CAST (vfs .size_on_disk_bytes / 1048576 .0 AS DECIMAL (15 , 2 )) AS [Size on Disk (MB)],
1428
1441
vfs .num_of_reads , vfs .num_of_writes , vfs .io_stall_read_ms , vfs .io_stall_write_ms ,
@@ -1445,7 +1458,7 @@ ON vfs.[file_id]= df.[file_id] OPTION (RECOMPILE);
1445
1458
1446
1459
1447
1460
1448
- -- Get most frequently executed queries for this database (Query 55 ) (Query Execution Counts)
1461
+ -- Get most frequently executed queries for this database (Query 56 ) (Query Execution Counts)
1449
1462
SELECT TOP (50 ) LEFT (t.[text], 50 ) AS [Short Query Text], qs .execution_count AS [Execution Count],
1450
1463
qs .total_logical_reads AS [Total Logical Reads],
1451
1464
qs .total_logical_reads / qs .execution_count AS [Avg Logical Reads],
@@ -1465,9 +1478,9 @@ ORDER BY qs.execution_count DESC OPTION (RECOMPILE);
1465
1478
-- ----
1466
1479
1467
1480
1468
- -- Queries 56 through 62 are the "Bad Man List" for stored procedures
1481
+ -- Queries 57 through 63 are the "Bad Man List" for stored procedures
1469
1482
1470
- -- Top Cached SPs By Execution Count (Query 56 ) (SP Execution Counts)
1483
+ -- Top Cached SPs By Execution Count (Query 57 ) (SP Execution Counts)
1471
1484
SELECT TOP (100 ) p .name AS [SP Name], qs .execution_count AS [Execution Count],
1472
1485
ISNULL (qs .execution_count / DATEDIFF (Minute, qs .cached_time , GETDATE ()), 0 ) AS [Calls/Minute],
1473
1486
qs .total_elapsed_time / qs .execution_count AS [Avg Elapsed Time],
@@ -1491,7 +1504,7 @@ ORDER BY qs.execution_count DESC OPTION (RECOMPILE);
1491
1504
-- It also helps you find possible caching opportunities
1492
1505
1493
1506
1494
- -- Top Cached SPs By Avg Elapsed Time (Query 57 ) (SP Avg Elapsed Time)
1507
+ -- Top Cached SPs By Avg Elapsed Time (Query 58 ) (SP Avg Elapsed Time)
1495
1508
SELECT TOP (25 ) p .name AS [SP Name], qs .min_elapsed_time , qs .total_elapsed_time / qs .execution_count AS [avg_elapsed_time],
1496
1509
qs .max_elapsed_time , qs .last_elapsed_time , qs .total_elapsed_time , qs .execution_count ,
1497
1510
ISNULL (qs .execution_count / DATEDIFF (Minute, qs .cached_time , GETDATE ()), 0 ) AS [Calls/Minute],
@@ -1515,7 +1528,7 @@ ORDER BY avg_elapsed_time DESC OPTION (RECOMPILE);
1515
1528
1516
1529
1517
1530
1518
- -- Top Cached SPs By Total Worker time. Worker time relates to CPU cost (Query 58 ) (SP Worker Time)
1531
+ -- Top Cached SPs By Total Worker time. Worker time relates to CPU cost (Query 59 ) (SP Worker Time)
1519
1532
SELECT TOP (25 ) p .name AS [SP Name], qs .total_worker_time AS [TotalWorkerTime],
1520
1533
qs .total_worker_time / qs .execution_count AS [AvgWorkerTime], qs .execution_count ,
1521
1534
ISNULL (qs .execution_count / DATEDIFF (Minute, qs .cached_time , GETDATE ()), 0 ) AS [Calls/Minute],
@@ -1537,7 +1550,7 @@ ORDER BY qs.total_worker_time DESC OPTION (RECOMPILE);
1537
1550
-- You should look at this if you see signs of CPU pressure
1538
1551
1539
1552
1540
- -- Top Cached SPs By Total Logical Reads. Logical reads relate to memory pressure (Query 59 ) (SP Logical Reads)
1553
+ -- Top Cached SPs By Total Logical Reads. Logical reads relate to memory pressure (Query 60 ) (SP Logical Reads)
1541
1554
SELECT TOP (25 ) p .name AS [SP Name], qs .total_logical_reads AS [TotalLogicalReads],
1542
1555
qs .total_logical_reads / qs .execution_count AS [AvgLogicalReads],qs .execution_count ,
1543
1556
ISNULL (qs .execution_count / DATEDIFF (Minute, qs .cached_time , GETDATE ()), 0 ) AS [Calls/Minute],
@@ -1559,7 +1572,7 @@ ORDER BY qs.total_logical_reads DESC OPTION (RECOMPILE);
1559
1572
-- You should look at this if you see signs of memory pressure
1560
1573
1561
1574
1562
- -- Top Cached SPs By Total Physical Reads. Physical reads relate to disk read I/O pressure (Query 60 ) (SP Physical Reads)
1575
+ -- Top Cached SPs By Total Physical Reads. Physical reads relate to disk read I/O pressure (Query 61 ) (SP Physical Reads)
1563
1576
SELECT TOP (25 ) p .name AS [SP Name],qs .total_physical_reads AS [TotalPhysicalReads],
1564
1577
qs .total_physical_reads / qs .execution_count AS [AvgPhysicalReads], qs .execution_count ,
1565
1578
qs .total_logical_reads ,qs .total_elapsed_time , qs .total_elapsed_time / qs .execution_count AS [avg_elapsed_time],
@@ -1581,7 +1594,7 @@ ORDER BY qs.total_physical_reads DESC, qs.total_logical_reads DESC OPTION (RECOM
1581
1594
1582
1595
1583
1596
1584
- -- Top Cached SPs By Total Logical Writes (Query 61 ) (SP Logical Writes)
1597
+ -- Top Cached SPs By Total Logical Writes (Query 62 ) (SP Logical Writes)
1585
1598
-- Logical writes relate to both memory and disk I/O pressure
1586
1599
SELECT TOP (25 ) p .name AS [SP Name], qs .total_logical_writes AS [TotalLogicalWrites],
1587
1600
qs .total_logical_writes / qs .execution_count AS [AvgLogicalWrites], qs .execution_count ,
@@ -1606,7 +1619,7 @@ ORDER BY qs.total_logical_writes DESC OPTION (RECOMPILE);
1606
1619
1607
1620
1608
1621
1609
- -- Cached SPs Missing Indexes by Execution Count (Query 62 ) (SP Missing Index)
1622
+ -- Cached SPs Missing Indexes by Execution Count (Query 63 ) (SP Missing Index)
1610
1623
SELECT TOP (25 ) p .name AS [SP Name], qs .execution_count AS [Execution Count],
1611
1624
ISNULL (qs .execution_count / DATEDIFF (Minute, qs .cached_time , GETDATE ()), 0 ) AS [Calls/Minute],
1612
1625
qs .total_elapsed_time / qs .execution_count AS [Avg Elapsed Time],
@@ -1630,7 +1643,7 @@ ORDER BY qs.execution_count DESC OPTION (RECOMPILE);
1630
1643
1631
1644
1632
1645
1633
- -- Lists the top statements by average input/output usage for the current database (Query 63 ) (Top IO Statements)
1646
+ -- Lists the top statements by average input/output usage for the current database (Query 64 ) (Top IO Statements)
1634
1647
SELECT TOP (50 ) OBJECT_NAME (qt .objectid , dbid ) AS [SP Name],
1635
1648
(qs .total_logical_reads + qs .total_logical_writes ) / qs .execution_count AS [Avg IO], qs .execution_count AS [Execution Count],
1636
1649
SUBSTRING (qt.[text],qs .statement_start_offset / 2 ,
@@ -1649,7 +1662,7 @@ ORDER BY [Avg IO] DESC OPTION (RECOMPILE);
1649
1662
1650
1663
1651
1664
1652
- -- Possible Bad NC Indexes (writes > reads) (Query 64 ) (Bad NC Indexes)
1665
+ -- Possible Bad NC Indexes (writes > reads) (Query 65 ) (Bad NC Indexes)
1653
1666
SELECT SCHEMA_NAME (o.[schema_id]) AS [Schema Name],
1654
1667
OBJECT_NAME (s.[object_id]) AS [Table Name],
1655
1668
i .name AS [Index Name], i .index_id ,
@@ -1675,11 +1688,12 @@ ORDER BY [Difference] DESC, [Total Writes] DESC, [Total Reads] ASC OPTION (RECOM
1675
1688
-- Investigate further before dropping an index!
1676
1689
1677
1690
1678
- -- Missing Indexes for current database by Index Advantage (Query 65 ) (Missing Indexes)
1691
+ -- Missing Indexes for current database by Index Advantage (Query 66 ) (Missing Indexes)
1679
1692
SELECT DISTINCT CONVERT (decimal (18 ,2 ), migs .user_seeks * migs .avg_total_user_cost * (migs .avg_user_impact * 0 .01 )) AS [index_advantage],
1680
- migs .last_user_seek , mid.[statement] AS [Database.Schema.Table],
1681
- mid .equality_columns , mid .inequality_columns , mid .included_columns ,
1682
- migs .user_seeks , migs .avg_total_user_cost , migs .avg_user_impact ,
1693
+ CONVERT (nvarchar (25 ), migs .last_user_seek , 20 ) AS [last_user_seek],
1694
+ mid.[statement] AS [Database.Schema.Table],
1695
+ mid .equality_columns , mid .inequality_columns , mid .included_columns , migs .user_seeks ,
1696
+ CONVERT (decimal (18 ,2 ), migs .avg_total_user_cost ) AS [avg_total_user_,cost], migs .avg_user_impact ,
1683
1697
OBJECT_NAME (mid.[object_id]) AS [Table Name], p .rows AS [Table Rows]
1684
1698
FROM sys .dm_db_missing_index_group_stats AS migs WITH (NOLOCK )
1685
1699
INNER JOIN sys .dm_db_missing_index_groups AS mig WITH (NOLOCK )
@@ -1699,7 +1713,7 @@ ORDER BY index_advantage DESC OPTION (RECOMPILE);
1699
1713
-- Håkan Winther has given me some great suggestions for this query
1700
1714
1701
1715
1702
- -- Find missing index warnings for cached plans in the current database (Query 66 ) (Missing Index Warnings)
1716
+ -- Find missing index warnings for cached plans in the current database (Query 67 ) (Missing Index Warnings)
1703
1717
-- Note: This query could take some time on a busy instance
1704
1718
SELECT TOP (25 ) OBJECT_NAME (objectid) AS [ObjectName],
1705
1719
cp .objtype , cp .usecounts , cp .size_in_bytes , qp .query_plan
@@ -1714,7 +1728,7 @@ ORDER BY cp.usecounts DESC OPTION (RECOMPILE);
1714
1728
-- This can help you decide whether to add them or not
1715
1729
1716
1730
1717
- -- Breaks down buffers used by current database by object (table, index) in the buffer cache (Query 67 ) (Buffer Usage)
1731
+ -- Breaks down buffers used by current database by object (table, index) in the buffer cache (Query 68 ) (Buffer Usage)
1718
1732
-- Note: This query could take some time on a busy instance
1719
1733
SELECT fg .name AS [Filegroup Name], SCHEMA_NAME (o .Schema_ID ) AS [Schema Name],
1720
1734
OBJECT_NAME (p.[object_id]) AS [Object Name], p .index_id ,
@@ -1746,7 +1760,7 @@ ORDER BY [BufferCount] DESC OPTION (RECOMPILE);
1746
1760
-- It can help identify possible candidates for data compression
1747
1761
1748
1762
1749
- -- Get Schema names, Table names, object size, row counts, and compression status for clustered index or heap (Query 68 ) (Table Sizes)
1763
+ -- Get Schema names, Table names, object size, row counts, and compression status for clustered index or heap (Query 69 ) (Table Sizes)
1750
1764
SELECT DB_NAME (DB_ID ()) AS [Database Name], SCHEMA_NAME (o .Schema_ID ) AS [Schema Name],
1751
1765
OBJECT_NAME (p .object_id ) AS [Table Name],
1752
1766
CAST (SUM (ps .reserved_page_count ) * 8 .0 / 1024 AS DECIMAL (19 ,2 )) AS [Object Size (MB)],
@@ -1768,7 +1782,7 @@ ORDER BY SUM(ps.reserved_page_count) DESC, SUM(p.Rows) DESC OPTION (RECOMPILE);
1768
1782
1769
1783
1770
1784
1771
- -- Get some key table properties (Query 69 ) (Table Properties)
1785
+ -- Get some key table properties (Query 70 ) (Table Properties)
1772
1786
SELECT OBJECT_NAME (t.[object_id]) AS [ObjectName], p.[rows] AS [Table Rows], p .index_id ,
1773
1787
p .data_compression_desc AS [Index Data Compression],
1774
1788
t .create_date , t .lock_on_bulk_load , t .is_replicated , t .has_replication_filter ,
@@ -1791,7 +1805,7 @@ ORDER BY OBJECT_NAME(t.[object_id]), p.index_id OPTION (RECOMPILE);
1791
1805
1792
1806
1793
1807
1794
- -- When were Statistics last updated on all indexes? (Query 70 ) (Statistics Update)
1808
+ -- When were Statistics last updated on all indexes? (Query 71 ) (Statistics Update)
1795
1809
SELECT SCHEMA_NAME (o .Schema_ID ) + N ' .' + o.[NAME] AS [Object Name], o.[type_desc] AS [Object Type],
1796
1810
i.[name] AS [Index Name], STATS_DATE (i.[object_id], i .index_id ) AS [Statistics Date],
1797
1811
s .auto_created , s .no_recompute , s .user_created , s .is_incremental , s .is_temporary ,
@@ -1825,7 +1839,7 @@ ORDER BY STATS_DATE(i.[object_id], i.index_id) DESC OPTION (RECOMPILE);
1825
1839
1826
1840
1827
1841
1828
- -- Look at most frequently modified indexes and statistics (Query 71 ) (Volatile Indexes)
1842
+ -- Look at most frequently modified indexes and statistics (Query 72 ) (Volatile Indexes)
1829
1843
SELECT o.[name] AS [Object Name], o.[object_id], o.[type_desc], s.[name] AS [Statistics Name],
1830
1844
s .stats_id , s .no_recompute , s .auto_created , s .is_incremental , s .is_temporary ,
1831
1845
sp .modification_counter , sp.[rows], sp .rows_sampled , sp .last_updated
@@ -1843,7 +1857,7 @@ ORDER BY sp.modification_counter DESC, o.name OPTION (RECOMPILE);
1843
1857
1844
1858
1845
1859
1846
- -- Get fragmentation info for all indexes above a certain size in the current database (Query 72 ) (Index Fragmentation)
1860
+ -- Get fragmentation info for all indexes above a certain size in the current database (Query 73 ) (Index Fragmentation)
1847
1861
-- Note: This query could take some time on a very large database
1848
1862
SELECT DB_NAME (ps .database_id ) AS [Database Name], SCHEMA_NAME (o.[schema_id]) AS [Schema Name],
1849
1863
OBJECT_NAME (ps .OBJECT_ID ) AS [Object Name], i.[name] AS [Index Name], ps .index_id , ps .index_type_desc ,
@@ -1864,7 +1878,7 @@ ORDER BY ps.avg_fragmentation_in_percent DESC OPTION (RECOMPILE);
1864
1878
-- and how effective your index maintenance strategy is
1865
1879
1866
1880
1867
- -- - Index Read/Write stats (all tables in current DB) ordered by Reads (Query 73 ) (Overall Index Usage - Reads)
1881
+ -- - Index Read/Write stats (all tables in current DB) ordered by Reads (Query 74 ) (Overall Index Usage - Reads)
1868
1882
SELECT SCHEMA_NAME (t.[schema_id]) AS [SchemaName], OBJECT_NAME (i.[object_id]) AS [ObjectName],
1869
1883
i.[name] AS [IndexName], i .index_id , i.[type_desc] AS [Index Type],
1870
1884
s .user_seeks , s .user_scans , s .user_lookups ,
@@ -1886,7 +1900,7 @@ ORDER BY s.user_seeks + s.user_scans + s.user_lookups DESC OPTION (RECOMPILE); -
1886
1900
-- Show which indexes in the current database are most active for Reads
1887
1901
1888
1902
1889
- -- - Index Read/Write stats (all tables in current DB) ordered by Writes (Query 74 ) (Overall Index Usage - Writes)
1903
+ -- - Index Read/Write stats (all tables in current DB) ordered by Writes (Query 75 ) (Overall Index Usage - Writes)
1890
1904
SELECT SCHEMA_NAME (t.[schema_id]) AS [SchemaName],OBJECT_NAME (i.[object_id]) AS [ObjectName],
1891
1905
i.[name] AS [IndexName], i .index_id , i.[type_desc] AS [Index Type],
1892
1906
s .user_updates AS [Writes], s .user_seeks + s .user_scans + s .user_lookups AS [Total Reads],
@@ -1907,7 +1921,7 @@ ORDER BY s.user_updates DESC OPTION (RECOMPILE); -- Order by writes
1907
1921
1908
1922
1909
1923
1910
- -- Get lock waits for current database (Query 75 ) (Lock Waits)
1924
+ -- Get lock waits for current database (Query 76 ) (Lock Waits)
1911
1925
SELECT o .name AS [table_name], i .name AS [index_name], ios .index_id , ios .partition_number ,
1912
1926
SUM (ios .row_lock_wait_count ) AS [total_row_lock_waits],
1913
1927
SUM (ios .row_lock_wait_in_ms ) AS [total_row_lock_wait_in_ms],
@@ -1932,7 +1946,7 @@ ORDER BY total_lock_wait_in_ms DESC OPTION (RECOMPILE);
1932
1946
1933
1947
1934
1948
1935
- -- Look at UDF execution statistics (Query 76 ) (UDF Statistics)
1949
+ -- Look at UDF execution statistics (Query 77 ) (UDF Statistics)
1936
1950
SELECT OBJECT_NAME (object_id ) AS [Function Name], execution_count,
1937
1951
total_worker_time, total_worker_time/ execution_count AS [avg_worker_time],
1938
1952
total_logical_reads, total_physical_reads, total_elapsed_time,
@@ -1952,7 +1966,7 @@ ORDER BY total_worker_time DESC OPTION (RECOMPILE);
1952
1966
-- https://bit.ly/2q1Q6BM
1953
1967
1954
1968
1955
- -- Get QueryStore Options for this database (Query 77 ) (QueryStore Options)
1969
+ -- Get QueryStore Options for this database (Query 78 ) (QueryStore Options)
1956
1970
SELECT actual_state_desc, desired_state_desc, [interval_length_minutes],
1957
1971
current_storage_size_mb, [max_storage_size_mb],
1958
1972
query_capture_mode_desc, size_based_cleanup_mode_desc
@@ -1972,7 +1986,7 @@ FROM sys.database_query_store_options WITH (NOLOCK) OPTION (RECOMPILE);
1972
1986
-- ALTER DATABASE [DatabaseName] SET QUERY_STORE = OFF(FORCED);
1973
1987
1974
1988
1975
- -- Get input buffer information for the current database (Query 78 ) (Input Buffer)
1989
+ -- Get input buffer information for the current database (Query 79 ) (Input Buffer)
1976
1990
SELECT es .session_id , DB_NAME (es .database_id ) AS [Database Name],
1977
1991
es.[program_name], es.[host_name], es .login_name ,
1978
1992
es .login_time , es .cpu_time , es .logical_reads , es .memory_usage ,
@@ -1995,7 +2009,7 @@ AND es.session_id <> @@SPID OPTION (RECOMPILE);
1995
2009
1996
2010
1997
2011
1998
- -- Look at recent Full backups for the current database (Query 81 ) (Recent Full Backups)
2012
+ -- Look at recent Full backups for the current database (Query 80 ) (Recent Full Backups)
1999
2013
SELECT TOP (30 ) bs .machine_name , bs .server_name , bs .database_name AS [Database Name], bs .recovery_model ,
2000
2014
CONVERT (BIGINT , bs .backup_size / 1048576 ) AS [Uncompressed Backup Size (MB)],
2001
2015
CONVERT (BIGINT , bs .compressed_backup_size / 1048576 ) AS [Compressed Backup Size (MB)],
0 commit comments