两个数据库之间的同步问题

pkukevin 2009-09-07 06:18:34
A数据库(ms sql server)、PowerBuilder 6.5开发的客户端,B数据库(ms sql server)、PowerBuilder 6.5开发的客户端,A数据库的插入更新操作能尽快的同步到B数据库。通过什么样的通信机制让B数据库知道A数据库有更新呢?有什么好的解决方案? 谢谢大家的回答
...全文
97 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangjiang264 2009-09-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 pkukevin 的回复:]
如果两个数据库不一样呢,只是想将一个数据库中的某些字段更新到另一个数据库的某些字段。


引用 8 楼 zhangjiang264 的回复:
三种复制技术,根据需要选择。
用事务复制,就不用判断A是否更新,
会自动同步。


[/Quote]

只复制几个字段也是可以的啊
xman_78tom 2009-09-08
  • 打赏
  • 举报
回复
触发器+分布事务
pkukevin 2009-09-07
  • 打赏
  • 举报
回复
如果两个数据库不一样呢,只是想将一个数据库中的某些字段更新到另一个数据库的某些字段。


[Quote=引用 8 楼 zhangjiang264 的回复:]
三种复制技术,根据需要选择。
用事务复制,就不用判断A是否更新,
会自动同步。
[/Quote]
zhangjiang264 2009-09-07
  • 打赏
  • 举报
回复
三种复制技术,根据需要选择。
用事务复制,就不用判断A是否更新,
会自动同步。
xman_78tom 2009-09-07
  • 打赏
  • 举报
回复
事务复制
soft_wsx 2009-09-07
  • 打赏
  • 举报
回复
>>>>>>soft_wsx>>>>>>
--数据备份与还原>>同步备用服务器
--1、完全备份主数据库
--2、使用带SANDBY子句的RESTORE DATABASE语句从主数据库的完全备份中还原生成备用数据库
--3、创建作业,使用BACKUP LOG定时对主数据库时行日志备份
--4、创建作业,使用带STANDBY子句的RESTORE LOG语句定时从主数据库的日志备份中恢复数据到备用数据库
--5、主数据库不可用时,使用带RECOVERY子句的RESTORE LOG语句使备用数据库升级为主数据库
----具体代码及说明如下
---->>首先、创建一个淙用的数据库(主数据库)
create database db_test_primary
on
(
name=db_test_primary_data,
filename='d:\db_test_primary_data.mdf')
log on
(
name='db_test_primary_log',
filename='d:\db_test_primary_log.ldf'
)
go

--在主数据库上创建表
create TABLE db_test_primary.dbo.db_test_primary1(id int)
insert db_test_primary.dbo.db_test_primary1 select top 1000 ID from dbo.sysobjects
go
--对主数据库进行备份
backup database db_test_primary
to disk='d:\db_test_primary_data.bak'
with format
go

--通过主数据库备份文件创建备用数据库(演示主数据库与这个备用数据库之间的同步)
restore database db_test_second
from disk='d:\db_test_primary_data.bak'
with replace,
standby='d:\db_test_primary_bak.ldf',
move 'db_test_primary_data' to 'd:\db_test_second_data.mdf',
move 'db_test_primary_log' to 'd:\db_test_second_log.ldf'

--启动SQL AGENT服务(需要通过作业定时将主数据库同步到备用数据库)
exec master.dbo.xp_cmdshell 'net start sqlserveragent',no_output
go

--创建主服务数据库与备用服务器数据库之间同步的作业
declare @jobid uniqueidentifier
exec msdb.dbo.sp_add_job
@job_id=@jobid output,
@job_name=N'数据同步'

--创建同步处理步骤
exec msdb.dbo.sp_add_jobstep
@job_id=@jobid,
@step_name=N'数据同步',
@subsystem='TSQL',
@command=N'
--主数据库中进行日志备份
backup log db_test_primary
to disk=''d:\test_log_primary.bak''
with format

