У меня в офисе работает устаревшая база данных SQL Server 2000, а недавно 10-летний код, который должен был работать в течение 10 лет. Теперь возникла странная проблема.
Код действительно прост, это оператор обновления для 3 полей. Однако теперь, когда я попытался обновить одно из полей (ard.Applbatnbr) в этом запросе, я получил внутреннюю ошибку 8624. (Просто чтобы еще раз пояснить, этот код работал без проблем в течение 10 лет)
UPDATE Ard
SET ard.Applbatnbr ='',ard.ApplAmt=0,ard.CuryApplamt=0
FROM wrkrelease w INNER JOIN batch b
ON b.batnbr = w.batnbr
INNER JOIN ardoc ard
ON ard.Applbatnbr = b.batnbr
WHERE b.Module='AR' AND w.Module='AR'
AND useraddress =@useraddress
AND b.status ='I'
AND b.editscrnnbr ='08030'
Этот код вернет сообщение об ошибке «Внутренняя ошибка сервера SQL»
Однако, когда я попытался обновить только еще 2 поля, удалив проблемное поле (ard.Applbatnbr), я смог обработать обновление без ошибок.
UPDATE Ard
SET ard.ApplAmt=0,ard.CuryApplamt=0
FROM wrkrelease w INNER JOIN batch b
ON b.batnbr = w.batnbr
INNER JOIN ardoc ard
ON ard.Applbatnbr = b.batnbr
WHERE b.Module='AR' AND w.Module='AR'
AND useraddress =@useraddress
AND b.status ='I'
AND b.editscrnnbr ='08030'
Я попытался обновить это поле "ard.Applbatnbr" другим запросом в таблице напрямую, без объединения с двумя другими таблицами. Как и в примере ниже, я также не получил никакой ошибки.
update ardoc set ard.Applbatnbr = '' where batnbr = 'xxxxx'
Внутренняя ошибка будет отображаться всякий раз, когда я обновляю это поле "ard.Applbatnbr" и присоединяюсь к этим 3 (wrkrelease, batch, ardoc) таблицам одновременно.
Я также пытался выполнить этот запрос в другой базе данных, которая содержит ту же структуру таблиц, и запрос будет работать нормально. Так что я полностью потерялся. Я что-то пропустил? Пожалуйста, помогите.