4

我们有一个在 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 保留多余空间?

谢谢

保罗

4

4 回答 4

4

使用 < 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

于 2009-09-02T15:50:09.430 回答
0

感谢所有的建议。最后,我不得不创建一个新的空数据库,从海量数据库中复制数据,然后重命名数据库。

我会留意保留的尺寸。希望导致此问题的数据库设置有问题。我们使用相同软件/MSDE 的其他客户都没有遇到此问题。

于 2009-09-03T08:00:48.727 回答
0

为最坏的罪魁祸首创建单独的文件并将它们放在单独的文件组中。将表移动到另一个文件本身将压缩它们。也将使收缩文件更有效。如果需要,您可以为每个表创建多个文件。

于 2009-09-02T16:08:36.287 回答
0

您可以做的是进行完整的数据库备份,重新索引数据库,逐步缩小它,然后再次重新索引它。这样,您将拥有当前大小的数据库。

您还应该将日志记录表移动到另一个表。

于 2009-09-02T15:37:12.450 回答