Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如果在t-SQL中的存储过程中不使用SETNOCOUNT ON,最糟糕的情况是什么?_Sql Server_Nocount - Fatal编程技术网

Sql server 如果在t-SQL中的存储过程中不使用SETNOCOUNT ON,最糟糕的情况是什么?

Sql server 如果在t-SQL中的存储过程中不使用SETNOCOUNT ON,最糟糕的情况是什么?,sql-server,nocount,Sql Server,Nocount,MSDN国家 SET-NOCOUNT ON可防止将DONE_IN_PROC消息发送到 存储过程中每条语句的客户端。对于存储过程 包含几个不返回太多实际数据的语句, 或者,对于包含Transact-SQL循环的过程,请设置SET-NOCOUNT 打开可以显著提高性能,因为网络 交通量大大减少 减少网络流量是使用NOCOUNT ON的唯一原因,还是它做了其他任何事情?您不会从该过程中得到受影响的行数 我认为,以及中包含的链接将有所帮助 它在某些情况下帮助了一些开发人员,尤其是在调试时,DBA更是如此

MSDN国家

SET-NOCOUNT ON可防止将DONE_IN_PROC消息发送到 存储过程中每条语句的客户端。对于存储过程 包含几个不返回太多实际数据的语句, 或者,对于包含Transact-SQL循环的过程,请设置SET-NOCOUNT 打开可以显著提高性能,因为网络 交通量大大减少


减少网络流量是使用NOCOUNT ON的唯一原因,还是它做了其他任何事情?

您不会从该过程中得到受影响的行数

我认为,以及中包含的链接将有所帮助


它在某些情况下帮助了一些开发人员,尤其是在调试时,DBA更是如此

您无法从进程中获得受影响的行数

我认为,以及中包含的链接将有所帮助


它在某些情况下帮助了一些开发人员,尤其是在调试时,DBA更是如此

在旧API的ADO中,在ADO.Net之前,它会对程序返回的内容感到困惑。它会认为受影响的X行就是您要查找的结果集。它将返回该值,而不是您选择的任何值


不过,这似乎不再是一个问题。

在旧API的ADO中,在ADO.Net之前,它会对从进程返回的内容感到困惑。它会认为受影响的X行就是您要查找的结果集。它将返回该值,而不是您选择的任何值


不过,这似乎不再是一个问题。

在许多地方,您不希望从存储的进程中获得任何输出。例如,一个使用临时表的存储过程,然后一个最终选择将显示每个部分受影响的行数,如果它依赖于存储过程的返回,那么这可能会破坏对存储过程的调用。正如其他答案所说,这可能是一些调用库的问题

当然,这也是一个存在循环的问题,因为对于某些写得不好的过程,最终可能会产生数千个计数

因此,作为回答,您可能会发现您需要打开NOCOUNT,或者您可能需要为大多数例程设置NOCOUNT,但在您的最终查询之前关闭它,或者您可以不使用它


大多数情况下,这不是一个问题,但如果事情不正常,请注意这可能是问题的根源。

在许多地方,您不希望存储过程有任何输出。例如,一个使用临时表的存储过程,然后一个最终选择将显示每个部分受影响的行数,如果它依赖于存储过程的返回,那么这可能会破坏对存储过程的调用。正如其他答案所说,这可能是一些调用库的问题

当然,这也是一个存在循环的问题,因为对于某些写得不好的过程,最终可能会产生数千个计数

因此,作为回答,您可能会发现您需要打开NOCOUNT,或者您可能需要为大多数例程设置NOCOUNT,但在您的最终查询之前关闭它,或者您可以不使用它

大多数情况下,这不是一个问题,但要注意,如果事情不正常,这可能是问题的根源。

可能的重复