Исправление: «Попытка значение NULL не NULL-будет столбец» сообщения об ошибке при выполнении запроса, функция ISNULL() используется для выбора значений столбца, допускающего значение NULL в SQL Server 2008

Переводы статьи Переводы статьи
Код статьи: 981037 - Vizualiza?i produsele pentru care se aplic? acest articol.
Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 файл с исправлениями. Так как исправления являются накопительными, каждый новый выпуск содержит все исправления, и все исправления, входившие в состав предыдущих SQL Server 2008 исправление выпуска.
Развернуть все | Свернуть все

Проблема

Рассмотрим описанную ниже ситуацию.:
  • В Microsoft SQL Server 2008, выполняется запрос, использующийISNULL()функция для выбора значения в столбце значения NULL.
  • Таблицы, которая содержит столбец, допускающий значения NULL соединена с другой таблицей в столбце значения NULL.
  • План запроса, который будет создан, оптимизатор запросов использует хэш-соединение, очереди или таблицу сортировкиОБЪЕДИНЕНИЕоператор.
В этом случае появляется следующее сообщение об ошибке::
Сообщение 681, уровень 16, состояние 3, строка 2
Попытка задать значение столбца не NULL-возможности значения NULL.

Причина

Определяет, что оптимизатор запроса, указанный в столбцеISNULL()функция является не поддерживающий значение NULL, так как оператор соединения отклоняет значения NULL. Затем, в плане запроса оптимизатор запросов помещает выражение, которое находится вISNULL()функция нижеОБЪЕДИНЕНИЕоператор. Кроме того значение выражения могут иметь значение NULL. Однако оптимизатор запросов не re-derive свойство возможность принимать значение NULL для выражения. Затем в плане запроса рабочая таблица используется для реализации хэш-соединения, очереди или сортировки таблицы, которая включает в себя выражение. Кроме того соответствующий столбец в таблице Работа объявляется как не допускающие значения NULL. Эта ошибка возникает, когда обработчик запросов SQL Server пытается использовать для вставки значений NULL в рабочей таблице.

Решение

Исправление, устраняющее эту проблему, сначала было выпущено в 7 накопительного обновления для SQL Server 2008 с пакетом обновления 1 (SP1). Для получения дополнительных сведений о этот накопительный пакет обновления щелкните следующий номер статьи базы знаний Майкрософт:
979065Накопительный пакет обновления 7 для SQL Server 2008 с пакетом обновления 1 (SP1)
Примечание.Поскольку сборки являются накопительными, каждый новый выпуск исправление содержит все исправления, и все исправления, входившие в состав предыдущих SQL Server 2008 исправление выпуска. Рекомендуется, чтобы учесть применение последний выпуск исправления, содержащего это исправление. Для получения дополнительных сведений обратитесь к следующей статье Базы Знаний Майкрософт::
970365SQL Server 2008 выполняет построение, выпущенных после пакета обновления 1 для SQL Server 2008
Microsoft SQL Server 2008 исправлениях создаются для определенных пакетов обновления для SQL Server. Необходимо применить исправление SQL Server 2008 с пакетом обновления 1 (SP1) для установки SQL Server 2008 с пакетом обновления 1 (SP1). По умолчанию все исправления, входящие в пакет обновления SQL Server включено в следующий пакет обновления для SQL Server.

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

Для решения этой проблемы воспользуйтесь одним из описанных ниже способов..

Способ 1.

УдалитьISNULL()функцию из запроса.

Примечание.Так как столбец, который находится в этой функции поступают изОБЪЕДИНЕНИЕоператор, который отклонил значения NULLISNULL()функция является излишним.

Способ 2

Перепишите запрос таким образом, чтобы план запроса не использует хэш-соединение, очереди или сортировки таблицы. Например если запрос содержит предложение ORDER BY, создание кластеризованного или covering индекс, который содержит требуемый порядок и включает в себя все нужные столбцы. При использовании этого метода, оптимизатор запросов не использует таблицы сортировки.

Статус

Корпорация Майкрософт подтверждает, что это проблема в продуктах Майкрософт, перечисленных в разделе «Применяется к»..

Ссылки

Сведения о последовательный модели обслуживания для SQL Server щелкните следующий номер статьи базы знаний Майкрософт:
935897Последовательный модели обслуживания доступна группа разработчиков SQL Server для предоставления исправления для устранения неполадок


Для получения дополнительных сведений о схеме именования для обновления SQL Server щелкните следующий номер статьи базы знаний Майкрософт:
822499Новая схема присвоения имен пакетам обновлений программного обеспечения Microsoft SQL Server


Дополнительные сведения о терминах, используемых при описании обновлений программного обеспечения, см. в следующей статье базы знаний Майкрософт::
824684Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт

Свойства

Код статьи: 981037 - Последний отзыв: 30 ноября 2010 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
Ключевые слова: 
kbHotfixServer kbexpertiseadvanced kbsurveynew kbqfe kbfix kbmt KB981037 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:981037

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

 

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