SQL Server 2008 R2日志文件填满了驱动器

时间:2013-11-01 16:45:59

标签: sql-server-2008-r2 shrink database-mirroring truncate-log

因此,当我们升级到SQL Server 2008 R2时,我们中的一些开发人员开始接管我们的一些SQL Server机箱。过去,我们使用

手动减少了日志文件的大小
    USE [databaseName] 
    GO 
    DBCC SHRINKFILE('databaseName_log', 1) 
    BACKUP LOG databaseName WITH TRUNCATE_ONLY 
    DBCC SHRINKFILE('databaseName_log', 1)

我相信你们都知道截断只是被弃用了。

所以到目前为止我找到的解决方案是将恢复设置为简单,然后缩小,然后将其设置回来......但是,在我们到达那里之前,这个已经远离了我们。

现在我们已经有了一个完整的磁盘,并且正在进行的镜像停留在半完成的,不断出错的状态,我们无法更改任何数据库。我们甚至无法在对象资源管理器中打开其中一半。

因此,通过阅读它,未来发生这种情况的方法是建立维护计划。 (哎呀。:/)虽然我们可以创建一个,但我们无法在没有磁盘空间的情况下启动它,并且SQL Server陷入其错误状态(事件查看器显示它记录错误大约每秒5次......这一直在进行从昨晚开始。)

任何人都有这方面的经验吗?

1 个答案:

答案 0 :(得分:1)

因此,您已经达到了SQL Server无法启动的程度。通常在这一点上,有必要分离数据库并将其移动到自由空间,但如果你不能这样做,你将不得不开始破坏和重建。

如果你有一个镜像和一个最新的备份,你将需要在磁盘上爆炸一个不幸的数据库,以使实例重新联机。一旦你有足够的空间,然后采取紧急措施,打破任何必要的镜像,使日志文件恢复到可管理的大小,并使它们缩小。

以上是非常紧急的恢复,您必须三重检查您是否有备份,事务日志备份和日志,以便您不会丢失任何数据。

长期管理镜像,确保镜像保持同步,正在进行完整备份和事务日志备份,并可能使用最大文件大小重新配置实例上的每个数据库,其中所有日志的总和文件不超过可用的卷空间。

另外,我会仔细检查您的系统数据库与数据库数据和日志文件不在同一个卷上。这应该有助于在某个地方拥有完整卷时能够启动实例。

请记住,如果您不得不定期缩小日志文件,那么已经存在需要解决的问题。

更新:如果所有内容都在C:驱动器上,那么请考虑减小页面文件的大小以获得足够的空间来联机实例。不确定你的设置是什么。