广告位联系
返回顶部
分享到

SQLServer日志收缩的两种方法

MsSql 来源:互联网 作者:佚名 发布时间:2024-08-30 20:32:01 人浏览
摘要

在日常运维中,有时会遇到The transaction log for database xxxx is full due to ACTIVE_TRANSACTION.这样的报错信息。 此错误消息表明:数据库的事务日志文件空间耗尽,log 文件不能再存储新的transaction log。

在日常运维中,有时会遇到“The transaction log for database ‘xxxx’ is full due to ‘ACTIVE_TRANSACTION’.”这样的报错信息。

此错误消息表明:数据库的事务日志文件空间耗尽,log 文件不能再存储新的transaction log。

这个时候我们需要进行日志收缩。本文将介绍日志收缩的两种方法。

通过图形界面进行日志收缩

第一步:右键数据库属性

在这里插入图片描述

第二步:更改数据库恢复模式,将模式改为Simple。

在这里插入图片描述

第三步:右键数据库,Tasks→Shrink→Files 。

在这里插入图片描述

第四步:收缩数据库日志,选择文件类型Log,并在Shrink action 中将文件收缩到给出的Minimum 值,这里的数据库因为是新建的没有数据,所以提供的Minimum 值为0MB,可以将红框3中的数字修改为0。

在这里插入图片描述

  • File type:选择所要收缩的是“数据库文件”还是“日志文件”。
  • Currebtly allocated space:数据库为该文件分配的大小,就是在磁盘上看到的文件大小。
  • Available free space:就是“当前分配的空间” 减去“实际使用的空间”。

Shrink action:
① Release unused space:将该文件中未使用的空间释放出来,数据在文件中不移动;
② Reorganize pages before releasing unused space:此选项可以将文件收缩到“指定大小”,并将数据重新组织。其最小值为数据库“实际使用的空间”;
③ Empty file by migrating the data to other files in the same filegroup:该选项很少用。

上述操作也可以使用T-SQL替代:

1

2

DBCC ShrinkFile(‘数据库名',  targetsize);           /* 收缩数据库文件 */

DBCC ShrinkFile(‘数据库名_log',  targetsize);       /* 收缩日志文件 */

Targetsize:单位为兆,必须为整数,DBCC SHRINKFILE 尝试将文件收缩到指定大小。
DBCC SHRINKFILE 不会将文件收缩到小于“实际使用的空间”大小,例如“分配空间”为10M,“实际使用空间”为6M,当制定targetsize为1时,则将该文件收缩到6M,不会将文件收缩到1M。

用本例中的数据库替换后如下:

1

2

DBCC ShrinkFile(‘TEST01',  1);          /* 收缩数据库文件 */

DBCC ShrinkFile(‘TEST01_log', 1);       /* 收缩日志文件 */

注意:如若磁盘空间已满,无法进行收缩数据库事务日志文件,可采取先分离出部分暂未使用的数据库,然后将MDF文件及LDF文件进行拷贝到其他空余盘,进行释放磁盘空间,待日志收缩后,再次将分离出的数据库文件进行附加。

分离数据库操作如下:

右击数据库,Task→Detach

在这里插入图片描述

点击OK

在这里插入图片描述

此时发现数据库列表中已经没有TEST01,说明数据库分离成功了。

在这里插入图片描述

附加数据库操作如下:
右击Databases,单击Attach

在这里插入图片描述

点击Add,添加数据库文件

在这里插入图片描述

选择需要添加的文件后点击OK

在这里插入图片描述

检查添加的文件无误后,点击OK

在这里插入图片描述

此时在数据库列表中可看到刚附件上去的数据库TEST01

在这里插入图片描述

若未显示TEST01,请刷新数据库列表

在这里插入图片描述

通过 Transact-Sql 进行日志收缩

执行如下命令:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

USE [数据库名]

GO

ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH NO_WAIT

GO

--设为简单模式

ALTER DATABASE [数据库名] SET RECOVERY SIMPLE

GO

USE [数据库名]

GO

DBCC SHRINKFILE (N'[log文件名]', [ targetsize], TRUNCATEONLY)

GO

USE [数据库名]

GO

ALTER DATABASE [数据库名] SET RECOVERY FULL WITH NO_WAIT

GO

--还原为完全模式

ALTER DATABASE [数据库名] SET RECOVERY FULL

GO

[数据库名]替换为具体数据库, [ targetsize]替换为收缩目标值。

替换为本例中的数据库修改如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

USE TEST01

GO

ALTER DATABASE TEST01 SET RECOVERY SIMPLE WITH NO_WAIT

GO

--设为简单模式

ALTER DATABASE TEST01 SET RECOVERY SIMPLE

GO

USE TEST01

GO

DBCC SHRINKFILE (N'TEST01_log', 1, TRUNCATEONLY)

GO

USE TEST01

GO

ALTER DATABASE TEST01 SET RECOVERY FULL WITH NO_WAIT

GO

--还原为完全模式

ALTER DATABASE TEST01 SET RECOVERY FULL

GO


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • sql中的regexp与like区别实现介绍
    1、REGEXP 用途:高级字符串匹配,使用正则表达式。 特点:灵活性强,能进行复杂模式匹配(如开头、结尾、字符集等)。 基本语法: 1
  • SQLServer日志收缩的两种方法

    SQLServer日志收缩的两种方法
    在日常运维中,有时会遇到The transaction log for database xxxx is full due to ACTIVE_TRANSACTION.这样的报错信息。 此错误消息表明:数据库的事务日志文
  • Sql Server查询卡顿的排查方法

    Sql Server查询卡顿的排查方法
    本篇为理论知识的分析以及对症下药,前阵子发生过Bug,后通过迁移服务器以及数据库最终才解决问题,但是细想当时可能是因为碎片或者
  • sql server安装及使用全流程

    sql server安装及使用全流程
    一、安装SQL Server 1.到微软官网下载SQL Server Developer版本,现在的最新版本是SQL Server 2019 Developer。微软官网传送门:点击此处直达 2.下载完成
  • SQL Povit函数使用及实例

    SQL Povit函数使用及实例
    PIVOT函数常用于数据的行转列,同时也可以用此函数实现类似于Excel中的数据透视表的效果。 PIVOT函数 PIVOT 函数的基本语法如下: 1 2 3 4 5
  • Navicat连接SQL server出现:[IM002] [Microsoft][ODBC 驱动

    Navicat连接SQL server出现:[IM002] [Microsoft][ODBC 驱动
    问题 解决方法 一 找到Navicat的安装路径,然后找到sqlncli_x64.msi文件并安装,安装成功后重启Navicat重新进行连接,看是否成功。 解决方法 二
  • sql server实现图片的存入和读取的流程介绍

    sql server实现图片的存入和读取的流程介绍
    首先提醒一下,无论是将图片存入数据库,还是从数据库中读取,都是采用流的形式进行,虽然,在数据库中,存储图片的类型是Image,但是
  • Sql中的like的用法及示例操作介绍
    Sql中的like的用法 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今
  • 对SQL Server中敏感数据进行加密解密的操作方法
    为什么需要对敏感数据进行加密? 近几年有不少关于个人数据泄露的新闻(个人数据通常包含如姓名、地址、身份证号码、财务信息等),
  • SSMS中出现两个相同的服务器名称的问题解决

    SSMS中出现两个相同的服务器名称的问题解决
    在将SQL Server 2019更新为SQL Server 2022后,或者是在更新安装SQL Server Management Studio工具后,在SSMS的【连接到服务器】页面,有时候可能会出现多
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计