问题现象:sql sever数据库,NC65 人力在薪资发发节点计算薪资的时候报错,提示:数据库“XXX”的事务日志已满,原因为“LOG_BAKUP”。如下图:
在这里插入图片描述
在这里插入图片描述
问题处理:该问题系数据库事务日志满了造成的,先停系统服务,然后通过执行以下语句清理数据库事务日志(将其中ncdb替换为对应数据库名称)

USE ncdb;

alter database ncdb  set recovery simple with no_wait;

alter database ncdb  set recovery simple;--简单模式

dbcc  shrinkfile (N'nnc_log01', 11, truncateonly);--nnc_log01文件名需要根据自己实际情况而定

alter database ncdb  set recovery full with no_wait;

alter database ncdb  set recovery full;--还原为完全模式

当我们使用sql server数据库时,经常会发现数据库过一段时间后,就会占用好大的磁盘空间,这可能是数据的原因,也有可能是其他的原因。但如果说占用绝大部分存储空间,而且数据量又不怎么大,那么,这其中就有问题了。该如何排查??

一、首先要清楚问题的原因之处:
打开sql server数据库,数据库右键——属性——文件,在这个文件栏打开之后,我们会看到主数据文件和日志文件的初始大小和增长大小,如果日志文件太多,我们首先要考虑处理日志文件。

对数据库事务日志已满的处理方法:

--完全命令模式
	USE[master]
    GO
    ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT
    GO
    ALTER DATABASE DNName SET RECOVERY SIMPLE   --简单模式
    GO
    USE DNName 
    GO
    DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY)
    GO
    USE[master]
    GO
    ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT
    GO
    ALTER DATABASE DNName SET RECOVERY FULL  --还原为完全模式
    GO

二、数据日志处理完之后,如果是日志的问题的话,这个时候磁盘的存储空间会多出来很多,如果不是这个问题的话,我们还要去查看数据库中每个表数据大小,看看是否是数据量很大这个原因导致的。

IF OBJECT_ID('tempdb..#TablesSizes') IS NOT NULL

    DROP TABLE #TablesSizes

CREATE TABLE #TablesSizes

    (

      TableName sysname ,

      Rows BIGINT ,

      reserved VARCHAR(100) ,

      data VARCHAR(100) ,

      index_size VARCHAR(100) ,

      unused VARCHAR(100)

    )

DECLARE @sql VARCHAR(MAX)

SELECT  @sql = COALESCE(@sql, '') + '

INSERT INTO #TablesSizes execute sp_spaceused ''' + QUOTENAME(TABLE_SCHEMA,

                                                              '[]') + '.'

        + QUOTENAME(Table_Name, '[]') + ''''

FROM    INFORMATION_SCHEMA.TABLES

WHERE   TABLE_TYPE = 'BASE TABLE'

PRINT ( @SQL )

EXECUTE (@SQL)

SELECT  *

FROM    #TablesSizes

ORDER BY Rows DESC

三、当这些配置好了之后,我们发现确实是数据原因,这个时候,我们就要适当的去删除数据量比较大的表格了,删除完了之后,我们就要对表格进行压缩了。将磁盘的可用空间释放出来。

四、数据库右键——任务——压缩——数据库,来到上面的压缩数据库文件,这个时候我们要选择压缩的百分比了,设置好百分比之后,我们就开始执行,这个过程可能比较漫长,毕竟是对磁盘的一次重新组合,所以敬请等待,最终你会看到磁盘会空出很多可用空间。

更多推荐