执行sql语句的时候 提示“由于数据移动,未能继续以 NOLOCK 方式扫描。”这个错误
请问怎么解决!!!!请问怎么解决!!!!请问怎么解决!!!!

解决方案 »

  1.   

    当使用 NOLOCK 锁定提示或设置为 READ UNCOMMITTED 的事务隔离级别扫描时,可能会删除扫描当前位置处的页。当这种情况发生时,Microsoft® SQL Server™ 将无法继续扫描。对策
    该错误终止查询。重新提交查询或删除 NOLOCK 锁定提示。
      

  2.   

    继续请教 !!!怎么“删除NOLOCK 锁定提示”
      

  3.   

    select 语句里面把 with(nolock)子句去掉试试
      

  4.   

    加with nolock提高并发性。
    这种问题,说白了就是一种“既想马儿跑的好,又要马儿不吃草”的问题。问题本身就是矛盾的,个人觉得从本质上来说是无法解决的技术问题, 尽量绕开它: 要么等待(就是不加nolock),要么抛弃数据完整性及安全(这个不可取)
      

  5.   

    不建议用nolock,可能产生肮读
      

  6.   

    我们做查询,一般不加NOLOCK。
      

  7.   

    use db
     go
    begin transaction
    select 'aa','bb' from [table] with (nolock)
     end
      

  8.   

    在做一些报表统计时加nolock还是很必要的;
    因为数据本身是不断变化的,加nolock是可以接受的;楼主的问题是不是你的查询本身并没有写with(nolock)而出现的?
      

  9.   

    楼主最好能提供多些信息,比如sql版本,在什么情况下出现的?
    我之前在sql server 2008的log shipping 输助数据库(standby)模式下出现了楼主的情况
    未能解决,后来换做镜像加快照方式取代了部分log shipping.
      

  10.   

    谢谢各位的问答我的数据库开始是不知道什么原因出现了 “置疑”我在网上找了通过删除.ldf的方法把它还原。还原后数据库能用了。现在是当我程序中的存储过程一次运行多条sql语句就出现这个问题
      

  11.   

    我们表中好像没加“nolock”现在我是怀疑我从“置疑”还原过来是 .ldf文件没弄好出现这个问题的!请问有什么好的解决办法不?能不能就用原来的.mdf文件重新还原一次??我用的数据库是 sql server 2000
      

  12.   

    建议新建一个库,生成建表语句,然后将数据用DTS导入新库
    视图存储过程等生成脚本在新库里重建.再试试新库有没有问题,将新库和旧库数据文件放置在不同的逻辑盘.
      

  13.   

    加nolock当然是尽可能的加,我上面的意思是说在出问题的地方。
      

  14.   


    1.对数据库执行DBCC CHECKDB,检查是否有分配错误或是一致性错误。
    2.601错误并不一定就是执行带NOLOCK的查询才会触发的。ps:通过这样的方式让数据库online,要考虑的第一件事就是执行CHECKDB