2010-03-29 13 views

risposta

27

Sì:

SELECT * 
FROM sys.tables 
WHERE is_replicated = 1 

Da MSDN per il campo is_replicated:

1 = tabella è pubblicata utilizzando la replica snapshot o transazionale replica.

+1

Dipende dal tipo di replica utilizzata. Per l'istantanea potrebbe essere necessario controllare is_published = 1. MSDN: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/3333c691-4426-476c-b7c4-f8f55068937a/difference-between-ispublished-and -scritture-replicate-di-systables? forum = sqlreplication – Zeeshan

+0

Posso confermare che in SQL Server 2014/2016 (non ho la versione iniziale da testare), per la replica dello snapshot, [is_replicated] non dice se una tabella è replicata o non. Devi usare [is_published] = 1 per trovare una tabella di replica degli snapshot. – jyao

13

È possibile interrogare il database distribution per vedere quali articoli (tabelle/viste/oggetti ...) sono pubblicati e da quale pubblicazione provengono.

SELECT 
    P.[publication] AS [Publication Name] 
    ,A.[publisher_db] AS [Database Name] 
    ,A.[article]  AS [Article Name] 
    ,A.[source_owner] AS [Schema] 
    ,A.[source_object] AS [Object] 
FROM 
    [distribution].[dbo].[MSarticles] AS A 
    INNER JOIN [distribution].[dbo].[MSpublications] AS P 
     ON (A.[publication_id] = P.[publication_id]) 
ORDER BY 
    P.[publication], A.[article]; 
+1

Funziona su SQL Server 2008 – Michael

+0

È piuttosto utile interrogare le entità [distribuzione]. E se i tuoi articoli sono tutti nello stesso DB (almeno quelli che vuoi identificare), puoi unirti a quel DB [dbName] .sys.tables/objects/etc. viste meta-dati per mostrare ancora più informazioni su di loro, come "che tipo di oggetto è" (perché si potrebbe avere più di una semplice replica delle tabelle), o anche "quale colonna è il PK". Proverò a postare di più su questo quando ho una possibilità. – NateJ

Problemi correlati