日期:2014-05-18  浏览次数:20491 次

经常修改数据库,导致和客户那边的数据库不一样了
做了一个系统,刚开始的时候,我如果更改了代码或改了数据库,直接把我这边的mdf文件发过去,替换他那边的,就可以了。后来他那边录了很多东西,就不能这样替换了,每次更改数据库,我都写一个文档,让他那边也这样修改。
时间长了,出问题了,不知道哪一步没做对,我们两边的数据库不一样。

我想写一段代码,来判断一下我们两边到底哪些字段不一样,大侠提示一下吧。

他那边的服务器是不允许联网的。

------解决方案--------------------

你首先需要把你的库换另外一个名字附加到客户,在客户那边执行,或者把客户的库拿到你本地执行。
大概就是下面的思路,至于触发器,存储过程..你需要对比什么写什么~

SQL code


--表名不一样
SELECT TABLE_NAME
FROM TEMP1.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' 
  AND TABLE_NAME NOT IN (SELECT TABLE_NAME
                         FROM TEMP2.INFORMATION_SCHEMA.TABLES
                         WHERE TABLE_TYPE = 'BASE TABLE')

--表结构不一样
SELECT TEMP1.DBO.SYSOBJECTS.NAME AS TABLE_NAME,
       TEMP1.DBO.SYSCOLUMNS.NAME AS COLUMN_NAME
FROM TEMP1.DBO.SYSCOLUMNS
INNER JOIN TEMP1.DBO.SYSOBJECTS
ON TEMP1.DBO.SYSCOLUMNS.ID = TEMP1.DBO.SYSOBJECTS.ID
WHERE (TEMP1.DBO.SYSOBJECTS.XTYPE = 'u')
AND (NOT (TEMP1.DBO.SYSOBJECTS.NAME LIKE 'dtproperties'))

------解决方案--------------------
右键数据库--任务--生成脚本