SQL SERVER 2008 发布订阅到SQL Server 2017避坑指南

本文详细记录了在配置SQL Server 2008到2017发布订阅过程中遇到的问题及解决办法。包括快照文件读取权限问题、远程链接失败、登录失败以及版本兼容性问题。解决方案涉及权限设置、SQL Server Browser服务、主机配置和使用命令行创建订阅。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    使用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',<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值