9

我不是 DBA,但我需要缩小数据库,我尝试使用 SSMS 接口进行缩小,但没有成功。

统计数据如下:

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

我也试过这个DBCC SHRINKDATABASE ... TRUNCATEONLY命令,也没有改变任何东西。

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

4

5 回答 5

8

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

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

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

于 2013-10-21T20:53:46.277 回答
1
  1. 在 SSMS 中尝试使用右键单击 DB->Tasks->Shrink->Files 来查看数据和事务日志文件使用了多少空间。
  2. 您的数据库的恢复模式很可能设置为 FULL,在这种情况下,除非您执行完整的数据库备份,否则您将无法缩小事务日志。如果不担心,只需将恢复模式更改为简单并尝试再次缩小事务日志和数据文件。
于 2013-10-18T15:24:58.877 回答
0

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

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

山姆

于 2013-10-20T22:12:50.020 回答
0

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

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

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

于 2016-09-23T15:56:14.917 回答
0

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

  1. 制作数据库备份
  2. 数据库设置为单用户模式
  3. 使数据库脱机
  4. 在线获取数据库
  5. 降低数据库和事务日志文件的初始文件大小
  6. 收缩数据库/文件
  7. 数据库设置为多用户模式
于 2019-10-10T12:11:39.610 回答