DBCC ShrinkDatabase()
DBCC ShrinkFile()
我是否需要同时运行两个DBCC命令才能收缩数据库?
以上两者之间有什么区别? br />
#1 楼
只需...DBCC ShrinkDatabase()
:缩小所有文件DBCC ShrinkFile()
:仅一个文件例如,您可能有日志备份问题,并且已经失去控制,因此您运行
DBCC ShrinkFile()
。您几乎从不使用
ShrinkDatabase
。 ,除非有明确的理由,否则我都不收缩任何一个文件(mdf,ldf)。文件是它们的大小,因为它们是必需的。任何建议这样做的博客都可能不了解SQL Server的工作方式。
#2 楼
默认数据库具有两个文件MyDb.MDF和MyDb.LDF
MDF文件是主分区所在的数据文件。根据您的需要,您可以将一个数据库分为多个文件。这样做是为了使数据(单个或多个表)可以跨越通常放在单独的硬盘驱动器上的多个文件,以实现更高的性能。
如果收缩数据库,则与该数据库关联的所有文件将收缩。
如果收缩文件,则仅收缩所选文件。
您只需要使用“收缩数据库”命令。但这通常不是一个好习惯,也不推荐这样做。
如果您告诉我们您遇到的问题是什么,我们可以为您提供更多有关解决方法的信息它。
评论
哦..issue是我们的生产服务器磁盘空间不足。添加更多磁盘是理想选择,但我想知道我们还能做什么?
–江戈
10年8月23日在18:42
#3 楼
最有可能我们只使用dbcc收缩文件。您可以收缩的百分比。无论我们收缩什么,它都可以作为磁盘上的可用空间。
例如:
使用'databasename'
dbccrinkfile(fileid,100)
这里100是100 MB
fileid可以从
sp_helpdb'databasename'
获得
评论
谢啦。你是对的。我刚刚读过Brent Ozar博客。
–江戈
10年8月23日在19:03
当它做相同的事情时,为什么会有不同的论点呢?
– Stefan Steinegger
13年11月6日在9:25
Paul Randal博客的链接已断开。
–培根片
20年1月28日在22:46
提交了一个编辑请求,以将链接更改为页面的存档版本,因为我最近进行了类似的讨论,发现该参考资料非常有用
–费利克斯·拜耳(Felix Bayer)
20-2-5在8:09
当然非常有趣。不过我有一个有效的方案,我们会定期从生产中刷新测试数据。我们在测试环境中受到空间的限制,因此我不得不清空很多不需要的表,这些表可以释放大约原始大小的70%。我必须使用收缩文件,以减少数据库的大小。现在,我想知道对性能的影响。嗯...
–哥斯达黎加
20-2-20在20:52