我们在周末设置数据库镜像,但是忘记重新启用备份事务日志的作业。今天早上我来的时候,事务日志已经膨胀到58GB,并占用了大部分驱动器空间。
我将事务日志手动备份到磁盘以使数据库再次运行,但是运行DBCC SHRINKFILE似乎并没有减小事务日志文件的物理大小。
DBCC SHRINKFILE (N'MyDatabaseName_Log', 1000)
如果我使用以下命令查看日志使用情况
DBCC SQLPERF(LOGSPACE)
我可以看到仅使用了当前日志的22%
数据库名称日志大小(MB)使用的日志空间(%)状态 MyDatabaseName 55440.87 22.38189 0
如果我log_reuse_wait_desc
在sys.databses中签出,则看到的唯一记录是DATABASE_MIRRORING
,因此我猜测镜像在为什么日志文件的物理大小不会缩小的过程中发挥了作用?
SELECT log_reuse_wait_desc
FROM sys.databases
WHERE name = N'MyDatabaseName';
我还注意到我的主要数据库镜像状态为Suspended,并且尝试立即恢复它失败,并出现以下错误:
数据库'MyDatabaseName'的远程镜像伙伴遇到错误5149,状态1,严重性25。数据库镜像已被挂起。解决远程服务器上的错误并恢复镜像,或者删除镜像并重新建立镜像服务器实例。
镜像服务器上的错误日志也包含此错误,但是还包含有关日志文件驱动器已满的错误
尝试扩展物理文件时,“修改文件”遇到操作系统错误112(磁盘上没有足够的空间。)。
和
F:\ Databaselogs \ MyDatabaseName_1.ldf:遇到操作系统错误112(磁盘上没有足够的空间。)。
主体服务器在日志文件驱动器上有60GB(此处托管了其他数据库),而镜像服务器只有45GB。
备份日志文件使数据库再次可用,但是我还想减小磁盘上物理日志文件的大小,并恢复镜像。
如何在不损害镜像或备份链的情况下缩小物理事务日志文件的大小?
我正在运行SQL Server 2005