问题标签 [nocount]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
28 浏览

delimiter - 每封邮件的查询结果导出

我尝试将每个电子邮件的查询结果导出为附件

这里的代码:

它工作正常,但我有两个问题:

  1. 第二行是空的:如何删除它(在查询中)?

  2. 在我使用的查询中:SET NOCOUNT ON,但在 xls 文件中我可以看到计数(见截图),如何删除它(在查询中)?

提前致谢

[[1]:https://i.stack.imgur.com/QPZlL.png][1]

0 投票
3 回答
121 浏览

sql-server - 如果我不在 T-SQL 的存储过程中使用 SET NOCOUNT ON,可能发生的最坏情况是什么?

MSDN 状态

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

减少网络流量是使用 NOCOUNT ON 的唯一原因,还是有其他作用?

0 投票
1 回答
505 浏览

c# - C# SqlCommand.ExecuteNonQuery() 和 SQL SET NOCOUNT ON

我整个下午都在搜索,不相信这与其他漂浮的问题(如ExecuteNonQuery() 和 SET NOCOUNT ON )重复。

我还发现了一篇关于使用 SQL 提示查找代码异味的有趣博客:SET NOCOUNT 问题(PE008 和 PE009),它确实涉及了一些有趣的细节,但仍然没有回答我的问题。

我有一个数据库服务器,管理员在其中勾选no count了服务器连接选项(在 SSMS 中,右键单击对象资源管理器中的服务器,转到属性,选择连接页面,在“默认连接选项”下,向下滚动直到找到“无计数”选择器)。

根据我所做的所有阅读,越来越多的管理员可能会no count选择提高性能的选项,因为结果行将不再发送回客户端。

因此,我的问题主要集中在 C# 中的SqlCommand.ExecuteNonQuery 方法上,因为它依赖于以下事实:

对连接执行 Transact-SQL 语句并返回受影响的行数

但如果SET NOCOUNT ON强制执行,则结果将始终为 -1。我已经阅读了人们如何推荐而不是使用select @rowcount = @@ROWCOUNT,但这并不能弥补您从SqlCommand.ExecuteNonQuery方法中失去功能的事实,以至于您不妨开始使用SqlCommand.ExecuteScalar

所以我的问题是,为了最佳实践,我们是否应该开始将 SQL Server 设置为no count(或者至少期望他们将在未来几年内开始配置它们),然后如果是这样,我们应该强制SET NOCOUNT OFF还是赞成?SqlCommand.ExecuteNonQuery_select @rowcount = @@ROWCOUNT

0 投票
1 回答
179 浏览

sql - 如何在 vb.net 中设置 NOCOUNT

在应用程序中设置“SET NOCOUNT ON”总是有利于应用程序的性能。但是我如何在 VB.net 项目的 vb.net 应用程序中设置它?这是我的代码

0 投票
0 回答
752 浏览

sql-server - 触发器返回了一个结果集和/或在 SET NOCOUNT OFF 的情况下运行 - 不确定是什么原因造成的

我遇到了一个让我难过的 SQL Server 触发器的间歇性错误,因为看起来我正在做所有正确的事情来防止错误发生。我得到的错误是“一个触发器返回了一个结果集和/或在另一个未完成的结果集处于活动状态时以 SET NOCOUNT OFF 运行。” 我进行了网络搜索,发现了一些应用于触发器的东西,我认为这些东西可以解决问题,但似乎并没有这样做。这是一个很少发生的问题,但足以成为一个问题。不过,我无法说出为什么会这样。这是此触发器的示例:

触发器所做的只是监听对名为 Appointment 的表上的一组字段的更改(或删除此表中的记录)。如果在 WHERE 子句中检查的字段有删除或更改,它将向 DispatchQueue 表中插入一条新记录,该表由与此处的问题无关的单独进程使用。

之前在寻找此问题的解决方案时,我得出的普遍共识是,将 SET NOCOUNT ON 命令添加到触发器的开头并将 SET NOCOUNT OFF 命令添加到最后我的触发器线。不过,在这种情况下这不起作用,所以我不知道下一步该往哪里看。

最后删除 SET NOCOUNT OFF 命令会解决问题吗?我想知道它是否可能,因为在显示问题正在发生的 SQL 跟踪中,在运行 SET NOCOUNT OFF 语句后立即报告了错误。如果是这样,那会带来任何其他潜在问题吗?我的触发器似乎没有返回一个结果集(它只是运行一个 EXISTS 语句来检查我是否正在处理插入或删除,然后它运行一个 INSERT 语句将数据插入另一个表),但是它可能会在我没有看到或理解的某个地方(或以某种方式)这样做吗?

我的触发器之外的数据库中发生的其他事情是否会导致在运行时报告此问题?

我感谢任何和所有的洞察力。请让我知道我是否可以提供有关此的任何进一步信息。

0 投票
1 回答
110 浏览

python - 从 Python 调用 MS SQL (Azure) 中的 INSERT 语句会导致错误,NO COUNT ON 不起作用

我是新手,请多多包涵。我正在尝试从 Python 到 MS SQL 数据库中进行非常简单的插入。我试过纯 pyodbc 导致“pyodbc.ProgrammingError:没有结果。以前的 SQL 不是查询。”

我尝试了 sqlalchemy、pyodbc 和 pandas 的组合,导致“sqlalchemy.exc.ResourceClosedError:此结果对象不返回行。它已自动关闭。”

我尝试过使用 SET NOCOUNT ON,将代码放入存储过程并调用该过程和各种其他组合。似乎没有任何效果。

我将不胜感激任何帮助。谢谢你。