跨数据库information_schema加入SQL Server

时间:2020-03-05 18:59:05  来源:igfitidea点击:

我正在尝试提供一种将数据从一个模式版本迁移到另一个模式版本的通用解决方案。当源模式中的列数据类型与目标模式中的列数据类型不匹配时,就会出现问题。我想创建一个查询,该查询将对列数据类型执行初步比较,以返回需要迁移之前需要修复的列。

我当前的方法是从" information_schema.columns"中返回表名和列名,其中目录之间的" DATA_TYPE"不匹配。但是,直接查询" information_schema"将仅返回连接目录的结果。

有没有人写过这样的查询?

解决方案

回答

我一直很幸运能够比较Red Gate Schema,我想它可以满足要求。价格便宜两倍!

回答

我通过直接查询系统表来做到这一点。查看" syscolumns"和" sysobjects"表。我们也可以跨链接的服务器加入

select t1.name as tname,c1.name as cname
from adventureworks.dbo.syscolumns c1
join adventureworks.dbo.sysobjects t1 on c1.id = t1.id 
where t1.type = 'U' 
order by t1.name,c1.colorder