您的位置:首页 > 数据库

Sql Server 事务日志(三)

2015-07-04 00:29 183 查看
SQL server的日志文件会随着数据修改的增加而变大,在处理日志文件时,我们常用的方式是将日志截断,并收缩。

Backup log databasename to disk=''

dbcc shrinkfile(databasename_log)

当然,如果磁盘空间紧张,可以将恢复模式改成‘simple’的方式使日志截断,然后再收缩日志

alter database test set recovery simple;

DBCC shrinkfile(test_log)

alter database test set recovery full;

有时,数据库日志即使备份了,也无法收缩,则可能是由于以下原因造成的

1.数据库镜像或复制的日志未读取;

2.长期未提交事务

3. 日志无备份

4.索引整理

5.批量数据写入

具体原因可从sys.databases视图的log_reuse_wait_desc看出



log_reuse_wait_desc有如下枚举值:

1. Nothing:当前有一个或多个可用的虚拟日志文件

2. CheckPoint:自上次日志截断之后,尚未出现检查点;

3. LOG_BACKUP:需要日志备份

4. ACTIVE_BACKUP_OR_RESTORE:数据备份或还原正在进行,阻止日志截断

5. ACTIVE_TRANSACTION:事务处于活动状态

6. DATABASE_MIRRING:数据库镜像暂停,或者备库日志落后于主库

以上是2008版本所使用的枚举值,SQL server 2012以后,使用了新的枚举值

0 = 无
1 = 检查点
2 = 日志备份
3 = 活动备份或还原
4 = 活动事务
5 = 数据库镜像
6 = 复制
7 = 数据库快照创建
8 = 日志扫描
9 = AlwaysOn 可用性组辅助副本正将此数据库的事务日志记录应用到一个相应的辅助数据库。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: