当前位置:  开发笔记 > 数据库 > 正文

截断SQL Server日志文件的命令是什么?

如何解决《截断SQLServer日志文件的命令是什么?》经验,为你挑选了4个好方法。

我需要在发送给同事之前清空LDF文件.如何强制SQL Server截断日志?



1> Blorgbeard..:

在管理工作室:

不要在实时环境中执行此操作,但要确保尽可能地缩小dev db:

右键单击数据库Properties,然后选择Options.

确保"恢复模型"设置为"简单",而不是"完整"

单击确定

再次右键单击数据库,选择Tasks- > Shrink- >Files

将文件类型更改为"日志"

单击确定.

或者,SQL来做:

 ALTER DATABASE mydatabase SET RECOVERY SIMPLE
 DBCC SHRINKFILE (mydatabase_Log, 1)

参考:http://msdn.microsoft.com/en-us/library/ms189493.aspx


你在现场环境中做了什么?先备份日志?
@JohnBubriski如果您使用的是简单以外的恢复模型,则日志是恢复数据或回滚事务的基础.因此,在生产中,您需要先备份这些日志,然后才能收缩日​​志文件.否则,就没有实际的恢复可能性.遗憾的是,如果您处于恢复状态,则必须重新加载所有事务日志备份才能完全恢复数据库.有趣的时候,可以肯定!:)

2> ila..:

如果我记得很清楚...在查询分析器或等效的:

BACKUP LOG  databasename  WITH TRUNCATE_ONLY

DBCC SHRINKFILE (  databasename_Log, 1)


truncate_only在SQL Server 2008中已弃用,因此您必须将数据库切换为简单恢复http://msdn.microsoft.com/en-us/library/ms143729(SQL.90).aspx
对于SQL Server 2012,这可行,但没有`WITH TRUNCATE_ONLY`.
添加到net_prog所说的,对于SQL Server 2012,我将第一行替换为`BACKUP LOG DatabaseNameHere TO DISK ='NUL:'`.
这肯定比将数据库恢复模型设置为SIMPLE要好(如Blorgbeard的答案),因为如果你的恢复模型是FULL,你可以出于某种原因设置它.

3> 小智..:

对于SQL Server 2008,命令为:

ALTER DATABASE ExampleDB SET RECOVERY SIMPLE
DBCC SHRINKFILE('ExampleDB_log', 0, TRUNCATEONLY)

这将我的14GB日志文件减少到1MB.


完成后别忘了将恢复模式更改回FULL!
由于哪个版本和接受的答案不适用于SQL Server 2008的问题不明确,因此无论年龄大小,此答案仍然有效.

4> Matej..:

对于SQL 2008,您可以将日志备份到nul设备:

BACKUP LOG [databaseName]
TO DISK = 'nul:' WITH STATS = 10

然后DBCC SHRINKFILE用来截断日志文件.


这是唯一一个最终在我的情况下工作的人......我在尝试使用TRUNCATE_ONLY备份时遇到错误
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有