繁体   English   中英

如何减小 sql server 日志文件的大小?

[英]How do I decrease the size of my sql server log file?

所以我一直忽略对我的fogbugz数据库做任何备份,现在fogbugz ldf文件超过2个半演出。 这是我们在使用fogbugz 的六个月中建立起来的。

我备份了数据库,然后我备份,并截断了事务日志,但事务日志仍然是 2 个半演出。 我对日志文件做了一个缩小,它仍然是 2 个半的演出。 我所做的一切似乎都没有缩小文件的大小。

有没有办法解决这个问题? 或者是此时分离数据库,删除日志文件然后重新附加一个新的唯一方法?

  • 执行数据库的完整备份。 不要跳过这个。 真的。
  • 将数据库的备份方法更改为“简单”
  • 打开一个查询窗口,输入“checkpoint”并执行
  • 执行数据库的另一个备份
  • 将数据库的备份方法改回“完整”(或其他任何方法,如果它还不是简单的话)
  • 执行数据库的最终完整备份。
  • 一一运行以下查询
    1. USE Database_Name
    2. select name,recovery_model_desc from sys.databases
    3. ALTER DATABASE Database_Name SET RECOVERY simple
    4. DBCC SHRINKFILE (Database_Name_log , 1)

欢迎来到变化无常的 SQL Server 日志管理世界。

有些事情是错误的,但我认为没有一些额外的信息,没有人能告诉你更多。 例如,此数据库是否曾用于事务性 SQL Server 复制? 如果事务尚未复制到订阅者,这可能会导致类似的问题。

在此期间,这至少应该允许您终止日志文件:

  1. 执行数据库的完整备份。 不要跳过这个。 真的。
  2. 将数据库的备份方法更改为“简单”
  3. 打开一个查询窗口,输入“checkpoint”并执行
  4. 执行数据库的另一个备份
  5. 将数据库的备份方法改回“完整”(或其他任何方法,如果它还不是简单的话)
  6. 执行数据库的最终完整备份。

您现在应该能够缩小文件(如果执行备份不适合您)。

祝你好运!

  1. 确保数据库的备份模式设置为简单(有关不同模式的概述,请参见此处)。 这将避免 SQL Server 在重用空间之前等待事务日志备份。

  2. 使用dbcc shrinkfileManagement Studio来收缩日志文件。

在设置备份模式之前,步骤 #2 将不执行任何操作。

这是使用查询完成的最佳建议之一。 适合像我一样拥有大量数据库的人。 可以使用脚本运行它。

https://medium.com/@bharatdwarkani/shrinking-sql-server-db-log-file-size-sql-server-db-maintenance-7ddb0c331668

USE DatabaseName;
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE DatabaseName
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (DatabaseName_Log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE DatabaseName
SET RECOVERY FULL;
GO

您必须多次收缩和备份日志才能减小日志文件的大小,这是因为日志文件页面不能像数据文件页面那样重新组织,只能被截断。 有关更详细的解释, 请查看此内容。

警告:分离数据库并删除日志文件是危险的! 除非您希望数据丢失,否则不要这样做

我遇到了同样的问题,我的数据库日志文件大小约为 39 GB,在缩小(数据库和文件)后,它减少到 37 GB 不够用,所以我做了这个解决方案:(我不需要 ldf 文件(日志文件)了)

(**重要):在此过程之前获取数据库的完整备份。

  1. 在该数据库上运行“检查点”。

  2. 分离该数据库(右键单击该数据库并选择任务 >> 分离...){如果您看到错误,请执行本文末尾的步骤}

  3. 将 MyDatabase.ldf 移动到另一个文件夹,您可以在与数据库相同的文件夹中的硬盘中找到它(以防万一您将来由于某些原因需要它,例如用户执行了某些任务)。

  4. 附加数据库(右键单击数据库并选择附加...)

  5. 在附加对话框中删除 .ldf 文件(显示“找不到文件”注释)并单击“确定”。 (不要担心在附件过程后会创建 ldf 文件。)

  6. 之后,会创建一个大小为 504 KB 的新日志文件!!!。

在步骤 2 中,如果您遇到数据库被其他用户使用的错误,您可以:

1.在主数据库“sp_who2”上运行这个命令,看看是什么进程在使用你的数据库。

2.读取进程号,例如它是52并输入“kill 52”,现在你的数据库是空闲的,可以分离了。

如果使用数据库的进程数量过多:

1.打开服务(在windows start中输入services)找到SQL Server ...进程并重置它(右键单击并选择重置)。

  1. 立即单击分离对话框中的确定按钮(之前显示分离错误)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM