由于SQL2008对文件和日志管理进行了优化,所以在SQL2000和2005中可以运行的如下命令,但在SQL2008中不支持no_log清空日志。
1.清空日志
代码如下 | 复制代码 |
DUMP TRANSACTION 库名 WITH NO_LOG |
2.截断事务日志:
代码如下 | 复制代码 |
BACKUP LOG 库名 WITH NO_LOG |
SQL 2008收缩清空日志方法:
1.在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完整模式,一定必务要再改回完整模式,不然数据库就不支持时间点备份了。
1).选择数据库–属性—选项—恢复模式–选择简单。
2).收缩数据库后,再调回完整。
2.可以用命令直接操作
:
清空日志
代码如下 | 复制代码 |
-- set the database SIMPLE model. ALTER DATABASE 数据库库名称 SET RECOVERY SIMPLE; GO --Shrink the truncated log file to 2M DBCC SHRINKFILE (日志名称, 2); GO -- Reset the database recovery model. ALTER DATABASE 库名称 SET RECOVERY FULL; GO |
在当前数据库下:
select fileid,groupid,name from sysfiles where groupid=0
得到以下结果:
fileid groupid name
2 0 test123_log
其中fileid为日志文件ID,name为日记名称test123_log
在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。
方案一:完全命令模式
代码如下 | 复制代码 |
USE[master] GO ALTERDATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTERDATABASE DNName SET RECOVERY SIMPLE --简单模式 GO USE DNName GO DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY) GO USE[master] GO ALTERDATABASE DNName SET RECOVERY FULLWITH NO_WAIT GO ALTERDATABASE DNName SET RECOVERY FULL --还原为完全模式 GO |
方案二:部分命令模式 + 任务-收缩-文件(单个数据库)
代码如下 | 复制代码 |
ALTERDATABASE DNName SET RECOVERY SIMPLE --简单模式 GO |
右键-任务-收缩-文件-确定 下来数据库的日志只保留了1M
ALTERDATABASE DNName SET RECOVERY FULL --还原为完全模式
GO
优点:此清除日志所运行消耗的时间短,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内
即可完成。
时间: 2024-10-30 06:43:20