как установить NOCOUNT ON для всех запросов - PullRequest
0 голосов
/ 28 мая 2018

У меня сложное приложение со многими запросами SQL.Недавно я обнаружил, что SET NOCOUNT ON улучшает производительность и пропускную способность сервера, когда подсчет не требуется.Есть ли способ установить SET NOCOUNT ON для всех запросов без изменения сотен строк кода?(используя настройки SQL-сервера или программно)

мои текущие коды выглядят так:

Set con = Server.CreateObject("ADODB.Connection")
con.connectionString="DSN=MYDSN"
con.execute "update members set title='something'"

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Можно установить NOCOUNT ON глобально для всех сессий, включив бит 512 пользовательских опций :

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 улучшит производительность.

0 голосов
/ 28 мая 2018
...