可能有更简单的方法,但我想到的第一件事是将 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 将在复制表中。