SQL Server 2012 数据库订阅和发布

准备工作:1、2台服务器安装数据库,可通讯。

                   2、订阅服务器数据库管理新建别名,名称是主数据库电脑名称(数据库和电脑名称一致,如果修改了电脑名称,数据库名称也要更正修改)。

                    3、修改数据库复制长度

USE  Log;  
GO  
EXEC sp_configure 'show advanced options', 1 ;   
RECONFIGURE ;   
GO  
EXEC sp_configure 'max text repl size', -1 ;   
GO  
RECONFIGURE;   
GO

        在实际应用项目开发中,应用数据基本上都存储在数据库中,针对数据库的操作有增删改查操作。
有时为了解决并发大数据访问问题,我们需要使用数据库读写分离,主库用来实现应用数据的增删改操作,而从数据库主要用来进行查询操作。
接下来我们将利用SQL Server 2012进行主从数据库的订阅和发布,实现数据库读写分离操作。

SQL SERVER 发布订阅注意

 发布和订阅服务器都要创建相同的帐户(用户名和密码一致),其次service-sqlserver代理必须使用这个相同的帐号和密码,否则会发生无权限读取发布服务器的快照错误。
 发布和订阅,本质就是主-从模式,写入和读取分离,架构DB的基础。


一、 准备工作:
    打开SQL Server 2012,创建一个数据库BaiInfoBase;
    确保Windows服务中SQL Server代理服务是开启的,并且启动模式是自动的,如下图所示:
    


二、 配置本地发布
    1. 右键SQL Server Management Studio根节点下的“复制”->“本地发布”,选择“新建发布”,如下图所示:
        


    2. 右键-新建发布向导-下一步
    3. 选择SQL代理为自动启动,需要完成前边的准备工作:
        


    4. 配置好共享文件夹和访问用户名密码,以供生成、读取快照使用:
       


    5. 选择发布的主数据库BaiInfoBase:
        


    6. 选择事务发布:
        


    7. 勾选要发布的表、存储过程或整库,然后下一步:
        


    8. 下一步,选择立即创建快照,下一步:
        


    9. 点击“快照代理”的“安全设置”,选择SQL代理帐户运行和SQL名称登录,确定:
        

         



    10. 然后一路下一步,立即创建完成,成功后应如下图,若有报错按提示处理:    

        

三、 配置本地订阅
    1. 在订阅服务器下-新建订阅:
        


    2. 选择查找SQL发布服务器,在弹出窗口输入SQL帐户和密码,选择BaiInfoBase库:
        

         



    3. 选择分发类型,下一步:
        

         



    4. 配置订阅时的安全性帐户和密码,这里一点要输订阅服务器本身的帐户和密码:
        

  


    5. 一路下一步,立即订阅,完成,如下图:

        

四、 发布/订阅的检查、排错和快照初始化:

  1.快照初始化:

    有时候发现数据不同步或同步有故障时,需要手动重新生成新的快照同步,这时就需要如下操作:

    SSMS中找到复制-右键-启动复制监视器:

    

    选中要重新生成快照的发布项目,这里右键后有2种生成快照的方式,如下图:

    推荐第1种, 1是完全初始化订阅库重新同步数据,2是单纯只生成新快照。

     

    选择”重新初始化所有订阅”后, 选择”使用新快照”并勾选”立即生成新快照”, 点击”标记为要重新初始化”按钮, 开始初始化快照:

    

    此时点开”代理”标签页, 应该能看到生成快照的完成度百分比, 等待它100%时表示快照生成完毕.

      

  2.发布/订阅的检查:

    再点开”所有订阅”双击当前订阅, 弹出详细的发布/订阅项目记录, 在这里可以很清晰的看到所有的同步记录, 仔细查看有没有错误:

    1)“分发服务器到订阅服务器的历史记录”: 可以查看传递过去多少表和记录等.

      

    2)“发布服务器到分发服务器的历史记录”: 查看发布服务器生成快递和日志错误.

      

    3)“未分发的命令”: 查看当前还有多少条事务没有同步到订阅服务器上.

      

    4) 使用”跟踪令牌”查看发布/订阅库的实际延迟:

      

      

    5) 确认发布/订阅中数据库的所有表的发布状态:

      有时候创建好发布/订阅, 有的表缺少一些属性会导致发布自动过滤掉一些表, 所以每当创建好新的发布/订阅后, 我们都应该再确认一次数据库中所有表都正常发布出去了.

      确认方式如下, 打开-ssms实例-复制-发布项目-右键-属性:

        

      找到项目-表, 这里一点要双击展开, 因为有时是折叠的, 不展开看不到未正常发布的表, 如下:

        

      以后有新加表或存储过程等, 也可以来这里勾选上增加发布的新表, 然后重新初始化生成快照.

    6)生产日常使用中经常会创建新表, 新表是不会自动发布的, 需要手动勾选再重新生成快照, 如下:

      

      勾选新表确定发布, 然后去生成新快照:

        

        

      以上二种操作方式生成快照都可以.

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server发布订阅是一种实现数据库之间同步操作的方式。它包括两个步骤:发布订阅。首先,在数据源数据库服务器上进行发布,然后在目标数据库服务器上进行订阅发布可以选择发布一张表的部分数据或整张表的数据。下面是发布订阅的过程: 1. 发布: - 在数据源数据库服务器上登录,并配置需要同步的数据。 - 在复制-本地发布中新建一个发布内容。 - 选择发布的位置和数据库。 - 选择事务发布,并选择要发布的表。 - 设置安全设置,填写源系统提供的用户名和密码。 - 创建发布,并设置发布名称。 - 查看快照地址,并将快照文件拷贝到订阅服务器本地。 2. 订阅: - 在复制-本地订阅中新建一个订阅。 - 选择SQL Server发布服务器,并连接到对方数据库的登录用户。 - 选择请求订阅,并选择订阅数据库。 - 进行设置,填写源系统的数据库用户名和密码。 - 查看同步状态,并停止同步。 - 修改快照位置为备用文件夹,并将快照文件夹设置为从源系统服务器拷贝过来的快照文件位置。 - 启用任务,检查数据数据库中是否出现订阅的表和数据。 通过以上步骤,可以实现SQL Server发布订阅功能。\[1\]\[3\] #### 引用[.reference_title] - *1* [SqlServer2008 数据库同步的两种方式 (发布订阅)](https://blog.csdn.net/weixin_33753003/article/details/85487251)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Sqlserver发布订阅](https://blog.csdn.net/qq_30648687/article/details/127196651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [sql server 发布订阅](https://blog.csdn.net/qq_19756791/article/details/123066247)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值