华为云云数据库rdsRDS for SQL Server收缩数据库_云淘科技

操作场景

云数据库 RDS for SQL Server提供使用存储过程收缩指定数据库的数据文件和日志文件的大小,以释放磁盘部分空间。

前提条件

成功连接RDS for SQL Server实例。通过SQL Server客户端连接目标实例,具体操作请参见通过公网连接SQL Server实例。

功能限制

数据库文件大小超过50MB,才可以使用该功能。如果要收缩的数据库文件大小不超过50MB,对该文件的收缩将不起作用。并且会显示相关提示。如下图所示:

基于行版本控制的隔离级别下运行的事务可能会阻止收缩操作。若要解决此问题,请执行下列操作之一:

终止阻止收缩操作的事务。
终止收缩操作。 如果收缩操作终止,所有已完成的工作都会保留。
不执行任何操作,并允许收缩操作等到阻塞事务完成。

最佳实践

在计划收缩数据库文件时,请考虑以下信息:

在执行会产生大量未用空间的操作(如重启)后,执行收缩操作最有效。
大多数数据库都需要一些可用空间,以供常规日常操作使用。如果反复收缩数据库,并且它的大小再次增长,那么常规操作可能需要收缩空间。在这种情况下,反复收缩数据库是一种无意义的操作。
收缩操作不保留数据库中索引的碎片状态,通常还会在一定程度上增加碎片。此类碎片是不要反复收缩数据库的另一个原因。

操作步骤

执行以下命令,进行数据库收缩。

EXEC [master].[dbo].[rds_shrink_database] @DBName=’myDbName‘;

表1 参数说明

参数

说明

myDbName

收缩指定数据库的数据库名称。如果未指定,默认收缩所有数据库。

执行结果集如下图所示,每个结果对应指定数据库(或所有数据库)的每个文件的相关信息。

图1 结果集

表2 结果集参数说明

列名称

说明

DbId

当前收缩文件的数据库标识号。

FileId

当前收缩文件的文件标识号。

CurrentSize

文件当前占用的8KB页数。

MinimumSize

文件最低可以占用的8KB页数。此数字对应于文件的大小下限或最初创建大小。

UsedPages

文件当前使用的8KB页数。

EstimatedPages

数据库引擎估计文件能够收缩到的8KB页数。

执行成功后,系统会显示执行进度,并最终进行如下提示:

HW_RDS_Process_Successful: Shrink Database Done.

故障排除

如果在执行数据库收缩后文件大小未改变,请执行以下SQL,验证文件是否有足够的可用空间:

SELECT name, size/128.0 – CAST(FILEPROPERTY(name, ‘SpaceUsed’) AS int)/128.0 AS AvailableSpaceInMB FROM sys.database_files;

示例

执行以下命令,对dbtest2数据库进行收缩。

EXEC [master].[dbo].[rds_shrink_database] @DBName = ‘dbtest2’;

执行结果如下图所示:

图2 执行结果

执行以下命令,对所有数据库进行收缩。

EXEC [master].[dbo].[rds_shrink_database];

父主题: RDS for SQL Server

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家