求教开发用数据库和实际运行的数据库表结构更新同步的处理

starrain95 2013-12-24 03:25:39
有两个数据库:
1、开发用的测试数据库dev,在局域网.
2、服务上实际部署运行的数据库real,在外网,可远程桌面.

情况:
dev库的某些表结构发生更改(新增字段,原有字段修改)
real库中已有大量的数据

目前采用的方式:
手动记录更改的内容,手动在real库上做修改。

问题:
1、如何在保留real库中数据的前提下,通过便捷准确的方式(非手动)将dev库的修改同步到real库?
2、如何对比dev和real结构是否一致,哪些地方不一致?

...全文
235 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2014-01-03
  • 打赏
  • 举报
回复
在2个服务器上分别导出sql脚本 再比较这2个sql文件,不同的就是需要同步的
giftzheng 2014-01-02
  • 打赏
  • 举报
回复
应该写个PROC生成日志,并成成生修改sql语句.
铁歌 2014-01-01
  • 打赏
  • 举报
回复
实施一个复制好了。如果宽带不是问题的话。。。
LongRui888 2013-12-24
  • 打赏
  • 举报
回复
另外,如果你要自己来做,可以考虑通过ddl触发器,记录结构的变化,可以参考如下的代码:



--2.1在master数据库中建立服务器级别跟踪表
use master
go

create table server_eventdata
	(eventdata xml,
     principal_user nvarchar(100),
     login_user nvarchar(100)
    )
go    
/*
select * from sys.trigger_event_types
where type_name like '%table%' or
      type_name like '%deny%' or
      type_name like '%revoke%'
*/

    
    
--2.2建立服务器级别触发器

create trigger gyy_server
on all server
for create_table,
    alter_table,
    drop_table
as

insert into server_eventdata
select EVENTDATA(),USER,SUSER_NAME()
go


--2.3
create database wc
go

use wc
go

create table dbo.wc_table(v int)

insert into dbo.wc_table values(1)
go


use wc
go

alter table dbo.wc_table
add name varchar(100)

alter table dbo.wc_table
add tt datetime default getdate()
go


--查看记录的事件
select --EVENTDATA,  --里面是所有的信息
       eventdata.value('(/EVENT_INSTANCE/EventType)[1]','nvarchar(100)') as '事件类型',
       eventdata.value('(/EVENT_INSTANCE/TSQLCommand)[1]','nvarchar(100)') as 'sql授权语句',
       
       eventdata.value('(/EVENT_INSTANCE/PostTime)[1]','datetime') as '执行时间',
       
       
       '登录名' + eventdata.value('(/EVENT_INSTANCE/LoginName)[1]','nvarchar(100)') + 
       '用户名' + eventdata.value('(/EVENT_INSTANCE/UserName)[1]','nvarchar(100)') + ',授予者'+
       eventdata.value('(/EVENT_INSTANCE/Grantor)[1]','nvarchar(100)') + ' 把类型为:' +
       eventdata.value('(/EVENT_INSTANCE/ObjectType)[1]','nvarchar(100)') + '的对象' +
       eventdata.value('(/EVENT_INSTANCE/DatabaseName)[1]','nvarchar(100)') + '.' +
       eventdata.value('(/EVENT_INSTANCE/SchemaName)[1]','nvarchar(100)') + '.' +
       eventdata.value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(100)') + '的' +
       eventdata.value('(/EVENT_INSTANCE/Permissions/Permission)[1]','nvarchar(100)') +'权限授予给' +
       
       eventdata.value('(/EVENT_INSTANCE/Grantees)[1]','nvarchar(100)')            
                   
from master.dbo.server_eventdata t
/*
事件类型	         sql授权语句	                                                    执行时间	                 (无列名)
CREATE_TABLE	create table dbo.wc_table(v int) 	                        2013-11-07 10:22:31.157	NULL
ALTER_TABLE	    alter table dbo.wc_table add name varchar(100)  	        2013-11-07 10:23:59.987	NULL
ALTER_TABLE	    alter table dbo.wc_table add tt datetime default getdate() 	2013-11-07 10:24:00.013	NULL
*/
LongRui888 2013-12-24
  • 打赏
  • 举报
回复
可以考虑用 redgate: SQL开发利器SQL Prompt 5.1完全破解+使用教程 http://www.cnblogs.com/keepfool/archive/2012/05/27/2519839.html
發糞塗牆 2013-12-24
  • 打赏
  • 举报
回复
最好是做好版本控制,不然再牛逼的工具都无能为力
發糞塗牆 2013-12-24
  • 打赏
  • 举报
回复
对于你这种情况,以前我用这个工具来对比,但是前提是你能在其中一端访问对方,如果网络不通,工具是不能用的http://download.csdn.net/detail/dba_huangzj/5178694
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 用户账户控制(UAC)白名单的配置 Windows7环境中 UAC(User Account Control,用户帐户控制)是由微软在Windows Vista版本中推出的一项旨在增强系统安全性的创新技术,该技术强制要求用户在执行可能干扰计算机正常运作的操作或进行更改会波及其他用户设置的变动前,必须提供相应的权限或管理员密码进行验证。通过对这些操作启动前进行授权确认,UAC能够有效阻止恶意软件及间谍软件在未获授权的状态下于计算机内进行安装或实施修改。 自从Vista版本问世以来,微软便开始推行这一全新的安全机制,可视为对系统安全防护的显著提升。尽管UAC确实能够在一定程度上对某些非法程序起到防御作用,但与此同时,这一功能也给众多用户带来了诸多不便。 因此,许多用户开始探寻是否存在类似于白名单的功能,以便将那些值得信赖的程序直接赋予运行权限。事实上,这类功能确实存在,不过微软并未将其作为标准配置提供。 网络上关于此问题的绝大多数建议都是建议禁用UAC,这种说法显然缺乏针对性,因为若用户希望禁用此功能,本就不会提出相关疑问。 通过运用微软官方发布的Microsoft Application Compatibility Toolkit 5.6版本,可以将信任的程序纳入系统白名单范畴。 获取Application Compatibility Toolkit 安装程序成功后会出现三个可执行文件 以管理员身份启动Compatibility Administrator 在Custom DataBases部分创建新的数据库,并添加一个Application Fix(在下方空白处点击右键,选择...

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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