复制文章的T-SQL查询

时间:2011-01-03 12:56:03

标签: sql-server replication

有没有人知道我可以运行的查询,它会告诉我目标数据库中的哪些文章(如果有的话)与事务复制发布相关联?

6 个答案:

答案 0 :(得分:10)

对于需要快速摘要的人......

SELECT 
  msp.publication AS PublicationName,
  msa.publisher_db AS DatabaseName,
  msa.article AS ArticleName,
  msa.source_owner AS SchemaName,
  msa.source_object AS TableName
FROM distribution.dbo.MSarticles msa
JOIN distribution.dbo.MSpublications msp ON msa.publication_id = msp.publication_id
ORDER BY 
  msp.publication, 
  msa.article

答案 1 :(得分:6)

查看syspublications以查看发布者数据库上设置的发布列表。希望您能够看到一个具有标识您感兴趣的订阅者数据库的描述。请注意您感兴趣的出版物的pubid:

select * from syspublications

然后查看sysarticles以查看哪些表实际复制到该端点:

select * from sysarticles where pubid = 3

这需要在发布者数据库上运行,而不是在订阅者数据库上运行。

答案 2 :(得分:5)

以下是涉及SQL Server复制的所有表

http://msdn.microsoft.com/en-us/library/ms179855.aspx

向下滚动到“订阅数据库中的复制表”部分,您将找到发布,订阅,模式,文章和列的表。

答案 3 :(得分:3)

EXEC sp_helparticle @publication='{your_publication_name}'

显示有关文章的信息。此存储过程在发布数据库上的发布服务器上执行。对于Oracle发布服务器,此存储过程在任何数据库的分发服务器上执行。

请参阅https://msdn.microsoft.com/en-us/library/ms187741.aspx

答案 4 :(得分:0)

对于那些希望列出 MERGE REPLICATION 文章的人,以下代码段可能有所帮助:

SELECT 
    p.Name,
    a.* 
FROM [Publisher_DB_NAME].dbo.sysmergepublications p
JOIN [Publisher_DB_NAME].dbo.sysmergearticles a on p.pubid=a.pubid

请注意,发布服务器数据库中会查询sysmergepublicationssysmergearticles个表,因为MSpublications数据库中的MSarticlesdistribution表在我的其他答案中提到了SQL Server 2008 R2的案例没有合并复制文章的记录。

希望这可以帮助那些使用SO搜索进行合并复制的人。

答案 5 :(得分:0)

SELECT 
    p.Name,
    a.* 
FROM dbo.sysmergepublications p
JOIN dbo.[sysmergeextendedarticlesview] a on p.pubid=a.pubid 

您也可以使用它来获取视图列表