Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка при {поле типа BIGINT} IS NULL  [new]
Саня Павлов
Member

Откуда: Сыктывкар
Сообщений: 157
День добрый!

После перезапуска SQL Server 2000 все запросы, где есть условие {поле типа BIGINT} IS NULL перестали работать.
Ошибка: Msg 0, Level 19, State 0, Line 1
SqlDumpExceptionHandler: Process 63 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.

Обходной маневр set ANSI_NULLS OFF и замена IS NULL на = NULL помогает. Но ПО не моей разработки и изменять все запросы и процедуры с is null не камильфо.

С чем может быть связано такое поведение SQL Server?

select @@version
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

С уважением, Александр
20 окт 09, 13:16    [7811115]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при {поле типа BIGINT} IS NULL  [new]
Саня Павлов
Member

Откуда: Сыктывкар
Сообщений: 157
UP

Может сталкивался кто?
23 окт 09, 16:35    [7831103]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при {поле типа BIGINT} IS NULL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Саня Павлов
UP

Может сталкивался кто?

План этого запроса вы можете получить ?
23 окт 09, 16:36    [7831115]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при {поле типа BIGINT} IS NULL  [new]
Saller
Member

Откуда: exUSSR
Сообщений: 1141
Саня Павлов
замена IS NULL на = NULL

Книги по всей видимости вы не читали в которых пишут что NULL значения не равны между собой?
SELECT a.* 
FROM (
   SELECT 1 AS c1, NULL AS c2
   UNION
   SELECT 2 AS c1, NULL AS c2) a
WHERE c2=NULL
(0 row(s) affected)
23 окт 09, 16:59    [7831283]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при {поле типа BIGINT} IS NULL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Saller
Саня Павлов
замена IS NULL на = NULL

Книги по всей видимости вы не читали в которых пишут что NULL значения не равны между собой?
SELECT a.* 
FROM (
   SELECT 1 AS c1, NULL AS c2
   UNION
   SELECT 2 AS c1, NULL AS c2) a
WHERE c2=NULL
(0 row(s) affected)


set ansi_nulls off
go

SELECT a.* 
FROM (
   SELECT 1 AS c1, NULL AS c2
   UNION
   SELECT 2 AS c1, NULL AS c2) a
WHERE c2=NULL
23 окт 09, 17:07    [7831356]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при {поле типа BIGINT} IS NULL  [new]
Saller
Member

Откуда: exUSSR
Сообщений: 1141
Glory, Но это не выход.
23 окт 09, 17:08    [7831361]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при {поле типа BIGINT} IS NULL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Saller
Glory, Но это не выход.

Причем тут выход. Сранение с NULL константой возможно. И будет работать.
23 окт 09, 17:14    [7831402]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при {поле типа BIGINT} IS NULL  [new]
Саня Павлов
Member

Откуда: Сыктывкар
Сообщений: 157
Уважаемый Saller. Вы немного невнимательно прочли мое сообщение. Вот здесь:
Саня Павлов
Обходной маневр set ANSI_NULLS OFF и замена IS NULL на = NULL помогает. Но ПО не моей разработки и изменять все запросы и процедуры с is null не камильфо.

я как раз и пишу про вариант с set ANSI_NULLS OFF

План предоставлю. Сейчас не могу, извините, убегаю. Пока выяснил, что ситуация зависит от конкретной процедуры.
23 окт 09, 17:21    [7831447]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при {поле типа BIGINT} IS NULL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Саня Павлов


План предоставлю. Сейчас не могу, извините, убегаю. Пока выяснил, что ситуация зависит от конкретной процедуры.

Т.е. план таки генерируется ?
23 окт 09, 17:23    [7831464]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при {поле типа BIGINT} IS NULL  [new]
Saller
Member

Откуда: exUSSR
Сообщений: 1141
Саня Павлов
Уважаемый Saller. Вы немного невнимательно прочли мое сообщение. Вот здесь:
Саня Павлов
Обходной маневр set ANSI_NULLS OFF и замена IS NULL на = NULL помогает. Но ПО не моей разработки и изменять все запросы и процедуры с is null не камильфо.

я как раз и пишу про вариант с set ANSI_NULLS OFF

План предоставлю. Сейчас не могу, извините, убегаю. Пока выяснил, что ситуация зависит от конкретной процедуры.

Ну если это для Вас вариант то пожалуста, но думаю это не выход т.к. надо искать из-за чего это произошло, а не прописывать везде set ANSI_NULLS OFF.
23 окт 09, 19:08    [7832041]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при {поле типа BIGINT} IS NULL  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SQL2008: SET ANSI_NULLS (Transact-SQL)
Важно!
В будущей версии параметр SQL Server ANSI_NULLS всегда будет иметь значение ON, а приложения, явно присваивающие ему значение OFF, будут вызывать ошибку. Избегайте использования этой функции в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.
23 окт 09, 19:34    [7832146]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при {поле типа BIGINT} IS NULL  [new]
step_ks
Member

Откуда:
Сообщений: 936
Саня Павлов, если менять запросы нельзя, то попробуйте обновить сервер до последнего фикса или хотя бы до 2187.
24 окт 09, 14:26    [7833912]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить