好贷网好贷款

SQL SERVER服务器停止响应 30delphi_dcs]

发布时间:2016-12-4 1:55:03 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"SQL SERVER服务器停止响应 30delphi_dcs]",主要涉及到SQL SERVER服务器停止响应 30delphi_dcs]方面的内容,对于SQL SERVER服务器停止响应 30delphi_dcs]感兴趣的同学可以参考一下。

各位大虾:     我碰到一个非常麻烦的问题,现在的sql server服务器有时候停止响应,就是有时候当你打开form时,很久取不出数据,过段时间可能又好了。大概会继续10钟左右,这是什么原因啊。

你的程序有问题

不是吧,,程序有问题的话应该都是那样,为什么最近才出现问题呢,而且是偶而啊

监视一下,是否有进程所定资源

怎样监视?

--转 --在查询分析器中执行,看看是否有进程所定表 CREATE PROCEDURE dbo.sp_wholock AS --create procedure sp_WhoLock with ENCRYPTION as ------------------------------------------------------------- --   一、根据sp_who改编产生SPID对应的用户#who表 ------------------------------------------------------------- if (object_id('tmp_dbuser') is not null) drop table tmp_dbuser if (object_id('tempdb..#tb1_sysprocesses') is not null) drop table #tb1_sysprocesses declare @loginame sysname  set @loginame= NULL set nocount on declare @retcode int declare  @sidlow varbinary(85) ,@sidhigh varbinary(85) ,@sid1 varbinary(85) ,@spidlow int ,@spidhigh int declare @charMaxLenLoginName varchar(6) ,@charMaxLenDBName varchar(6) ,@charMaxLenCPUTime varchar(10) ,@charMaxLenDiskIO varchar(10) ,@charMaxLenHostName varchar(10) ,@charMaxLenProgramName varchar(10) ,@charMaxLenLastBatch varchar(10) ,@charMaxLenCommand varchar(10) declare @charsidlow varchar(85) ,@charsidhigh varchar(85) ,@charspidlow varchar(11) ,@charspidhigh varchar(11) select @retcode = 0      -- 0=good ,1=bad. --------defaults select @sidlow = convert(varbinary(85), (replicate(char(0), 85))) select @sidhigh = convert(varbinary(85), (replicate(char(1), 85))) select  @spidlow  = 0 ,@spidhigh = 32767 IF (@loginame IS     NULL)  --Simple default to all LoginNames. GOTO LABEL_17PARM1EDITED -- select @sid1 = suser_sid(@loginame) select @sid1 = null if exists(select * from master.dbo.syslogins where loginname = @loginame) select @sid1 = sid from master.dbo.syslogins where loginname = @loginame IF (@sid1 IS NOT NULL)  --Parm is a recognized login name. begin select @sidlow  = suser_sid(@loginame) ,@sidhigh = suser_sid(@loginame) GOTO LABEL_17PARM1EDITED end IF (lower(@loginame) IN ('active'))  --Special action, not sleeping. begin select @loginame = lower(@loginame) GOTO LABEL_17PARM1EDITED end IF (patindex ('%[^0-9]%' , isnull(@loginame,'z')) = 0)  --Is a number. begin select @spidlow   = convert(int, @loginame) ,@spidhigh  = convert(int, @loginame) GOTO LABEL_17PARM1EDITED end RaisError(15007,-1,-1,@loginame) select @retcode = 1 GOTO LABEL_86RETURN LABEL_17PARM1EDITED: --------------------  Capture consistent sysprocesses.  ------------------- SELECT spid ,status ,sid ,hostname ,program_name ,cmd ,cpu ,physical_io ,blocked ,dbid ,convert(sysname, rtrim(loginame)) as loginname ,spid as 'spid_sort'  ,substring( convert(varchar,last_batch,111) ,6  ,5 ) + ' ' + substring( convert(varchar,last_batch,113) ,13 ,8 ) as 'last_batch_char' INTO    #tb1_sysprocesses from master.dbo.sysprocesses   (nolock) --------Screen out any rows? IF (@loginame IN ('active')) DELETE #tb1_sysprocesses  where   lower(status)  = 'sleeping' and  upper(cmd)    IN ( 'AWAITING COMMAND' ,'MIRROR HANDLER' ,'LAZY WRITER' ,'CHECKPOINT SLEEP' ,'RA MANAGER'                                   ) and  blocked = 0 --------Prepare to dynamically optimize column widths. Select @charsidlow     = convert(varchar(85),@sidlow) ,@charsidhigh    = convert(varchar(85),@sidhigh) ,@charspidlow     = convert(varchar,@spidlow) ,@charspidhigh    = convert(varchar,@spidhigh) SELECT @charMaxLenLoginName =convert( varchar,isnull( max( datalength(loginname)) ,5)) ,@charMaxLenDBName =convert( varchar,isnull( max( datalength( rtrim(convert(varchar(128),db_name(dbid))))) ,6)) ,@charMaxLenCPUTime =convert( varchar,isnull( max( datalength( rtrim(convert(varchar(128),cpu)))) ,7)) ,@charMaxLenDiskIO=convert( varchar,isnull( max( datalength( rtrim(convert(varchar(128),physical_io)))) ,6)) ,@charMaxLenCommand =convert( varchar,isnull( max( datalength( rtrim(convert(varchar(128),cmd)))) ,7)) ,@charMaxLenHostName =convert( varchar,isnull( max( datalength( rtrim(convert(varchar(128),hostname)))) ,8)) ,@charMaxLenProgramName =convert( varchar,isnull( max( datalength( rtrim(convert(varchar(128),program_name)))) ,11)) ,@charMaxLenLastBatch =convert( varchar,isnull( max( datalength( rtrim(convert(varchar(128),last_batch_char)))) ,9)) from #tb1_sysprocesses where -- sid >= @sidlow -- and sid <= @sidhigh -- and spid >= @spidlow and spid <= @spidhigh --------Output the report. EXECUTE( ' SET nocount off SELECT              SPID          = convert(char(5),spid)             ,Status        =                   CASE lower(status)                      When ''sleeping'' Then lower(status)                      Else                   upper(status)                   END             ,Login         = substring(loginname,1,' + @charMaxLenLoginName + ')             ,HostName      =                   CASE hostname                      When Null  Then ''  .''                      When '' '' Then ''  .''                      Else    substring(hostname,1,' + @charMaxLenHostName + ')                   END             ,BlkBy         =                   CASE               isnull(convert(char(5),blocked),''0'')                      When ''0'' Then ''  .''                      Else            isnull(convert(char(5),blocked),''0'')                   END             ,DBName        = substring(case when dbid = 0 then null when dbid <> 0 then db_name(dbid) end,1,' + @charMaxLenDBName + ')             ,Command       = substring(cmd,1,' + @charMaxLenCommand + ')             ,CPUTime       = substring(convert(varchar,cpu),1,' + @charMaxLenCPUTime + ')             ,DiskIO        = substring(convert(varchar,physical_io),1,' + @charMaxLenDiskIO + ')             ,LastBatch     = substring(last_batch_char,1,' + @charMaxLenLastBatch + ')             ,ProgramName   = substring(program_name,1,' + @charMaxLenProgramName + ')       into tmp_dbuser            --Added line by 王建军       from  #tb1_sysprocesses  --Usually DB qualification is needed in exec().       where spid >= ' + @charspidlow  + '       and    spid <= ' + @charspidhigh + '       -- (Seems always auto sorted.)   order by spid_sort SET nocount on ' ) /*****AKUNDONE: removed from where-clause in above EXEC sqlstr              sid >= ' + @charsidlow  + '       and    sid <= ' + @charsidhigh + '       and **************/ LABEL_86RETURN: if (object_id('tempdb..#tb1_sysprocesses') is not null)             drop table #tb1_sysprocesses ----------------------------------------------------------- -- 显示锁定资源 选自sp_lock系统存储过程 ----------------------------------------------------------- select  lock.spid, who.dbname as 数据库, object_name(lock.objId) as 被锁定表, lock.type as 锁类型, lock.mode as 锁模式, lock.status as 锁状态, who.hostname as 用户主机, who.login as 登录名, who.programname as 应用程序, who.status as 用户状态, lock.indid, lock.resource from ( select  convert (smallint, req_spid) As spid, rsc_dbid As dbid, rsc_objid As ObjId, rsc_indid As IndId, substring (v.name, 1, 4) As Type, substring (rsc_text, 1, 16) as Resource, substring (u.name, 1, 8) As Mode, substring (x.name, 1, 5) As Status from  master.dbo.syslockinfo, master.dbo.spt_values v, master.dbo.spt_values x, master.dbo.spt_values u where   master.dbo.syslockinfo.rsc_type = v.number and v.type = 'LR' and master.dbo.syslockinfo.req_status = x.number and x.type = 'LS' and master.dbo.syslockinfo.req_mode + 1 = u.number and u.type = 'L' ) lock,tmp_dbuser who where lock.spid=who.spid and  who.dbname=db_name() and lock.objid>0 order by lock.spid if (object_id('tmp_dbuser') is not null)             drop table tmp_dbuser GO

还其他可能吗

有必要的话,也用事件探察器跟踪下.

阻塞 , 事物没有提交;

锁没有释放,看看那个进程锁住了。 select * from sysprocesses where blocked > 0 or spid in (select blocked from sysprocesses)

接分先!

上一篇:sql2005分页存储过程+动态排序 0fredrickhu]
下一篇:大家推荐本关于SQL Server 2005 SSIS的书籍!!! 30分,无满意结帖,结帖人sunbird69]

相关文章

相关评论