MSSQL 收缩数据文件 and 查看收缩进度

  1. 收缩数据库

---- 查看数据文件大小
USE AIS20241217182025
GO
SELECT a.name as 逻辑文件名, size/128 [totalspace文件大小(兆)],
FILEPROPERTY(a.name, 'SpaceUsed')/128 [usedspace已用空间(兆)],
size/128 - FILEPROPERTY(a.name, 'SpaceUsed')/128 [未用空间(兆)],
FILEPROPERTY(a.name, 'SpaceUsed')*100.0/size [使用率(%)]
FROM sys.database_files a cross join (select recovery_model_desc, 
log_reuse_wait,log_reuse_wait_desc,is_auto_shrink_on  from sys.databases
 where name=DB_NAME())b
WHERE type=0

--- 注:逻辑文件名,usedspace,totalspace从第4步的结果集获取

--- 收缩数据文件
declare @usedspace int ,@totalspace int
select @usedspace= 308937,@totalspace =799977
while @totalspace> @usedspace
begin
    set @totalspace= @totalspace-5 *1024 -- 每次5GB
    DBCC SHRINKFILE('SqlServer_BC_20120727194252_Data',@totalspace )
end


2. 查看当前收缩进度

---- 查看收缩进度【预估值】
SELECT DB_NAME(database_id) as dbname,
session_id, request_id, start_time,command
, percent_complete
, dateadd(mi ,estimated_completion_time/60000,getdate ()) as ETC
FROM sys.dm_exec_requests where percent_complete<>0


白俊遥博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论