zoukankan      html  css  js  c++  java
  • 超详细SQL SERVER 2016跨网段和局域网发布订阅配置图解和常见问题

    最近学习了一下配置SqlServer数据库的同步订阅功能,过程中遇到了一些常见的问题,下面把详细的配置过程和问题作一个汇总,希望能帮到有需要的朋友。

    这次实验分别在局域网和跨网段进行,先局域网中配置,再跨网段配置,按需查看。

    下面文章的内容将分为两个部分

    目录

    一、通过非命令行方式配置同步订阅

    (1)实验环境说明

    (2)实验前准备

    (3)订阅设置

    (4)测试同步订阅

    二、常见问题汇总

    三、总结


    正文部分

    一、通过非命令行方式配置同步订阅

    (1)实验环境说明

    实验环境,两台在同一局域网(跨网段的在后面再详细说明)的PC机,这里PC1是作为分发服务器,PC2作为订阅服务器

    PC1

    系统:win10

    数据库版本:SQL Server 2016

    IP:192.168.0.62

    Sqlserver端口:1433

    计算机名:DESKTOP-Aaron1

    工作组:WORKGROUP

    用户名:SqlServer

     

    PC2

    系统:win10

    数据库版本:SQL Server 2016

    IP:192.168.0.152

    Sqlserver端口:1433

    计算机名:DESKTOP-Aaron2

    工作组:WORKGROUP

    用户名:SqlServer

     

    (2)实验前准备

    检查几个设置,这是实验成功的关键,PC1和PC2都要进行相同的配置。

    a.开共享


    在任务栏的计算机图标右键->打开网络和共享中心->更改高级共享设置


    在高级共享里面开启共享


    b.防火墙开1433 端口

    打开控制面板,选择系统与安全


    打开防火墙设置中的高级设置

     

     


     

    新建一个入站规则


    点击新建规则->端口


    端口->填写开放的端口号


    填写开放的端口号->选择允许连接


    下面的全部默认就可以


    c.配置管理器设置TCP/IP启用


    打开SQL Server 2016 配置管理器,网络配置->协议->TCP/IP开启


    选中TCP/IP右键“属性”,在属性中把对应的ip 192.168.0.152的Enabled设置为“是”,端口号为默认的1433


    d.Sql Server Browser 服务开启

    如果在SSMS工具中找不到局域网内的其他数据库服务器,可以开启这个功能



    e.两台机有相同的账户(用户名和密码要一致)

    在两台机中我都新建了一个相同的帐户名和密码的账户



    f.数据库添加windows账户访问

    打开SSMS添加上面新建的windows账户SqlServer

     


    g.数据库开启允许远程连接

    在SSMS中开启数据库允许远程连接



    h.测试网络是否连接成功

    这是最关键的一步,也是下面订阅同步操作的前提,打开cmd命令窗口(windows+R 输入cmd回车)。

    先使用ping命令测试网络连接是否有问题(PC1和PC2都要ping测试是否互通)


    就算能ping通,只能说明局域网内存在这台机,也不代表能实现同步,还要测试端口是否可用。

    使用telnet命令测试端口是否可用 telnet 192.168.0.62 1433

    出现这个窗口表示可用


    (3)订阅设置

    已经在PC1新建了一个新的数据库Test1,Test1里面有一张表Table_1, Table_1插入了几条测试数据,把数据库Test1备份复制到PC2机器上还原。

    配置PC1作为分发服务器

    打开数据库的 复制->本地发布,右键新建发布


    下面的步骤按照截图来,这里的发布数据库选择的是测试用的Test1,我们的实验就是要把PC1的Test1数据库同步到PC2的数据库Test1。


    选择要发布的表,后期还可以添加新表。


    这里为了方便测试数据,点击了“更改”按钮,设置同步的频率为10秒。

    下一步。选择“在以下windows账户下运行”,填写PC1机windows账户(这里要填域账户),连接发布服务器使用的是sa账户。(这里选择“在sqlserver代理账户下运行”经过测试也是可以的)


    配置PC2作为订阅服务器

    设置订阅可以在分发服务器上也可以在订阅服务器上,结果是一样的,这里我们在分发服务器上设置

    右键本地订阅,新建订阅


    选择PC1机发布服务器的发布任务


    下一步,有两个选项,这次实验是在分发服务器运行推送订阅,选择第一项

    下一步,点击“添加订阅服务器”,服务器名称选择的是PC2机的名称,使用windows身份验证,这里能连接上的原因是我们两台机都有相同的用户名和密码,也是上面说明中要配置相同windows账户的原因(这里也可以使用数据库的账户登录)

    要订阅的是PC2机上的Test1数据库

    下一步,设置订阅属性

    选择“在以下windows账户下运行”,填写PC1机windows账户,因为我们在发布服务器上进行分发。


    后面的设置默认就行



    (4)测试同步订阅

    当前PC1的Test1数据库表内容为

    我们插入几条数据


    查看PC2机的数据库Test1的表数据有没有变化

    详细的内容还可以查看同步状态信息,选中订阅服务器右键,查看同步状态。

    点击“监视”


    还有代理状态

    双击右表的状态条可以查看同步的各种参数

    到这里同步订阅功能测试完成。

     

    二、常见问题汇总

    (1)搜索不到局域网内的其它SqlServer数据库

     


    首先检查一下网络是否有问题,是否开启了网络发现,具体看上面的实验前准备。

    (2)订阅的时候提示无法访问文件之类的问题

    这个是访问文件的权限问题,在windows里对不能访问的文件添加相应的权限即可。这里遇到过的是无法访问快照文件。

    (3)跨网段配置发布订阅

    由于公司的两台服务器不在同一个网段,所以上面的配置是不成功的,差别在哪里呢?

    情景再现:

    PC1:发布服务器

    IP:10.33.1.222

    掩码:255.255.254.0

    PC2:订阅服务器

    IP:10.24.0.100

    掩码:255.255.248.0


    首先判断两台机器是否连通的,不然什么都是白搭。使用ping命令互相ping一下,如果没问题再使用telnet测试端口是否可用telnet 10.248.22.100 1433,确认没问题之后,发现连接没问题啊,然后直接使用IP作为数据库登陆名:

    结果报了要使用数据库实例名称登录的错误,之前测试过使用名称也是登录不上的,问题的根源是因为不在同一个网段中,网络发现开启了也找不到对应这个名字的机器。那我们自己指定这个名称对应的IP地址就好啦。good~生气

    在发布服务器的C:WindowsSystem32driversetc 目录下找到hosts 文件,配置订阅服务器的ip地址和数据库实例名称,这样发布服务器就可以找到不在同一个网段的订阅服务器实例了。


    三、总结

          配置到这里结束了,过程遇到好多问题,网上的教程大多叙述不够详细,遇到很多坑,还是要多动手多找找问题出现的原因,一步步把他们解决,最终才能有所收获。

  • 相关阅读:
    重点---版本问题-Spark中的一次ClassNotFoundException排除
    SPARK-SQL内置函数之时间日期类
    [Spark SQL]Spark SQL读取Kudu,写入Hive
    hive和spark读取kudu表
    解决spark on yarn每次都传递一堆jars的问题
    Spark on YARN
    blocking IO, non-blocking IO, asychronous IO, sychronous IO
    使用set和vector去重(copy函数)
    vector元素去重uninque函数,erase函数
    copy与iterator头文件
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/13844623.html
Copyright © 2011-2022 走看看