标签:解决办法 结果 名称 提前 事务发布 mss 主机名 div sql查询
前言:
前两天接到领导的任务,将一个系统A的客户数据同步到另一个系统B中,以后客户录入入口只有A系统,B系统不提供录入入口,因为各种原因不能使用接口方式A系统和B系统直接交互同步,只能通过数据库重A库同步到B库。原想通过触发器直接些过去的,但在跨服务器方面遇到种种问题,稳定性太差最终放弃,选择使用发布订阅的方式;没想到发布订阅也没有想象的那么顺利,今天就来就发布订阅遇到的问题说说解决方法,不全面只是我遇到的问题;
遇到问题:
1、如果服务器开启了防火墙,需要添加1433端口的出站入站
2、发布服务器发布成功后,在订阅服务器上订阅,显示订阅成功后但是在本地订阅下看不到订阅信息:
1)可能是发布的快照路径权限问题,发布时一般默认在系统盘,可以将路径修改到可配置权限的文件夹下(见下面发布部署2.3),将路径下的repldata文件夹权限开放(注意:指定给这个文件夹设置,在上级设置不一定有效);
2)服务名称和主机名不同
可以通过执行一下SQL查询是否相同
1 select @@servername 2 select serverproperty(‘servername‘)
如果不相同执行下面SQL修改
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
需注意的是,改过之后必须要重启一下SQL 服务器才可以
3)主机名和其它服务器主机名称相同
修改主机名,重启主机,按上一种方法将服务器名称改为主机名称,重启服务;
但是这样可能还会有问题:发布订阅都成功后,但是并不能同步数据,在发布服务器看同步状态,查看详细会看到说无法连接订阅服务器,使用SQL客户端远程连接订阅服务器发现使用IP方式可以连接,但用主机名称方式不能连接;这里咱们就要检查一下订阅服务器的登录名里面,会发现有一个以原来主机名称+‘/administrator’命名的一个登录名
我们将这个登录名删掉,然后新建登录名
修改之后在发布服务器上重新初始化发布就可以了,启动复制监视查看可以看到订阅正在运行,查看数据库数据同步成功
1、发布服务器跟订阅服务器必须在同一局域网内
2、发布的时候SQL Server 需要有实际的服务器名称才能连接到服务器。不支持通过服务器别名、IP地址或者其他备用名称进行连接。因此如果当前的SQL Server的连接是IP地址的话,最好断开连接,以实际的服务器名称重新进行登录
展开SQL Server 2008 服务器下的 【复制】 节点,会发现有【本地发布】和【本地订阅】两个节点,右击【本地发布】节点,选择【新建发布】
1、如果服务器第一次进行发布设置,会弹出【发布向导】对话框
2、设置【分发服务器】,选择第一个
点击【下一步】,会出现设置【快照文件夹】对话框,我们选择默认
点击【下一步】,选择要发布的数据库
点击【下一步】,选择【发布类型】,我们选择 【事务发布】。
点击【下一步】,选择数据库中的发布对象,选择所需的表、视图,也可选择所有的表
点击【下一步】,SQL Server 要求已发布存储过程引用的所有对象(例如,表和用户定义函数)在订阅服务器上可用。如果没有将被引用对象作为此发布中的项目发布,则必须在订阅服务器上手动创建这些对象。(默认)
1、点击【下一步】,进入【筛选表行】对话框:
2、如果需要筛选表行点击【添加】就会出现如下的筛选器对话框,可在筛选语句中添加SQL查询语句
不需要筛选,即所有数据全部同步,点击【取消】后,直接【下一步】,进入【快照代理】设置对话框,这里有两个选择一个是立即创建快照,一个是指定一个计划(比如可以指定xxx天xxx时间运行),我们选择第一个
1、点击【下一步】进入【代理的安全性】设置
2、点击【安全性设置】,我们选择 SQL SERVER 用户
1、点击【确定】 后,返回 【代理安全性】设置对话框,继续点击【下一步】
2、点击【下一步】,我们给发布进行命名为:FaBu_TEST
3、点击【完成】,就会创建发布,并会显示创建发布的结果
发布创建完成后设置C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL路劲下repldata文件权限
右键点击【本地订阅】节点,打开,【新建订阅】对话框
1、弹出新建订阅向导点
2、击下一步,选择发布服务器,选择查找SQL Server 发布服务器
3、弹出链接到服务器,链接到发布服务器。
注:不支持通过服务器别名、IP地址等名链接,需用服务器实际名称进行链接
4、点击链接 ,选择要为其创建一个或多个订阅的发布, 我们选择发布服务器WIN-XXX 中的数据库发布 FaBu_TEST,然后点击【下一步】
在【分发代理位置】对话框中,选择第一项,点击【下一步】
在【订阅服务器】对话框中,选择新建数据库,或者提前建好一个新数据库选择这个数据库
1、在【分发代理安全性】对话框中,我们点击“...”,进入安全性设置,我们选则的是 SQL 帐户
2、输入订阅服务器SQL Server的登陆名和密码
点击【下一步】,设置代理计划,我们选择默认的“连续运行”
点击【下一步】,进入【初始化订阅】对话框,选择 “立即” 初始化
1、在【初始化订阅】点击【下一步】:选创建订阅
2、点击【下一步】:完成向导
3、点击【完成】,就会创建订阅,并显示创建结果
标签:解决办法 结果 名称 提前 事务发布 mss 主机名 div sql查询
原文地址:http://www.cnblogs.com/brucewang/p/7825128.html