缩小数据库

and*_*ndy 3 sql

我的任务是缩小SQL Server 2005数据库.这是一个实时数据库,运行速度约为35gb.

  1. 如何收缩数据库?
  2. 可以在数据库生效时完成吗?
  3. 这个数据库收缩后会有多大?

提前致谢.

Joh*_*som 7

首先,如果您可以避免缩小生产数据库,那么就这样做.从长远来看,购买额外的磁盘存储几乎总是更实用的解决方案.

有一个原因是您的数据库数据/日志文件已经增长到当前大小,除非您从数据库中清除了数据,否则很可能(如果不是很确定)您的数据库将再次增长到当前大小,发布缩小运动量.

考虑到这一点,您应该确定数据库增长的原因.

最后,如果您绝对必须缩小数据库,请选择明智的时间,即在您的实时系统通常工作负载较低时执行此维护.收缩数据文件会导致大量磁盘I/O,尤其是在要重新组织数据页时.

然后确定哪些数据文件或日志文件包含最多可用空间,并将这些文件或目标文件单独收缩.如果只有具有大量可用空间的日志文件,则执行数据库范围的缩减练习是没有意义的.

为此,请参阅DBCC SHRINKFILE命令的文档.

有用的信息:

确定整个数据库中的可用空间量:

EXEC sp_spaceused
Run Code Online (Sandbox Code Playgroud)

确定可用日志空间量:

DBCC SQLPERF('logspace')
Run Code Online (Sandbox Code Playgroud)

确定每个数据/日志文件的可用空间量:

SELECT 
    name AS 'File Name' , 
    physical_name AS 'Physical Name', 
    size/128 AS 'Total Size in MB',
    size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS 'Available Space In MB',
    *
FROM sys.database_files;
Run Code Online (Sandbox Code Playgroud)