受这个问题的启发,在SET NOCOUNT上有不同的看法…
我们是否应该对SQL Server使用SET NOCOUNT ON?如果没有,为什么不呢?
它的作用 编辑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问题,SETNOCOUNT ON
无法设置在哪里
编辑3:还有更多信息,多亏了我的MVP同事
好的,现在我已经完成了研究,这是交易:
在TDS协议中,每个查询SET NOCOUNT ON
仅保存9个字节,而文本“ SET NOCOUNT ON”本身为14个字节。我曾经认为这123 row(s) affected
是从服务器以纯文本形式在单独的网络数据包中返回的,但事实并非如此。实际上,它是DONE_IN_PROC
响应中称为“嵌入”的小结构。它不是单独的网络数据包,因此不会浪费往返时间。
我认为您几乎可以始终坚持默认计数行为,而不必担心性能。但是,在某些情况下,事先计算行数会影响性能,例如仅向前的游标。在这种情况下,可能需要NOCOUNT。除此之外,绝对没有必要遵循“尽可能使用NOCOUNT”的座右铭。
这是关于SETNOCOUNT
设置的微不足道的非常详细的分析:http : //daleburnett.com/2014/01/everything-ever-wanted-
know-set-nocount/
右键桌面设置中有一个“开启工作区“这个类似虚拟桌面,可以有多个桌面,工作的时候很有用。 桌面右键设置唤醒和黑屏之后唤醒不需要输入密码,既然是平时的开发机,那就没啥多大隐私,而且是在自己家里, 设置密码太麻烦了。 改变鼠标图标大小,小了我看着不爽,下面三个文章是我找的,但是都不适合我: 我最终的方式是:安装 dconf-tools 安装后好,编辑这个文件,命令:gedit ~/ .Xresource
小行星开场 小行星开场是 krpano 1.19 pr3+ 默认皮肤带有的功能,默认关闭。 想开启小行星也很简单,可以找到tour.xml,然后搜索littleplanetintro将其值设置为true即可。 <skin_settings ... littleplanetintro="true" ... /> 更详细的设置可以在skin/vtourskin.xml文件中修
我想强制我的Symfony 2.5应用程序的区域设置为。我希望这个区域设置用于strftime()函数。 我的: 我正在我的一个控制器中使用以下代码来调试: 当这样执行时,它显示:。 但是,当第一行未注释时,它会显示:,因此区域设置已安装在系统中并正常工作。 我如何使Symfony始终使用配置中指定的语言环境? $locale-a:
问题内容: 受此问题启发,在SET NOCOUNT上有不同的看法… 我们是否应该将SET NOCOUNT ON用于SQL Server?如果没有,为什么不呢? 它的作用编辑6,2011年7月22日 它抑制了任何DML之后的“受影响的xx行”消息。这是一个结果集,发送时,客户端必须对其进行处理。它很小,但是可以测量(请参见下面的答案) 对于触发器等,客户端将收到多个“受影响的xx行”,这将导致某些O
问题内容: 我正在设置一个LAMP服务器,并想将Apache的umask设置设置为002,以便所有Apache创建的文件都设置了组写许可权位(以便同一组的成员可以覆盖这些文件)。 有谁知道如何做到这一点?我知道在Ubuntu上,您可以使用/ etc /apache2/envvars文件配置umask,但是服务器正在运行CentOS。 更新 此问题与我刚才问的另一个问题(LAMP服务器的Linux用
问题内容: 当您想使用Javascript更改HTML时,如何知道何时使用以下任一方法? 问题答案: 设置通常用于输入/表单元素。通常用于div,span,td和类似元素。