Groups | Blog | Home
all groups > sql server replication > october 2007 >

sql server replication : merge replication - rowguid column out of sync - for tough solvers - urgent


Hilary Cotter
10/3/2007 12:32:37 PM
sp_addtabletocontents

--
RelevantNoise.com - dedicated to mining blogs for business intelligence.

Looking for a SQL Server replication book?
http://www.nwsu.com/0974973602.html

Looking for a FAQ on Indexing Services/SQL FTS
http://www.indexserverfaq.com
[quoted text, click to view]

Fotis Mylonas
10/3/2007 6:27:38 PM
Hallo dear all,
We have a merge replication topology with a central server at the role of
publisher and distributor and 8 subscribers around him. All machines have
windows server 2003, and sql 2005 entrprise edition.
the problem is this:
the replication was not initalized by the publisher, instead we backed up
the db, copied the zip backup file and restored it at every subscriber.
after this i made subscriptions stating that i dont want the data to be
initialized again.
so far so good.
the problem was that there were certain tables with data in the backup file,
that were missing the rowguid column.
because of this, the replication setup couldnt complete, so this column was
added with a script that we run on every server.
this allowed the replication setup to be completed, but it created a hidden
synchronization problem for these tables, since due to the default value at
the rowguid column (newid()) each row, now had a diferent value for this
column on every server, although it was the same row actually.

Newly inserted rows, dont have a problem at all, since the same rowguid
travels to all the sql servers
the problem is with the existing data on some of those tables.

so i need to somehow manage to synchronize all the guid columns on all the
servers and put the same value into them for every row.

any idea how this can be done, since i only get an exception when i try it?
i tried to delete the replication triggers and also drop the rowguid col
property for the specific column, but im afraid this will mess my
replication topology when im finished.
my other option is to backup the central db, delete everything from all the
tables and insert again the data row by row with a utility or something, so
that each row will have a newly created guid, same on all servers.
the only problem with this is that my tables are really big, so this will
bomb the db andf the network with transactions.

if i could only update the roguid column, things would be a lot easier.
i have my own primary key i can base on.

any suggestions ideas?
any hidden magical stored procedures?
any options like for example identity on off for the row guid col?

Thank you all indeed,

Love,

Fotis

Fotis Mylonas
10/4/2007 11:06:06 AM
so this means im going with the delete everything and insert everything
apporach.
this will bomb the network with transactions and it will take days for the
merge replication on the given network to synchronize the subscribers.
Any ideas from anyone on how i can directly updare the rowgiud column?

[quoted text, click to view]

AddThis Social Bookmark Button