Можете ли вы сделать это без переменной, например:
select * from Deleted for XML auto
Так, что триггер возвращает набор результатов XML?
В качестве альтернативы, в пределах триггера:
declare @tablename varchar(256)
set @tablename = quotename(object_name(@@procid)+'_'+convert(varchar,@@spid))
select * into #inserted from inserted
exec ('select * into '+@tablename+' from #inserted')
exec dbo.myGenericXML_generator @tablename
exec ('drop table '+@tablename)
Вроде барокко, но если у вас достаточно маленький объем, он может сработать. Вы также хотели бы добавить обработку ошибок, это просто передает идею.
Или, после того, как вы скопировали данные в постоянную таблицу, вы можете добавить запись в очередь и отдельно иметь какой-то процесс, который использовал очередь и отбрасывал таблицы.
Еще лучше написать некоторый код для автоматической генерации ваших триггеров и всего кода, генерирующего XML, из системных таблиц. т.е. код, генерирующий код, генерирующий XML.