动态捕获SQL Server 2008中更改的列名称

时间:2016-10-24 16:04:35

标签: sql-server dynamic-sql

场景:两个DB在同一台服务器中。 SRC DB和TGT DB.Both具有相同的20个具有相同列名的表。如果今天SRC和TGT DB相等,并且明天SRC中的几个列值会更新。如何动态地使用sql server捕获这些更改的列名。 我使用的逻辑如下所示,但它是每个表的硬编码解决方案。我希望它是动态的。

CODE

SELECT DISTINCT  PK_COL_NAMES,
Result =    CASE WHEN **a.COL1 != b.COL1 THEN ‘COL1,' ELSE '' END +
CASE WHEN a. COL2 != b. COL2  THEN 'COL2,' ELSE '' END + 
CASE WHEN a. COLN != b. COLN  THEN 'COLN,' ELSE '' END**               
FROM    #TEMP b   
        LEFT JOIN #TEMP a
            ON a.PK_COL1=b.PK_COL1 AND
a.PK_COL2=b.PK_COL2

WHERE       **a.COL1 != b.COL1 OR
 a.COL2 != b.COL2 OR 
a.COLN != b.COLN**

PKCOL - >是表中的相同列名但是主

PS:我的一张桌子也有大约98根。它们因桌子而异。

1 个答案:

答案 0 :(得分:0)

为什么不使用ddl触发器。看看这个article,它可以跟踪服务器或数据库中数据定义的任何变化