一个香港客户的现网系统,按照客户的需求,我们为他配置和安装了SQL Server的分发订阅功能。实际环境则为:主数据中心位于香港跑马地的总部,运行着MAMDB,DYACDB两个数据库,需要将这两个数据库的数据实时进行同步到位于沙田的分支数据中心,假设跑马地的数据库名称为DB,沙田的分支数据中心名称为BAK的话。实际上就是DB实时将数据传送到BAK上进行同步,保证业务的连续性。
在正常运行了一段时间之后,某天DB数据库报“The row was not found at the Subscriber when applying the replicated command”这个错误,同时会看到有很多的“
SQL Agent The semaphore timeout periodhas expired。”和“[000] Request to run job refused because the job is already running>from a request by Start Sequence 0”
这两条错误将我的注意力一直集中在是否是分发订阅服务出了错误上面。从后两条报错来看,很像是基础网络环境除了问题,但是香港的互联网建设还是很不错的,长时间从跑马地Ping沙田,延时一直都很低。
真的很奇怪,到底是什么原因。
仔细去查看日志,发现一条名叫20598的错误,这是一个很重要的线索。我们需要看看20598该如何处理,Google了一下相关资料,发现尝试输入语句:
USE distribution
02.
03.
go
04.