我在使SQL Server(2005)正常工作时遇到各种麻烦。当我运行客户端(SQL Server Express 2005)时,我收到以下错误“发布的并发快照'xx'不可用,因为它尚未完全生成或日志读取器A”
错误被裁掉。
我试过了: - 删除订阅 - 删除出版物并重新开始 - 重新启动服务器和客户端。 - 缩小数据库
一切都没有任何改变。
我知道客户端可以看到网络共享\ servername \ repldata,其中有一个UNC子文件夹,其中包含快照(文件夹更深,其中包含pubName和dateTime编码)
任何提示或旅行都会非常感激
答案 0 :(得分:10)
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)
是否已生成发布的快照?有时这需要花费很长时间,有时会延迟到以后的时间。如果它被创建,你应该能够在某个地方的磁盘上找到它。
确保日志读取器在发布服务器上运行,如果这是事务复制,我认为它是。
答案 2 :(得分:0)
在我的情况下,这是因为分发服务器数据库上的“MSSubscriptions”表有nosync_type = 1和status = 2。上面分别改为0和1。
再次重新初始化快照,然后分销商代理开始接收这些更改。
答案 3 :(得分:0)
我再次重新初始化快照(新快照,不要重复使用旧快照),然后经销商代理开始接收这些更改。
答案 4 :(得分:0)
对我来说,只需要授予Log-Reader和Distribution服务帐户DB_Owner访问发布数据库的权限即可。我不确定是否都需要它们,但这很容易解决。