重做数据库复制查看因业务需要未选进行发布定义的表清单

重做数据库复制查看因业务需要未选进行发布定义的表清单

概述

即未选择的表是有主键,符合发布定义的规则,基于业务的需要,在之前做好的复制未选择发布订阅,后续可能由于迁移或其他原因需重做发布订阅,之前这部分未选的表信息也未有文档记录,如何快速查看这些未选的表,从而达到重做复制时完全与之前配置的articles一致,特别是对涉及的表比较多的时候,如何通过一段代码快速统计出有多少表然后有针对性去比对,避免出现漏选或多选的情形。本段代码是基于上述的需求,直接在原来已配置好的发布库中执行即可;

测试环境

Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64) 
 Oct 20 2015 15:36:27 
 Copyright (c) Microsoft Corporation
 Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
 

查询代码

USE [发布库名]


SELECT a.name
FROM
    (
        SELECT *
        FROM sys.objects
        WHERE type = 'U'
    ) a
    INNER JOIN
    (
        SELECT *
        FROM sys.indexes
        WHERE index_id = 1
    ) b
        ON a.OBJECT_ID = b.object_Id
    LEFT JOIN
    (
        SELECT a.name
        FROM [dbo].[sysarticles] a
            INNER JOIN [dbo].[syspublications] b
                ON a.pubid = b.pubid
        WHERE 1 = 1   ---已发布的表,如有多个发布可在条件中筛选
    ) c
        ON c.name = a.name
WHERE c.name IS NULL AND a.is_ms_shipped<>1
ORDER BY a.name;

 

 
posted @ 2019-02-20 11:00  jil.wen  阅读(215)  评论(0编辑  收藏  举报