У меня возникла странная проблема в базе данных клиентов при использовании функции ISNULL()
SQL Server 2014. Поиск в Интернете привел меня к тому, что другие люди столкнулись с той же ошибкой, но при INSERT
ing. Я получаю следующую ошибку при запуске простого SELECT
:
Msg 681, Level 16, State 3, Line 1
Attempting to set a non-NULL-able column's value to NULL.
Следующий запрос выдает эту ошибку:
SELECT
ISNULL( [t2].[date_update], GETDATE() )
FROM
[dbo].[t1]
INNER JOIN
[dbo].[t2] ON [t1].[a] = [t2].[id];
Я сократил таблицы, чтобы упростить объяснение, но затронутые столбцы определены следующим образом:
CREATE TABLE [dbo].[t1] (
[id] INT NOT NULL PRIMARY KEY,
[a] NVARCHAR(100) NOT NULL
);
CREATE TABLE [dbo].[t2] (
[id] BIGINT NOT NULL PRIMARY KEY,
[date_update] DATETIME NULL
);
Любая помощь или понимание очень ценятся!
Редактировать:
При устранении неполадок мне удалось воспроизвести то же сообщение об ошибке в клиентской системе со следующим INSERT
:
CREATE TABLE #t2 ([id] BIGINT NOT NULL PRIMARY KEY NONCLUSTERED, [date_update] DATETIME NULL);
INSERT INTO #t2 ([id], [date_update)
SELECT [id], [date_update]
FROM [dbo].[t2];
Редактировать2:
Дальнейшее устранение неполадок показало, что индекс, который использует SELECT
, неисправен. При попытке восстановить индекс я получаю ту же ошибку!
Rebuild failed for Index xxx
Attempting to set a non-NULL-able column's value to NULL.
COALESCE()
вместоISNULL()
? - person BeaglesEnd   schedule 28.10.2015