合作伙伴社区股票代码:838758石基信息成员企业
首页>案例中心>新装软件不久后出现使用卡顿情况
2021-11-15 10:06  |  
191

问题现象:

有部分客户软件安装不久后就开始出现卡顿情况,据跟进分析,除了由于数据库索引或自增列损坏之外(底下附索引自增列修复语句),还有因为新装的软件数据库日志模式为“大容量日志”导致数据库日志文件无限度增长引起的。


image.png


image.png


解决方法:

经测试发现有部分软件的数据库安装包,装在sql2012时会将数据库默认为大容量日志(装在sql2008没有问题,默认简单模式),此问题后续新安装包会优化处理,但是目前流通的老安装包可能还会存在此风险,各位在碰到卡顿等性能问题的时候,可以关注一下处理此类问题的解决方案。

方法1:以下sql语句是针对商锐数据库处理的,如果是商慧则全文将hbposev9改为hbposepro。

1)以下语句是将SQL 2008 2012 的恢复模式更改为简单模式。

USE [master]

GO

ALTER DATABASE hbposev9 SET RECOVERY SIMPLE WITH NO_WAIT;

GO

ALTER DATABASE hbposev9 SET RECOVERY SIMPLE;   --简单模式

GO   

use hbposev9

DBCC SHRINKFILE (hbposev9_log, 1);           --收缩日志文件

DBCC SHRINKDATABASE(hbposev9)             --收缩数据库


2)以下语句是将SQL 2000的恢复模式更改为简单模式。

USE [master]

GO

ALTER DATABASE hbposev9 SET RECOVERY SIMPLE WITH NO_WAIT;

GO

ALTER DATABASE hbposev9 SET RECOVERY SIMPLE;   --简单模式

GO 

Backup Log hbposev9 with no_log

dump transaction hbposev9 with no_log

USE hbposev9

DBCC SHRINKFILE (2)

 

方法2:以下语句用作修复索引和自增列。

use hbposev9   

go

declare @tablename varchar(100)

declare  test_cur cursor for

select object_name(id) from syscolumns

where status=128

open test_cur

fetch test_cur into @tablename

while @@fetch_status=0

begin  

DBCC CHECKIDENT (@tablename, RESEED)  

fetch test_cur into @tablename

end

close test_cur

deallocate test_cur

go

declare @tablename varchar(100)

declare  test_cur cursor for

select object_name(id) from sysobjects

where type ='U'

open test_cur

fetch test_cur into @tablename

while @@fetch_status=0

begin  

DBCC DBREINDEX(@tablename)

fetch test_cur into @tablename

end

close test_cur

deallocate test_cur

go


分享:

市场活动
其他新闻
产品案例


快速询价

在线咨询

在线留言