Мы пытаемся диагностировать некоторые проблемы с производительностью как на SQL Server 2008, так и на SQL Server 2008 R2, возникающие из-за плохих планов запросов, которые кэшируются от имени пользователей, но не могут точно воспроизвести их в SSMS поскольку мы не можем убедить SQL Server соответствовать значению set_options приложения 255, которое возвращается из sys.dm_exec_plan_attributes, иначе. @@ОПЦИИ.@@ ОПЦИИ бит-бит против DISABLE_DEF_CNST_CHK
@@ ВАРИАНТЫ битовая маска описана на следующей странице MSDN: Configure the user options Server Configuration Option
В соответствии с приведенной выше страницы следующая комбинация операторов SET должны давать в @@ OPTIONS значение 255:
SET DISABLE_DEF_CNST_CHK ON
SET IMPLICIT_TRANSACTIONS ON
SET CURSOR_CLOSE_ON_COMMIT ON
SET ANSI_WARNINGS ON
SET ANSI_PADDING ON
SET ANSI_NULLS ON
SET ARITHABORT ON
SET ARITHIGNORE ON
SET QUOTED_IDENTIFIER OFF
SET NOCOUNT OFF
SET ANSI_NULL_DFLT_ON OFF
SET ANSI_NULL_DFLT_OFF OFF
SET CONCAT_NULL_YIELDS_NULL OFF
SET NUMERIC_ROUNDABORT OFF
SET XACT_ABORT OFF
Но когда вы EXEC, что вы получите предупреждение:
Line 1: The option 'DISABLE_DEF_CNST_CHK' is obsolete and has no effect.
И PRINT @@OPTIONS
возвращает 254 вместо 255.
Понятно, что Connection Pooling может сортировать это, когда вы видите EXEC sp_reset_connection
в SQL Profiler, так как ни один из наших кодов приложений фактически не изменяет никаких параметров SET. Но, конечно, мы не можем назвать sp_reset_connection из SSMS:
Msg 208, Level 16, State 9, процедура sp_reset_connection, линия 1
Неверное имя объекта 'sp_reset_connection'.
Есть ли уловка, чтобы получить последний бит DISABLE_DEF_CNST_CHK? Альтернативное имя параметра или системная таблица для настройки?
Таким образом, вы сузили его к плану и подтвердили SSMS и приложение использует разные планы? – artm
Так кажется. Я предполагаю, что предупреждение правильное и что DISABLE_DEF_CNST_CHK больше не действует. Что мне подсказывает, что 0x01 был заменен другим вариантом, который влияет на формирование плана. – AlwaysLearning
Вы проверили разницу между планами? – artm