Sql 缩小数据库

Sql 缩小数据库,sql,Sql,我的任务是收缩SQLServer2005数据库。这是一个实时数据库,运行速度约为35gb 如何缩小数据库 当数据库处于活动状态时,是否可以执行此操作 当数据库bw缩小时,它会有多大 提前谢谢 打开SQLServerManagementStudio。右键单击数据库->任务->收缩->数据库 对。该数据库仍处于活动状态 很难说。这取决于35Gb文件中有多少可用空间。如果数据库实际上使用了全部35Gb的存储空间(而不是保留可用空间),那么您的数据库根本不会收缩 首先,如果可以避免缩小生产数据库,那么就

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

  • 如何缩小数据库
  • 当数据库处于活动状态时,是否可以执行此操作
  • 当数据库bw缩小时,它会有多大 提前谢谢

  • 打开SQLServerManagementStudio。右键单击数据库->任务->收缩->数据库

  • 对。该数据库仍处于活动状态

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


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

    您的数据库数据/日志文件已增长到其当前大小是有原因的,除非您已从数据库中清除数据,否则很可能(如果不是肯定的话)您的数据库将再次增长到当前大小(收缩后练习)

    考虑到这一点,您应该找出数据库增长的原因

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

    然后确定哪些数据文件或日志文件包含最多的可用空间,并针对这些文件分别进行收缩。例如,如果只有日志文件具有大量可用空间,则执行数据库范围的收缩练习没有意义

    为此,请参阅该命令的文档

    有用信息:

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

    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;