Является ли SQL CONCAT_NULL_YIELDS_NULL постоянным параметром времени выполнения? (Server 2000 и выше) - PullRequest
1 голос
/ 16 февраля 2010

Хорошо, я знаю, что CONCAT_NULL_YIELDS_NULL всегда будет иметь значение ON в будущих версиях SQL (вставьте параметры поиска MSDN (yadda, yadda)), так что терпите меня.

Скучные детали: платформа MSSQL 2000 Enterprise (v8 sp4) AKA Critatious Period Edition.

Следующее будет иметь значение NULL

SELECT 'abc' + NULL; 

Понятный. Но вы можете обойти это с помощью следующего:

SET CONCAT_NULL_YIELDS_NULL OFF;
SELECT 'abc' + NULL; 

В этом случае результат «abc». С этого момента будущие операторы sql будут разрешать сцепление с NULL. Но это «постоянный» параметр времени выполнения? Например, применяется ли этот параметр только для моего сеанса на сервере SQL или он применяется к операторам, выполняемым всеми пользователями?

Насколько я могу судить, после установки _YIELDS_NULL в значение ON для перезапуска служб MSSQL по умолчанию будет возвращено значение OFF (исправьте, если я ошибаюсь).

Последнее: я на самом деле не планирую применять это на практике. Сторонняя хранимая процедура завершилась неудачно (похоже, они обновили ее, сломав ее). Лучшее, что я могу понять, - это то, что они реализовали это с предположением, что «SET CONCAT_NULL_YIELDS_NULL» было установлено на ON . И это всегда работало.

Я просто ищу причину: есть ли способ установить CONCAT_NULL_YIELDS_NULL на ON при запуске сервера SQL?

Ответы [ 2 ]

1 голос
/ 16 февраля 2010

CONCAT_NULL_YIELDS_NULL может быть установлено:

  • за соединение - когда вы закрываете соединение и открываете новое, оно возвращается к значению по умолчанию

  • за базу данных

    • Откройте Microsoft SQL Server Management Studio, щелкните правой кнопкой мыши свою базу данных и выберите свойства. Это в разделе Разное.
  • или из T-SQL

    ALTER DATABASE имя_базы_данных SET {CONCAT_NULL_YIELDS_NULL OFF}

Примечание. Некоторые клиенты могут выдавать команду set concat_null_yields_null при открытии соединения. Например, SQL Server Management Studio подключается к SQL 2005. Используйте SQL Server Profiller, чтобы узнать о вашем соединении.

У меня нет ноутбука 2000 на моем ноутбуке для точного тестирования на этой версии.

1 голос
/ 16 февраля 2010

Как BOL идет,

Если инструкция SET установлена ​​в сохраненном процедура, значение параметра SET восстанавливается после возвращения контроля из хранимой процедуры.

Таким образом, разработчик очень мало делает для обеспечения правильных настроек. Они могли просто установить их в начале SP и даже не должны были восстанавливать исходные значения впоследствии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...