1

因此,当我们升级到 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 个错误......这一直在进行从昨晚开始。)

有人对此有经验吗?

4

1 回答 1

1

所以你在这里遇到了一场糟糕的风暴,因为你已经到了 SQL Server 无法启动的地步。通常此时有必要分离数据库并将其移动到可用空间,但如果您无法做到这一点,您将不得不开始破坏并重建。

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

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

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

此外,我会仔细检查您的系统数据库是否与您的数据库数据和日志文件不在同一卷上。当您在某处拥有完整卷时,这应该有助于启动实例。

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

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

于 2013-11-01T17:04:02.767 回答