【问题标题】:SQL Server : subscription : how to know if a table is under replication/subscriptionSQL Server:订阅:如何知道表是否处于复制/订阅状态
【发布时间】:2011-06-12 06:30:46
【问题描述】:

在 SQL Server 中,在“订阅端”,如何知道表是否处于复制/订阅状态?

有什么想法吗?

【问题讨论】:

  • 我刚刚多次构建和拆除复制以尝试找到一些答案,但我仍然对我发布的内容不满意:-|

标签: sql sql-server replication


【解决方案1】:

最简单的方法是创建一个到主服务器的链接服务器并查询表[distribution].[dbo].[MSarticles]

select * from [distribution].[dbo].[MSarticles]

【讨论】:

    【解决方案2】:

    我使用Damien the Unbeliever's idea (+1) 生成了对我有用的代码

    SELECT DISTINCT
        ot.object_id
        ,ot.schema_id
        ,r.publisher
        ,r.publisher_db
        ,r.publication
        ,r.article
    FROM 
        dbo.MSreplication_objects R
            INNER JOIN sys.objects so ON r.object_name = so.name AND so.type = 'P' --stored procedures
            INNER JOIN sys.sql_dependencies dp ON so.object_id = dp.object_id
            INNER JOIN sys.objects ot ON dp.referenced_major_id = ot.object_id  --objects
                                    AND r.article = ot.name
    

    【讨论】:

      【解决方案3】:

      我不确定是否有一个简单的答案,我认为答案可能会因复制类型而异。我认为您可能不得不依靠启发式来回答它。

      对于快照复制,我想不出有什么东西会泄露游戏。显然,复制表的存在(例如MSreplication_objects)告诉您复制正在数据库中进行,但据我所知,没有关于表的任何具体线索。

      对于事务复制(非更新),您可以通过MSreplication_objects(其中将列出一些存储的过程)然后使用sys.sql_dependencies 找到与这些相关的表

      对于事务复制(更新),您可以查看MSsubscription_articles(或针对表查找订阅更新触发器的存在)

      对于合并复制,您可以查看 sysmergearticles,但您还必须查看 sysmergesubscriptions 以确定您在订阅端。

      【讨论】:

        【解决方案4】:

        转到订阅者数据库检查表dbo.MSreplication_subscriptions。如果数据库是subscriber,你会找到这张表。另外,要查找文章,请在 subscribed 数据库中使用它

        SELECT publisher,Publisher_Db,publication,article
        FROM dbo.MSreplication_objects
        

        【讨论】:

          【解决方案5】:

          看看 DATABASEPROPERTYEX。它有一个“IsSubscribed”选项,应该可以做你想做的事情。

          【讨论】:

          • 这将告诉您数据库是否是订阅者,但不会让您确定哪些表是订阅的一部分。订阅数据库可以包含自己的不属于发布的表。
          • 哎呀...你是对的。我把这个问题误读为“如何判断数据库是否是订阅者”。
          猜你喜欢
          • 2015-03-28
          • 1970-01-01
          • 2011-05-13
          • 1970-01-01
          • 2021-07-01
          • 2014-11-18
          • 2019-10-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多