查詢一個庫中資料表的信息:
select c.name NewTableName, a.name NewFieldName, a.length NewLength,
a.xtype NewType, a.isnullable NewNullable, b.name NewTypeName
from syscolumns a
inner join systypes b on a.xusertype = b.xusertype
inner join sysobjects c on A.id = c.id and c.xtype = 'u'
依次為基礎,比較兩個庫中表的差異:
select * from
(select c.name NewTableName, a.name NewFieldName, a.length NewLength,
a.xtype NewType, a.isnullable NewNullable, b.name NewTypeName
from NewDB.dbo.syscolumns a
inner join NewDB.dbo.systypes b on a.xusertype = b.xusertype
inner join NewDB.dbo.sysobjects c on A.id = c.id and c.xtype = 'u'
)tnew
full outer join
(select o.Name OldTableName, m.Name OldFieldName, m.length OldLength,
m.xtype OldType, m.isnullable OldNullable, n.name OldTypeName
from OldDb.dbo.syscolumns m --on a.id = m.id and a.name = m.name
inner join OldDb.dbo.systypes n on m.xusertype = n.xusertype
inner join OldDb.dbo.sysobjects o on m.id = o.id and o.xtype = 'u'
)told
on tnew.NewTableName = told.OldTableName and tnew.NewFieldName = told.OldFieldName
where NewTableName is null or OldTableName is null or
tnew.NewLength <> told.OldLength or tnew.NewTypeName <> told.OldTypeName or tnew.NewNullable <> told.OldNullable
order by NewTableName, NewFieldName, OldTableName, OldFieldName