シナリオ:同じサーバーに2つのDBがあります。 SRC DBとTGT DBの両方に同じ列名を持つ同じ20の表があります。今日のSRCとTGTのDBが等しい場合、明日はSRCの列の値が更新されます。どのようにSQL Serverを使用してこれらの変更された列名を動的に取得できますか。 私が使用したロジックは以下のように書かれていますが、各テーブルにはハードコードされたソリューションです。私はそれが動的であることを望む。SQL Server 2008で動的に変更された列名を取得
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:well.Theyがテーブルからテーブルに変わるので、私のテーブルの一つは、周りに98列があります。
[情報スキーマ](https://msdn.microsoft.com/en-GB)に保持されているレコードを結合する方法があります/library/ms186778.aspx)を[動的SQL](https://msdn.microsoft.com/en-us/library/ms709342%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396)と置き換えてください。 –
あなたはSQL Server 2008でトラッキングを変更することができますhttps://technet.microsoft.com/en-us/library/cc280462(v=sql.105).aspx –
@ KannanKandasamyはい私は情報スキーマを使ってみました..しかし私は動的に実装することはできません。 –