SQLServer 订阅过期解决方法

由于分发数据库执行一个较长的事务,达到了系统预定的72小时,导致了该订阅过期,数据库分发代理已不可再启用,提示错误如下:

错误信息:已将此(这些)订阅标记为不活动,必须将其重新初始化。需要删除 NoSync 订阅,然后重新创建它们

右键订阅,发现该订阅已处于不活的状态!~

怎么解决?难道要重新初始化??!

后来找到一个系统的存储过程 sp_changesubstatus,该存储过程可以更改订阅的3种状态:active 、inactive、subscribed。

--此存储过程在发布服务器的发布数据库中执行
exec sp_changesubstatus
 @publication = 'your publication name'
,@subscriber = 'your subscriber name'
,@status = 'active'

执行之后,重新关闭和启动该分发代理作业,发现没有作用!~提示还是一样!~后来发现,如果订阅过期,该存储过程是无法更改的,更改无效!~

关于订阅的活动状态,还有一个地方可以更改,即更改分发库中的一个表 MSsubscriptions 的状态字段(0 = 不活动;1 = 已订阅;2 = 活动),订阅中的每个已发布项目在MSsubscriptions表中占一行。

--select * from distribution.dbo.MSpublications
--select * from distribution.dbo.MSsubscriptions where status<>2

update sub set status = 2
from distribution.dbo.MSsubscriptions sub
where status<>2 and publication_id=27

执行之后,重新关闭和启动该分发代理作业,很快,复制正常了!~

在发布和订阅库测试操作数据,同步正常!总是完成了!~

此外,由于系统默认最大事务保质期为72小时,如果有事务在这期间没有传递到订阅,则“清除分发”作业标记为停用,该订阅的事务将被清空。如果订阅过期超过336小时(14天),则订阅将被“过期的订阅清除” 作业执行删除。(更多参考订阅过期和停用

为了避免过期导致的问题,有两种方法设置:

1. 禁用这几个清除的作业;

2. 设置更长的保质期。

本文出自“Hello.KK
(SQL Server)
”的博客,转载请务必保留此出处http://blog.csdn.net/kk185800961/article/details/46688827

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 20:25:55

SQLServer 订阅过期解决方法的相关文章

sqlserver 2000数据压缩解决方法

--sqlserver 2000数据压缩解决方法. /******************************************************************************** *主题:sqlserver 2000数据压缩解决方法. *说明:本文是个人学习的一些笔记和个人愚见 * 有很多地方你可能觉得有异议,欢迎一起讨论 *作者:Stephenzhou(阿蒙) *日期: 2014.06.20 *Mail:[email protected] *另外:转载请著名

Microsoft VS 2008 过期解决方法破解方法

Microsoft VS 2008 过期解决方法电脑上的Microsoft Visual Studio 2008 Team System 试用版提示离过期还有**天.于是百度,搜索结果大多是以下两种解决方法: 一:开始>控制面板>添加或删除程序 里找到VS2008,点"更改/删除",维护窗口弹出后,或下一步,就会看到一个输入序列号的地方,把序列号输进去,点"升级"按钮即可,Team Suite和Professional通用.以下是收集的序列号:(1)Vi

chrome &#39;adobe flash player 已过期&#39;解决方法

http://labs.adobe.com/downloads/flashplayer.html下载 WindowsDownload Flash Player for Opera and Chromium based applications – PPAPI 安装-重启浏览器 chrome 'adobe flash player 已过期'解决方法

oracle账号密码过期解决方法

oracle system账号密码过期解决方法. system账号的密码默认有效期为180天,当密码提示已经过期后, 可以用以下方法解决: 1>在DOS窗口输入 sqlplus ,提示输入账号密码 2>输入system的账号密码,会提示"密码已经过期,请重新设置新密码" 3>输入新密码即可<如果不想改密码可以输入原来的密码>.

传奇GOM引擎授权过期解决方法.

传奇GOM引擎授权过期解决方法 下载最新的GOM引擎,将里面的Key.Lic文件找出来,替换掉授权过期的版本,如果你本身是免费版最好是找同样的免费版的来覆盖. 如果你本身是免费版,但是却用的是商业版Key.Lic文件来替换,也是可以的.但是会出现下面几个问题:解决方法如下: 1.登陆进游戏后黑屏,M2提示登陆网管版本和授权版本不同. 解决方法:拷贝商业版中的:游戏网管,登陆网管,角色网管.替换掉旧版中的文件这3个文件. 2.进入游戏中,发现假人不显示名字,名字显示不正常. 解决方法:用商业版替换

连接WCF报EntityFramework.SqlServer 错误的解决方法

现象: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. M

oracle密码过期解决方法

Oracle提示错误消息ORA-28001: the password has expired 在oracle服务器上用sqlplus / as sysdba登录进去,可以通过下面的sql语句查看账户情况: select username,account_status from dba_users; 找到对应的用户名,如果状态是是expired,则可以通过下面的命令来修改账号密码激活账户: alter user USERNAME identified by NEWPASSWORD; 完成命令后,

WebStorm过期解决方法

第一步:先删除C:\Users\本机用户名\.WebStorm2016.3\config文件中eval文件. 第二步:打开webstrom 如图,填写许可证激活码:http://idea.imsxm.com/,点击Activate完成. 如图

k3s 证书过期解决方法

测试发现k3s使用一年后出现https tls hand error的问题,重新生成证书也不行,只能通过源码编译修重新安装k3s环境: ubuntu 16.04 docker 18.06.3 一.安装git(默认应该已经安装如果没有请执行下面的命令)sudo apt install -y git 二.clone源码,并切换分支(我这里用的是v1.0.1的版本)git clone https://github.com/rancher/k3s.gitcd k3sgit checkout -b v1.