我整个下午都在搜索,不相信这与其他漂浮的问题(如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