缩小数据库

时间:2010-06-16 12:18:10

标签: sql

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

  1. 如何缩小数据库?
  2. 可以在数据库生效时完成吗?
  3. 数据库缩小时会有多大?
  4. 提前致谢。

2 个答案:

答案 0 :(得分:7)

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

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

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

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

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

要执行此操作,请参阅DBCC SHRINKFILE命令的文档。

实用信息:

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

EXEC sp_spaceused

确定可用日志空间量:

DBCC SQLPERF('logspace')

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

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;

答案 1 :(得分:4)

  1. 打开SQL Server Management Studio。右键单击您的数据库 - >任务 - >收缩 - >数据库

  2. 是。数据库仍然有效。

  3. 很难说。这取决于35Gb文件中有多少可用空间。如果数据库实际上使用所有35Gb进行存储(而不是保留可用空间),那么您的数据库根本不会缩小。