sqlserver 实时同步(发布订阅)
配置发布订阅手册
不同版本须知:https://www.sqlmanager.net/en/articles/1548
1.环境介绍
两台在同一局域网的PC机,这里PC1是作为分发服务器,PC2作为订阅服务器
2.操作前准备
检查几个设置,这是操作的关键,PC1和PC2都要进行相同的配置
1)开共享
在任务栏的计算机图标右键->打开网络和共享中心->更改高级共享设置
在高级共享里面开启共享
2)防火墙开1433 端口
打开控制面板,选择系统与安全;打开防火墙设置中的高级设置
新建一个入站规则
点击新建规则->端口
端口->填写开放的端口号
填写开放的端口号->选择允许连接
下面的全部默认就可以
3)配置管理器设置TCP/IP启用
打开配置管理器,网络配置->协议->TCP/IP开启
选中TCP/IP右键“属性”,在属性中把对应的ip 本机ip的Enabled设置为“是”,端口号为默认的1433
4)Sql Server Browser 服务开启
如果在SSMS工具中找不到局域网内的其他数据库服务器,可以开启这个功能
5)两台机有相同的账户(用户名和密码要一致)
6)数据库添加windows账户访问
打开SSMS添加上面新建的windows账户SqlServer
7)数据库开启允许远程连接
在SSMS中开启数据库允许远程连接
8)测试网络是否连接成功
这是最关键的一步,也是下面订阅同步操作的前提,打开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机器上还原。
1)配置PC1作为分发服务器
打开数据库的 复制->本地发布,右键新建发布
下面的步骤按照截图来,这里的发布数据库选择的是测试用的Test1,我们的实验就是要把PC1的Test1数据库同步到PC2的数据库Test1
下一步。选择“在以下windows账户下运行”,填写PC1机windows账户(这里要填域\账户),连接发布服务器使用的是sa账户。(这里选择“在sqlserver代理账户下运行”经过测试也是可以的)
2)配置PC2作为订阅服务器
设置订阅可以在分发服务器上也可以在订阅服务器上,结果是一样的,这里我们在分发服务器上设置
右键本地订阅,新建订阅
选择PC1机发布服务器的发布任务
下一步,有两个选项,这次实验是在分发服务器运行推送订阅,选择第一项
下一步,点击“添加订阅服务器”,服务器名称选择的是PC2机的名称,使用windows身份验证,这里能连接上的原因是我们两台机都有相同的用户名和密码,也是上面说明中要配置相同windows账户的原因(这里也可以使用数据库的账户登录)
要订阅的是PC2机上的Test1数据库
下一步,设置订阅属性
选择“在以下windows账户下运行”,填写PC1机windows账户,因为我们在发布服务器上进行分发。
后面的设置默认就行
4. 测试同步订阅
当前PC1的Test1数据库表内容为
我们插入几条数据
查看PC2机的数据库Test1的表数据有没有变化
详细的内容还可以查看同步状态信息,选中订阅服务器右键,查看同步状态
点击“监视”
还有代理状态
双击右表的状态条可以查看同步的各种参数
到这里同步订阅功能测试完成
5.常见问题汇总
1)SQL Server replication requires the actual server name to make a connection to the server
解决方法:(之前改过名字)
SELECT @@SERVERNAME
先看清楚,名称是不是和现在的名称一样。
sp_dropserver 'old_server_name'
GO
sp_addserver 'current_computer_name', 'local'
GO
如果不是,去掉老名字,换成新名字。
然后,重启SQL,搞定之~~
2)进程无法连接到 Subscriber“***”
进程无法连接到 Subscriber“***”。 (源: MSSQL_REPL,错误号: MSSQL_REPL0)
获取帮助: http://help/MSSQL_REPL0
SQL Server 网络接口: 定位指定的 Server/Instance 时出错 [xFFFFFFFF]. (源: MSSQLServer,错误号: -1)
获取帮助: http://help/-1
与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。 (源: MSSQLServer,错误号: -1)
获取帮助: http://help/-1
登录超时已过期 (源: MSSQLServer,错误号: HYT00)
获取帮助: http://help/HYT00
最可能的原因:发布服务器与订阅服务器之间ping不通,可能是防火墙的问题,首先ping下对应机器ip,找出ping不通的机器,再调整对应防火墙
3)发布时出现“无法开始执行步骤 2 (原因: 验证代理 XX\XX的身份时出错,系统错误: 登录失败: 未知的用户名或错误密码。). 该步骤失败。
解决办法打SP2以上补丁。
或者直接用内置服务
4)使用SQL
Server发布数据库快照遇到错误:对路径“xxxxx”访问被拒绝的解决方法
开始-> 所有程序 -> SQL Server 配置管理器 -> 在左边栏选择”SQL Server服
务“->在右侧面板中"SQL Server 代理”一行上右击,选择“属性”,
在弹出的对话框中选择"内置账户“->LocalSystem即可。
5)遇到“拒绝了对对象的 EXECUTE 权限”和“无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限”的问题
USE 出问题的库名;
EXEC sp_changedbowner 'sa';
6)发布
'xx' 的并发快照不可用,因为该快照尚未完全生成,或者日志读取器代理未运行,无法激活它。如果并发快照的生成过程中断,则必须重新启动用于该发布的快照代理,直到生成完整的快照。
删除相关的发布订阅
执行下列查询,如果还是存在'xx'相关的行
select * from msdb..MSdistpublishers
select * from distribution..MSpublisher_databases
select * from distribution..MSpublications
select * from distribution..MSarticles
select * from distribution..MSsubscriptions
删掉所有与'xx'先关的行(记得先备份表)
delete from
distribution..MSarticles where publisher_db = '<NameOfDatabase>'
delete from
distribution..MSsubscriptions where
publisher_db = '<NameOfDatabase>'
重建分发
如果没有修改过密码,就是删除分发复制时由于某些原因没删干净(上边的那些表)
经测试,删除发布、订阅时MSsubscriptions表中的数据会自动被删掉,
如果还存在之前的‘xx’那就是未删除干净
sqlserver 实时同步(发布订阅)的更多相关文章
- SQLServer 2008 R2 发布订阅配置指南
原以为配置SQLServer 2008 R2的发布订阅很简单,实际配置后才发现过程中有问题地方一直都没搞明白,最后经过几天的查找问题和实践,终于搞定了.现将过程记录如下. SQLServer 2008 ...
- 不同SQL数据库之间表数据的实时同步-发布与订阅
https://blog.csdn.net/rand_muse/article/details/81326879 上述文章中,如果是实时同步,选择 事务发布即可 在快照代理 那里,不需要勾选 运行 ...
- SQLServer 本地移动发布/订阅/分发数据库文件并更改逻辑名称和物理文件名
-------------------------------------------------------------------------------------------------- - ...
- SQL Server双机热备之发布、订阅实现实时同步
一.复制的功能概述 SQL Server 复制功能实现了主从库的分离,从而将主库的压力分解掉,主库就主要负责数据的更改等,而主库主要负责查询ji.另外,有了主.从库,则从另一个方面,也了一层安全性,即 ...
- 使用SQLServer同义词和SQL邮件,解决发布订阅中订阅库丢失数据的问题
最近给客户做了基于SQLServer的发布订阅的“读写分离”功能,但是某些表数据很大,经常发生某几条数据丢失的问题,导致订阅无法继续进行.但是每次发现问题重新做一次发布订阅又非常消耗时间,所以还得根据 ...
- 最简单的SQLserver,发布订阅教程,保证一次就成功
最简单的SQLserver,发布订阅教程,保证一次就成功 发布订阅用来做数据库的读写分离,还是很好用的 当单台数据库的压力太大时,可以考虑这种方案,一主多从,主服务器的数据库只管写入,其他的数据库都是 ...
- SQL Server 复制 - 发布订阅(SQL Server 数据同步)
原文:SQL Server 复制 - 发布订阅(SQL Server 数据同步) SQL Server的同步是通过SQL Server自带的复制工具来实现的,分发布和订阅2大步. A,复制-发布 发布 ...
- SqlServer发布订阅
我们在开发系统的时候,经常会遇到高并发的问题,还有高可用性和安全性方面的考虑,需要用读写分离的方案来解决问题.也就是在我们使用数据库比较多,更新少而查询比较多的情况下使用读写分离,实现提高性能,减少数 ...
- sqlserver关于发布订阅replication_subscription的总结
(转载)sqlserver关于发布订阅replication_subscription的总结 来自 “ ITPUB博客 ” ,原文地址:http://blog.itpub.net/30126024/v ...
随机推荐
- Oracle raw数据类型
RAW的声明方式为RAW(L),L为长度,以字节为单位,它存数的是16进制的数据.作为数据库列最大2000,作为变量最大32767字节. RAW类型的好处就是:在网络中的计算机之间传输 RAW 数据时 ...
- adb连接夜神模拟器
1.打开夜神模拟器,打开设置,调成手机模式,初次进入的话,进入设置,点击版本号5次,可以激活使用开发者模式,进入后打开USB调试功能 2.打开文件资源管理器,进入夜神模拟器的安装位置,在地址栏输入cm ...
- 【BZOJ4771】七彩树 主席树+树链的并
[BZOJ4771]七彩树 Description 给定一棵n个点的有根树,编号依次为1到n,其中1号点是根节点.每个节点都被染上了某一种颜色,其中第i个节点的颜色为c[i].如果c[i]=c[j], ...
- /proc/kcore
[root@b proc]# ls -lh /proc/kcore-r-------- 1 root root 128T Sep 29 09:39 /proc/kcore[root@b proc]# ...
- Stolz–Cesàro theorem
w http://planetmath.org/sites/default/files/texpdf/33795.pdf Stolz–Cesàro theorem - Wikipedia https ...
- 动态加载和卸载 DLL
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 001-Spring在代码中获取bean的几种方式
一.概述 方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法三:继承自抽象类Applicati ...
- 运行jupyter notebook 出错 Error executing Jupyter command 'notebook'
实际上是安装jupyter时候有错误, 仔细看日志发现需要缺少 Microsoft Visual C++ Compiler for Python 2.7 下载安装后,重新安装jupyter即可 htt ...
- (转) FLASH吸血鬼的工作原理
FLASH吸血鬼是众多网友用来从exe可执行文件中提取swf的利器,其直接读取内存,从内存中取出swf文件.经过分析,发现其原理还是比较简单的.第一步.通过GetWindowThreadProcess ...
- PHP生成缩略图,控制图片质量,支持.png .jpg .gif
namespace common\components; class ResizeImageHelper { public $type;//图片类型 public $width;//实际宽度 publ ...