2016-12-29 2 views
0

У меня есть приложение, использующее SQL Server 2016 для резервного копирования. Я следующее заявление, которое я пытаюсь запустить:Ошибка конвертации с помощью простого оператора SQL UPDATE

UPDATE dbo.AspNetUsers 
SET [IsActive] = 1 
WHERE [Id] = '1b08b7a9-2978-4116-8a9c-e86bc9ae8bbf' 
  • [IsActive] является BIT колонна
  • [Id]NVARCHAR(128) является столбец

При выполнении, я получаю следующее сообщение об ошибке:

Msg 245, Level 16, State 1, Procedure tUserActiveChange, Line 21 [Batch Start Line 4]
Conversion failed when converting the nvarchar value '1b08b7a9-2978-4116-8a9c-e86bc9ae8bbf' to data type int.

Похоже, 1 ike довольно простое заявление о обновлении. Я даже попробовал один и тот же тип инструкции в другой базе данных на том же сервере, где обновленный столбец - BIT, и используя столбец VARCHAR для состояния WHERE, и он работал нормально.

Что, черт возьми?

+0

Ваше поле идентификатора (в таблице) не является NvarChar (128). Фактически это определяется как Int. У вас должен быть другой столбец в таблице, определяемой как GUID – Sparrow

+0

Вы уверены, что тип 'id' не' int'? запустите 'sp_help AspNetUsers' и подтвердите. – DarkKnight

+0

Я проверил дважды, а [Id] - VARCHAR (128) – TSoder

ответ

2

Ну, я понял, что у меня есть триггер, который я создал некоторое время назад, что вызывает ошибку (tUserActiveChange). Триггер обновляет другую таблицу при изменении IsActive. Фактически, он пытался назначить переменную VARCHAR для поля int. Я исправил это, и теперь инструкция UPDATE работает нормально. Спасибо всем, что нашли время, чтобы посмотреть на это. Теперь я чувствую себя глупо, ха-ха.

Смежные вопросы