使用SQL Server Management Studio创建发布与订阅的相关操作参考这里或官网文档, 本文主要记录在配置过程中遇到的坑
1.由于出现操作系统错误 3,进程无法读取文件“"C:\Program Files\Microsoft SQL
Server\MSSQL10_50.MSSQLSERVER\MSSQL\ReplData\unc\NETNETNET-
PC_CLOUDTRADB_SOA_LNGZ_20151130\20151130092501\View_TenderPurchase_45.pre
这是由于快照文件读取权限问题导致, 可以在同一台机器上链接两台sql server 服务避免这个问题
2.无法链接到Subscriber “XXX”
xxxx 无法打开与SQL Swever 的链接
与SQL Server链接时发生了与网络相关的或特定于实例的错误。 找不到或无法访问服务器。请检查实例名称是否正确以及SQL Server是否配置为允许远程链接。
- 检查已配置为允许远程链接
- SQL Server Browers 服务已开启
- 由于订阅模式选择的是由分发服务器推送订阅, 故需在发布服务器上配置订阅服务器的host
3.无法链接到 “XXX”
用户’sa’ 登录失败
- 检查密码是否正确(走了很多弯路, 包括设置别名,机器名, 机器名与服务名一致等。首先还是要检查提示的字面问题)
4.SQL Server 2008 发布订阅到SQL Server 2017 on Linux时,所选的订阅服务器不能满足所选发布的最低版本兼容级别
第一考虑为两版本的兼容级别不同导致 , 查询发现2008 的兼容级别为100, 2017 的兼容级别为140 , 修改2017的兼容级别为100重试 , 得到相同结果.
查看兼容级别
SELECT name, compatibility_level FROM sys.databases;
修改兼容级别
ALTER DATABASE database_name
SET COMPATIBILITY_LEVEL = 100;
由于本地安装SSMS版本为2012 , 认为可能是ssms版本导致, 所以采用命令订阅 。 创建一个相同版本的订阅并生成脚本 , 指定为一下目录, NewSubscription文件为订阅命令,修改相应的订阅服务器名称@subscriber , 数据库名称@destination_db , 发布名称 @publication , 用户名@subscriber_login ,密码@subscriber_password
首先在订阅服务器上创建数据库 she111用于接受订阅。 通过命令实现快照发布订阅, 在发布服务器上执行。通过发布服务器推送订阅 。
-- 订阅
use [disshell]
exec sp_addsubscription @publication = N'she2', @subscriber = N'sql1', @destination_db = N'she111', @subscription_type = N'Push', @sync_type = N'automatic', @article = N'all',<