sync
This commit is contained in:
@@ -40,6 +40,8 @@ WHERE type IN (0,1);';
|
||||
SELECT *
|
||||
FROM #FileSize
|
||||
*/
|
||||
--the free space in MB that should be present in the files after shrinking
|
||||
DECLARE @limit INT = 512;
|
||||
|
||||
SELECT
|
||||
d.[name] AS dbName
|
||||
@@ -65,18 +67,20 @@ GO
|
||||
|
||||
' AS reorganizeData
|
||||
,'USE '+d.name+';
|
||||
IF 1024 < '+CAST(CAST(f.size * 8.0 / 1024 AS DECIMAL(18,2)) AS VARCHAR(15))+' --file is above 1Go
|
||||
AND 95 > '+CAST(CAST((fs.[CurrentSizeMB] - fs.[FreeSpaceMB]) * 100 / (CAST(f.size * 8.0 / 1024 AS DECIMAL(18,2))) AS DECIMAL(6,2))AS VARCHAR(15))+' --and usage below 95%
|
||||
IF '+CAST(@limit AS VARCHAR(20))+' < '+CAST(CAST(f.size * 8.0 / 1024 AS DECIMAL(18,2)) AS VARCHAR(15))+' --file is above requested free space
|
||||
--AND 95 > '+CAST(CAST((fs.[CurrentSizeMB] - fs.[FreeSpaceMB]) * 100 / (CAST(f.size * 8.0 / 1024 AS DECIMAL(18,2))) AS DECIMAL(6,2))AS VARCHAR(15))+' --and usage below 95%
|
||||
AND '+CAST(fs.[FreeSpaceMB] AS VARCHAR(20))+' > '+CAST(@limit AS VARCHAR(20))+' --free space is over the requested limit
|
||||
AND 0 < '+CAST(CAST(fs.[CurrentSizeMB] - fs.[FreeSpaceMB] AS DECIMAL(18,2))AS VARCHAR(15))+' --and data are present
|
||||
BEGIN
|
||||
--print ''Reorganize '+d.name+'.'+f.name+' ''
|
||||
RAISERROR(''Reorganize '+d.name+'.'+f.name+' '',0,0) WITH NOWAIT
|
||||
|
||||
DBCC SHRINKFILE (N'''+f.[name]+''' , '+CAST(CAST(fs.[CurrentSizeMB] - fs.[FreeSpaceMB] + 1024 AS DECIMAL(18,0)) AS VARCHAR(15))+');
|
||||
DBCC SHRINKFILE (N'''+f.[name]+''' , '+CAST(CAST(fs.[CurrentSizeMB] - fs.[FreeSpaceMB] + @limit AS DECIMAL(18,0)) AS VARCHAR(15))+');
|
||||
RAISERROR(''Done'',0,0) WITH NOWAIT
|
||||
END
|
||||
GO
|
||||
' AS auto_action
|
||||
--,fs.[CurrentSizeMB] - fs.[FreeSpaceMB] AS unused_space_mb
|
||||
FROM sys.master_files F
|
||||
JOIN sys.databases d ON d.[database_id] = f.[database_id]
|
||||
JOIN [#dbs] [d2] ON d2.[database_name] = d.[name]
|
||||
|
||||
Reference in New Issue
Block a user