もっと簡単な方法があるかもしれませんが、私が最初に思いついたのは、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',
...
大きな注意点: インデックス付きビューには、アプリケーションに適さない可能性がある多くの要件があります。たとえば、ベース テーブルを更新するたびに特定のオプションを設定する必要があります。
(あなたの質問の編集に応じて...)これは、複数のソースを1つのテーブルに結合する場合には機能しません。私の知る限り、購読データベース内のオブジェクトは、公開された 1 つの記事からのみ取得できます。また、インデックス付きビューでは UNION が許可されていないため、サブスクライブ側でインデックス付きビューを実行することはできません。(ドキュメントでは UNION ALL が許可されていないと明示的には述べていませんが、私を驚かせることはありません。念のため試してみてください。)しかし、明示的な質問にはまだ答えています。dbid はレプリケートされたテーブルにあります。