如何截断 SQL Server 2008 数据库中的事务日志?
什么是可能的最佳方法?
我从博客中尝试了以下方法:
1)从设置数据库到简单恢复,缩小文件,再设置完全恢复,实际上是丢失了宝贵的日志数据,无法及时恢复。不仅如此,您还将无法使用后续日志文件。
2) 缩小数据库文件或数据库增加碎片。
你可以做很多事情。首先,使用以下命令开始进行适当的日志备份,而不是截断它们并经常丢失它们。
BACKUP LOG [TestDb] TO DISK = N'C:\Backup\TestDb.bak'
GO
Run Code Online (Sandbox Code Playgroud)
删除 SHRINKING 文件的代码。如果您进行适当的日志备份,您的日志文件通常(同样通常,特殊情况除外)不会变得很大。
小智 8
您可以将日志备份到空设备:
backup log [databasename] to disk = 'nul';
Run Code Online (Sandbox Code Playgroud)
或者您可以将恢复模式切换为简单模式,然后再次切换回完整/批量模式。
小智 6
如果您不关心您的日志数据而只想摆脱它:
将恢复模式从完整更改为简单,然后再更改为完整。使用带有 TRUNCATEONLY 参数的DBCC SHRINKFILE收缩文件
以下命令会将恢复模式从完整更改为简单
ALTER DATABASE <databse_name> SET RECOVERY SIMPLE
Run Code Online (Sandbox Code Playgroud)
以下命令将恢复模式更改为完整
ALTER DATABASE <databse_name> SET RECOVERY FULL
Run Code Online (Sandbox Code Playgroud)
要查找日志文件的名称,您可以使用以下查询
SELECT name
FROM sys.master_files
WHERE database_id = DB_ID('<databse_name>')
Run Code Online (Sandbox Code Playgroud)
缩小文件
DBCC SHRINKFILE (N'<logical_file_name_of_the_log>' , 0, TRUNCATEONLY)
Run Code Online (Sandbox Code Playgroud)
请参阅截断 SQL Server 日志文件的命令是什么?有关这方面的更多信息
如果数据库处于完全恢复模式,截断日志文件的最安全、正确的方法是执行事务日志备份(不带TRUNCATE_ONLY. 这将在未来版本中被弃用,并且不建议)。
听起来您想随后缩小日志文件,在这种情况下您将运行命令DBCC SHRINKFILE(yourTLogName)。有一个可选的第二个参数用于将其缩小到所请求的大小。
| 归档时间: |
|
| 查看次数: |
65357 次 |
| 最近记录: |