Если посмотреть на код триггера
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) ..) - пофиксили оперативно.