• Sql Server 2008R2 数据库发布与订阅


    背景描述: 

    发布服务器A: (远程端) , 数据库服务名: GUANWANG1

    订阅服务器B: (本机)   ,  数据库服务名: PC-LLRDBA

    需要从服务器A中数据库发布,然后在B中订阅A发布的数据库;

     

    ------------------------------------------------第一步: 准备工作------------------------------------------------

    准备工作1: 配置机器名和数据库服务名一致

    先检查A,B中的机器名和数据库服务名是否一致,这个很重要!

    查看方法: 

    1.检查SQL Server 的服务器名称

    1
    2
    3
    4
    use master
    go
    select @@servername
    select serverproperty('servername')

     

    如果查出来的两个名字不一样,那就需要把他们的名字改成一样的,方法如下:

    2.删除所有之前配置的publishers('old_server_name'为之前的服务名)

    1
    2
    3
    4
    5
    select from msdb.dbo.MSdistpublishers
    DELETE FROM msdb.dbo.MSdistpublishers
    select from msdb.dbo.MSdistpublishers
    exec sp_droplinkedsrvlogin 'old_server_name',null
    exec sp_dropserver 'old_server_name''droplogins'

     

    执行完后,重启SQL Server服务

    3.配置计算机名与服务名一致

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    USE master
     GO
     if serverproperty('servername') <> @@servername  
    begin  
           declare @server sysname  
           set   @server = @@servername  
           exec sp_dropserver @server = @server  
           set   @server = cast(serverproperty('servername'as sysname)  
           exec sp_addserver @server = @server , @local 'LOCAL'  
    end

     

    4.查看服务名

    1
    sp_helpserver

      

     

    准备工作2: 配置数据库服务器名称的别称

     

    因为数据库发布和订阅,不能用ip登陆,必须用服务名登陆

    方法之一是改服务器的登陆别称!

     

    首先在本机B配置连接服务器A的登陆别称: 

    先在[开始],[所有程序]中打开[SQL Server配置管理器]:

     

     在[SQL Native Client 10.0配置(32位)]中的别名中配置,如图:

     

    这里的别名必须和服务器B的服务器名一致也就是GUANWANG1,实际的按照自己的名字改动;

    端口号是:1433

    服务器是对应的服务器机器的IP地址

    协议是TCP/IP

     

    同理,在下面的[SQL Native Client 10.0配置]中也一样配置下!

     

     

     然后在服务器A中也要配置访问本机B的别称,这一步不能少,否则后面本地订阅的时候会失败并报错,"进程无法连接到 Subscriber“PC-LLRDBA”。 "

    切记,这里是双向的,当初我查了好久才想起来,服务端也要配置这个......

    具体的方法同上:注意别名是本机B的服务名PC-LLRDBA, IP是本机的IP,实在不知道在cmd下config一下就有了!

     

     

     

    准备工作好了后,就进行第二步发布

    ------------------------------------------------第二步:发布------------------------------------------------

    登陆服务器A数据库,用别名登陆:

    在[复制],[本地发布]中右键新建发布

     

     

     

    选择你要发布的数据库

     

    选择发布类型:(具体选哪种,自己百度下各种的差异),我这里选事务发布

     

     可以选择发布的对象(表,存储过程,视图等等),也可以选择部分内容,点开勾选就行了

     

     如果没有特别筛选的,就直接下一步(比如说我只要同步Order表中2014年以后的数据,那么你可以点添加,增加筛选条件)

     

     

    选择立即xxx,继续下一步

     

     

    输入发布服务器的sa账户登陆密码就行了

     

     

     

     

     

     

     

     

    OK,到此发布完成,你可以刷新后查看:

     

     

    ------------------------------------------------第三步:订阅------------------------------------------------

     

     这里选择查找SQL Server发布服务器

     

     

     

    选中需要的订阅的数据库发布:

     

     

     

     

    在本地新建一个同名的数据库:

     

     

     

     

     点击与订阅服务器的连接下面的按钮

     

     

     

    选择定义计划: 

     

     

     

     

     

     

     

     

     

     

    订阅就完成,然后刷新查看内容:

     

     

     

    等过一段时间,数据同步完成后就可以查看数据了,是否一致了!

     ------------------------------------------------订阅完成------------------------------------------------

     

     

    订阅失败案例: 

    订阅完成后,却发现本地订阅中没有内容,但是刚刚确实已经订阅成功了啊,为什么呢?

     

     然后在发布服务器中,右键本地发布中的数据库,启动复制监视器

     

     发现是报错了

     

     

     

     

    这个原因可能有好多种:

    1:>>订阅的时候,输入的密码输错了,我第一次就是输成了发布服务器的密码

     

     

     

    2:>>对应的协议要开启

     

     

    3:>>对应的服务要开启Sql Server Browser和Sql Server 代理(MSSQLSERVER)

     

     

    这三个都检查无误了,基本上就搞定了吧!

     

     

    还有一种报错是:"对路径"XXXXX"访问被拒绝或者没有访问路径"xxx"的权限"等,这个错误一般是用户的权限不够导致的,解决方法如下: 

    使用SQL Server发布数据库快照的配置中,如果你选择了使用SQL Server代理,而SQL Server代理服务使用的登陆身份不具有对存放快照文件位置的读写权限时,就会出现该错误。

    解决的方法是可以修改SQL Server代理服务的登录身份,具体做法为:程序->Sql Server Configuration Manager->在左边栏选择”SQL Server服务“->在右侧面板中"SQL Server 代理”一行上右击,选择“属性”,在弹出的对话框中选择"内置账户“->LocalSystem即可。

     

     

     

     

  • 相关阅读:
    并发容器和框架之ConcurrentHashMap
    Java的LockSupport工具,Condition接口和ConditionObject
    从源码来看ReentrantLock和ReentrantReadWriteLock
    VMWARE虚拟机上Terminal中使用sudo出现”** 不在sudoers文件中,此事将被警告 “错误
    mac下idea运行项目慢问题解决
    Idea 只修改编辑区主题
    redis内部数据结构的数据结构
    mysql存储过程详解
    HashMap中resize()剖析
    谈Redis的refash的增量式扩容
  • 原文地址:https://www.cnblogs.com/mgzy/p/7699852.html
Copyright © 2020-2023  润新知