如何为所有查询设置NOCOUNT ON

时间:2018-05-28 09:18:46

标签: sql-server vbscript asp-classic

我有一个包含许多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'"

2 个答案:

答案 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将提高绩效。