今天碰到一个怪事,我一个客户的服务器安装的是SQL SERVER2000企业版,操作系统是WINDOWS2003 SERVER,打了SQL SP4补丁,另外说明一点,我们的程序是每年一个数据库,现在这个数据库从2011-1-1运行至今,数据库大约1.5G,我们的程序除了二个查询打不开以外,其他的都能打开,就是这二个查询有问题,刚开始提示是:死锁 thread/buffer之类的信息,刚开始以为SQL SERVER有问题,重装以后,现在提示超时,同样的程序,连接2010年度的数据库,并且2010年度的数据库比现在的数据库大的多,但查询很正常,然后我又现这个数据库备份到我的笔记本上进行测试,查询2秒就出来结果,这个现象我就纳闷了,用DBCC检测数据库也没有错误提示,请高手指点

解决方案 »

  1.   

    如果同一台服务器,2010年的数据库可以正常查出来,2011年的数据不行,那最可能还是2010年存数据的基表有问题,如果查询用到了a,b,c,d表,在查询分析器运行,单表查询看有没有问题select * from a
    select * from b
    select * from c
    select * from d
    看看会不会在查询那一个基表就会卡住或报错,如有,重建这个表.
      

  2.   

    还有一个原因是其中的表被锁住了,可能是事务没有提交的原因,在所有查询的表名后加with(nolock)试试
    如select * from a 改为
    select * from a with(nolock)
      

  3.   

    查询没有提交的事务
    select spid,*
    from master..sysprocesses
    where spid >= 50
    and open_tran > 0
      

  4.   

    不是
    USE master
    EXEC sp_configure 'show advanced option', '1'
    RECONFIGURE WITH OVERRIDE
    GOEXEC sp_configure 'max degree of parallelism', 1
    RECONFIGURE WITH OVERRIDE
    GO这是从微软网站上看到的,我将并行查询的参数由0 改为了 1就好了