Одна из основных причин, по которой вы не можете использовать Template Table
, заключается в том, что вы в основном потерпели неудачу в самой цели шаблона, сохранив ошибку таким образом.
Другими словами, ваша таблица неNormalize
ни один relation
не может быть определен между 2 таблицами.
Auto Resubmit for 004e9e2d-3704-4cfd-a90d-42520203df79 - 18723191 failed with
' Object reference not set to an instance of an object. '
Ваш дизайн таблицы ошибок должен выглядеть следующим образом:
TemplateID -- id column of Template table
Module -- Name of module from where error originated
SubmoduleName-- Method name
ErrorMessage-- Original error message like "Object reference not set to an instance of an object".
CustomError -- Auto Resubmit for 004e9e2d-3704-4cfd-a90d-42520203df79 - 18723191 failed with
Таким образом, вы можете легко объединить Template Table
сError Table
с использованием столбца ErrorMessage
.
ErrorMessage : It should always contain original message thrown by `exception`.
Вы можете настроить таблицу ошибок в соответствии с вашими требованиями. Это займет совсем немного усилий.
Было бы очень хорошо, если бы вы моглимагазин TemplateID (FK)
в Error
таблице. Все проблемы исчезнут сразу.
Короче, ведите таблицу таким образом, чтобы к ним легко было присоединиться без манипуляций со строками.
Не ясно, по какому шаблону %
будетбыть заменой.
создать таблицу #Template (Templateid int identity (1,1), Template varchar (500)) вставить в значения #Template («Автоматическая повторная отправка для% завершена с ошибкой») Ссылка на объект не установлена наэкземпляр объекта. '' ')
- выбрать * из # шаблона
create table #ErrorLog(Errorid int identity(1,1),ErrorMessage varchar(500))
insert into #ErrorLog values
('Auto Resubmit for 004e9e2d-3704-4cfd-a90d-42520203df79 - 18723191 failed with ''Object reference not set to an instance of an object.''')
,('Auto Resubmit for 0130e64e-64e6-4a23-88a4-51fba823705b - 18734821 failed with ''Object reference not set to an instance of an object.''')
,('Auto Resubmit for 11809bf5672f4e98987119dbd06e5d78 - 17359076 failed with ''Object reference not set to an instance of an object.''' )
,('Auto Resubmit for itemid2 - 18137385 failed with '' Access Denied: userId=''12602174''' )
Использовать любую функцию split string
, чтобы разделить таблицу шаблонов на '%'
и сохранить ее в #temp
таблица
create table #temp(Errorid int identity(1,1),ErrMsg varchar(500),rownum int)
insert into #temp
select value,row_number()over(order by (Select null))rn from #Template t
cross apply(select replace(value,'failed with','')value from string_split(t.Template,'%'))ca
select t1.* from
(
select el.ErrorMessage,c.ErrMsg,c.rownum from #ErrorLog EL
inner join #temp c on el.ErrorMessage like '%' +ErrMsg+'%' and c.rownum=1
)t1
inner join #temp c1 on t1.ErrorMessage like '%' +ltrim(c1.ErrMsg)+'%' and c1.rownum=2
select * from #temp
drop table #Template,#ErrorLog,#temp
Фактически, для написания почти идеального запроса 1 необходимо проанализировать данные и написать как можно больше тестовых примеров для него.