mysql 发布 订阅_sql server2014 发布与订阅的配置方法介绍包括【推送订阅】与【请求订阅】...

环境:windowsserver2012+ sqlserver2014

发布机       192.168.1.43    KC-DB01

订阅机       192.168.1.218    DB-Sync

SqlServer发布订阅

================================================================

基础知识

经验建议:

1.在装系统后先把机器主机名、用户名修改好(装完数据库后修改会严重影响发布订阅),然后再安装数据库;ps:血与泪的教训!

2.多个需要设置发布订阅的的数据库的sa用户名密码设置相同;(后来推送订阅测试不需要)

一、准备工作

1.确保发布机、订阅机器 Sql Server 代理 已经在运行并设置为自启动;

2.保证 SqlServer的主机名和物理机的主机名相同;若不同请看后面问题记录

3.确保发布机、订阅机1433端口能相互连接(互通);

4.添加域名解析,一般配置文件在C:\Windows\System32\drivers\etc 在最后面添加解析,两台机器都需要添加同样的解析

192.168.1.43    KC-DB01

192.168.1.218    DB-Sync

最后通过ping KC-DB01测试是否能正常解析到前面的43IP;

二、创建发布

建立测试表

CREATE TABLE TB_1(Id int primary key,Name char(200),InsertTime datetime default getdate())

insert into TB_1 select isnull(max(id),0)+1,'a'+ltrim(isnull(max(id),0)+1),getdate() from TB_1

select * from TB_1

发布数据库表增加sa权限

USE [KCMirrorDB]

GO

sp_changedbowner 'sa'

1、发布

31becadbe9dd22ac14569c85c7688db2.png

04a0997bc16cab67bf0e0ae9a864b760.png

选择发布类型,自行选择,区别下面有介绍,我们这里选择“事物发布”

ca80292058bb5429f0fdd0cc0912169c.png

选择要发布的项目

8d02591b8b8f48c7f73f89fa75da9fbf.png

可以勾选一些表,也可以发布存储过程视图等,但是下面的这些不能发布,原因也有说明

3ae4ac41414568b4b4f971355f88f31c.png

右键表格属性

9beade92f74c4799cb869779f3502a24.png

000c139c18ce16ca828d88699d3447c0.png

其他选项默认

如果需要订阅过去的表有索引和默认值:复制非聚集索引、复制默认值规范、复制默认值绑定同一改为True,如果没有更改为True这样订阅服务器同步不了这些索引和默认值。

根据情况,勾选自己要发布的部分表后执行下一步,进入筛选表行选项,可以筛选以上选择的表中不想同步的一些列,这里我们不筛选,直接下一步

取消立即创建快照并使用快照对订阅进行初始化

fd193ce6f295595600c8007f7d1d978e.png

b0781934149f53d2961e989c269169ad.png

这里先进入“快照代理-安全设置”按如下设置账号密码,然后同样的设置日志读取器代理

4640ff7dbc103c97d38b4123379c5d54.png

d40cf3359cd699761e01af229e51067b.png

e5c319b574ceff7a397d02a7ba5de5b4.png

e281f8bc3e9f77d0298ee923a92edd4b.png

最后更改快照的存储位置,【如果是请求订阅需要将地址设置为共享文件夹的方式】

右键刚创建的发布-属性

da43662bf0af0793d9b66965f73d1e52.png

ba87884608a129db69f23e7b93b30969.png

自此sqlserver的发布完成

验证发布正确性

发布完成后,查看发布是否成功、是否有错误;先确保发布成功,便于后面有问题时分析;

619d1c32de195aeec129196906d71260.png

43200c0587f774e191436b261c656a4c.png

正在生成快照,说明发布没有问题,等待快照生成完成;

===========================================================================================================================================

2、订阅

订阅的形式可以选择推送订阅或者请求订阅,请求订阅降低分发服务器处理工作的开销。只有在有很多订阅服务器的时候才比较明显,推送订阅与请求订阅更大的区别是在管理方面的不同;

这里推荐使用“推送订阅”

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.1、请求订阅

注意:请求订阅,需要订阅服务器有访问发布服务器快照目录的权限;

远程登录192.168.1.91机器

创建一个数据库,用于订阅同步到这个库里;

e473284f1205b9dca2e88ea44a683ec6.png

b5e540f38bd9174ba99a37d3d15f77f9.png

8839d79360560af99f0ccd227bfc8eb8.png

6174127c08f3d07bdf508a7f5c92199b.png

选择同步类型,(经过测试两次使用请求订阅都不成功,问题多多)

555802ac883837cf8831471e2efc328d.png

选择同步到本地的数据库(这个库可以是个空库,但若不是同库,里面不能有和要同步的表相同的表)

be8f22a8b2f6401fa50d04c105de444a.png

ec1849c2147814d6cff291bface88206.png

5549ce855614abdc8ed438e7924619b1.png

如上,请求订阅的时候需要从订阅服务器连接到 分发服务器

然后没啥重要步骤 下一步默认“连续运行” 下一步默认初始化时间“立即” 下一步 点击完成

a230b45c2543f66e697ec5a88732c664.png

右键订阅---查看同步状态:

5f96a97230e177febc55f63c36c004e9.png

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.2、推送订阅

a5e1adabe0e8cd2f12ec0d78f131cd14.png

推送订阅与请求订阅 下面的选项是不同的,注意

1eaac8089b431af8b1dfed4b64c7aa33.png

