Skip to content

Commit d3a3975

Browse files
committed
Add @volumeInfo
Added @volumeInfo to show Volume Info
1 parent 162105f commit d3a3975

File tree

4 files changed

+68
-23
lines changed

4 files changed

+68
-23
lines changed
0 Bytes
Binary file not shown.

Space Issues/Get-VolumeInfo.sql

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
--EXEC tempdb..[usp_AnalyzeSpaceCapacity] @verbose = 1
1+
--EXEC tempdb..[usp_AnalyzeSpaceCapacity] @getLogInfo = 1 ,@verbose = 1
22
/* Created By: Ajay Dwivedi
33
Purpose: Get Space Utilization of All DB Files along with Free space on Drives.
44
This considers even non-accessible DBs

SpaceCapacity-Automation/Automation - Restrict File growth.sql

+53-20
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ GO
33
IF OBJECT_ID('dbo.usp_AnalyzeSpaceCapacity') IS NULL
44
EXEC ('CREATE PROCEDURE dbo.usp_AnalyzeSpaceCapacity AS RETURN 0;')
55
GO
6+
-- EXEC tempdb..[usp_AnalyzeSpaceCapacity] @volumeInfo = 1
67
-- EXEC tempdb..[usp_AnalyzeSpaceCapacity] @getLogInfo = 1
78
-- EXEC tempdb..[usp_AnalyzeSpaceCapacity] @help = 1
89
-- EXEC [dbo].[usp_AnalyzeSpaceCapacity] @addDataFiles = 1 ,@newVolume = 'E:\Data1\' ,@oldVolume = 'E:\Data\' --,@forceExecute = 1
@@ -12,18 +13,17 @@ GO
1213
-- EXEC tempdb..[usp_AnalyzeSpaceCapacity] @expandTempDBSize = 1 ,@output4IdealScenario = 1
1314
-- DECLARE @_errorOccurred BIT; EXEC @_errorOccurred = tempdb..[usp_AnalyzeSpaceCapacity] ; SELECT CASE WHEN @_errorOccurred = 1 THEN 'fail' ELSE 'pass' END AS [Pass/Fail];
1415
ALTER PROCEDURE [dbo].[usp_AnalyzeSpaceCapacity]
15-
@getInfo TINYINT = 0, @getLogInfo TINYINT = 0, @help TINYINT = 0, @addDataFiles TINYINT = 0, @addLogFiles TINYINT = 0, @restrictDataFileGrowth TINYINT = 0, @restrictLogFileGrowth TINYINT = 0, @generateCapacityException TINYINT = 0, @unrestrictFileGrowth TINYINT = 0, @removeCapacityException TINYINT = 0, @UpdateMountPointSecurity TINYINT = 0, @restrictMountPointGrowth TINYINT = 0, @expandTempDBSize TINYINT = 0, @optimizeLogFiles TINYINT = 0,
16+
@getInfo TINYINT = 0, @getLogInfo TINYINT = 0, @volumeInfo TINYINT = 0, @help TINYINT = 0, @addDataFiles TINYINT = 0, @addLogFiles TINYINT = 0, @restrictDataFileGrowth TINYINT = 0, @restrictLogFileGrowth TINYINT = 0, @generateCapacityException TINYINT = 0, @unrestrictFileGrowth TINYINT = 0, @removeCapacityException TINYINT = 0, @UpdateMountPointSecurity TINYINT = 0, @restrictMountPointGrowth TINYINT = 0, @expandTempDBSize TINYINT = 0, @optimizeLogFiles TINYINT = 0,
1617
@newVolume VARCHAR(50) = NULL, @oldVolume VARCHAR(50) = NULL, @mountPointGrowthRestrictionPercent TINYINT = 79, @tempDBMountPointPercent TINYINT = 89, @DBs2Consider VARCHAR(1000) = NULL, @mountPointFreeSpaceThreshold_GB INT = 60
1718
,@verbose TINYINT = 0 ,@testAllOptions TINYINT = 0 ,@forceExecute TINYINT = 0 ,@allowMultiVolumeUnrestrictedFiles TINYINT = 0 ,@output4IdealScenario TINYINT = 0
1819
AS
1920
BEGIN
2021
/*
2122
Created By: Ajay Dwivedi
22-
Updated on: 08-Aug-2017
23+
Updated on: 16-Mar-2018
2324
Current Ver: 3.3 - Add functionality to make modification only for specific databases using @DBs2Consider
2425
2526
Purpose: This procedure can be used to generate automatic TSQL code for working with ESCs like 'DBSEP2537- Data- Create and Restrict Database File Names' type.
26-
\\gdv01fil01\d101\dba\sqlserver\scripts\sql\Maintenance
2727
*/
2828

