我正在使用:
SQL Server 2016标准版
Windows Server 2012 R2(标准版)
数据库大小: 1.4TB
主数据文件中使用的空间: 587GB
主数据文件中未使用的空间: 852GB
恢复模式:简单
我正在尝试使用以下命令将数据文件缩小到687GB:
USE [TestDB]
GO
DBCC SHRINKFILE (N'TestDB' , 687017)
GO
此数据库没有阻止,也没有其他活动发生。
自上次19小时以来,上述缩小操作一直在进行,但仍未完成。 所以任何人都可以告诉我此时需要做些什么。
此缩小操作需要多长时间?
答案 0 :(得分:0)
当缩小数据文件时,需要做什么?此时需要做什么?
您需要做以下事情:
- EMPTYFILE : 将指定文件中的所有数据迁移到同一文件组中的其他文件。换句话说,EmptyFile会将数据从指定文件迁移到同一文件组中的其他文件。 Emptyfile向您保证不会向文件中添加新数据。可以使用ALTER DATABASE语句删除该文件。
示例:清空文件
以下示例演示了清空文件以便可以从数据库中删除的过程。出于此示例的目的,首先创建数据文件,并假定该文件包含数据。
USE AdventureWorks2012;
GO
-- Create a data file and assume it contains data.
ALTER DATABASE AdventureWorks2012
ADD FILE (
NAME = Test1data,
FILENAME = 'C:\t1data.ndf',
SIZE = 5MB
);
GO
-- Empty the data file.
DBCC SHRINKFILE (Test1data, EMPTYFILE);
GO
-- Remove the data file from the database.
ALTER DATABASE AdventureWorks2012
REMOVE FILE Test1data;
GO
直接来自BOL。
这次收缩操作应该花多少时间?
DBCC SHRINKFILE
是单线程操作,单线程操作不利用多个CPU,并且对可用RAM的数量没有影响。
然而;在运行DBCC SHRINKFILE操作之前重建索引,缩小文件操作所需的时间相对较少。
重建索引操作利用了多个CPU。
您还可以使用以下命令检查DBCC收缩文件的完成进度:
SELECT percent_complete, estimated_completion_time
FROM sys.dm_exec_requests
WHERE session_id = <spid running the shrink>;