Sql server 如何减小SQL Server 2014数据库的大小

Sql server 如何减小SQL Server 2014数据库的大小,sql-server,sql-server-2014,Sql Server,Sql Server 2014,我有一个SQL Server 2014数据库转储,大约60GB大。在SQL Server Management Studio中,原始数据库显示“行数据”的初始大小约为99000MB,“日志”的初始大小约为25600MB 现在数据库中有一个视图表,大约10GB大,我可以刷新/清理 删除这些表中的数据后,减少数据库物理大小的最佳方法是什么?我发现很多帖子都是关于SHRINKDATABASE的,但有些文章不会推荐它,因为它的碎片和性能都很差 提前感谢。以下是我用来减少空间使用、释放数据库空间和实际驱动

我有一个SQL Server 2014数据库转储,大约60GB大。在SQL Server Management Studio中,原始数据库显示“行数据”的初始大小约为99000MB,“日志”的初始大小约为25600MB

现在数据库中有一个视图表,大约10GB大,我可以刷新/清理

删除这些表中的数据后,减少数据库物理大小的最佳方法是什么?我发现很多帖子都是关于SHRINKDATABASE的,但有些文章不会推荐它,因为它的碎片和性能都很差


提前感谢。

以下是我用来减少空间使用、释放数据库空间和实际驱动器空间的代码。希望这有帮助

USE YourDataBase;
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE YourDataBase
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (YourDataBase_log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE YourDataBase
SET RECOVERY FULL;
GO

我建议您使用DBCC SHRINKDATABASE,而不是使用DBCC SHRINKDATABASE ,显然,表应该存储在不同的文件组中。 然后可以减少数据库的物理大小,优化碎片


希望这能帮助您使用下面的查询缩小您的
数据库

ALTER DATABASE [DBNAME] SET RECOVERY SIMPLE WITH NO_WAIT
DBCC SHRINKFILE(PTechJew_LOG, 1)
ALTER DATABASE [DBNAME] SET RECOVERY FULL WITH NO_WAIT
运行此查询后,请检查日志文件。
它起作用了。

您想缩小它的具体原因是什么?因为即使你缩小它,它也会再次开始变大。此外,那些不建议这样做的建议也恰到好处。如果缩小数据库,可能会影响SQL性能。是的,我们需要使其尽可能小,因为我们需要共享它,表中可删除的数据总共约为40GB。因此有很大的潜力。人们不建议收缩的原因是,它不是处理生产环境中运行的数据库的“正确”策略。如果您需要部署版本测试或开发,或者与其他开发人员共享它,或者类似的东西,我看不出您有什么理由害怕收缩。所以,根据你实际想要达到的目标,收缩可能是可行的。除非你确定自己在做什么,否则不要在生产版本上这样做。(这些年来,我缩小了很多数据库——这不是我的首选,但它是一个现成的工具)将这些表放在单独的文件组甚至单独的数据库中。如果需要,只收缩DB/文件。日志的情况也不清楚:是否处于完全恢复模式?您正在进行数据库和/或日志备份吗?原始数据库处于完全恢复模式,因此我猜我得到的数据库转储是相同的。由于原始数据库的总容量约为130GB,而转储容量仅为60GB,有没有办法减小初始大小?当我想将60GB数据库导入100GB文件系统时,出现了一个错误,即系统需要130GB的可用空间才能导入转储文件。ShrinkDatabase:收缩所有文件ShrinkFile:例如,仅一个文件,您可能有日志备份问题,并且它变得失控,因此您运行DBCC ShrinkFile。你几乎从不使用ShrinkDatabase。一些有用的链接供你阅读。唯一的一件事是:如果这个场景对他的DB来说是可以的,那么就没有必要切换回FULL。这毫无意义。