sql server 某张表连接超时,无法打开!

hzwnx1 2004-12-21 11:15:50
其它表打开正常,某张表偶尔会有连接超时,无法打开,在服务器企业管理器操作也是如此,请教这是什么原因引起的,注:这张表数据较大,几乎24小时都是数据对它进行操作,主要是插入和修改!
...全文
252 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2004-12-22
  • 打赏
  • 举报
回复
--出问题的时候,你在查询分析器中,执行下面的代码,看看出问题的表是否出现在结果集中

use master
go

--查看锁信息
create table #t(req_spid int,obj_name sysname)

declare @s nvarchar(4000)
,@rid int,@dbname sysname,@id int,@objname sysname

declare tb cursor for
select distinct req_spid,dbname=db_name(rsc_dbid),rsc_objid
from master..syslockinfo where rsc_type in(4,5)
open tb
fetch next from tb into @rid,@dbname,@id
while @@fetch_status=0
begin
set @s='select @objname=name from ['+@dbname+']..sysobjects where id=@id'
exec sp_executesql @s,N'@objname sysname out,@id int',@objname out,@id
insert into #t values(@rid,@objname)
fetch next from tb into @rid,@dbname,@id
end
close tb
deallocate tb

select 进程id=a.req_spid
,数据库=db_name(rsc_dbid)
,类型=case rsc_type when 1 then 'NULL 资源(未使用)'
when 2 then '数据库'
when 3 then '文件'
when 4 then '索引'
when 5 then '表'
when 6 then '页'
when 7 then '键'
when 8 then '扩展盘区'
when 9 then 'RID(行 ID)'
when 10 then '应用程序'
end
,对象id=rsc_objid
,对象名=b.obj_name
,rsc_indid
from master..syslockinfo a left join #t b on a.req_spid=b.req_spid

go
drop table #t

zjcxc 2004-12-22
  • 打赏
  • 举报
回复
如果重启数据库就恢复正常了,说明应该是表被锁定的问题
lzymagi 2004-12-22
  • 打赏
  • 举报
回复
如果数据量大的话,多人同时查询就有可能出现超时
hzwnx1 2004-12-22
  • 打赏
  • 举报
回复
我觉着很奇怪,好像不是表锁定了,昨天晚上凌晨和早上8点的数据都用户都打开界面并准时提交了数据,说明他们当时操作的时候没有连接超时的问题,可是当我上班后(8点以后),没过10分钟,又出现了同样的问题,这时各个部门都开始使用数据库,而晚上除了一个部门外使用这一个表外,再没有人使用,应该和数据库的性能有关系吧,高手请指教!
xyzliuin 2004-12-21
  • 打赏
  • 举报
回复
表被锁了

对这个表作的所有操作要及时更新,commit
子陌红尘 2004-12-21
  • 打赏
  • 举报
回复
应该是其他进程把表用高级锁锁定了没有释放。
NinGoo 2004-12-21
  • 打赏
  • 举报
回复
dbcc checktable看看
cgsun 2004-12-21
  • 打赏
  • 举报
回复
數據太大了,不能在查詢分析器里看碼

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