在这里要提醒大家的是(为了更好的理解,以下是本人自己理解,如有错误,请指出):主数据库一般是把数据发布出去,然后在连接从数据库对发布的数据进行订阅,同步到从数据库中。
1、发布。发布需要用实际的服务器名称,不能使用服务器的IP地址进行。能发布的信息包括【表】、【存储过程】、【用户函数】如果使用IP会有错误,如下图:
具体发布过程如下:
1、找到数据库服务器下的【复制】--【本地发布】,选择【新建发布】。如下图:
2.选择待发布的数据库。如下图:
3、选择发布类型。这里选择的默认类型【快照发布】。几种发布类型的区别,SQL SERVER都在下面给出了说明。如下图:
4、选择待发布的类容。如下图:
上图中右侧就是筛选的SQL语句。
5、设置快照代理。如下图:
更改同步频率如下图:
6、设置代理安全性。如下图:
7、填写发布名称
8、完成发布。如下图:
2、订阅。订阅是对数据库发布的快照进行同步,将发布的数据源数据同步到目标数据库。具体订阅过程如下;
1、找到数据库服务器下的【复制】--【本地订阅】,选择【新建订阅】。如下图:
2、选择订阅的发布。如下图:
3、选择分发代理的位置;如下图:
4、选择订阅服务器上的存放同步过来的数据的一个或者多个目标数据库。如下图:
若要添加多个订阅数据库,则点击【添加订阅服务器】。如下图:
5、设置分发代理的安全性。如下图:
6、设置同步计划。如下图:
7、完成订阅。如下图:
这样就完成了发布与订阅的整个流程。
这里,和上节一起就介绍完了SQL Server数据库同步的两种方式,希望对你有用。
方法有很多种,不知道你的具体情况如果两个库是一个sqlserver服务器中可以直接使用触发器如我在02_db库中的bas_area表下建立一下触发器SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER TRIGGER [dbo].[TRI_Bas_Area_Insert] ON [dbo].[Bas_Area] for INSERTAS begininsert into [01_db].[dbo].[Bas_Area2] select AreaId,ParentId,AreaName from inserted --如果表结构不一样,只取你需要的字段,类型不一样可以转换一下end但是必须得带数据库名如 [01_db]如果两个库不在一个sqlserver服务器中也可以使用触发器在sqlserver企业管理里面中点击 服务器对象-链接服务器 然后右键新建链接服务器 建立一个链接服务器,这样两个不同库之间也可以通信 只需要把 insert into [01_db].[dbo].[Bas_Area] select AreaId,ParentId,AreaName from inserted修改为 insert into 链接服务器的名称. [01_db].[dbo].[Bas_Area] select AreaId,ParentId,AreaName from inserted要么做主从要么加入一台新的主服务器
所有的写入 *** 作,都通过分服务器提交到主服务器,具体办法,可以采用SSB技术什么的
然后再主服务器,在同步链等方式,同步到分服务器用于读取。
通过这个方式实现读写分离,和同步
这样可以达到实时同步
还有个方案就是你可以考虑简历不同的库,然后主从方式互相作为主从(当然也可以考虑做事务日志传输的方式实现这一步)
分别写入各自的库,读的时候可以考虑视图方式实现统一读取
你觉得麻烦,就上cluster吧!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)