Created
June 3, 2026 14:32
-
-
Save ststeiger/dd681f945bba79b643c986513b9922dc to your computer and use it in GitHub Desktop.
Diff table list between two MS-SQL servers
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES | |
| -- WHERE TABLE_TYPE = 'VIEW' | |
| WHERE TABLE_TYPE = 'BASE TABLE' | |
| FOR JSON PATH; | |
| */ | |
| DECLARE @db1JSON nvarchar(MAX) = N'[ ... ]'; | |
| DECLARE @db2JSON nvarchar(MAX) = N'[ ... ]'; | |
| SELECT * | |
| INTO #tables1 | |
| FROM OPENJSON(@db1JSON) | |
| WITH | |
| ( | |
| TABLE_SCHEMA nvarchar(128) '$.TABLE_SCHEMA' | |
| ,TABLE_NAME nvarchar(128) '$.TABLE_NAME' | |
| ); | |
| SELECT * | |
| INTO #tables2 | |
| FROM OPENJSON(@db2JSON) | |
| WITH | |
| ( | |
| TABLE_SCHEMA nvarchar(128) '$.TABLE_SCHEMA' | |
| ,TABLE_NAME nvarchar(128) '$.TABLE_NAME' | |
| ); | |
| SELECT | |
| COALESCE(d1.TABLE_NAME, d2.TABLE_NAME) AS TABLE_NAME | |
| ,COALESCE(d1.TABLE_SCHEMA, d2.TABLE_SCHEMA) AS TABLE_SCHEMA | |
| ,CASE | |
| WHEN d1.TABLE_NAME IS NULL THEN '➕ Only in DB2' | |
| WHEN d2.TABLE_NAME IS NULL THEN '➖ Only in DB1' | |
| END AS diff_type | |
| FROM #tables1 AS d1 | |
| FULL OUTER JOIN #tables2 AS d2 | |
| ON d1.TABLE_NAME = d2.TABLE_NAME | |
| AND d1.TABLE_SCHEMA = d2.TABLE_SCHEMA | |
| WHERE (1=2) | |
| OR d1.TABLE_NAME IS NULL | |
| OR d2.TABLE_NAME IS NULL | |
| ORDER BY | |
| COALESCE(d1.TABLE_NAME, d2.TABLE_NAME) | |
| ; | |
| DROP TABLE IF EXISTS #tables1, #tables2; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment