在Server 2008中是否有配置维护计划的最佳实践?目前,我正在删除大于40个小时的数据库备份和事务日志,然后备份它们。我看到的问题是,事务日志仍然非常大。是否应该包含“收缩数据库计划”任务?
发布于 2012-02-08 18:13:52
如果您的日志文件越来越大,那么您至少做了一件错误的事情:
BEGIN TRANSACTION,锁定了他们的工作站,然后去度假。在这个问题中可以看到更多有关这方面的细节:
为了暂时缩小日志,如果您处于完全恢复模型,并且希望保持这种状态,您应该执行以下步骤并重新启动日志链以确保安全:
USE [master];
GO
ALTER DATABASE db_name SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- if you are already in simple, remove this line:
ALTER DATABASE db_name SET RECOVERY SIMPLE;
GO
CHECKPOINT;
GO
-- if you're already in simple, or want to stay that way, remove this line:
ALTER DATABASE db_name SET RECOVERY FULL;
GO
BACKUP DATABASE db_name TO DISK = 'path' WITH INIT, COMPRESSION;
GO
USE db_name;
GO
DBCC SHRINKFILE(N'db_name_log', 30); -- pick some size that makes sense
GO
USE [master];
GO
-- if recovery is full, re-init log chain, otherwise remove this line:
BACKUP LOG db_name TO DISK = 'path' WITH INIT, COMPRESSION;
GO
ALTER DATABASE db_name SET MULTI_USER;
GO如果您已经处于简单状态(非常不可能),或者如果您想要切换到简单,那么我评论了应该删除的行。
发布于 2012-02-08 16:40:25
您肯定不希望任何预定的文件收缩,否则您将以可怕的磁盘碎片结束。在逐个案例的基础上手动执行,并且只有在你确信过度增长是偶然的情况下,例如,由于日志备份无法运行,或者一些预计不会定期发生的大规模ETL。
经常备份(并保持足够长的时间)以满足业务/应用程序的保留要求。还要考虑,您应该经常进行日志备份,以便将事务日志保持在可接受的大小内。在我的例子中,我在工作日每小时运行日志备份,但是有足够的空间根据您的需要调整日程。更频繁地运行它们以减少日志膨胀,减少恢复日志序列的痛苦。
发布于 2012-02-09 14:42:35
您的事务日志仍然非常大,可能是由于活动的数量。如果您希望能够恢复到时间点(完全恢复模式)并控制事务日志,则更频繁的事务日志备份就是答案。
我们有一个300 gb的OLTP数据库,分配了30 gb的日志空间。我有一项工作,每30分钟进行一次日志备份,这样日志文件就可以很好地保持在分配的空间(甚至在每月索引重建期间)。但是,在重新构建期间,日志备份大小将很大)。
收缩根本不是一个好的做法。
https://dba.stackexchange.com/questions/12474
复制相似问题