我有一个包含许多SQL查询的复杂应用程序。我最近发现SET NOCOUNT ON
在不需要计数时可以提高服务器的性能和带宽。有没有办法为所有查询设置SET NOCOUNT ON
而无需修改数百行代码? (使用SQL server settigns或以编程方式)
我目前的代码如下:
Set con = Server.CreateObject("ADODB.Connection")
con.connectionString="DSN=MYDSN"
con.execute "update members set title='something'"
答案 0 :(得分:0)
答案 1 :(得分:0)
通过启用bit 512 of user options,可以全局为所有会话设置NOCOUNT ON
:
DECLARE @UserOptions int = (
SELECT CAST(value_in_use AS int) | 512
FROM sys.configurations
WHERE name = 'user options');
EXEC sp_configure 'user options', @UserOptions;
RECONFIGURE;
那就是说,我会谨慎这样做,因为它会影响服务器上的所有会话。这可能会破坏需要默认会话设置但尚未明确指定SET NOCOUNT OFF
的现有应用和工具。
对于使用SET NOCOUNT ON
所声称的性能优势,您的问题有很多评论。性能优势与否取决于客户端API及其在应用程序代码中的使用方式(例如服务器与客户端游标)。我们不应该总结SET NOCOUNT ON
将提高绩效。