Возможно, существует более простой способ сделать это, но первое, о чем я подумал, - это обернуть TableA в индексированное представление исходной базы данных и затем реплицировать представление в виде таблицы (то есть type = "indexed view logbased") , Но я не думаю, что это сработает с репликацией слиянием.
Итак, это примерно так:
CREATE VIEW TableA_with_dbid WITH SCHEMABINDING AS
SELECT DatabaseA.dbid, Id, Name FROM TableA
CREATE UNIQUE CLUSTERED INDEX ON TableA_with_dbid (Id) -- or whatever your PK is
EXEC sp_addarticle ...,
@source_object = 'TableA_with_dbid',
@destination_table = 'TableA',
@type = 'indexed view logbased',
...
Большое предостережение: индексированные представления имеют множество требований , которые могут не подходить для вашего приложения. Например, определенные параметры должны быть установлены каждый раз, когда вы обновляете базовую таблицу.
(В ответ на редактирование в вашем вопросе ...) Это не будет работать для объединения нескольких источников в одну таблицу. AFAIK, объект в подписной базе данных может быть взят только из одной опубликованной статьи. И вы не можете сделать индексированное представление на стороне подписки, так как UNION не допускается в индексированном представлении. (В документах не указано, что UNION ALL запрещен, но меня это не удивит. Вы можете попробовать это на всякий случай.) Но он все равно отвечает на ваш явный вопрос: dbid будет в реплицированной таблице.