--备用数据中还原主数据库的日志备份(应用主数据库中的最新变化)
--注:实际应该对主数据库备份与备用数据库的还原作业应该分别在主服务器和备用服务器上建立,
--并且备份文件应该放在主服务器和备用服务器都能访问的共享目录中
restore log db_test_second
from disk=''d:\test_log_primary.bak''
with standby=''d:\test_log.ldf''',
@retry_attempts=5,
@retry_interval=5
--创建调度
exec msdb.dbo.sp_add_jobschedule
@job_id=@jobid,
@name='时间安排',
@freq_TYPE=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1

--添加目录服务器
exec msdb.dbo.sp_add_jobserver
@job_ID=@jobid,
@server_name=N'(local)'
go
--通过上述处理,主数据库与备用数据库之间的同步关系已经设置完成
--下面开始测试是否能实现同步
create table db_test_primary.dbo.db_test_primary3(id int)
go
insert db_test_primary.dbo.db_test_primary3 select top 5000 id from dbo.sysobjects
waitfor delay '00:01:30'
go

--查询一下备用数据库,看看同步是否成功

select * from db_test_second.dbo.db_test_primary3


drop table db_test_primary.dbo.db_test_primary3


--最后删除测试环境
drop database msdb.dbo.sp_delete_job
@job_name=N'数据同步'
这种也可以的!作业+日志,注前提是把设置数据库的恢复模式为完全
lihan6415151528 2009-09-07
  • 打赏
  • 举报
回复

SQL Server 2000订阅与发布的具体操作
同步过程
  一、准备工作,如果完成则可跳过。
  1、内网DB服务器作为发布服务器,外网DB服务器作为订阅服务器。
  发布服务器和订阅服务器上分别创建Windows用户jl,密码jl,隶属于administrators,注意要保持一致。
  2、发布服务器上创建一个共享目录,作为发布快照文件的存放目录。例如:在D盘根目录下建文件夹名为SqlCopy,设置用户jl,权限为完全控制。
  3、确定发布服务器和订阅服务器的数据库autoweb保持一致。
  4、在发布服务器和订阅服务器的SQL Server中创建用户登陆名jl,作为发布数据库autoweb的拥有者(设置为dbo_owner和public)。用户名和密码都一致。
  5、打开服务(控制面板---管理工具---服务)
  ---右击SQLSERVER AGENT---属性---登录---选择“此帐户”
  ---输入或选择第一步中创建的WINDOWS 用户jl,
  ---“密码“中输入该用户密码jl
  6、开启SQL Server 2000的网络协议TCP/IP和管道命名协议并重启网络服务。
  7、设置SQL SERVER 身份验证,解决连接时的权限问题(发布、订阅服务器均设置)
  步骤为:对象资源管理器----右击SQL实例-----属性----安全性----服务器身份验证------选“SQL Server和WINDOWS“,然后点确定。
  8、发布服务器和订阅服务器互相注册
  步骤如下:视图----单击以注册服务器----右键数据库引擎----新建服务器注册-----填写要注册的远程服务器名称------身份验证选“SQL Server验证“-----用户名(sa) 密码------创建组(也可不建)-----完成。对于只能用IP,不能用计算机名的,为其注册服务器别名
  二、发布和订阅
  如下工作都在发布服务器上配置,包括发布和订阅。
  快照发布和订阅
  1、 选择 复制 节点,右键本地发布 ----下一步---------系统弹出对话框看提示----直到“指定快照文件夹”----在“快照文件夹“中输入准备工作中创建的目录(指向步骤3所建的共享文件夹)------选择发布数据库-------选择发布类型
  下一步―――选择要发布的数据库autoweb中的表,将b(B)开头的表去掉,V开头的表去掉,c_开头的表去掉,t_开头的表去掉,剩下的表作为快照发布到订阅服务器上(单向传输)
  根据情况决定执行发布的间隔时间,如图每天每20分钟执行一次。
  下一步快照代理安全性,设置如图,连接到发布服务器用户jl,密码jl.
  -------填写发布名称。
  2、 选择 复制 节点,右键本地订阅,选择发布服务器-------选择订阅方式(选择推送订阅))-------填加订阅服务器--------选择代理计划(一般选择连续运行)---------其余选择默认项。
  至此完成快照发布和订阅。
  合并发布和订阅
  1、选择如下三个表作为合并发布的对象,用于双向通讯
  根据情况决定执行发布的间隔时间,如图每天每20分钟执行一次。
  2、 选择 复制 节点,右键本地订阅,选择发布服务器-------选择订阅方式(选择推送订阅))-------填加订阅服务器--------选择代理计划(一般选择连续运行)---------其余选择默认项。
  至此完成合并发布和订阅
  -------------------------------------------------------------------
  主要是要注意权限的问题,一般做发布/订阅,建议你做如下准备工作:
  1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户
  我的电脑
  --控制面板
  --管理工具
  --计算机管理
  --用户和组
  --右键用户
  --新建用户
  --建立一个隶属于administrator组的登陆windows的用户
  2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:
  我的电脑--D: 新建一个目录,名为: PUB
  --右键这个新建的目录
  --属性--共享
  --选择"共享该文件夹"
  --通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限
  --确定
  3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)
  开始--程序--管理工具--服务
  --右键SQLSERVERAGENT
  --属性--登陆--选择"此账户"
  --输入或者选择第一步中创建的windows登录用户名
  --"密码"中输入该用户的密码
  4.设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)
  企业管理器
  --右键SQL实例--属性
  --安全性--身份验证
  --选择"SQL Server 和 Windows"
  --确定
  5.在发布服务器和订阅服务器上互相注册
  企业管理器
  --右键SQL Server组
  --新建SQL Server注册...
  --下一步--可用的服务器中,输入你要注册的远程服务器名--添加
  --下一步--连接使用,选择第二个"SQL Server身份验证"
  --下一步--输入用户名和密码
  --下一步--选择SQL Server组,也可以创建一个新组
  --下一步--完成
  6.对于只能用IP,不能用计算机名的,为其注册服务器别名
  (在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
  开始--程序--Microsoft SQL Server--客户端网络实用工具
  --别名--添加
  --网络库选择"tcp/ip"--服务器别名输入SQL服务器名
  --连接参数--服务器名称中输入SQL服务器ip地址
  --如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号


ks_reny 2009-09-07
  • 打赏
  • 举报
回复
用触发器。
pkukevin 2009-09-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiequan2 的回复:]
同步,复制
[/Quote]

我想在B服务器端写个监控程序,定时去检查A数据库是否有更新,这样设计会有什么问题吗
xiequan2 2009-09-07
  • 打赏
  • 举报
回复
同步,复制
技术选型1,前端微信小程序原生框架cssJavaScript2,管理后台云开发Cms内容管理系统web网页3,数据后台小程序云开发云函数云数据库云存储 1,小程序端1-1,首页首页有以下几个功能点点餐菜单浏览排号等位拨打电话顶部轮播图搜索菜品这里点餐分两种1,可以设置直接点餐直接点餐:适合小型饭店,或者奶茶类的快餐店。直接就可以下单,不用识别桌号2,也可设置扫码点餐扫码点餐适合中大型饭店,可以区分桌号,方便管理我后面会教大家如何生成桌号二维码,只需要把对应桌号的二维码贴在餐桌上,用户点击 扫码点餐 识别二维码,即可获取到桌号信息。1-2,菜品浏览页菜品浏览分两种1,不带分类适合菜品少的时候2,带分类菜品多的时候,带分类更方便客户选择不带分类 带分类 1-3,搜索功能我们这里搜索有两个触发方式1,直接点击搜索图标2,点击键盘上的搜索键1-4,搜索结果,支持模糊查询如我这里只搜‘鱼’,那么菜品中所有包含鱼的都可以搜索到 1-5,购物车首先菜品列表页可以直接添加商品到购物车购物车弹起后可以做如下操作1,增删单个菜品2,清空购物车3,删除菜品这些操作都和菜品列表是联动的,也就是菜品列表和购物车里增删个数,都是可以同步的。我会在项目预览章节的视频里做具体演示。1-6,下单页下单页就是确认订单后进行下单支付的。有以下功能1,点餐明细2,价格计算3,桌号地址4,就餐人数5,添加备注6,点击下单1-7,支付页支付页分两种方式1,模拟支付适合前期学习,毕业设计等演示类的场景。2,真实微信支付适合商用,但是使用微信支付必须要有营业执照,所以前期如果只是学习的话,建议使用模拟支付。 1-8,我的订单页我的订单页分以下几个状态1,新下单待上餐2,已上餐待评价3,订单完成4,订单取消1-9,提交评论页我们可以对店家进行评论。 1-10,评价列表页可以查看所有评价和自己的评价 1-11,排号等位可以看出,我们可以选择就餐人数,排大桌或者小桌。我这里已排小桌为例通过上图可以看出1,当前排号情况2,我的排号3,可以重新排号4,到号时会有到号提示后面我会把订阅消息功能加进来,这样到号后会有订阅消息提示。 1-12,个人中心个人中心分登录和未登录两种状态未登录已登录 1-13,微信授权登录小程序 2,后厨端和排号管理端2-1,后厨端主要供后厨的厨师使用1,可以查看当前新下单2,完成后可以操作菜品完成3,可以监听用户新下单4,有新订单时会有语音提示5,厨师登录页语音提示我会在视频课里具体演示厨师登录页 厨师管理页可以查看待制作订单用户新下单后,会有语音提示 2-2,排号管理页同样也有登录页,和上面厨师登录一样,这里重点看下排号管理页管理员可以查看当前排号情况,可以叫号。3,cms管理后台我们这里的可视化网页后台使用的时云开发自带的cms(内容管理)3-1,登录页 3-2,管理后台我们可以在这里 1,添加轮播图,删除轮播图,修改轮播图2,添加菜品,删除菜品,修改菜品,上架下架菜品3,管理订单4,查看评价5,管理后厨和排号管理员6,查看排号数据  比如我查询某个用户的所有订单 查询所有新下单还未上菜的订单 还有更多的功能,我会在视频课里给大家用视频来演示,这样更直观。 4,数据库数据库我们这里用云开发自带的云数据库餐厅管理员查看趋势图

22,209

社区成员

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

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