• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    SQL SERVER 2008数据库日志文件收缩的方法

    发布者: 雪落无声 | 发布时间: 2025-6-18 12:37| 查看数: 44| 评论数: 0|帖子模式

    最近公司的数据库随着业务量的增多,日志文件巨大(超过300G),造成磁盘空间不够用,进而后来的访问数据库请求无法访问。
    网上类似的方法也很多,但不可行,如下是我实践过,可行的,将日志文件收缩至任意指定大小的方法:
    第一步: 在SQL SERVER Management Studio 中右击数据库选择“属性”---》“选项”,将恢复模式由默认的“完整”改为“简单”。

    第二步:再次右键选择数据库的“任务”--》“收缩”---》“文件”菜单,进入收缩文件页面,将(要收缩的)文件类型选定为“日志”, 将页面下面的“收缩操作”单选框里选择“在释放未使用的空间前重新组织页,将文件收缩到:”,然后填写合适的收缩后的日志文件大小。
    最后点击这个页面下面的“确定”按钮,以执行收缩文件(日志)操作。
    执行完毕后,用户可以查到到的确该日志文件收缩到指定的大小了。


    将文件收缩到 0 即可。瞬间就ok了,比用命令快多了,对于36g的日志也很快。
    第三步:在SQL SERVER Management Studio 中右击数据库选择“属性”---》“选项”,将恢复模式由默认的“简单”改为“完整”。
    下面是最常用的方法一
    1. USE [master]
    2. GO
    3. ALTER DATABASE 库名 SET RECOVERY SIMPLE WITH NO_WAIT
    4. GO
    5. ALTER DATABASE 库名 SET RECOVERY SIMPLE --简单模式
    6. GO
    7. USE 库名
    8. GO
    9. DBCC SHRINKFILE (N'库名_log' , 11, TRUNCATEONLY)
    10. GO

    11. --这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询
    12. --USE 库名
    13. --GO
    14. --SELECT file_id,name FROM sys.database_files;
    15. --GO

    16. USE [master]
    17. GO
    18. ALTER DATABASE SCDMS SET RECOVERY FULL WITH NO_WAIT
    19. GO
    20. ALTER DATABASE SCDMS SET RECOVERY FULL --还原为完全模式
    21. GO
    复制代码
    一般来说上面的sql对于日志2个G内速度还可以,如果不行请参考下面的步骤
    1:然后在网上查找命令,找到日志文件类型为 REPLICATION 即发布状态
    2:又查找到执行命令 ,该命令显示很多status为2的日志,即没有提交的。
    DBCC LOGINFO('数据库名称')

    3:直接选择我之前创建的发布,提示以下错误:
    sqlserver无法作为数据库主体执行,因为主体 "dbo" 不存在...
    查找到以下命令,为用户添加数据库角色时提示已经存在此帐号请查看数据库下是否已经存在该帐号并删除重新授权
    1. USE 库名
    2. EXEC sp_changedbowner 'sa'
    复制代码
    4:然后再删除发布和订阅即成功。最后再执行第一步的SQL命令,日志文件缩小成功。
    方法二、先设置恢复模式为“简单恢复”模式,再收缩:
    1. USE BigData ;
    2. GO
    3. ALTER DATABASE BigData
    4. SET RECOVERY SIMPLE;--设置简单恢复模式
    5. GO
    6. DBCC SHRINKFILE (BigData_Log, 1);
    7. GO
    8. ALTER DATABASE BigData
    9. SET RECOVERY FULL;--恢复为原模式
    10. GO
    复制代码
    方法三、
    1. USE BigData;
    2. GO
    3. BACKUP LOG DATABASENAME TO DISK='d:\test.bak'
    4. -- Shrink the truncated log file to 1 MB.
    5. DBCC SHRINKFILE (Bigdata_Log, 1);
    6. GO
    复制代码
    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    来源:https://www.jb51.net/article/121901.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表