---先备份数据库(含日志文件)
use myhis
go
backup database myhis to disk='d:\myhis_rzbak'
go
---设为简单恢复模式
use [master]
go
alter database myhis set recovery simple with no_wait
go
alter database myhis set recovery simple
go
---收缩数据库日志文件为8M
use myhis
go
dbcc shrinkfile(myhis_log,8)
go
---重新设为完整恢复模式
use master
go
alter database myhis set recovery full with no_wait
go
alter database myhis set recovery full
go
SQL Server 2008 事务日志物理文件尺寸无法减小的解决办法(含日志收缩(shrink)技巧)
作者:宋林
发现有的数据库日志文件太大,无论如何收缩执行几次SQL语句都不行。事务日志达30+G,而且使用常规的截断、收缩方法均无法减小日志物理文件的尺寸,经过一番寻找,终于找到了解决方法。
查看日志信息
在查询分析器中执行如下代码来查看日志信息:
DBCC LOGINFO('数据库名称')
我们看到status=0的日志,代表已经备份到磁盘的日志文件;而status=2的日志还没有备份。当我们收缩日志文件时,收缩掉的空间其实就是status=0的空间,如果日志物理文件无法减小,这里一定能看到非常多status=2的记录。接下来分析为什么会有这么多status=2的记录
查看日志截断延迟原因
活跃(active)的日志无法通过收缩来截断,有各种原因会使日志截断延迟,具体表现就是事务日志的物理文件无法通过截断、收缩来减小,通过下面的代码可以看到实例上每个数据库的日志截断延迟原因:
1 USE [master]
2 SELECT [name] ,[database_id] ,[log_reuse_wait] ,[log_reuse_wait_desc] FROM [sys].[databases]
各种原因及解释如下:
log_reuse_wait_desc 值 |
说明 |
NOTHING |
当前有一个或多个可重复使用的虚拟日志文件。 |
CHECKPOINT |
自上次日志截断之后,尚未出现检查点,或者日志头部尚未跨一个虚拟日志文件移动(所有恢复模式)。 这是日志截断延迟的常见原因。有关详细信息,请参阅检查点和日志的活动部分。 |
LOG_BACKUP |
需要日志备份,以将日志的头部前移(仅适用于完整恢复模式或大容量日志恢复模式)。 注意:日志备份不会妨碍截断。完成日志备份后,日志的头部将前移,一些日志空间可能变为可重复使用。 |
ACTIVE_BACKUP_OR_RESTORE |
数据备份或还原正在进行(所有恢复模式)。 数据备份与活动事务的运行方式相同。数据备份在运行时,将阻止截断。有关详细信息,请参阅本主题后面的“数据备份操作与还原操作”部分。 |
ACTIVE_TRANSACTION |
事务处于活动状态(所有恢复模式)。
|
DATABASE_MIRRORING |
数据库镜像暂停,或者在高性能模式下,镜像数据库明显滞后于主体数据库(仅限于完整恢复模式)。 有关详细信息,请参阅本主题后面的“数据库镜像与事务日志”部分。 |
REPLICATION |
在事务复制过程中,与发布相关的事务仍未传递到分发数据库(仅限于完整恢复模式)。 有关详细信息,请参阅本主题后面的“事务复制与事务日志”部分。 |
DATABASE_SNAPSHOT_CREATION |
正在创建数据库快照(所有恢复模式)。 这是日志截断延迟的常见原因,通常也是主要原因。 |
LOG_SCAN |
正在进行日志扫描(所有恢复模式)。 这是日志截断延迟的常见原因,通常也是主要原因。 |
针对延迟日志截断原因的部分解决方案
-
LOG_BACKUP
备份日志后再执行收缩即可backup log [database] with nolog -
REPLICATION
这是我遇到的情况,但我根本没有启用过REPLICATION,据查,这好像是SQLSERVER2008的一个BUG,解决方法是给标有“REPLICATION”的数据库任意一个表创建数据库事务复制(TRANSACTION REPLICATION),然后再删除,执行数据库与日志备份后,就可以收缩了。
· 收缩日志小技巧
-
一般收缩日志的代码中都要求指定日志的文件名称,下面的代码则可以自动获取日志文件名称:
-
1 USE [数据库名称]
2 DECLARE@LogFileLogicalName sysname
3 SELECT@LogFileLogicalName=Name FROM sys.database_files WHERE Type=1
4 PRINT@LogFileLogicalName
5 DBCC SHRINKFILE (@LogFileLogicalName, 1);
然后再收缩数据库
DBCC SHRINKDATABASE(库名)
相关推荐
SQL-2008r2清理数据库日志文件. SQL-2008r2清理数据库日志文件. SQL-2008r2清理数据库日志文件. SQL-2008r2清理数据库日志文件. SQL-2008r2清理数据库日志文件. SQL-2008r2清理数据库日志文件. SQL-2008r2清理数据库...
经验汇总SQL2008R2数据库日志太大收缩方法初学者都可以上手超详细解读!
最近服务器执行收缩日志文件大小的job老是报错,小编抽时间把此问题的解决方案整理了一下,特此分享到脚本之家平台,供大家学习
sql server 2008日志文件收缩及清空删除,有别于2005操作
1.SQL SERVER Always On收缩日志文件详细操作; 2.针对收缩日志出现“cannot be shrunk until all secondaries have moved past the point where the log was added ”问题的分析及解决方法;
SQL2008 R2 绿色版 免安装SQL2008 R2 绿色版 免安装
sql2008R2百度网盘下载地址 直接下载
SQL2008R2数据库质疑 修复工具.rar
Microsoft SQL Server 2008 R2 功能包是是为 SQL Server 2008 R2 SP3 附加值的独立包的x64+x86集合,简体中文版本。 Microsoft® SQL Server® 2008 R2 SP3 功能包是为 Microsoft® SQL Server® 2008 R2 提供附加值...
用友审计软件所使用的SQL2008R2精简安装版本,安装实例名为AudSQL2008,sa密码为sql2008
用于解决sqlserver2008R2数据登录加载msdb报错替换原有msdb文件。
jdk1.5使用---》sqljdbc.jar jdk1.6使用--》sqljdbc4.jar
修改sql2008r2文件名为:sqlserver2008r2.iso ,并把ISO文件与压缩包文件放在同目录 默认安装路径在D盘,如果需要请修改ConfigurationFile.ini配置文件 请在微软官网或者MSDN下载 ISO镜像文件 文件名:...
SQL Server 2008R2 SP1 KB2528583 补丁 数据库 windows 数据库
SQL2008R2日志清理工具,很好用的MSSQL日志收缩工具,
绿色精简版的sql server 2008r2及sql管理工具,可指定数据库实例名及端口,不过在已经安装完整版的sql server的系统中容易出现问题。建议只在未安装sql server的系统中做开发测试使用,不建议正式使用。
sql server2008R2简装版本 1、打开安装包,点击setup.exe 2、选择左侧列表中的“安装 3、点击“全新安装或向现有安装添加功能”。 4、检测完成点击确定。 5、选择版本和密钥,然后下一步。(因为有版权要求,在这不...
解决sqlserver2008卸载不干净的问题,一步一步从windows操作系统中卸载掉sqlserver 2008 r2;欢迎使用,有使用说明!谢谢支持