Błąd świadczy o tym, że operacja shrink chciała zmniejszyć plik bazy danych o strony, które są aktualnie wykorzystywane przez tabele znajdujące się w tempdb. Otrzymasz go czasem podczas shrinkowania tempdb:
DBCC shrinkfile (tempdb_data, 5000);
W tej sytuacji można:
1. DBCC FREESYSTEMCACHE (’ALL’)
czyści cache systemowy
2. Wykonać
CHECKPOINT
żeby bufory w pamięci były czyste, a następnie:
DBCC DROPCLEANBUFFERS
3. Wyczyścić cache procedur (skompilowane procedury przechowywane w pamięci):
DBCC FREEPROCCACHE
W moim przypadku ponowne uruchomienie shrink znowu skończyło się błędem, ale zwolniona została znacznie większa część pliku niż za pierwszym razem.
Jeśli już nic nie da się zrobić pozostanie tylko restart instancji…
Więcej na ten temat:
http://sqlsunday.com/2013/08/11/shrinking-tempdb-without-restarting-sql-server/
Komentarze:
Moje wyniki, po każdej opisanej tu komendzie wykonywałem shrinkfile. Dopiero po ostatnim poleceniu Current size zbliżył się do tego co sobie życzyłem w SHRINKFILE
Kolumny to: Dbid/FileId/CurrentSize/Minimumsize/UsedPages/EstimatedPages
2 1 506432 162872 1136 1136
2 1 477744 162872 480 480
2 1 477744 162872 472 472
2 1 477744 162872 480 480
2 1 262144 162872 480 480
[…] http://www.mobilo24.eu/dbcc-shrinkfile-page-1123456-could-not-be-moved-because-it-is-a-work-file-pag… […]