SQL Server 2000 внутренняя ошибка 8624 в том же коде, который был запущен в течение 10 лет - PullRequest
0 голосов
/ 16 апреля 2019

У меня в офисе работает устаревшая база данных 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) таблицам одновременно.

Я также пытался выполнить этот запрос в другой базе данных, которая содержит ту же структуру таблиц, и запрос будет работать нормально. Так что я полностью потерялся. Я что-то пропустил? Пожалуйста, помогите.

...