我们有一个在MSDE(SQL 2000,Service Pack 4)下运行的数据库,它保留了大量的多余空间。对每个表使用sp_spaceused,总保留大小为2102560 KB,数据大小为364456 KB,未使用大小为1690760 KB(即保留近4倍的已用空间)。最糟糕的罪魁祸首是经常写入但从未从中删除的表(事务日志记录)。一般来说,删除很少见,而且在大小和记录数量方面非常小。
磁盘上的数据库文件限制为2 GB,这会导致备份等问题。
我尝试过DBCC SHRINKDATABASE,DBCC SHRINKFILE和DBCC REINDEX,对磁盘上使用的文件大小没有影响
2个问题 - 如何缩小数据库文件大小以及如何阻止SQL Server保留多余空间?
由于
保
答案 0 :(得分:4)
USE< DBNAME>
GO
BACKUP LOG< DBNAME> WITH TRUNCATE_ONLY
GO
DBCC SHRINKDATABASE(< DatabaseName>)
GO
DBCC SHRINKFILE(< logfile>,5)
GO
DBCC SHRINKFILE(< datafile>,5)
GO
如果您不知道文件路径exec sp_helpfile
答案 1 :(得分:0)
你可以做的是采取完整的数据库备份,重新索引数据库,增量收缩,然后再重新索引。这样你就可以得到当前大小的数据库。
你也应该将你的记录表移动到另一个表。
答案 2 :(得分:0)
为最恶劣的罪犯创建单独的文件,并将它们放在不同的文件组中。将表移动到另一个文件本身将压缩它们。也会使shrinkfile更有效。如果需要,您可以为每个表创建多个文件。
答案 3 :(得分:0)
感谢所有建议。最后,我不得不创建一个新的空数据库,从海量数据库中复制数据,然后重命名数据库。
我会留意保留的尺寸。希望导致这种情况的数据库设置有问题。我们使用相同软件/ MSDE的其他客户都没有遇到此问题。