SQL Server 事务日志已满,3种解决方案

先看报错吧

通过报错可以看出,是事务日志已满导致。

第一种解决方案:

  • 手动收缩日志文件。在数据库上点击右键 → 选择 属性 → 选择 选项,把模式改为简单
    image.png
  • 然后收缩文件
    image.png
    image.png
  • 收缩完了,要把模式改回完整,这样数据库才好继续记录日志
    image.png

第二种解决方案:

  • 在数据库上点击右键 → 选择 属性 → 选择 文件,然后增加数据库日志文件的文件大小。
    image.png

第三种解决方案:

  • 通过执行SQL语句来实现第二步手动操作的效果
-- 修改数据库恢复模式为【简单模式】
USE [master]
GO
ALTER DATABASE [目标数据库名称] SET RECOVERY SIMPLE WITH NO_WAIT
GO

USE [目标数据库名称]
GO
DBCC SHRINKFILE (N'数据库日志逻辑名称', 10)  --10指压缩后的大小
GO

-- 修改数据库恢复模式为【完整模式】
USE [master]
GO
ALTER DATABASE [目标数据库名称] SET RECOVERY FULL WITH NO_WAIT
GO

--实操:
USE [master]
ALTER DATABASE [erp] SET RECOVERY SIMPLE WITH NO_WAIT

USE [erp]
DBCC SHRINKFILE (N'Xgoss_log', 50)

USE [master]
ALTER DATABASE [erp] SET RECOVERY FULL WITH NO_WAIT

上面代码模板,有三个地方要改成你数据库的信息,分别是:目标数据库名称、数据库日志逻辑名称、10(这个指压缩后的日志文件大小),哪里找数据库日志逻辑名称,如图:
image.png

<p>EAS操作报错,查看Apusic日志<br /> <img src="/download/01007c694be74a1148fba683f5bd94fc209f.png" alt="100.png" /></p> <p><strong>第一种解决方案:</strong></p> <ul> <li>手动收缩日志文件。在数据库上点击右键 → 选择 属性 → 选择 选项,把模式改为简单<br /> <img src="/download/0100c2b9d293f53b49b2a4d610661c0095eb.png" alt="image.png" /></li> <li>然后收缩文件<br /> <img src="/download/010084dfe91211f94f07be9df9a2fe9b6370.png" alt="image.png" /><br /> <img src="/download/0100f581ee770997453ab279a49d16aee089.png" alt="image.png" /></li> <li>收缩完了,要把模式改回完整,这样数据库才好继续记录日志<br /> <img src="/download/0100d09353685d4d45fa9cea04b6fafc7cf4.png" alt="image.png" /></li> </ul> <p><strong>第二种解决方案:</strong></p> <ul> <li>在数据库上点击右键 → 选择 属性 → 选择 文件,然后增加数据库日志文件的文件大小。<br /> <img src="/download/01001043bd20fb884f24958a695f809b8823.png" alt="image.png" /></li> </ul> <p><strong>第三种解决方案:</strong></p> <ul> <li>通过执行SQL语句来实现第二步手动操作的效果</li> </ul> <pre><code class="lang-language">-- 修改数据库恢复模式为【简单模式】 USE [master] GO ALTER DATABASE [目标数据库名称] SET RECOVERY SIMPLE WITH NO_WAIT GO USE [目标数据库名称] GO DBCC SHRINKFILE (N'数据库日志逻辑名称', 10) --10指压缩后的大小 GO -- 修改数据库恢复模式为【完整模式】 USE [master] GO ALTER DATABASE [目标数据库名称] SET RECOVERY FULL WITH NO_WAIT GO --实操: USE [master] ALTER DATABASE [erp] SET RECOVERY SIMPLE WITH NO_WAIT USE [erp] DBCC SHRINKFILE (N'Xgoss_log', 50) USE [master] ALTER DATABASE [erp] SET RECOVERY FULL WITH NO_WAIT </code></pre> <p>上面代码模板,有三个地方要改成你数据库的信息,分别是:目标数据库名称、数据库日志逻辑名称、10(这个指压缩后的日志文件大小),哪里找数据库日志逻辑名称,如图:<br /> <img src="/download/010043d6e1025c5d493093883fa5d8957130.png" alt="image.png" /></p>
导航目录
 

EAS操作报错,查看Apusic日志
100.png

第一种解决方案:

  • 手动收缩日志文件。在数据库上点击右键 → 选择 属性 → 选择 选项,把模式改为简单

  • 然后收缩文件


  • 收缩完了,要把模式改回完整,这样数据库才好继续记录日志

第二种解决方案:

  • 在数据库上点击右键 → 选择 属性 → 选择 文件,然后增加数据库日志文件的文件大小。
    image.png

第三种解决方案:

  • 通过执行SQL语句来实现第二步手动操作的效果
-- 修改数据库恢复模式为【简单模式】
USE [master]
GO
ALTER DATABASE [目标数据库名称] SET RECOVERY SIMPLE WITH NO_WAIT
GO

USE [目标数据库名称]
GO
DBCC SHRINKFILE (N'数据库日志逻辑名称', 10)  --10指压缩后的大小
GO

-- 修改数据库恢复模式为【完整模式】
USE [master]
GO
ALTER DATABASE [目标数据库名称] SET RECOVERY FULL WITH NO_WAIT
GO

--实操:
USE [master]
ALTER DATABASE [erp] SET RECOVERY SIMPLE WITH NO_WAIT

USE [erp]
DBCC SHRINKFILE (N'Xgoss_log', 50)

USE [master]
ALTER DATABASE [erp] SET RECOVERY FULL WITH NO_WAIT

上面代码模板,有三个地方要改成你数据库的信息,分别是:目标数据库名称、数据库日志逻辑名称、10(这个指压缩后的日志文件大小),哪里找数据库日志逻辑名称,如图:
image.png

本文转载自:CSDN-CNBLOGS

作者:小码叔-郭大侠

原文链接:https://blog.csdn.net/qq_33037637/article/details/125068269 https://www.cnblogs.com/gered/p/9366256.html

 

参考连接:https://vip.kingdee.com/article/547010510168920320?productLineId=8&lang=zh-CN

 

posted @ 2024-10-08 09:55  羊脂玉净瓶  阅读(441)  评论(0)    收藏  举报