华为云云数据库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‘;
参数 |
说明 |
---|---|
myDbName |
收缩指定数据库的数据库名称。如果未指定,默认收缩所有数据库。 |
执行结果集如下图所示,每个结果对应指定数据库(或所有数据库)的每个文件的相关信息。
图1 结果集
列名称 |
说明 |
---|---|
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)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家