Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

recuperare spazio dopo aver spostato gli indici nel filegroup

In passato ho notato che ridurre il file di dati in blocchi più piccoli può essere più efficace rispetto al tentativo di ridurlo tutto in una volta. Se dovessi tentare di utilizzare una strategia simile, vorresti fare qualcosa come di seguito:

DECLARE @targetSize AS INT = 388000;
DECLARE @desiredFinalSize AS INT = 362000;
DECLARE @increment AS INT = 300;
DECLARE @sql AS VARCHAR(200);

WHILE @targetSize > @desiredFinalSize
BEGIN
    SET @sql = 'DBCC SHRINKFILE(''MyDataFileName'', ' + CAST(@targetSize AS VARCHAR(10)) + ');'
    SELECT @sql;
    EXEC(@sql);

    SET @targetSize = @targetSize - @increment; 
END