1.两台服务器,主服务器,从服务器,两台服务器都安装SQL Server 2008R2并且安装相同表结构的数据库(需要实时同步的数据库)--追加:没有主键的表不能进行数据同步
2.主服务器数据库安装完毕,打开SQL Server 配置管理器,把SQL Server 代理服务打开(已打开请忽略)
3.登录主服务器数据库,从数据库左侧菜单栏找到->复制->本地发布,右击新建发布
4.默认主服务器当作分发服务器
5.快照文件夹最好新建一个目录(需要手动在D盘新建目录),默认目录会有权限问题(对于新手权限问题不好解决)
6.选择需要发布的数据库
7.发布类型选择事务发布(发布类型的区别可自行百度,此处不做叙述)
8.选择需要发布的表(需要同步到从服务器数据库表的数据)--追加:存储过程、自定义函数都可以勾选同步
9.筛选表行(意思是表中的哪些字段你不需要同步到从服务器)
10.快照代理,选择->立即创建快照并使快照保持可用状态,以初始化订阅
11.代理安全性,点击安全设置,按照红色框中设置即可
12.向导操作,选择->创建发布->下一步
13.完成该向导,填写一个发布名称,点击完成,到此步骤主服务器本地订阅发布已经完成
14.登录从服务器数据库,从数据库左侧菜单栏找到->复制->本地订阅->右击新建订阅->选择查找SQL Server 发布服务器,数据库服务器名称要是主服务器计算机名称,输入登录名和密码
15.选择刚才主服务器发布的订阅
16.选择运行分发代理的位置,勾选第一个,如果选择第二个也需要开启从服务器SQL Server代理服务
17.选择订阅服务器(从服务器),订阅数据库需要同步的数据库(主服务器和从服务器热备份的数据库结构需要一致)
18.分发代理安全性,推荐按红色框中设置,如下图:
19.同步计划选择连续运行
20.初始化订阅
21.向导操作->创建订阅->下一步->完成
22.刷新从服务器左侧菜单栏下的本地订阅,会出现刚刚创建好的订阅,为了验证设置是否成功,右击创建好的订阅->查看同步状态,如图显示同步正在进行则说明双机热备份设置成功
23.测试配置是否生效,在主服务器数据库通过updata语句修改某个表的字段值,然后查看从服务器数据库是否对应修改即可
来自:https://www.cnblogs.com/itdaocaoren/p/10475497.html (评论:忘了事物复制吧,用Always on)
另一篇比较有参考价值的文章:https://www.cnblogs.com/ind9x/p/13192182.html
语句强制删除发布
EXEC sp_removedbreplication 'WR_YK1'; --- 引号里是发布数据库名称
SQL2008发布订阅报错“进程无法在WIN-SERVER 上执行 sp_replcmds”
执行以下SQL脚本
首先执行
ALTER AUTHORIZATION ON DATABASE::[数据库名] TO [sa] ALTER AUTHORIZATION ON DATABASE::[数据库名] TO [SQL登录用户名]
然后执行
USE 数据库名 GO sp_changedbowner 'SQL登录用户名'
最后执行
EXEC sp_repldone @xactid =NULL, @xact_segno =NULL, @numtrans = 0, @time =0, @reset =1 EXEC sp_replflush
如果还是不可以, 重启SQL Server Agent服务。
修改机器名后
--查看当前数据库服务器名称:
select @@ServerName
--查看当前服务器名称
select serverproperty('servername')
--修改数据库服务器名称
sp_dropserver 'old_servername'
sp_addserver 'new_servername','local'
--重启数据库服务,修改完成
--安全性->登陆名->右键,新建登陆名->选择Windows身份验证
select @@servername;
select serverproperty('servername')
如果这两个结果不一致,说明机器改过名字,在配置复制的时候就会报上面的错误。
--要修复此问题
--执行下面的语句,完成后重新启动SQL服务
if serverproperty('servername') <> @@servername
begin
declare @server sysname
set @server = @@servername
exec sp_dropserver @server = @server
set @server = cast(serverproperty('servername') as sysname)
exec sp_addserver @server = @server , @local = 'LOCAL'
end
最后别忘了重新启动服务哦,启动完后,在运行:
use master
go
select @@servername;
select serverproperty('servername')
发布订阅 新建发布结束时候提示 distributor_admin 登录失败
曾经有做过发布订阅,分发服务器已经产生此用户,在分发服务器上将此用户的密码策略取消即可。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有