Adatbázis fájlok méretét ritkán csökkentjük, hiszen többnyire úgy is megtelik új adatokkal , indexekkel. Érdemes csökkenteni a méretet például ha nagyon sok adatot kipucoltunk az adatbázisból és csak nagyon sokára fog újra felhízni..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
-- lényeg, hogy kis adagokban csökkentse a db-t mert soká tarthat és beterhel, valamint trunzactional db is nő!! DECLARE @DataFileName VARCHAR(255); DECLARE @starttime datetime DECLARE @endtime datetime SET @starttime =getdate() SET @DataFileName = (SELECT name FROM sysfiles WHERE groupid = 1); DECLARE @TargetSize INT; SET @starttime =getdate() SET @TargetSize = ROUND(8 * (SELECT size FROM sysfiles WHERE groupid = 1) / 1024, 0) - 500; -- Select current size and substract 500 MB SELECT @DataFileName as datafiename,@TargetSize as targetsize; EXEC ('DBCC SHRINKFILE (' + @DataFileName + ', ' + @TargetSize + ')'); SET @endtime =getdate() SELECT DATEDIFF(millisecond,@starttime,@endtime) AS elapsed_ms; |
Az adatábzis méretet mindig óvatosan csökkentsük, lehet hogy 500 MB üres terület kivétele pillanatok alatt , pár másodperc alatt megtörténik, majd máskor az adatok áthelyezése miatt percekig fut akárcsak 1 MB átszervezése.
Javaslat: kisebb MB-ok csökkentésével kezdjük, majd növeljük a shrink méretet. Amikor elkezd nőni a végrehajtási idő , akkor csökkentsük a shrink méretet.