2929
SET NOCOUNT ON;
@@ -225,7 +225,7 @@ DECLARE @_logicalCores TINYINT
225225
ELSE
226226
SET @_LogOrData = 'Log';
227227

228-
IF (@help=1 OR @addDataFiles=1 OR @addLogFiles=1 OR @restrictDataFileGrowth=1 OR @restrictLogFileGrowth=1 OR @generateCapacityException=1 OR @unrestrictFileGrowth=1 OR @removeCapacityException=1 OR @UpdateMountPointSecurity=1 OR @restrictMountPointGrowth=1 OR @expandTempDBSize=1 OR @optimizeLogFiles=1)
228+
IF (@help=1 OR @volumeInfo=1 OR @addDataFiles=1 OR @addLogFiles=1 OR @restrictDataFileGrowth=1 OR @restrictLogFileGrowth=1 OR @generateCapacityException=1 OR @unrestrictFileGrowth=1 OR @removeCapacityException=1 OR @UpdateMountPointSecurity=1 OR @restrictMountPointGrowth=1 OR @expandTempDBSize=1 OR @optimizeLogFiles=1)
229229
BEGIN
230230
SET @getInfo = 0;
231231
SET @getLogInfo = 0;
@@ -1176,11 +1176,14 @@ DECLARE @_logicalCores TINYINT
11761176
,(CASE WHEN growth = 0 THEN '0' WHEN is_percent_growth = 1 THEN CAST(growth AS VARCHAR(5))+'%'
11771177
ELSE CAST(CONVERT( DECIMAL(20,2),((65536*8.0)/1024.0)) AS VARCHAR(20))+'(MB)'
11781178
END) AS [growth(GB)]
1179-
,name as [FileName] ,LEFT(physical_name, CHARINDEX('\',physical_name,4)) as [Volume]
1179+
,name as [FileName]
1180+
,v.Volume as [Volume]
11801181
FROM sys.master_files AS mf
11811182
INNER JOIN
11821183
T_FileGroup AS fg
11831184
ON mf.database_id = fg.database_id AND mf.data_space_id = fg.data_space_id
1185+
OUTER APPLY
1186+
( SELECT v.Volume FROM @mountPointVolumes as v WHERE mf.physical_name LIKE (v.Volume+'%') ) as v
11841187
WHERE mf.type_desc = 'ROWS'
11851188
)
11861189
,T_Files_Usage AS
@@ -1204,16 +1207,13 @@ DECLARE @_logicalCores TINYINT
12041207
,[freespace(GB)]
12051208
, [freespace(%)]
12061209
FROM @mountPointVolumes as v
1207-
WHERE v.Volume IN (SELECT DISTINCT [Volume] FROM T_Files_Filegroups)
1208-
OR v.Volume LIKE '[A-Z]:\Data[0-9]\'
1209-
OR v.Volume LIKE '[A-Z]:\Data[0-9][0-9]\'
1210+
WHERE EXISTS (SELECT 1 FROM T_Files_Filegroups AS fg WHERE fg.Volume = v.Volume)
12101211
)
12111212
,T_Files AS
12121213
(
12131214
SELECT DB_ID, DB_Name, [TotalFilesSize(GB)], [FileGroup],
1214-
--f.FileName+' (Growth by '+[growth(GB)]+')' AS FileSettings,
12151215
f.[FileName]+' (Size|% Used|AutoGrowth :: '+size+'|'+CAST([% space used] AS VARCHAR(50))+' %|'+[growth(GB)]+')' AS FileSettings,
1216-
v.VolumeName+' = '+CAST([freespace(GB)] AS VARCHAR(20))+'GB('+CAST([freespace(%)] AS VARCHAR(20))+'%) Free of '+CAST([capacity(GB)] AS VARCHAR(20))+' GB' as FileDrive
1216+
v.VolumeName+'['+v.Volume+']'+' = '+CAST([freespace(GB)] AS VARCHAR(20))+'GB('+CAST([freespace(%)] AS VARCHAR(20))+'%) Free of '+CAST([capacity(GB)] AS VARCHAR(20))+' GB' as FileDrive
12171217
,f.growth, f.[growth(GB)], f.[FileName], v.Volume, [capacity(MB)], [freespace(MB)], VolumeName, [capacity(GB)], [freespace(GB)], [freespace(%)]
12181218
,ROW_NUMBER()OVER(PARTITION BY v.Volume, f.DB_Name, f.[FileGroup] ORDER BY f.[file_id])AS FileID
12191219
FROM T_Files_Filegroups AS f
@@ -1320,13 +1320,38 @@ DECLARE @_logicalCores TINYINT
13201320
PRINT '/* ******************** End: @getInfo = 1 *****************************/
13211321
13221322
';
1323+
13231324

13241325
END -- End Block of @getInfo
13251326

13261327
-- ----------------------------------------------------------------------------
13271328
-- End: @getInfo = 1
13281329
-- ============================================================================
13291330

1331+
-- ============================================================================
1332+
-- Begin: @volumeInfo = 1
1333+
-- ----------------------------------------------------------------------------
1334+
IF @volumeInfo = 1
1335+
BEGIN
1336+
IF @verbose=1
1337+
PRINT '
1338+
/* ******************** Begin: @volumeInfo = 1 *****************************/';
1339+
1340+
SELECT v.Volume, v.Label, v.[capacity(GB)], v.[freespace(GB)]
1341+
,[UsedSpace(GB)] = v.[capacity(GB)]-v.[freespace(GB)]
1342+
,v.[freespace(%)]
1343+
,[UsedSpace(%)] = 100-v.[freespace(%)]
1344+
FROM @mountPointVolumes AS v;
1345+
1346+
IF @verbose=1
1347+
PRINT '
1348+
/* ******************** Begin: @volumeInfo = 1 *****************************/';
1349+
END
1350+
-- ----------------------------------------------------------------------------
1351+
-- End: @volumeInfo = 1
1352+
-- ============================================================================
1353+
1354+
13301355

13311356
-- ============================================================================
13321357
-- Begin: @getLogInfo = 1
@@ -1357,6 +1382,9 @@ DECLARE @_logicalCores TINYINT
13571382
PRINT ' Start Loop, and find VLFs for each log file of every db';
13581383
WHILE (@_loopCounter <= @_loopCounts)
13591384
BEGIN
1385+
-- Truncate temp table
1386+
TRUNCATE TABLE #stage;
1387+
13601388
SELECT @_dbName = DBName FROM @Databases WHERE ID = @_loopCounter ;
13611389
SET @_loopSQLText = 'DBCC LOGINFO ('+QUOTENAME(@_dbName)+')
13621390
WITH NO_INFOMSGS;';
@@ -1394,10 +1422,14 @@ DECLARE @_logicalCores TINYINT
13941422
(
13951423
SELECT mf.database_id as [DB_ID], DB_NAME(mf.database_id) AS [DB_Name], CASE WHEN d.is_read_only = 1 THEN 'Read_Only' ELSE DATABASEPROPERTYEX(DB_NAME(mf.database_id), 'Status') END as DB_State
13961424
,[TotalFilesSize(GB)]
1397-
,(CASE WHEN growth = 0 THEN '0' WHEN is_percent_growth = 1 THEN CAST(growth AS VARCHAR(5))+'%'
1398-
ELSE CAST(CONVERT( DECIMAL(20,2),((65536*8.0)/1024.0)) AS VARCHAR(20))+' mb'
1399-
END) AS [growth(GB)]
1400-
,mf.name as [FileName] ,LEFT(physical_name, CHARINDEX('\',physical_name,4)) as [Volume]
1425+
,(CASE WHEN growth = 0
1426+
THEN '0'
1427+
WHEN is_percent_growth = 1
1428+
THEN CAST(growth AS VARCHAR(5))+'%'
1429+
ELSE CAST(CONVERT( DECIMAL(20,2),((mf.growth*8.0)/1024.0)) AS VARCHAR(20))+' mb'
1430+
END) AS [growth(GB)]
1431+
,mf.name as [FileName]
1432+
,v.Volume as [Volume]
14011433
,mf.*
14021434
,d.recovery_model_desc
14031435
FROM sys.master_files AS mf
@@ -1407,6 +1439,8 @@ DECLARE @_logicalCores TINYINT
14071439
LEFT JOIN
14081440
T_Files_Size AS l
14091441
ON l.database_id = mf.database_id
1442+
OUTER APPLY
1443+
( SELECT v.Volume FROM @mountPointVolumes AS v WHERE mf.physical_name LIKE (v.Volume+'%') ) AS v
14101444
WHERE mf.type_desc = 'LOG'
14111445
)
14121446
,T_Volumes_Derived AS
@@ -1419,16 +1453,15 @@ DECLARE @_logicalCores TINYINT
14191453
,[freespace(GB)]
14201454
,[freespace(%)]
14211455
FROM @mountPointVolumes as v
1422-
WHERE v.Volume IN (SELECT DISTINCT [Volume] FROM T_Files_Filegroups)
1423-
OR v.Volume LIKE '[A-Z]:\LOG[S][0-9]\'
1424-
OR v.Volume LIKE '[A-Z]:\LOG[S][0-9][0-9]\'
1456+
WHERE EXISTS (SELECT * FROM T_Files_Filegroups AS fg WHERE v.Volume = fg.[Volume])
1457+
--OR v.Volume LIKE '[A-Z]:\LOG[S][0-9]\'
1458+
--OR v.Volume LIKE '[A-Z]:\LOG[S][0-9][0-9]\'
14251459
)
14261460
,T_Files AS
14271461
(
14281462
SELECT DB_ID, DB_Name, [TotalFilesSize(GB)], DB_State,
14291463
f.FileName+' (VLF_Count|Size|AutoGrowth :: '+CAST(l.VLFCount AS VARCHAR(20))+'|'+CAST(CONVERT(DECIMAL(20,2),((size*8.0)/1024/1024)) AS VARCHAR(20))+' gb|'+[growth(GB)]+')' AS FileSettings,
1430-
--f.FileName+' (Growth by '+[growth(GB)]+') with '+CAST(l.VLFCount AS VARCHAR(20))+' VLFs' AS FileSettings,
1431-
v.VolumeName+' = '+CAST([freespace(GB)] AS VARCHAR(20))+'GB('+CAST([freespace(%)] AS VARCHAR(20))+'%) Free of '+CAST([capacity(GB)] AS VARCHAR(20))+' GB' as FileDrive
1464+
v.VolumeName+QUOTENAME(v.Volume)+' = '+CAST([freespace(GB)] AS VARCHAR(20))+'GB('+CAST([freespace(%)] AS VARCHAR(20))+'%) Free of '+CAST([capacity(GB)] AS VARCHAR(20))+' GB' as FileDrive
14321465
,growth, [growth(GB)], [FileName], l.VLFCount
14331466
,v.Volume, [capacity(MB)], [freespace(MB)], VolumeName, [capacity(GB)], [freespace(GB)], [freespace(%)]
14341467
,ROW_NUMBER()OVER(PARTITION BY v.Volume, f.DB_Name ORDER BY f.[file_id]) AS FileID
@@ -1459,7 +1492,7 @@ DECLARE @_logicalCores TINYINT
14591492
IF @verbose = 1
14601493
BEGIN
14611494
PRINT ' SELECT * FROM #LogFiles;';
1462-
SELECT 'SELECT * FROM #LogFiles;' AS RunningQuery, * FROM #LogFiles;
1495+
SELECT 'SELECT * FROM #LogFiles;' AS RunningQuery, * FROM #LogFiles ORDER BY DB_Name;
14631496
END
14641497

14651498
IF @verbose = 1

SpaceCapacity-Automation/SpaceCapacity-Automation.ssmssqlproj

+14-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,18 @@
1515
<ConnectionProtocol>NotSpecified</ConnectionProtocol>
1616
<ApplicationName>Microsoft SQL Server Management Studio - Query</ApplicationName>
1717
</ConnectionNode>
18+
<ConnectionNode Name="TUL1CIPCNPDB1:CORPORATE\adwivedi">
19+
<Created>2018-03-16T21:03:23.9918743+05:30</Created>
20+
<Type>SQL</Type>
21+
<Server>TUL1CIPCNPDB1</Server>
22+
<UserName />
23+
<Authentication>Windows Authentication</Authentication>
24+
<InitialDB />
25+
<LoginTimeout>30</LoginTimeout>
26+
<ExecutionTimeout>0</ExecutionTimeout>
27+
<ConnectionProtocol>NotSpecified</ConnectionProtocol>
28+
<ApplicationName>Microsoft SQL Server Management Studio - Query</ApplicationName>
29+
</ConnectionNode>
1830
<ConnectionNode Name="TUL1DBAPMTDB1:CORPORATE\adwivedi">
1931
<Created>2018-03-16T13:18:14.5685404+05:30</Created>
2032
<Type>SQL</Type>
@@ -32,8 +44,8 @@
3244
<LogicalFolder Name="Queries" Type="0" Sorted="true">
3345
<Items>
3446
<FileNode Name="Automation - Restrict File growth.sql">
35-
<AssociatedConnectionMoniker>8c91a03d-f9b4-46c0-a305-b5dcc79ff907:TUL1DBAPMTDB1:True</AssociatedConnectionMoniker>
36-
<AssociatedConnSrvName>TUL1DBAPMTDB1</AssociatedConnSrvName>
47+
<AssociatedConnectionMoniker>8c91a03d-f9b4-46c0-a305-b5dcc79ff907:TUL1CIPCNPDB1:True</AssociatedConnectionMoniker>
48+
<AssociatedConnSrvName>TUL1CIPCNPDB1</AssociatedConnSrvName>
3749
<AssociatedConnUserName />
3850
<FullPath>Automation - Restrict File growth.sql</FullPath>
3951
</FileNode>

0 commit comments

Comments
 (0)