it-swarm.asia

DBCC SHRINKFILE ilerleme nasıl kontrol edilir?

DBCC SHRINKFILE İfadesinin ilerlemesini öğrenmenin bir yolu var mı?

İşte böyle çalışıyordum

dbcc shrinkfile ('main_data', 250000)

Yukarıdaki ifade hem SQL Server 2005 ve 2008 üzerinde çalışıyorum.

[UPDATE] İşte ilerlemeyi ve çalıştırılmakta olan metni kontrol etmek için koştuğum sorgu.

select  T.text, R.Status, R.Command, DatabaseName = db_name(R.database_id)
        , R.cpu_time, R.total_elapsed_time, R.percent_complete
from    sys.dm_exec_requests R
        cross apply sys.dm_exec_sql_text(R.sql_handle) T
32
dance2die

Sys.dm_exec_requests içinde yüzde_kontrolü kontrol ettiniz mi?

33
Aaron Alton

Aaron'un cevabı yerinde, ancak korkunç performans sorunlarına neden olduğu için veri dosyasını küçültmeye karşı sizi uyarmak istiyorum. Büzülme kodunun sahibiydim, bu yüzden neden bahsettiğimi biliyorum. Dün yazdığım bu blog yazısı Checkout size ne demek istediğimi gösterir ve aslında bir küçültme yapmadan nasıl bir küçültme etkisi tavsiye eder: Neden veri dosyalarınızı küçültmemelisiniz

Bu yardımcı olur umarım!

Not: Uzun zaman alıp almadığını ve tamamlanma yüzdesinin artmadığını kontrol etmek için bir şey daha var - engelleme arayın. Shrink ihtiyaç duyduğu kilitleri sonsuz bekleyecektir.

14
Paul Randal

Aşağıdaki sorgu size böyle bir sonuç gösterecektir: dbcc büzülme durumunu izle

-------------------------------
--Track DBCC shrink status
-------------------------------
select
a.session_id
, command
, b.text
, percent_complete
, done_in_minutes = a.estimated_completion_time / 1000 / 60
, min_in_progress = DATEDIFF(MI, a.start_time, DATEADD(ms, a.estimated_completion_time, GETDATE() ))
, a.start_time
, estimated_completion_time = DATEADD(ms, a.estimated_completion_time, GETDATE() )
from sys.dm_exec_requests a
CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) b
where command like '%dbcc%'
5
Mark Varnas
SELECT 
    d.name,
    percent_complete, 
    session_id,
    start_time, 
    status, 
    command, 
    estimated_completion_time, 
    cpu_time, 
    total_elapsed_time
FROM 
    sys.dm_exec_requests E left join
    sys.databases D on e.database_id = d.database_id
WHERE
    command in ('DbccFilesCompact','DbccSpaceReclaim')
5

İlgilenen herkes için kendi sürümümü ekleyerek, milisaniye zaman sütunlarını daha okunabilir dakikalara ve saniyelere dönüştürür.

select 
[status],
start_time,
convert(varchar,(total_elapsed_time/(1000))/60) + 'M ' + convert(varchar,(total_elapsed_time/(1000))%60) + 'S' AS [Elapsed],
convert(varchar,(estimated_completion_time/(1000))/60) + 'M ' + convert(varchar,(estimated_completion_time/(1000))%60) + 'S' as [ETA],
command,
[sql_handle],
database_id,
connection_id,
blocking_session_id,
percent_complete
from  sys.dm_exec_requests
where estimated_completion_time > 1
order by total_elapsed_time desc
4
user5947282