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
Sys.dm_exec_requests içinde yüzde_kontrolü kontrol ettiniz mi?
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.
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%'
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')
İ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