Results 1 to 14 of 14
  1. #1
    3 Star Lounger
    Join Date
    Sep 2002
    Location
    London, England
    Posts
    294
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Resolve all conflicts at once? (2000)

    Is it possible to accept all synchronisation conflicts in one go? One of my users has over 300 and is finding the conflict resolution interface heavy going and slow. What she would like to do is to accept all the versions where the User field (which records the last person to edit a record) is equal to her name.

    Also, is there any useful documentation on the conflict resolution interface? I find it unintuitive and even Litwin/Getx/Gilbert seem to have largely ingnored it.

    Ian

  2. #2
    Super Moderator
    Join Date
    Aug 2001
    Location
    Evergreen, CO, USA
    Posts
    6,623
    Thanks
    3
    Thanked 60 Times in 60 Posts

    Re: Resolve all conflicts at once? (2000)

    I don't think you will be able to resolve them in one shot, as there can be several causes for conflicts. But there is a table in Access 2000 called MSysConflicts that shows you the list of conflicts and you may be able to make some use of it after some study. There is a somewhat similar thread that starts with <post#=121829>post 121829</post#> that has some useful background. In particular, there is a reference to Microsoft KB article 282977. In particular, it is possible to create your own conflict resolution process, though you will need to do some reasonably complex VBA programming.

    Of more concern is how your client ended up with more than 300 conflicts. It would seem they should probably be doing synchronization more frequently, and depending on circumstances, limiting the ability of some people to edit or add records.
    Wendell

  3. #3
    3 Star Lounger
    Join Date
    Sep 2002
    Location
    London, England
    Posts
    294
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Resolve all conflicts at once? (2000)

    Thanks for the tips on the previous thread and the KB article. I had already found the _conflict table (tblContacts_Conflicts in this case) and was wondering if I could use that to replace any records in her 'live' table (tblContacts) where the name of user and date last edited matched some reasonable criteria. Would this upset the various hidden fields that Jet uses to keep track of changes? Also, would the changes not be changed right back again next time she synchronised?

    Supplementary question. One reason that there may be so many conflicts is that I think that the database has inherited row level sychronisation from its Access 97 origins. Is there an easy way to change this to column level? Please don't tell me I have to start all over again.

    Ian

  4. #4
    Super Moderator
    Join Date
    Aug 2001
    Location
    Evergreen, CO, USA
    Posts
    6,623
    Thanks
    3
    Thanked 60 Times in 60 Posts

    Re: Resolve all conflicts at once? (2000)

    As I understand it, you don't want to mess with tblContacts_Conflicts (other than using some sort of conflict resolution scheme). Otherwise you loose a fair bit of the conflict information completely. The KB article I suggested includes a section on writing a Conflict Handler routine that may be of use. And I think you are correct - until you resolve the conflict messages, each time you synchronize you are going to get another error message.

    As to the quantity, how many replicas do you have, and how frequently are they being synchronized? Our advice is never to go more than a week between synchronizations, and it there is quite a bit of activity it should be done on a daily or even twice or three times a day. Depending on the geography and connectivity involved, that can get to be a challenge of course, but otherwise the conflict resolution process will drive your users up the wall. I presume your final question implies that the database was also replicated in Access 97. Did you go through the rather daunting process of upgrading a replicated database to Access 2000? If you did, you should be able to specify column level replication as it is. Otherwise you are likely to have more than a few problems in general, not just with implementing column level replication. Hope this clarifies things some.
    Wendell

  5. #5
    Plutonium Lounger
    Join Date
    Dec 2000
    Location
    Sacramento, California, USA
    Posts
    16,775
    Thanks
    0
    Thanked 1 Time in 1 Post

    Re: Resolve all conflicts at once? (2000)

    The only time I've seen that kind of volume in conflicts was when a front end was being replicated and it contained local tables that held lookup values. That was a guaranteed data conflict on every sync if any of the lookup values had changed in any of the replicas. Another thing to watch out for is combining data and design changes in the same sync. Since design changes get synced first, you can wind up with serious conflicts when the system tries to sync the data.
    Charlotte

  6. #6
    3 Star Lounger
    Join Date
    Sep 2002
    Location
    London, England
    Posts
    294
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Resolve all conflicts at once? (2000)

    How do I recognise deleted records in the conflicts table?

    The database was indeed upgraded from a replicated 97 database and I think I have big problems. The other main user of the database also has several hundred conflicts to resolve.

    What I think I should do is use good old fashioned update queries to update the main table (tblContacts) in the head office replica (which is the hub) from the copies of the conflicts tables (tblContacts_conflicts) that I have saved from each of their laptops, then create the whole thing again from scratch. I believe what I have to do is export all the fields from each replicated table, except the ones added by replication, into new tables, then import the new tables into a new database and start again.

    What will give me problems is recognising which records in the conflicts tables are there because they were marked for deletion by the users but which were not deleted during synchronisation because the head office replica seems to have won all the contests. Is there a way to do this?

    Going forward, is there a way to impose my own criteria for deciding which records win conflict competitions?

    A very worried Ian.

  7. #7
    Super Moderator
    Join Date
    Aug 2001
    Location
    Evergreen, CO, USA
    Posts
    6,623
    Thanks
    3
    Thanked 60 Times in 60 Posts

    Re: Resolve all conflicts at once? (2000)

    It's been long enough since I was involved in a conflict resolution that I don't remember all the details, but it seems to me there was a flag in the conflict table that indicated the situation pair-wise between the two databases that were being synchronized. And yes - if it was upgraded from an Access97 database and replication wasn't completely removed and reinstalled on the 2000 version, you probably do have some nasty problems. You might want to look at the help files which provide some 10 steps for upgrading a replicated database, but your description of the process captures the essential details. Yes, you can create and install your own conflict resolution process - my previous post included a reference to a MS KB article that shows how to do that. As to figuring out what data is correct, you may want to let your users do that on a manual basis - don't bother trying to figure out what to delete and what not. Take the replica that seems the most accurate, and go from there. They won't love you, but it may be the most expeditious way of going forward. Hope all goes well.
    Wendell

  8. #8
    Plutonium Lounger
    Join Date
    Dec 2000
    Location
    Sacramento, California, USA
    Posts
    16,775
    Thanks
    0
    Thanked 1 Time in 1 Post

    Re: Resolve all conflicts at once? (2000)

    To piggyback on Wendell's suggestions, Is this a single database, rather than split? If so, your problems are going to keep occurring because local tables will create this situation. If that's the case, split the database into front end and back end and only replicate the back end. Then synchronization will workt he way it's supposed to and you will stop having this kind of data conflict.
    Charlotte

  9. #9
    3 Star Lounger
    Join Date
    Sep 2002
    Location
    London, England
    Posts
    294
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Resolve all conflicts at once? (2000)

    I think I am going to have to try to recover the user's data so any help on recognising recognising records that the users wanted to delete but which synchronisation overruled, from the records in the conflict table would be much apreciated.

    Yes the database is set up with front-end back-end splits.

    Ian

  10. #10
    Super Moderator
    Join Date
    Aug 2001
    Location
    Evergreen, CO, USA
    Posts
    6,623
    Thanks
    3
    Thanked 60 Times in 60 Posts

    Re: Resolve all conflicts at once? (2000)

    Since the data base is split, can we assume that the back-end is the only portion that is replicated? In any event, the records in the Conflicts table should indicate what the operation was, so you should be able to spot those where a delete was attempted from the replica. There is some information about the priority of a replica in the Help files that may explain what is happening as well. Another question - where does the Design Master sit in all of this? You do want to have a Design Master that is kept current using synchronization with the highest priority replica as well.

    Finally, you might want to explore other alternatives to replication if it continues to give you synchronization problems. Either a product like Norton's pcAnyWhere or Microsoft's Terminal Services may be a more satisfactory answer.
    Wendell

  11. #11
    3 Star Lounger
    Join Date
    Sep 2002
    Location
    London, England
    Posts
    294
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Resolve all conflicts at once? (2000)

    Hi Wedell,

    I hope you are right, because it will save my bacon here (and I'm a vegetarian!), but I cannot tell from the conflicts table what the operation was that resulted in each conflict. Jet has added the fields ConflictRowGuid, Gen_ContactNotes, s_Generation, s_GUID and s_Lineage but I cannot tell from any of these what the operation was. Is there a code to understanding the weird numbers they contain, or is the information contained in one of the other hidden tables that replication creates.

    Also, yes it is only the tables in the backend that are being synchronised.

    Ian

  12. #12
    Super Moderator
    Join Date
    Aug 2001
    Location
    Evergreen, CO, USA
    Posts
    6,623
    Thanks
    3
    Thanked 60 Times in 60 Posts

    Re: Resolve all conflicts at once? (2000)

    Good morning Ian,
    Unfortunately the fields that were added to the table won't tell you anything. The conflict info is stored in tables, in particular in MSysConflicts, MSysSidetables, and MSysTombstone. You may want to take a look at MSDN article Database Replication in Microsoft Jet 4.0 which contains lots of technical detail on how replication works, and how you can use the Jet Replication Objects programatically. You should also have a file on your PC called JROReadme.txt which contains some similar info. Hope this helps - I'd hate to see a vegetarian loose his bacon <img src=/S/exclamation.gif border=0 alt=exclamation width=15 height=15>
    Wendell

  13. #13
    3 Star Lounger
    Join Date
    Sep 2002
    Location
    London, England
    Posts
    294
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Resolve all conflicts at once? (2000)

    Wendell,

    I followed the link to that document and it looks as though the table MSysConflicts contains pointers to the deleted records that I need to recover from Contacys_conflicts. However, all the pointers are in the form of GUIDs but I can't put GUIDs in the Find box and, I assume, will not be able to use them in queries. Can I convert them to something first?

    Ian

  14. #14
    Super Moderator
    Join Date
    Aug 2001
    Location
    Evergreen, CO, USA
    Posts
    6,623
    Thanks
    3
    Thanked 60 Times in 60 Posts

    Re: Resolve all conflicts at once? (2000)

    You may not be able to put a GUID in the Find box, but you should be able to right click and use a filter to quickly find the record in question. And they can be copied to the clipboard, so it shouldn't be too tough. You might also be able to do a simple query to join on the records in the MSysConflicts table and if you can determine the subset that represent deletes, simply run a delete query.
    Wendell

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •