Проблема: SET CONCAT_NULL_YIELDS_NULL может вызвать хранимых процедур для перекомпиляции

Переводы статьи Переводы статьи
Код статьи: 294942 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Проблема

Если хранимая процедура содержит инструкцию SET CONCAT_NULL_YIELDS_NULL инструкция изменяет текущий параметр CONCAT_NULL_YIELDS_NULL, процедура перекомпилирована каждый раз, что он выполняется. Это может привести к проблемам с производительностью.

Причина

Перекомпиляция не требуется, так как параметр CONCAT_NULL_YIELDS_NULL изменение способ интерпретации команд и результат. В SQL Server 7.0 и SQL Server 2000 CONCAT_NULL_YIELDS_NULL установлен в ON по умолчанию в соответствии со стандартами ANSI.

Параметр CONCAT_NULL_YIELDS_NULL отключена в базе данных уровня не дает нужного результата поскольку ODBC и OLE DB это свойство в значение ON при подключении. (Так, как это определяется в пакете подключения немного, приложение SQL Profiler не отображается, это свойство задается.)

Временное решение

Не устанавливайте CONCAT_NULL_YIELDS_NULL внутри хранимой процедуры. Рекомендуемым решением является использование функции ISNULL при объединении строк.

Например запрос должен быть записан следующим:
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + ISNULL(@lastname,'') + '%'
				
Вместо следующим образом:
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + @lastname + '%'
				
Несмотря на то, что не рекомендуется использовать альтернативное решение следует выполнить инструкцию SET CONCAT_NULL_YIELDS_NULL до выполнения хранимой процедуры.

Дополнительная информация

Эта статья адреса только одной из причин, хранимые процедуры могут быть перекомпилированы; для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
243586INF: Устранение неполадок перекомпиляции хранимых процедур

Свойства

Код статьи: 294942 - Последний отзыв: 21 ноября 2010 г. - Revision: 3.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Ключевые слова: 
kbprb kbmt KB294942 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:294942

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com