Appearance
SQL Server 发布订阅配置
1. 前言
- A 服务器:发布服务器
- B 服务器:订阅服务器
2. 配置 hosts
找到 A 服务器的 hosts 文件,路径通常在 C:\Windows\System32\drivers\etc\hosts,在最后一行配置上 B 服务器的 IP 和主机名,IP 和主机名之间用空格隔开,例如:
INI# localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost 192.168.2.213 WIN-31LSDL0R05M 192.168.2.211 WIN-96LAQOGT8L61
2
3
4
5
6切换到 B 服务器,一样打开 hosts 文件,配置上 A 服务器的 IP 和主机名
3. 发布服务器配置
3.1. 配置分发
新建分发


配置当前服务器为分发服务器

选择快照文件夹,建议不要放在 C 盘

配置分发数据库




3.2. 新建发布
发布的数据库最好有过完整备份
新建发布


选择需要发布的数据库

选择发布类型,这里推荐选择事务发布

勾选需要发布的内容
如果需要订阅过去的表有索引和默认值:非聚集索引、默认值规范等这些默认是不复制的,可以根据自己的实际情况勾选是否制索引、默认值等配置。


快照代理

代理安全设置



结束时创建发布



4. 订阅服务器配置
新建订阅


选择发布服务器



分发代理设置
订阅的形式可以选择推送订阅或者请求订阅,请求订阅可以降低分发服务器处理工作的开销。但只有在有很多订阅服务器的时候才比较明显,通常情况下推荐选择推送订阅就好了,优点是易于管理。

选择订阅的数据库

代理安全设置


接下来直接下一步直到完成就行




5. 确认发布订阅
切换到 A 服务器,启动复制监视器,这里可以看到发布订阅的运行状态,并查看失败的原因


6. 常见问题处理
6.1. 分发代理选择的是请求订阅
分发代理选择的是请求订阅的话,大概率会出现以类似下错误提示:
Text
由于出现操作系统错误 3,进程无法读取文件 “*.pre”。(源: MSSQL_REPL,错误号: MSSQL_REPL20024)这个问题的主要原因就是订阅服务器访问订阅目录快照 “*.pre” 失败造成的。
6.1.1. 解决办法 1
- 切换到发布服务器,找到快照文件的文件夹,右键文件夹属性设置共享
- 切换到订阅服务器,右键订阅属性,修改快照位置为 “备用文件夹”,并修改快照文件夹的路径为发布服务器共享的文件夹路径,如:
\\发布服务器主机名\ReplData
6.1.2. 解决办法 2
使用 FTP 验证传输快照文件
6.1.3. 解决办法 3
切换分发代理为推送订阅