发布'xx'的并发快照不可用,因为它尚未完全生成或日志读取器A

时间:2009-06-19 14:41:31

标签: sql-server replication

我在使SQL Server(2005)正常工作时遇到各种麻烦。当我运行客户端(SQL Server Express 2005)时,我收到以下错误“发布的并发快照'xx'不可用,因为它尚未完全生成或日志读取器A”

错误被裁掉。

我试过了:   - 删除订阅   - 删除出版物并重新开始   - 重新启动服务器和客户端。   - 缩小数据库

一切都没有任何改变。

我知道客户端可以看到网络共享\ servername \ repldata,其中有一个UNC子文件夹,其中包含快照(文件夹更深,其中包含pubName和dateTime编码)

任何提示或旅行都会非常感激

5 个答案:

答案 0 :(得分:10)

但这是解决方案: http://social.msdn.microsoft.com/forums/en-US/sqlreplication/thread/baf99181-2fe1-4e6b-ba45-5d1d08103550/

1)删除订阅&整个出版物无效

2)对这些表运行select以查看是否仍有可用的发布数据库行:

select * from msdb..MSdistpublishers
select * from distribution..MSpublisher_databases
select * from distribution..MSpublications
select * from distribution..MSarticles
select * from distribution..MSsubscriptions

3)现在从刚删除的发布者数据库中删除仍然具有“publisher_db”的所有行:

delete from distribution..MSarticles where publisher_db = '<NameOfDatabase>'
delete from distribution..MSsubscriptions where publisher_db = '<NameOfDatabase>'

4)重新创建出版物&amp;用户正常

应该这样做: - )

答案 1 :(得分:1)

  1. 是否已生成发布的快照?有时这需要花费很长时间,有时会延迟到以后的时间。如果它被创建,你应该能够在某个地方的磁盘上找到它。

  2. 确保日志读取器在发布服务器上运行,如果这是事务复制,我认为它是。

答案 2 :(得分:0)

在我的情况下,这是因为分发服务器数据库上的“MSSubscriptions”表有nosync_type = 1和status = 2。上面分别改为0和1。

再次重新初始化快照,然后分销商代理开始接收这些更改。

答案 3 :(得分:0)

我再次重新初始化快照(新快照,不要重复使用旧快照),然后经销商代理开始接收这些更改。

答案 4 :(得分:0)

对我来说,只需要授予Log-Reader和Distribution服务帐户DB_Owner访问发布数据库的权限即可。我不确定是否都需要它们,但这很容易解决。