重做数据库复制查看因业务需要未选进行发布定义的表清单
概述
即未选择的表是有主键,符合发布定义的规则,基于业务的需要,在之前做好的复制未选择发布订阅,后续可能由于迁移或其他原因需重做发布订阅,之前这部分未选的表信息也未有文档记录,如何快速查看这些未选的表,从而达到重做复制时完全与之前配置的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;