212

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

4

7 回答 7

328

在管理工作室:

  • 不要在实时环境中执行此操作,但要确保尽可能缩小开发数据库:
    • 右键单击数据库,选择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

于 2008-09-02T19:51:12.087 回答
134

如果我没记错的话……在查询分析器或等效项中:

BACKUP LOG  databasename  WITH TRUNCATE_ONLY

DBCC SHRINKFILE (  databasename_Log, 1)
于 2008-09-02T19:53:31.410 回答
75

对于 SQL Server 2008,命令是:

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

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

于 2011-08-08T07:09:49.520 回答
39

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

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

然后使用DBCC SHRINKFILE截断日志文件。

于 2011-09-09T12:24:30.427 回答
3

带有 truncate_only 后跟 dbcc shrinkfile 命令的备份日志 logname

于 2008-09-02T19:51:59.323 回答
0

因为我的答案被埋在评论中。对于 SQL Server 2012 及更高版本,您可以使用以下内容:

BACKUP LOG Database TO DISK='NUL:'
DBCC SHRINKFILE (Database_Log, 1)
于 2020-04-16T20:25:50.563 回答
-4

另一种选择是通过 Management Studio 分离数据库。然后只需删除日志文件,或重命名并稍后删除。

返回 Management Studio 再次附加数据库。在附加窗口中,从文件列表中删除日志文件。

数据库附加并创建一个新的空日志文件。检查一切正常后,您可以删除重命名的日志文件。

您可能不应该将它用于生产数据库。

于 2014-01-13T09:10:08.153 回答