尽量少用游标static型游标在tempdb数据库中需要占用非常大的空间,
而Keyset型则不需要占用如此多的空间
一个游标使用top子句引用了某个视图,它马上就变成了static型。
如果一个查询包含有distinct、group by之类的参数,也将立即转换成static型。
如果一个查询引用了一个带有触发器的表,同样将变成静态型。
而如果一个查询因为使用了order-by子句产生了内部的工作表,
或者引用了远程服务器或链接服务器上的表,将产生一个keyset型的游标
keyset型游标,可以反映出对游标在键集中那一部分的更新和删除操作
Static型游标不能反映数据库基础数据的变化
forward-only型游标看不到对非主键列的更新

解决方案 »

  1.   

    my god .. 
    我不是要听什么尽量少用游标的话~~~~
    我是问为什么使用游标会启动那么多的事务,
    有没有办法取消使游标而来的事务
      

  2.   

    you can try :1.SET IMPLICIT_TRANSACTIONS OFF
    2.YOU CAN DECLARE THE CURSOR  IN MS SQLSERVER STORED PROCEDURE , ADO.NET CALL THIS STORED PROCEDURE.
    AND TRY AGAIN.
      

  3.   

    我自从使用 SQL Server开发以来,所亲身体验的“事务处理”的死机问题,全是游标惹的祸。即使设计得很好的程序,也会因为其它人或者系统的使用了游标的过程而死机,自己花一个小时重写,一切就好了。
      

  4.   

    本来,一条简单的初学者都写的很好的SQL语句,非要使用游标?
      

  5.   

    to: leimin(黄山光明顶)
    1。SET IMPLICIT_TRANSACTIONS OFF 我早就试过了。
    2。不要当存储过程是神啊,它只是作为面向API的接口而已。