Sql server 截断SQL Server日志文件的命令是什么?
在发送给同事之前,我需要清空LDF文件。如何强制SQL Server截断日志?在management studio中:Sql server 截断SQL Server日志文件的命令是什么?,sql-server,truncate,logging,Sql Server,Truncate,Logging,在发送给同事之前,我需要清空LDF文件。如何强制SQL Server截断日志?在management studio中: 不要在实时环境中执行此操作,但为了确保尽可能缩小开发数据库,请执行以下操作: 右键单击数据库,选择属性,然后选择选项 确保“恢复模式”设置为“简单”,而不是“完全” 单击“确定” 再次右键单击数据库,选择任务->收缩->文件 将文件类型更改为“日志” 单击“确定” 或者,执行此操作的SQL: ALTER DATABASE mydatabase SET RECOVERY
- 不要在实时环境中执行此操作,但为了确保尽可能缩小开发数据库,请执行以下操作:
- 右键单击数据库,选择属性,然后选择选项
- 确保“恢复模式”设置为“简单”,而不是“完全”
- 单击“确定”
- 再次右键单击数据库,选择
->任务
->收缩
文件
- 将文件类型更改为“日志”
- 单击“确定”
ALTER DATABASE mydatabase SET RECOVERY SIMPLE
DBCC SHRINKFILE (mydatabase_Log, 1)
Ref:备份日志日志名,仅带有truncate\u,后跟dbcc shrinkfile命令,如果我记得清楚的话。。。在查询分析器或等效工具中:
BACKUP LOG databasename WITH TRUNCATE_ONLY
DBCC SHRINKFILE ( databasename_Log, 1)
对于SQL Server 2008,命令为:
ALTER DATABASE ExampleDB SET RECOVERY SIMPLE
DBCC SHRINKFILE('ExampleDB_log', 0, TRUNCATEONLY)
ALTER DATABASE ExampleDB SET RECOVERY FULL
这将我的14GB日志文件减少到1MB。对于SQL 2008,您可以将日志备份到
nul
设备:
BACKUP LOG [databaseName]
TO DISK = 'nul:' WITH STATS = 10
然后使用
DBCC SHRINKFILE
截断日志文件。另一个选项是通过Management Studio分离数据库。然后简单地删除日志文件,或者重命名它,稍后再删除
回到ManagementStudio,再次连接数据库。在“附加”窗口中,从文件列表中删除日志文件
DB附加并创建一个新的空日志文件。检查一切正常后,可以删除重命名的日志文件
您可能不应该将其用于生产数据库。因为我的答案隐藏在评论中。对于SQL Server 2012及更高版本,您可以使用以下各项:
BACKUP LOG Database TO DISK='NUL:'
DBCC SHRINKFILE (Database_Log, 1)
这肯定比将数据库恢复模型设置为SIMPLE(如Blorgbeard的回答中所示)要好,因为如果恢复模型已满,则将其设置为SIMPLE是有原因的。SQL Server 2008中不推荐使用truncate_,因此您必须将数据库切换为SQL Server 2012的SIMPLE recovery。这是可行的,但是没有
只使用TRUNCATE\u
。再加上net\u prog所说的,对于SQL Server 2012,我将备份日志数据库名的第一行替换为DISK='NUL:'
。'TRUNCATE\u ONLY'不是公认的备份选项。(SQL Server 2019 RC1)您的回答刚刚救了我一天!我不知道“右键单击-任务->收缩”选项。非常感谢。你在生活环境中做什么?首先备份日志?我不是DBA,但是的,我相信备份日志会截断日志:@JohnBubriski如果您使用的是简单以外的恢复模型,日志是恢复数据或回滚事务的基础。因此,在生产中,您需要先备份这些日志,然后才能收缩日志文件。否则,就没有实际的恢复可能性。不幸的是,如果处于恢复状态,则必须重新加载所有事务日志备份才能完全恢复数据库。当然,这是一段有趣的时光!:)在SQL Server 2012中,在执行dbcc shrinkfile
之前,我必须使用mydatabase
,因为关于哪个版本和接受的答案不适用于SQL Server 2008的问题模棱两可。无论年龄大小,此答案仍然有效。谢谢,它帮助我减少了一个与DBCC ShrinkFile没有反应的大日志文件,完成后别忘了将恢复模式更改回完整模式!您应该在执行此操作(或任何其他截断选项)之前进行备份。如果执行完整备份并检查SSMS中的“仅复制备份”,则不再需要日志。(这只是一个时间点备份)。永远不要这样做!日志中可能有数据尚未提交到数据文件。你会丢失这些数据。如果你在回答中警告不要在生产中尝试,那根本不值得发布。我不同意下层选民的观点——这是一种选择。管理员只需要了解他们的场景。例如,如果没有打开的事务,就不会有“未提交”的数据。这是唯一适合我的解决方案。我的硬盘已经满了,我无法备份或缩小,其他的似乎都不起作用。非常感谢。我同意;这不是一个最佳实践,但如果你没有其他选择,比如Brian的场景,这是一个很有价值的工具。这是唯一一个在我的情况下起作用的工具。。。我在尝试使用带有TRUNCATE_ONLYNote的备份时出错:这可能需要相当长的时间,即使是在SSD上(它必须读取日志才能丢弃它)。对于功率适中的Azure VM上的30GB日志文件,执行40%的操作需要10分钟。确保切换到“消息”接收SSM以查看已处理的百分比。