Care dintre fişiere este cel mare ? MDF-ul (fişierul de date) sau LDF-ul (transaction log-ul) ?
Dacă LDF-ul este prea mare, atunci recomandarea lui Katalyn ar fi bună: trebuie să faceţi (în mod regulat) backup-uri de transaction log. După primul backup de log, un DBCC SHRINKFILE('Numele logic al fişierului de log',100) ar trebui să micşoreze LDF-ul la circa 100MB.
Dacă MDF-ul este prea mare şi este mult unallocated space, atunci puteţi să-i daţi un DBCC SHRINKFILE('Numele logic al fişierului
de date',100), şi MDF-ul ar trebui să se micşoreze, lăsând doar 100MB liberi.
Dacă MDF-ul este prea mare şi este mult unused space, atunci puteţi încerca să îi daţi DBCC DBREINDEX pe fiecare tabelă, pentru a defragmenta indecşii. Apoi, puteţi să-i daţi DBCC SHRINKFILE('Numele logic al fişierului de date',100).
În orice caz, dacă folosiţi DBCC SHRINKFILE pentru fişierul de date (fără a specifica NOTRUNCATE), fragmentarea datelor va creşte semnificativ. Drept urmare, dacă chiar e nevoie de shrink, e recomandabil să lăsaţi un spaţiu liber semnificativ în fişier (de exemplu, 10%, dar nu mai puţin de 50MB), iar după ce faceţi DBCC SHRINKFILE să faceţi DBCC DBREINDEX (pentru fiecare tabelă) sau DBCC INDEXDEFRAG (pentru fiecare index).
Răzvan Socol
SQL Server MVP