Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Speicherplatz nach dem Verschieben von Indizes in die Dateigruppe zurückgewinnen

Ich habe in der Vergangenheit festgestellt, dass das Verkleinern der Datendatei in kleinere Teile effektiver sein kann, als zu versuchen, alles auf einmal zu verkleinern. Wenn Sie versuchen würden, eine ähnliche Strategie zu verwenden, sollten Sie etwa wie folgt vorgehen:

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