【问题标题】:Shrinking a SQL Server database not working缩小 SQL Server 数据库不起作用
【发布时间】:2013-10-18 14:43:17
【问题描述】:

我不是 DBA 但我需要收缩一个 DB,我尝试使用 SSMS 接口进行收缩,但没有成功。

统计如下:

  • 大小:235,013.00 MB
  • 可用空间:65,587.59 MB

我也尝试了DBCC SHRINKDATABASE ... TRUNCATEONLY 命令,也没有改变任何东西。

如何在不丢失数据的情况下缩小此数据库(将未使用的空间释放给操作系统)?

【问题讨论】:

  • 您确定数据库不会再次增长到相同的大小吗?收缩没有性能优势。

标签: sql-server sql-server-2008-r2


【解决方案1】:

顺便也检查一下初始大小。如果您的初始大小为 235,013 MB,那么您需要先减小初始大小。

其次,收缩是您可以对数据文件做的最糟糕的事情之一。如果你收缩一个 tlog 文件没关系,因为 tlogs 不使用数据页结构。如果你收缩你的数据库数据文件,你可以把一个完美去碎片化的数据库变成一个完美碎片化的数据库。它会使性能变得面目全非。为什么要顺便缩小? db 是 200 GB 并且有 60 个免费的东西.... 大约 30% 是免费的。你不认为在一段时间内,空间可以被利用吗?

如果您仍然需要缩小数据库,您可以创建一个文件组并将数据移动到该文件组并删除当前文件组,或者如果是主文件组,您可以将大小减少到最低限度。

【讨论】:

    【解决方案2】:
    1. 在 SSMS 中尝试使用右键单击 DB->Tasks->Shrink->Files 查看数据和事务日志文件使用了多少空间。
    2. 很可能您的数据库的恢复模式设置为 FULL,在这种情况下您将无法缩小事务日志,除非您执行完整的数据库备份。如果不担心,只需将恢复模式更改为简单,然后再次尝试缩小事务日志和数据文件。

    【讨论】:

      【解决方案3】:

      没有足够的评论点,但要小心缩小。由于索引的碎片化,它可能会影响性能

      这里详细解释: http://www.theboreddba.com/Categories/indexes/SHRINK-a-data-file-Just-say-NO.aspx

      山姆

      【讨论】:

        【解决方案4】:

        点击这个。试图通过 SSMS 进行收缩,无论选择何种收缩选项,对话框都会立即关闭(没有错误或任何表明它无法收缩数据库或文件的迹象)。

        我最终创建了另一个逻辑 ROWS 数据文件,通过将主数据文件清空/迁移到新文件,然后再次收缩/清空回原始数据文件来收缩主数据文件。

        这是一个开发数据库,​​所以我不太担心性能影响(只是想释放磁盘空间)。

        【讨论】:

          【解决方案5】:

          我通过以下步骤解决了这个问题:

          1. 备份数据库
          2. 数据库设置为单用户模式
          3. 获取数据库离线
          4. 获取数据库在线
          5. 减小数据库和事务日志文件的初始文件大小
          6. 收缩数据库/文件
          7. 数据库设置为多用户模式

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-10-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多