Necesito obtener una lista de todas las tablas que se publican para la replicación de bases de datos MS-SQL. ¿Existe un procedimiento almacenado en el sistema o una consulta que podría ejecutar para generar dicha lista?Enumere todas las tablas que están publicadas actualmente para la replicación MS-SQL
Respuesta
Sí:
SELECT *
FROM sys.tables
WHERE is_replicated = 1
De MSDN para el campo is_replicated: se publica
1 = tabla usando instantánea replicación o transaccional replicación.
Es posible consultar la base de datos distribution
para ver qué artículos (tablas/vistas/objetos ...) se publican y de qué publicación son.
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];
Funciona en SQL Server 2008 – Michael
Es muy útil consultar las entidades de [distribución]. Y si sus artículos están todos en la misma base de datos (al menos, todos los que desea identificar), puede unirse a los [dbName] .sys.tables/objects/etc de esa base de datos. vistas de metadatos para mostrar aún más información sobre ellos, como "qué tipo de objeto es" (porque podría tener más que solo tablas de replicación), o incluso "qué columna es el PK". Trataré de publicar más sobre esto cuando tenga oportunidad. – NateJ
- 1. Enumere todas las tablas que contienen un nombre de columna dado
- 2. Enumere todas las excepciones que podría arrojar un método
- 3. Grep Regex: enumere todas las líneas excepto
- 4. Applescript: enumere todas las aplicaciones en ejecución
- 5. Wordpress - Enumere todas las publicaciones (con proper_pagination)
- 6. ¿Cómo puedo enumerar todas las operaciones de WCF que se están ejecutando actualmente?
- 7. Java: enumere todas las impresoras de red en LAN
- 8. enumere todas las tablas en una base de datos con MySQLi
- 9. Establecer IDENTITY_INSERT OFF para todas las tablas
- 10. Borrar todas las macros vim actualmente definidas
- 11. Seleccionar todas las tablas que contienen columnas específicas
- 12. MySQL OPTIMIZE todas las tablas?
- 13. ORMLite restablecer todas las tablas
- 14. Omitir todas las tablas comando
- 15. Seleccionar de todas las tablas
- 16. Psql enumera todas las tablas
- 17. Mysql OPTIMIZE TABLE para todas las tablas fragmentadas
- 18. Obtener todas las columnas de todas las tablas MySQL
- 19. encontrar todas las tablas no referenciadas en los procedimientos almacenados
- 20. Un script que borra todas las tablas de hbase
- 21. ¿La mejor manera de truncar todas las tablas con hibernación?
- 22. Pida a GDB que enumere todas las funciones en un programa
- 23. Listar todas las tablas en postgresql information_schema
- 24. Reparar todas las tablas de una vez
- 25. Uso tablediff de comparar todas las tablas
- 26. Rake para truncar todas las tablas en Rails 3
- 27. Buscar todas las tablas usando MySQL Workbench
- 28. ¿Cómo truncar todas las tablas de usuario?
- 29. ¿Están todas las excepciones de .NET serializables?
- 30. Consulta para mostrar todas las tablas y su intercalación
Esto depende del tipo de replicación utilizada. Para obtener una instantánea, es posible que deba verificar is_published = 1. MSDN: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/3333c691-4426-476c-b7c4-f8f55068937a/difference-between-ispublished-and -isreplicated-columns-of-systables? forum = sqlreplication – Zeeshan
Puedo confirmar que en el servidor SQL 2014/2016 (no tengo una versión temprana para probar), para la replicación de instantáneas, [is_replicated] no dice si una tabla está replicada o no. Debe usar [is_published] = 1 para buscar una tabla de replicación de instantáneas. – jyao