sql-server - 无法收缩数据库
问题描述
我已经安装了 SQL Server 2017。我创建了一个大小为 512 mb 的 test_db,并尝试使用 SQL 查询来缩小数据库:
dbcc shrinkfile(N'test_db', truncateonly)
但我没有看到数据库正在缩小。如果我使用以下 SQL 查询:
dbcc shrinkfile(N'test_db', 1)
文件缩小到 3mb。
你能解释一下行为的不同吗?既然 TRUNCATEONLY 释放文件末尾的空格,为什么当数据文件为空时它不能收缩文件。
解决方案
如果您打开文档DBCC SHRINKFILE (Transact-SQL),您会发现
目标大小
是以 MB 为单位的文件大小,以整数表示。如果未指定,则 DBCC SHRINKFILE 将大小减小到默认文件大小。默认大小是创建文件时指定的大小。
因此,如果您想将大小减小到低于创建文件时指定的大小,您应该指定target_size
even for truncateonly
:
dbcc shrinkfile(1, 1, truncateonly)
推荐阅读
- excel - 如何使用 vba 从 http 请求中获取授权
- regex - 正则表达式查找和替换键与值相同的位置 {foo:foo} 到 {foo}
- java - 覆盖输出主目录中的资源文件
- raku - 以下程序中的分段错误
- python-3.x - 有人可以解释一下python中的广播分配是什么吗?
- angular - MatSnackBar panelClass 无法从服务中工作
- python - Jupyter 自动完成功能仅适用于导入的单元格
- android - API 应该以 JSON 格式返回数据,但不显示在布局中
- bash - 如何在包含 JSON 的文件中使用 bash 脚本返回字段的最后一次出现
- c# - UITextField 提示时键盘不显示