Kiedy się skończy SHRINK?

6-kwi-2014

Kiedy shrinkujesz bazę, mimo tego, że dobrze wiadomo, że shrinkowanie nie jest dobre, no ale czasem trzeba, a obawiasz się o zablokowanie bazy na długi długi czas, możesz wykonywać pomiejszanie pliku etapami. Np zamiast pomniejszyć ją o 50 GB na raz, zmniejsz ją po 5 GB w 10 krokach.

Zawsze to masz jakąś kontrolę nad procesem shrink. Jeśli już jednak zapuściłeś dużego shrinka, a wykonanie trwa i trwa, to pewnie chciałbyś wiedzieć kiedy się skończy.

Poniższe zapytanie spróbuje mniej więcej wyznaczyć czas zakończenia polecenia:

SELECT command, percent_complete, start_time,
CAST(((DATEDIFF(s,start_time,GetDate()))/3600) as varchar) + ’ hour(s), ’
+ CAST((DATEDIFF(s,start_time,GetDate())%3600)/60 as varchar) + 'min, ’
+ CAST((DATEDIFF(s,start_time,GetDate())%60) as varchar) + ’ sec’ as running_time,
CAST((estimated_completion_time/3600000) as varchar) + ’ hour(s), ’
+ CAST((estimated_completion_time %3600000)/60000 as varchar) + 'min, ’
+ CAST((estimated_completion_time %60000)/1000 as varchar) + ’ sec’ as est_time_to_go,
dateadd(second,estimated_completion_time/1000, getdate()) as est_completion_time,
s.text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) s
where command=’dbccFilesCompact’

Skomplikowane obliczenia CAST… mają na celu przedstawienie czasu zakończenia polecenia w czytelnej dla człowieka formie.

Komentarze:

  1. Radek napisał,

    A żeby sprawdzić kiedy się skończy CHECKDDB zmień

    SELECT command, percent_complete, start_time,
    CAST(((DATEDIFF(s,start_time,GetDate()))/3600) as varchar) + ’ hour(s), ’
    + CAST((DATEDIFF(s,start_time,GetDate())%3600)/60 as varchar) + 'min, ’
    + CAST((DATEDIFF(s,start_time,GetDate())%60) as varchar) + ’ sec’ as running_time,
    CAST((estimated_completion_time/3600000) as varchar) + ’ hour(s), ’
    + CAST((estimated_completion_time %3600000)/60000 as varchar) + 'min, ’
    + CAST((estimated_completion_time %60000)/1000 as varchar) + ’ sec’ as est_time_to_go,
    dateadd(second,estimated_completion_time/1000, getdate()) as est_completion_time,
    s.text
    FROM sys.dm_exec_requests r
    CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) s
    where command like 'DBCC%’

  2. Mobilo » Blog Archive » Nie można shrinkować bazy napisał,

    […] http://www.mobilo24.eu/kiedy-sie-skonczy-shink/ […]

Autor: Rafał Kraik