views:

31

answers:

2

I am getting a very strange error message at one of our client sites and I am having very little luck trying to figure out what is going on.

Hr=80040154 ERR:OpenDB failed getting pub version 28627

That is the error message that is from the Merge Agent (IIS) logs. From what I can tell, it is a COM error not being able to load a specific COM object, but I don't know which one. From that, I think this client might not have something installed, but I don't know what that something.

Does any one have any thoughts about what might not be installed? Any other ideas on how to troubleshoot this?

Thanks.

A: 

This error could be related to permissions: Did you configure a snapshot share and give the IUSER_Machine name rights to Read and List Files and Folders?

You could restart the synchronization with verbose history logging as described here: How to enable replication agents for logging to output files in SQL Server.

Check these:

  • Ensure your subscription database is not timing out on auto-grow.
  • Make sure there is enough space to apply the snapshot on the subscriber
Mitch Wheat
As a troubleshooting step we have Everyone with full permissions to that snapshot share (both NTFS and file share permissions).We can give the logging thing a shot. Thanks for the suggestion.From what I can tell, nothing is ever getting to SQL Server. It seems to me like the merge agent can't talk to SQL Server at all. I should have said this before, but just to be clear, the merge agent and SQL Server are both running on the same machine.
Bryan
That logging did not help. Is there any way to look at the sqlcesa35.dll and see which COM objects it is trying to use?
Bryan
A: 

It turns out that there was a DLL that wasn't registered. It was sqloledb.dll (C:\Program Files\Common Files\System\Ole DB). I found this by using the ?diag on the merge agent.

http:////sqlcesa35.dll?diag

That page shows a nice summary of the versions of DLLs that it is using and such. When I did that at the client's site, it showed "unknown" for the version of that DLL. Running regsvr32 on the DLL allowed sqlcesa35.dll to see it and the diag page showed a version number.

Bryan