SQLServer 2005&08镜像导致日志文件LDF过大的问题解决
镜像是一个很好的灾难恢复手段,配置简单,切换快速。网上教如何配置的文章很多,这里介绍下如何处理LDF过大导致磁盘撑爆的情况。
首先要明确的是镜像不能清日志的, 镜像是的工作跟日志是有关联的。常用的.清空日志DUMP TRANSACTION 'db_name' WITH NO_LOG;和截断事务日志BACKUP LOG 'db_name'WITH NO_LOG;都是无效的。
1建立多个日志文件,以免单个日志文件撑爆
2根据日志的增长情况,经常备份日志 BACKUP LOG DB_Name to disk = 'X:\DB_Name_Log.log'
3 收缩日志 DBCC SHRINKFILE (Log_Name),但是这个几乎没用。不过经过备份后,日志文件内部已经截断了,及时备份可以截断活动日志,让日志文件内标内记非活动的虚文件可重复使用.
查询日志的使用情况以及在被那些应用占用
dbcc sqlperf(logspace)
go
Database Name                                                                                                                    Log Size (MB) Log Space Used (%) Status
--------------------------------------------------------------------------------------------------------------
DB_Name      77404.91      9.809758           0
select name, recovery_model_desc, log_reuse_wait,log_reuse_wait_desc from sys.databases
name     recovery_model_desc  log_reuse_wait log_reuse_wait_desc
--------------------------------------------------------------------------------------------------------------
master   SIMPLE                                                       0              NOTHING 
tempdb                                                                                                                          SIMPLE                                                       1              CHECKPOINT 
model                                                                                                                           FULL                                                                     NOTHING
msdb                                                                                                                            SIMPLE                                                       1              CHECKPOINT
DB_Name                      FULL                             5              DATABASE_MIRRORING
Backup            FULL                  4              ACTIVE_TRANSACTION
--EOF--
 原文链接hi.baidu/daitouliumang/item/9b978c30ebf4a7c0382ffacf
sqlserver 2008 设置了镜像,但日志文件增长过快,磁盘空间很快就用完了,
如果要清空日志,必须把恢复模式改成简单,但设置了镜像就无法更改,只能是完整
所以要对日志文件进行备份,每15分钟或1个小时备份一次
然后再用下面语句清理日志,这里我只收缩到4G
 
DECLARE @I INT SET @I=1
WHILE @I<3
BEGIN
  BACKUP LOG 库名 TO  DISK = N'F:\X.bak'   
  DBCC SHRINKFILE('库名_Log', 4096)    收缩文件到4G
  SET @I=@I+1
END
1日志备份会清理日志中已经完成的部分,活动的以及还没有传递到镜像日志将保留(没及时传送到镜像的就是活动的)
2、在镜像环境下每15分钟或1小时做一个日志备份,事务日志及时备份可以截断活动日志,让日志文件内标记非活动的虚文件可重复使用
3镜像持续可用的话,多保留一次备份。
truncate的数据如何恢复只会在主体数据库上产生备份文件。
直接在主库上上备日志,再收缩日志:dbcc shrinkfile(2,128)就可以了。
镜像文件会自动随主变动收缩掉。
微软从来都不建议使用自动收缩功能,这个在很多地方都有提到。
注释
DBCC SHRINKFILE 适用于当前数据库中的文件。将上下文切换到数据库,以发出引用该特定数据库中文件的 DBCC SHRINKFILE 语句。有关更改当前数据库的更多信息,请参见 US
E

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。