d2cc48c04b1ce786f021bca25200ad9f.png

验证订阅是否成功

到发布机上查看发布订阅状态

79c6371d61ba9ab8e0a948237d7c0aee.png

然后再到订阅机器上就可以看到刚才创建的订阅了

在订阅服务器上查看同步状态

47cd88bbaf7223464f2bed4fd91c7723.png

=====================================================================================================================================================

问题记录

同步部分表时,如果同步视图可能会导致同步失败,因为视图中可能有没有同步的表,导致整体同步失败;所以要注意同步视图;

数据库与主机名不一致

第一种情况下:

在SQL SERVER里面执行下面语句:

use master

go

select @@servername    --查看数据库里存的主机名

select serverproperty('servername')

使用上面的语句查询服务器的名称和实际计算机的名称,如果两者不一致,就需要修改。

不一致就执行下面的语句:

sp_dropserver 'WIN-43G4DVCEI6E'

go

sp_addserver 'WIN-F5','local'

修改完后,重启SQL SERVER服务。

数据库分离报错“该数据库正用于复制,不能删除或不能分离”

解决办法:到该数据库下执行:sp_removedbreplication 'LiaoDB'

LiaoDB为该数据库名;

发布报错

错误消息

进程无法在“WIN-19G6EV4O1JP”上执行“sp_replcmds”。 (源: MSSQL_REPL,错误号: MSSQL_REPL20011)

获取帮助: http://help/MSSQL_REPL20011

无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限。 (源: MSSQLServer,错误号: 15517)

获取帮助: http://help/15517

进程无法在“WIN-19G6EV4O1JP”上执行“sp_replcmds”。 (源: MSSQL_REPL,错误号: MSSQL_REPL22037)

获取帮助: http://help/MSSQL_REPL22037

13860ab3eaddb7f13fbfb4eb6e1f1d7e.png

解决办法

https://www.cnblogs.com/gaizai/p/3305879.html

错误号:15517

进程无法在“WIN-XXX”上执行“sp_replcmds” 无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限。 (源: MSSQLServer,错误号: 15517

权限不够,解决方法

ALTER AUTHORIZATION ON DATABASE::[数据库名] TO [sa] ALTER AUTHORIZATION ON DATABASE::[数据库名] TO [分发账户] USE 数据库名 GO sp_changedbowner '分发账户'

48304ba5e6f9fe08f3fa1abda7d326ab.png

ALTER AUTHORIZATION ON DATABASE::[LiaoDB] TO [sa]

ALTER AUTHORIZATION ON DATABASE::[LiaoDB] TO [fabu]

USE LiaoDB

GO

sp_changedbowner 'sa'

48304ba5e6f9fe08f3fa1abda7d326ab.png

比如我的数据库名称为 test, 发布账户为sa,订阅账户也为sa

48304ba5e6f9fe08f3fa1abda7d326ab.png

ALTER AUTHORIZATION ON DATABASE::[test] TO [sa]

USE test

GO

sp_changedbowner 'sa'

48304ba5e6f9fe08f3fa1abda7d326ab.png

订阅报错

错误信息

2017-01-04 10:24:44.394 初始化

由于出现操作系统错误 3,进程无法读取文件“E:\data_sync\unc\KC-DB01_KCMAINDB_FABU_KCMAINDB\20170104162525\GetMemberAccou4ce5f23b_109.pre”。

Category:OS

Source:

Number:  3

Message: 系统找不到指定的路径。

e48b3d715b81b4fb7e89c11479ffa55b.png

解决办法

主要原因就是订阅服务器访问订阅目录快照"D:\***假装如上报错路径***_109.pre"失败造成的。

解决方式:1

1.将存放快照的目录设置为共享,并设置读取的权限;

1)发布服务器设置:

在发布属性中,点击左侧的快照,在右边页面中的快照文件的位置默认为E:\data_sync\把该文件夹设置为共享,并且在安全项里,设置用户权限(我在系统添加了一个账户,并给这个账户访问该文件夹权限)

2)订阅服务器设置:

在订阅服务器,右击订阅的服务名,选择属性,设置属性参数如下

a.快照位置修改为备用文件夹

b.快照文件夹修改为 \\发布服务器的ip\repldata

79d6994f2d2907e862529d446c516f6a.png

然后通过命令输入该路径,回车会提示输入账户密码,输入发布机创建的账户,并选择记住密码即可;最后在查看同步状态中 停止同步,然后重新初始化,最后在同步状态中启动同步即可;

解决办法2.使用FTP验证传输快照文件,之前步骤都一样只是认证给订阅服务器权限为ftp

参考链接:(测试过不好用,需要自己搭建ftp服务器)

解决方法3.请求订阅改成推送订阅;(该方式不需要订阅机访问发布机权限)

“此订阅已存在”,但是在订阅服务器上却看不到该订阅

解决:

到发布服务器的订阅项目下,给当前订阅删除掉,再到订阅服务器重新创建订阅

单发布多订阅

服务器A : testpush库

服务器B、服务器C 订阅服务器A 的testpush发布

在B、C上创建好订阅之后,需要重启服务器A 的 testpush库的“日志快照”作业,以便生成新的发布快照 (日志快照-右键-作业开始步骤)

100dfb7be933d4aeebf1369c202288dc.png

参考:

http://www.th7.cn/db/mssql/201802/263764.shtml

https://www.cnblogs.com/TeyGao/p/3521109.html

https://www.cnblogs.com/TeyGao/p/3521109.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值