首页 > 解决方案 > 将数据库与主模板数据库进行比较

问题描述

我需要能够将数据库与主数据库或模板数据库进行比较。如果正在比较的数据库中存在不存在的列,则脚本应将这些列添加到它缺少的表中。

我不确定从哪里开始,但我有这个:

USE [database_that_needs_to_be_compared]

SELECT 
    TABLE_NAME,COLUMN_NAME
    ,DATA_TYPE
    ,CHARACTER_MAXIMUM_LENGTH
    ,IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
ORDER BY TABLE_NAME ASC

这将为我提供我认为我需要从我的数据库中需要更新或检查的所有信息。我的想法是我可以做某种形式的加入,但又一次,不确定从哪里开始。

标签: sqlsql-server

解决方案


你可以使用LEFT JOIN从你master_template_databasedatabase_that_needs_to_be_compared

SELECT  *
FROM    [master_template_database].INFORMATION_SCHEMA.COLUMNS m
LEFT JOIN [database_that_needs_to_be_compared].INFORMATION_SCHEMA.COLUMNS c
ON      m.TABLE_NAME  = c.TABLE_NAME
AND     m.COLUMN_NAME = c.COLUMN_NAME

WHERE在子句中添加您需要的条件

如果可能有添加到database_that_needs_to_be_compared但未添加的列,master_template_database那么您将需要使用FULL OUTER JOIN来识别


推荐阅读