sql2005 简单恢复模式下 使用backup log with NO_log是否没有意义?
backup, log, 模式
-- 第一步:清空日志
DUMP TRANSACTION [YZGA] WITH NO_LOG
-- 第二步:截断事务日志
BACKUP LOG [YZGA] WITH NO_LOG
-- 第三步:收缩数据库
DBCC SHRINKDATABASE([YZGA])
==========================================================
日志:
不推荐使用 BACKUP LOG WITH TRUNCATE_ONLY 或 WITH NO_LOG。应使用简单恢复模式自动截断事务日志。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
NO_LOG | TRUNCATE_ONLY
通过放弃活动日志以外的所有日志,无需备份复制日志即可删除不活动的日志部分,并截断日志。该选项会释放空间。因为并不保存日志备份,所以没有必要指定备份设备。NO_LOG 和 TRUNCATE_ONLY 是同义的。
注意:
在 SQL Server 的未来版本中将删除该选项。应避免使用该选项进行新的开发工作,并计划修改当前使用它的应用程序。
使用 NO_LOG 或 TRUNCATE_ONLY 截断日志后,记录在日志中的更改不可恢复。为了进行恢复,请立即执行 BACKUP DATABASE 以执行完整备份或完整差异备份。
注意:
尽管可用该选项手动截断事务日志,但是我们极力建议您不要这样做,因为这会将日志链断开。在下一次完整备份或完整差异备份之前,将无法为数据库提供媒体故障保护。只在非常特殊的情况下才手动截断日志,并立即创建数据备份。
注意:
如果不想进行日志备份,请将数据库设置为简单恢复模式。
(SQL2008):
在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。
方案一:完全命令模式
USE [master]
GO
ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERYSIMPLE --简单模式
GO
USE DNName
GO
DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY)
GO
USE [master]
GO
ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERY FULL --还原为完全模式
GO