SQL SERVER и SET ANSI_NULLS ON, SET QUOTED_IDENTIFIER ON - PullRequest
0 голосов
/ 19 февраля 2019

Так что я слепо использовал ansi_nulls on, quoted_identifier on при создании сценариев, потому что sqlserver генерирует их автоматически при создании сценариев объектов.

У меня нет времени, чтобы задуматься о таком тривиальном бессмысленном:-) Но я думаю, вопросы нужно задавать.

Учитывая, что это рекомендуемые настройки, есть ли опция, которую можно установить (а) для базы данных и (б) для сервера, такчто они ВСЕГДА ВКЛЮЧЕНЫ по умолчанию, а не отдельными скриптами?

И если да, то как / где можно просмотреть текущие настройки по умолчанию?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Современные клиентские API SQL Server устанавливают по умолчанию ANSI_NULLS ON и QUOTED_IDENTIFIER ON.Таким образом, параметры будут включены по умолчанию и будут иметь приоритет над настройками параметров базы данных SET, и вам не нужно включать операторы SET в сценарии DDL.

Однако, если у вас есть утилита SQLCMD,который устанавливает QUOTED_IDENTIFIER OFF по причинам обратной совместимости.Нужно вызвать SQLCMD с аргументом -I, чтобы установить QUOTED_IDENTIFIER ON.

0 голосов
/ 19 февраля 2019

Оба установлены на уровне соединения, а не базы данных.Если вы не укажете их в своем скрипте, они будут использовать настройки соединения по умолчанию.Вы можете увидеть их, щелкнув правой кнопкой мыши по вашему серверу в SSMS и выбрав «Свойства».Перейдите на панель соединений и установите флажок для включения / выключения ANSI NULL по умолчанию.Если ни один из них не выбран, «значение по умолчанию» включено.

Вы также можете получить настройки, используя @@OPTIONS:

SELECT CASE @@OPTIONS & 1024 WHEN 0 THEN 'OFF' ELSE 'ON' END AS SET_ANSI_NULLS_ON,
       CASE @@OPTIONS & 2048 WHEN 0 THEN 'OFF' ELSE 'ON' END AS SET_ANSI_NULLS_OFF;

Полный списокпобитовые значения можно найти здесь: Настройка параметров пользователя. Параметр конфигурации сервера

Вы можете включить значения NULL ANSI по умолчанию для соединений, используя:

EXEC sys.sp_configure N'user options', N'1024';
GO
RECONFIGURE;
...