В базе данных SQL Server 2005 хранилась процедура, которая работала с ошибкой. Следующее утверждение в хранимой процедуре было определено, что причиной неудачи:Операция обновления без каких-либо строк
update d set
d.location=a.[Name]+'-'+cast(a.lLocaId as varchar)
--select d.logical_name,d.location,a.[Name]+'-'+cast(a.lLocaId as varchar) as location
from hpsmp.dbo.device2m1 d
inner join hpsmp.dbo.locm1 s
on d.location=s.location
inner join hpamp.dbo.amLocation a
on s.location_code=a.lLocaId
where isnumeric(s.location_code)=1
and s.location_name<>a.[Name];
сообщение об ошибке
Msg 8152, уровень 16, состояние 2, строка 1 Строка или двоичные данные будут усеченный. Заявление было прекращено.
Что странно в этой ошибке, так это то, что оператор select не возвращает никаких строк. Почему в инструкции обновления может быть ошибка усечения без каких-либо строк? На этой таблице нет триггеров.
Не связано с вашей проблемой, но стоит отметить: вы когда-нибудь пытались запустить 'SELECT IsNumeric ('1e6')'? –
Вы уверены, что вы 'select', оператор не возвращает никаких результатов? Эта скрипка работает (http://sqlfiddle.com/#!3/8f26d1/1), но если вы удалите критерии 'where', это приведет к ошибке усечения. – sgeddes
'select IsNumeric ('1e6')' возвращает 1 –