当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:21:00  来源:本站整理

SET NOCOUNT的用法和注意事项[MSSQL防范]

赞助商链接



  本文“SET NOCOUNT的用法和注意事项[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
查BOL:
当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数).当 SET NOCOUNT 为 OFF 时,返回计数.
即便当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数.
当 SET NOCOUNT 为 ON 时,将不给客户端发送存储历程中的每个语句的 DONE_IN_PROC 信息.当利用 Microsoft? sql server? 供应的实用工具(QA)履行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、UPDATE 和 DELETE)完毕时将不会在查询后果中显示"nn rows affected".
假如存储历程中包含的一些语句并不返回很多实际的数据,则该设置由于大量削减了网络流量,因此可明显提高性能.
SET NOCOUNT 设置是在履行或运行时设置,而不是在解析时设置.
假如存储历程中有多个语句,则默许情形下,SQL Server在每个语句完成时给客户端利用程序发送一条消息,具体阐明每个语句所影响的行数.大大都利用程序不需求这些消息.假如确信利用程序不需求他们,可以禁用这些消息,以提高傲速网络的性能.我们便可以通过SET NOCOUNT会话设置为利用程序禁用这些消息.(其实大部份利用程序都不需求这个值)
需求注意的是:
1.存储历程:
象create table返回了记录集,并且连insert into语句也返回了记录集,不过该记录集得一种分外的记录集(没有字段,不能对该记录集举行任何操作), OLEDB和ODBC存在一个很大的差别,向odbc取记录集时,odbc过滤了上面所称的特别记录集(那种只占位置但不能举行任何操作的记录集——多由create table或insert into产生),而向oledb取记录集时,oledb并没有将特别记录集过滤.所以在利用存储历程返回记录集时,在不但愿返回记录的地方,应当利用set nocount on禁止存储历程返回记录集,不然大概会绕很多弯路.
2.触发器:
????倡议不要让触发器返回任何后果.这是因为对这些返回后果的特别处理必须写入每个答应对触发器表举行改正的利用程序中.为了禁止从触发器返回任何后果,不要在触发器内定义包含SELECT语句或变量赋值.假如必须在触发器中举行变量赋值,则应当在触发器的开首利用SET NOCOUNT ON语句以避免返回任何后果集.
????本日我就碰到了触发器返回后果集,造成对触发器表删除出错,假如是删除一条记录可以,多条则不行,提醒:Key column information si insufficient or incorrect.Too many rows were affected by updat
  以上是“SET NOCOUNT的用法和注意事项[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • SQL Server自增长列插入指定值--SET IDENTITY_INSERT ON|OFF
  • 电脑开机黑屏显示"press Del to run setup"的弊端解析及办理办法
  • MySQL中的SQL-- TEXT、DATE、和SET数据范例
  • TOP N 和SET ROWCOUNT N 哪个更快
  • SET NOCOUNT的用法和注意事项
  • 在Recordset对象中查询记录的办法
  • 操纵Sets
  • java中的BitSet
  • J2ME游戏开辟学习之用setClip分割图片
  • 另类的办法访谒Set调调集的元素
  • J2ME中setClip办法操纵详解
  • JDBC底子教程之ResultSet对象
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .