各位高手,我只是菜鸟,单位有一套管理软件,后台是SQL SERVER2000,应用表中的数据,每个表不超过20000条。系统一直从2005年用到现在,以前从未出现过错误,这几天出现了如下问题,还请各位高手给我指点一下,不胜感激。
系统登录提示如下错误,“运行时错误6,溢出”。我理解是因为ID字段类型为INT型,数值达到临界点。不知道对不对。查看系统表 (以下每个系统表中的数据均不超过20000条)
syscolumus ID(INT数据类型)字段 的最大值已经为    2146158741
Syscomments ID(INT数据类型)字段 的最大值已经为  2146822710
sysdepends ID(INT数据类型)字段 的最大值已经为   2137058649
sysindexes ID(INT数据类型)字段 的最大值已经为   2144830803
sysindexkeys ID(INT数据类型)字段 的最大值已经为2144830803
sysobjects ID(INT数据类型)字段 的最大值已经为    2146822710
syspermissions ID(INT数据类型)字段 的最大值已经为  2136394680
这些系统表中的ID字段值均已要达到INT数据类型的临界值。在登录系统时,通过事件探查器查看到如下信息(探查器另存为SQL):select 504,c.name,c.definition from master.dbo.syscharsets c,master.dbo.syscharsets c1,master.dbo.sysconfigures f where f.config=1123 and f.value=c1.id and c1.csid=c.id 
go
select 504,c.name,c.definition from master.dbo.syscharsets c,master.dbo.syscharsets c1,master.dbo.sysconfigures f where f.config=1123 and f.value=c1.id and c1.csid=c.id 
go
select 504,c.name,c.description,c.definition from master.dbo.syscharsets c where c.id = convert(tinyint, databasepropertyex ( db_name() , 'sqlcharset'))
go
select 504,c.name,c.description,c.definition from master.dbo.syscharsets c where c.id = convert(tinyint, databasepropertyex ( db_name() , 'sqlcharset'))
go
select 504,c.name,c.description,c.definition from master.dbo.syscharsets c where c.id = convert(tinyint, databasepropertyex ( db_name() , 'sqlcharset'))
go
Select Manager From SM_UserId Where UserName='sa'
go
Exec GetLongDate
go
exec SP_DBOPTION 'gpms2000','SINGLE USER'
go
DBCC SQLPERF (LOGSPACE)
go
select * from sysfiles where fileid=2
go
Select UserFlag From gpms2000..SM_UserID Where UserName='sa'
go
Update SM_UserID Set UserFlag='LENOVO-MICROSOF-C39ECF:sa,YWJA9DAG6JET5O5:sa,' where UserName='sa'
go
select 504,c.name,c.definition from master.dbo.syscharsets c,master.dbo.syscharsets c1,master.dbo.sysconfigures f where f.config=1123 and f.value=c1.id and c1.csid=c.id 
go
select 504,c.name,c.definition from master.dbo.syscharsets c,master.dbo.syscharsets c1,master.dbo.sysconfigures f where f.config=1123 and f.value=c1.id and c1.csid=c.id 
go
select 504,c.name,c.description,c.definition from master.dbo.syscharsets c where c.id = convert(tinyint, databasepropertyex ( db_name() , 'sqlcharset'))
go
select 504,c.name,c.description,c.definition from master.dbo.syscharsets c where c.id = convert(tinyint, databasepropertyex ( db_name() , 'sqlcharset'))
go
Exec GetLongDate
go
select Fun_Name from sm_function Where ltrim(rtrim(Fun_ID))='登录主界面'Or ltrim(rtrim(Fun_Name))='登录主界面'
go
set implicit_transactions on 
go
Exec GetLongDate
go
select 504,c.name,c.description,c.definition from master.dbo.syscharsets c where c.id = convert(tinyint, databasepropertyex ( db_name() , 'sqlcharset'))
go
Exec GetLongDate
go
Insert Into SM_Log(Opr_Name,Fun_Name,Enter_Time,Quit_Time,ComputerNo)Values('sa','登录主界面','2017-11-06 11:49:56','2017-11-06 11:49:56','RSGL[135.28.19.99]')
go
IF @@TRANCOUNT > 0 COMMIT TRAN
go
set implicit_transactions off 
go
declare @P1 int
set @P1=180150000
declare @P2 int
set @P2=8
declare @P3 int
set @P3=1
declare @P4 int
set @P4=1
exec sp_cursoropen @P1 output, N'Select Count(*) SM_Log From SM_Log', @P2 output, @P3 output, @P4 output
select @P1, @P2, @P3, @P4
go
exec sp_cursorfetch 180150000, 16, 1, 1
go
declare @P1 int
set @P1=1
declare @P2 int
set @P2=1
exec sp_cursorfetch 180150000, 256, @P1 output, @P2 output
select @P1, @P2
go
exec sp_cursorclose 180150000
go
select id from sm_log where Enter_Time='2017-11-06 11:49:56' and Fun_Name='登录主界面' and Opr_Name='sa'
go
SET NO_BROWSETABLE ON
go
select a.*,b.description as Sdescription,c.description as Tdescription from alertinfo a left join sr_sourcecollect b on a.setid=b.setid left join sr_unittype c on a.typeid=c.typeid where a.alertflag=0 and a.username='SA'
go

解决方案 »

  1.   

    如果有源代码,直接用源代码debug一下看看就知道了啊,没有源代码的话就用sql server开启监控下看看执行什么sql的时候程序报错了,然后把这个sql执行下看看有什么问题
      

  2.   

    供应商已经OVER了。
      

  3.   

    syscolumus ID(INT数据类型)字段 的最大值已经为    2146158741  不可思议,吓得我赶快看看自己的表是多大:@CNGHSJ 2147447370
    @GHZT 2147447370
    @OpID 2147447370坑爹,怎么会这么大呢?也在临界值附近
      

  4.   

    我没用过监控,能告诉我一下怎么用吗
    就是SQL Server Profiler,自己百度下怎么用就知道了