Остановите SQL Server Management Studio от добавления ANSI_NULLS и QUOTED_IDENTIFIER. - PullRequest
9 голосов
/ 09 декабря 2011

Как запретить SQL Management Studio (10.50.2500.0) добавлять это в начало каждой хранимой процедуры, когда я щелкаю правой кнопкой мыши / Изменить?

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Ни одна из этих настроек мне не нужна.ANSI_NULLS ON и QUOTED_IDENTIFIER ON установлены на всех моих серверах, БД и подключениях, которые я делаю.Кроме того, я никогда не использую двойные кавычки (я использовал квадратные скобки для зарезервированных слов) и все свои пустые поля, я правильно использую IS NULL при необходимости.

Я удаляю настройки каждый раз, когда редактирую процедуру.Все мои процедуры правильно настроены, и это никогда не изменится в моей среде.Проверено:

SELECT uses_ansi_nulls, uses_quoted_identifier
FROM sys.sql_modules
WHERE object_id = object_id( 'proc_name' )

1 Ответ

8 голосов
/ 09 декабря 2011

Не уверен, считается ли это ответом или бесполезным отсутствием ответа, но, как предположил Damien_The_Unbeliever , вы абсолютно не хотите, чтобы SSMS прекратил сценарии этих строк .Поскольку они находятся в таблице sql_modules, они составляют неотъемлемую часть определения хранимой процедуры вместе с самим кодом SQL.Таким образом, они не могут быть «отключены» больше, чем ваш код SQL.

Если вы создаете / изменяете хранимую процедуру из соединения, которое имеет значение параметра ANSI_NULLS, отличное от того, которое использовалось при сохранениипроцедура была создана / определена, затем вы измените поведение этой хранимой процедуры навсегда!

Именно по этой причине SSMS (и любой полуприличный инструмент для создания сценариев объектов SQL) будет всегда выводит эти строки - потому что, если вы удалите их или измените их, вы измените определение хранимой процедуры (удаление их, в частности, плохо, потому что это означает, что поведение хранимой процедуры, в зависимости от того, чтосоединение, из которого оно публикуется, может различаться).

При быстром поиске в Google по запросу «хранимая процедура ANSI_NULLS QUOTED_IDENTIFIER» лучшим результатом является следующая статья, которая, как представляется, очень четко объясняет параметры и их влияние:http://ranjithk.com/2010/01/10/understanding-set-quoted_identifier-onoff/

...