Friday, February 24, 2012

Identity Column - transactional replication with immediate update

Hi,
We have a problem that we can't find a solution to ... yet ...
I hope someone can help us out.
I will try to discribe the problem below.
1. We publish a publication with articles to the subscriber(s) in immediate
replication mode.
2. The we make an insert at the subscriber side.
3. The inserted record pops up at the publisher (and other subscribers)
almost immediate as it
should.
4. But the msrepl_tran_version column differs between the publisher
and the subscriber!!
Therefore it is not allowed to update the newly inserted record at the
subscriber site. We get the error message
"Rows do not match between Publisher and Subscriber. Run the Distribution
Agent to refresh rows at the Subscriber." The Agent IS running.
5. The msrepl_tran_version remains different UNTIL you make an update at the
publisher site (or at another subscriber that have the same value in
msrepl_tran_version as the publisher)
6. After an update at the publisher it is now perfectly allowed to make
updates to the
record at the same subscriber site that made the insert.
This applies only to records that are inserted from the specific subscriber,
all other records works just fine...
An insert into a table without Identity collumn works fine ...
The Identity property is set to 'Yes'.
I hope that someone have a clue of what we are missing here ...
Best Regards
Thomas
I think this is by design. This condition should clear when the distribution
agent runs. To get around it set the polling interval to something small (ie
1 s) and run your distribution agent continuously.
Hilary Cotter
Looking for a SQL Server replication book?
http://www.nwsu.com/0974973602.html
"Thomas" <Thomas.Eriksson@.intress.se> wrote in message
news:evvkICznEHA.1608@.TK2MSFTNGP15.phx.gbl...
> Hi,
> We have a problem that we can't find a solution to ... yet ...
> I hope someone can help us out.
> I will try to discribe the problem below.
> 1. We publish a publication with articles to the subscriber(s) in
immediate
> replication mode.
> 2. The we make an insert at the subscriber side.
> 3. The inserted record pops up at the publisher (and other subscribers)
> almost immediate as it
> should.
> 4. But the msrepl_tran_version column differs between the publisher
> and the subscriber!!
> Therefore it is not allowed to update the newly inserted record at the
> subscriber site. We get the error message
> "Rows do not match between Publisher and Subscriber. Run the Distribution
> Agent to refresh rows at the Subscriber." The Agent IS running.
> 5. The msrepl_tran_version remains different UNTIL you make an update at
the
> publisher site (or at another subscriber that have the same value in
> msrepl_tran_version as the publisher)
> 6. After an update at the publisher it is now perfectly allowed to make
> updates to the
> record at the same subscriber site that made the insert.
> This applies only to records that are inserted from the specific
subscriber,
> all other records works just fine...
> An insert into a table without Identity collumn works fine ...
> The Identity property is set to 'Yes'.
> I hope that someone have a clue of what we are missing here ...
> Best Regards
> Thomas
>
|||Thomas,
the only way I can reproduce this behaviour is if there is an insert trigger
on the publisher's table which updates the same row.
In this case the guids won't match.
Can you check if this is the case?
Rgds,
Paul Ibison

No comments:

Post a Comment