È necessario ottenere un elenco di tutte le tabelle pubblicate per la replica dai database MS-SQL. Esiste una stored procedure di sistema o una query che posso eseguire per generare un elenco di questo tipo?Elenco di tutte le tabelle attualmente pubblicate per la replica MS-SQL
risposta
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.
È 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];
Funziona su SQL Server 2008 – Michael
È 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
- 1. Elenco di tutte le tabelle nel database
- 2. elenco di tutte le tabelle nel database
- 3. Recupera un elenco di tutte le tabelle nel database
- 4. Elenco di tutte le tabelle in un database
- 5. Come modificare lo schema di tutte le tabelle, viste e stored procedure in MSSQL
- 6. Psql elenca tutte le tabelle
- 7. Imposta IDENTITY_INSERT OFF per tutte le tabelle
- 8. Usa tablediff per confrontare tutte le tabelle
- 9. ORMLite ripristina tutte le tabelle
- 10. DbContext di EF contiene tutte le tabelle?
- 11. Query per ottenere tutte le istruzioni CREATE delle tabelle MySql
- 12. Mysql OPTIMIZE TABLE per tutte le tabelle frammentate
- 13. Ottieni un elenco di tutte le classi attualmente caricate in una determinata istanza JVM
- 14. Modificare le regole di confronto di tutte le colonne di tutte le tabelle in SQL Server
- 15. Selezione di tutte le tabelle contenenti colonne specifiche
- 16. Ricerca di tutte le tabelle correlate su una tabella data
- 17. H2 - Come troncare tutte le tabelle?
- 18. Come troncare tutte le tabelle utente?
- 19. Elenco di tutte le diagnosi di gcc
- 20. Ottenere un elenco di tutte le applicazioni
- 21. Alter tutte le tabelle nel database
- 22. Può ClickOnce essere configurato per eliminare le vecchie directory pubblicate?
- 23. Entity Framework non includerà() tutte le tabelle
- 24. Come disabilitare i vincoli per tutte le tabelle e attivarlo?
- 25. ASP.NET MVC4 Elenco di tutte le aree
- 26. Come eliminare tutte le tabelle utente?
- 27. Linq: Ottieni un elenco di tutte le tabelle all'interno di DataContext
- 28. Ottenere Elenco di tutte le classi native
- 29. Cerca tutte le tabelle, tutte le colonne per un valore specifico SQL Server
- 30. Elenco di tutte le cartelle e sottocartelle
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
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