当前位置: 首页 > 面试题库 >

设置NOCOUNT ON用法

文增
2023-03-14
问题内容

受此问题启发,在SET NOCOUNT上有不同的看法…

我们是否应该将SET NOCOUNT ON用于SQL Server?如果没有,为什么不呢?

它的作用编辑6,2011年7月22日

它抑制了任何DML之后的“受影响的xx行”消息。这是一个结果集,发送时,客户端必须对其进行处理。它很小,但是可以测量(请参见下面的答案)

对于触发器等,客户端将收到多个“受影响的xx行”,这将导致某些ORM,MS Access,JPA等的各种错误(请参见下面的编辑)

背景:

一般公认的最佳实践(直到这个问题之前,我一直认为)是SET NOCOUNT ON在SQL Server的触发器和存储过程中使用。我们到处都使用它,一个快速的google也显示出很多SQL Server MVP也同意。

MSDN说,这可能会破坏.net SQLDataAdapter。

现在,这对我来说意味着SQLDataAdapter仅限于完全CRUD处理,因为它希望“ n个受影响的行”消息匹配。因此,我不能使用:

如果存在则避免重复(不影响行的消息)注意:请谨慎使用
不存在(行数少于预期)
过滤掉琐碎的更新(例如,实际上没有数据更改)
之前进行任何表访问(例如记录)
隐藏复杂性或去甲化
等等
在问题marc_s(谁知道他的SQL知识)说不要使用它。这与我的想法有所不同(我也认为自己在SQL方面有些能力)。

我可能会遗漏一些东西(随意指出显而易见的地方),但是你们在那里的人们怎么想?

注意:已经有好几年了,因为我现在不使用SQLDataAdapter,所以看到了此错误。

在评论和问题之后进行编辑:

编辑:更多的想法…

我们有多个客户端:一个可以使用C#SQLDataAdaptor,另一个可以使用Java的nHibernate。这些可能会以不同的方式受到影响SET NOCOUNT ON。

如果将存储的procs当作方法,那么假设某种内部处理以某种方式用于您自己的目的是不好的形式(反模式)。

编辑2:触发打破nHibernate问题,SET NOCOUNT ON无法设置在哪里

(不,不是this的重复)

编辑3:还有更多信息,多亏了我的MVP同事

KB 240882,导致在SQL 2000及更早版本上断开连接的问题


问题答案:

好的,现在我已经完成研究,这是交易:

在TDS协议中,每个查询SET NOCOUNT ON仅保存9个字节,而文本“ SET NOCOUNT ON”本身高达14个字节。我曾经认为这123 row(s) affected是从服务器以纯文本形式在单独的网络数据包中返回的,但事实并非如此。实际上,它是DONE_IN_PROC响应中称为“ 嵌入” 的小结构。它不是一个单独的网络数据包,因此不会浪费往返时间。

我认为您几乎可以始终坚持默认计数行为,而不必担心性能。但是,在某些情况下,事先计算行数会影响性能,例如仅向前的游标。在这种情况下,可能需要NOCOUNT。除此之外,绝对没有必要遵循“尽可能使用NOCOUNT”的座右铭。

这是关于SET NOCOUNT设置的微不足道的非常详细的分析:http : //daleburnett.com/2014/01/everything-ever-wanted-know-set-nocount/



 类似资料:
  • 小行星开场 小行星开场是 krpano 1.19 pr3+ 默认皮肤带有的功能,默认关闭。 想开启小行星也很简单,可以找到tour.xml,然后搜索littleplanetintro将其值设置为true即可。 <skin_settings ... littleplanetintro="true" ... /> 更详细的设置可以在skin/vtourskin.xml文件中修

  • 问题内容: 当您想使用Javascript更改HTML时,如何知道何时使用以下任一方法? 问题答案: 设置通常用于输入/表单元素。通常用于div,span,td和类似元素。

  • 问题内容: 当我跑步时 在Mac上(Mac OS X 10.6.5,Python 2.6.1),我得到以下结果。 它们分为5类。 /Library/Python/2.6/site-packages/*.egg /Library/Python/2.6/site-packages 框架/Python.framework/版本/2.6/lib/python2.6 框架/Python.framework/

  • 问题内容: 受这个问题的启发,在SET NOCOUNT上有不同的看法… 我们是否应该对SQL Server使用SET NOCOUNT ON?如果没有,为什么不呢? 它的作用 编辑6,2011年7月22日 它抑制了任何DML之后的“受影响的xx行”消息。这是一个结果集,发送时,客户端必须对其进行处理。它很小,但是可以测量(请参见下面的答案) 对于触发器等,客户端将收到多个“受影响的xx行”,这将导致

  • 问题内容: 如何使用jQuery设置和取消设置Cookie,例如创建一个名为的Cookie 并将其值设置为? 问题答案: 2019年4月更新 Cookie的读取/操作不需要jQuery,因此请不要使用下面的原始答案。 转到https://github.com/js-cookie/js-cookie,然后在其中使用不依赖jQuery的库。 基本示例: 有关详细信息,请参见github上的文档。 参见

  • 使用指南 - 统计设置 - 其它设置 为您详细介绍百度统计所支持的各种设置功能及使用方法,比如设置排除规则、设置跨域、添加指定广告追踪、设置转化目标等。 其它设置 如何关闭数据采集 数据导出服务及其开通方法 统计图标如何设置 什么是统计图标