Показать сообщение отдельно
Старый 27.08.2022, 19:25   #3  
imir is offline
imir
Участник
 
159 / 161 (6) ++++++
Регистрация: 28.05.2010
Если посмотреть на код триггера

X++:
AND ( UPDATE(KnownAs) OR UPDATE(Name) OR UPDATE(NV_ParentCompany) )
то понятно почему так получается.

X++:
IF (@spLogType = 3 AND ( UPDATE(KnownAs) OR UPDATE(Name) OR UPDATE(NV_ParentCompany) ) ) --Update 
    BEGIN 
        INSERT INTO SYSDATABASELOG (NEWDATA, LOGRECID, LOGTYPE, TABLE_, DESCRIPTION, USERNAME, CREATEDBY, CREATEDTRANSACTIONID, DATAAREAID, PARTITION, SEQUENCENUMBER)   
            SELECT '03::' +       + 'KnownAs' + ', ÿþ ' +  I.KNOWNAS + ' ÿþ ' + D.KNOWNAS + ' ÿþ ' 
      + 'Name' + ', ÿþ ' +  I.NAME + ' ÿþ ' + D.NAME + ' ÿþ ' 
      + 'NV_ParentCompany' + ', ÿþ ' +  CONVERT(nvarchar(max), I.NV_PARENTCOMPANY) + ' ÿþ ' + CONVERT(nvarchar(max), D.NV_PARENTCOMPANY) + ' ÿþ ' 
      + 'CreatedBy' + ', ÿþ ' +  I.CREATEDBY + ' ÿþ ' + D.CREATEDBY + ' ÿþ ' 
      + 'CreatedDateTime' + ', ÿþ ' +  CONVERT(nvarchar(max), I.CREATEDDATETIME) + ' ÿþ ' + CONVERT(nvarchar(max), D.CREATEDDATETIME) + ' ÿþ ' 
      + 'ModifiedBy' + ', ÿþ ' +  I.MODIFIEDBY + ' ÿþ ' + D.MODIFIEDBY + ' ÿþ ' 
      + 'ModifiedDateTime' + ', ÿþ ' +  CONVERT(nvarchar(max), I.MODIFIEDDATETIME) + ' ÿþ ' + CONVERT(nvarchar(max), D.MODIFIEDDATETIME) + ' ÿþ ' 
      + 'Partition' + ', ÿþ ' +  CONVERT(nvarchar(max), I.PARTITION) + ' ÿþ ' + CONVERT(nvarchar(max), D.PARTITION) + ' ÿþ ' 
      + 'RecId' + ', ÿþ ' +  CONVERT(nvarchar(max), I.RECID) + ' ÿþ ' + CONVERT(nvarchar(max), D.RECID) + ' ÿþ ' 
      + 'RecVersion' + ', ÿþ ' +  CONVERT(nvarchar(max), I.RECVERSION) + ' ÿþ ' + CONVERT(nvarchar(max), D.RECVERSION) + ' ÿþ ' 
     , 
    I.RECID, 2, 1268,I.PARTYNUMBER + ',' + I.NAME,@userId, @userId, 0, 'dat', I.PARTITION, @seqNo 
    FROM INSERTED I LEFT OUTER JOIN DELETED D ON I.RECID = D.RECID; 
 
 
    END;
Дописать сюда дополнительный case UPDATE([имя поля]) на каждое поле отдельно в теории должно бы сработаь, попробуйте открыть запрос в МС, только советую попробовать переписать триггер и предложить готовое решение.
Я в свое время словил в этом триггере ошибку, когда строка логирования обрезалась 1000-ю символами, предложил вариант с добавлением CONVERT(nvarchar(max) ..) - пофиксили оперативно.
За это сообщение автора поблагодарили: sukhanchik (8).