继续讨论:如果比较两个数据库表结构是否一致

老宛 2004-08-13 05:46:20
如题:

小弟之前也写了一个,自己留着用的,当然没有邹老大写的好,也贴出来看看,呵呵

DECLARE @DATABASE1 VARCHAR(50),@DATABASE2 VARCHAR(50)
SELECT @DATABASE1='LX',@DATABASE2='YS'

EXEC('SELECT A.[NAME],A.[ID],B.[NAME] AS TABLENAME,A.[XTYPE],C.[NAME] AS TYPENAME,A.[XUSERTYPE],A.[LENGTH],A.[CDEFAULT],A.[DOMAIN],A.[OFFSET],A.[TYPE],A.[USERTYPE],A.[PREC],A.[SCALE]
INTO ##TMP1 FROM '+@DATABASE1+'..syscolumns A JOIN '+@DATABASE1+'..SYSOBJECTS B ON A.[ID]=B.[ID]
JOIN '+@DATABASE1+'..SYSTYPES C ON A.[XTYPE]=C.[XTYPE] WHERE B.XTYPE=''U'' AND B.STATUS>0
ORDER BY B.[NAME]')

EXEC('SELECT A.[NAME],A.[ID],B.[NAME] AS TABLENAME,A.[XTYPE],C.[NAME] AS TYPENAME,A.[XUSERTYPE],A.[LENGTH],A.[CDEFAULT],A.[DOMAIN],A.[OFFSET],A.[TYPE],A.[USERTYPE],A.[PREC],A.[SCALE]
INTO ##TMP2 FROM '+@DATABASE2+'..syscolumns A JOIN '+@DATABASE2+'..SYSOBJECTS B ON A.[ID]=B.[ID]
JOIN '+@DATABASE2+'..SYSTYPES C ON A.[XTYPE]=C.[XTYPE] WHERE B.XTYPE=''U'' AND B.STATUS>0
ORDER BY B.[NAME]')
SELECT '以下是两个数据库相同的部分'
SELECT * FROM ##TMP1 A WHERE EXISTS(SELECT [NAME],TYPENAME,TABLENAME FROM ##TMP2 WHERE [NAME]=A.[NAME]
AND TYPENAME=A.TYPENAME AND TABLENAME=A.TABLENAME)
SELECT '以下是第一个数据库有的第二个数据库没有的或两个都有但不一样的部分'
SELECT * FROM ##TMP1 A WHERE NOT EXISTS(SELECT [NAME],TYPENAME,TABLENAME FROM ##TMP2 WHERE [NAME]=A.[NAME]
AND TYPENAME=A.TYPENAME AND TABLENAME=A.TABLENAME) ORDER BY TABLENAME
SELECT '以下是第二个数据库有的第一个数据库没有的或两个都有但不一样的部分'
SELECT * FROM ##TMP2 A WHERE NOT EXISTS(SELECT [NAME],TYPENAME,TABLENAME FROM ##TMP1 WHERE [NAME]=A.[NAME]
AND TYPENAME=A.TYPENAME AND TABLENAME=A.TABLENAME) ORDER BY TABLENAME
DROP TABLE ##TMP1
DROP TABLE ##TMP2

...全文
176 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
老宛 2004-08-16
  • 打赏
  • 举报
回复
算了,结贴
zjcxc 2004-08-13
  • 打赏
  • 举报
回复
如楼上所说,要比较的东西实在太多,不能逐一列举
pbsql 2004-08-13
  • 打赏
  • 举报
回复
写起来麻烦,如果要比较下面这些内容,看看工作量多大:
各种约束、约束的内容、约束的名称
触发器、存储过程、视图,要是加密了,可能更麻烦一点
...
老宛 2004-08-13
  • 打赏
  • 举报
回复
希望1楼能写出好的语句给兄弟们分享一下,呵呵
pbsql 2004-08-13
  • 打赏
  • 举报
回复
比较的内容太少,还是那句话,很难将两数据库的所有信息作完全比较

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