The common data
consistency errors that can occur are:- 2601 Cannot insert
duplicate key row in object '%.*ls' with unique index '%.*ls'
- 20598 The row was
not found at the Subscriber when applying the replicated command.
- 2627 Violation of
PRIMARY KEY constraint 'PK__A'. Cannot insert duplicate key in object
'dbo.A'.
The
below steps has complete example to fix PRIMARY KEY violation issue in
Replication -
You
will get below error in Replication Monitor window --> Distributor to
subscriber history tab. Also check Undistributed command in Replication
monitor.
Error-
Command attempted:
if @@trancount > 0 rollback tran
(Transaction sequence number: 0x00000024000002F0000400000000, Command ID: 1)Error messages:
Violation of PRIMARY KEY constraint ‘PK__t1__3213E83FBA2CFEA2’. Cannot insert duplicate key in object ‘dbo.t1’. The duplicate key value is (3).
(Source: MSSQLServer, Error number: 2627)
Get help: http://help/2627
Violation of PRIMARY KEY constraint
‘PK__t1__3213E83FBA2CFEA2’. Cannot insert duplicate key in object ‘dbo.t1’. The
duplicate key value is (3). (Source: MSSQLServer, Error number: 2627)
Get help: http://help/2627
Using below command also we can get error details-
Use Distribution go
select * from dbo.MSrepl_errors where error_code in ('2601','2627','25098')
Now Copy
"Sequence Number" form the
error and use in below query.
SELECT art.publisher_id , art.publisher_db
, art.publication_id
, art.article
, art.article_id
, art.destination_object
, art.source_owner
, art.source_object
FROM distribution.dbo.MSarticles
AS art JOIN distribution.dbo.MSrepl_commands
AS com
ON art.Article_id = com.Article_idWHERE com.xact_seqno
= 0x00000024000002F0000400000000
The above query will return publisher_database_id
and article_id. which we will use in
below query-
EXEC distribution.dbo.sp_browsereplcmds
@xact_seqno_start
= '0x00000024000002F0000400000000' , @xact_seqno_end
= '0x00000024000002F0000400000000' , @publisher_database_id
= 1 , @article_id
= 1 , @command_id
= 1
It above query will
return Command value, this is the duplicate value which has entered in the table of
subscriber end.
Go to the
subscriber the delete the duplicate record.
After sometime the undistributed
command value will be Zero.That means records has been
processed. Also verify in error in Distributor to
subscriber history Tab.
Another
method-
We can avoid/ignore
Primary Key violation error and other errorand continue the transactions.
To know this please
visit link-
Some other error which may occur in Replication-
Use Distributiongo
select * from dbo.MSrepl_errors
error_code
|
error_text
|
121
|
Communication link failure
|
18456
|
Login failed for user 'REDD\XITSS12'.
|
20052
|
The process could not access database 'RAM' on server
'CO1BCAPT01'.
|
4060
|
Cannot open database "MYDB" requested by the login. The
login failed.
|
53
|
Named Pipes Provider: Could not open a connection to SQL Server
[53].
|
53
|
A network-related or instance-specific error has occurred while
establishing a connection to SQL Server. Server is not found or not
accessible. Check if instance name is correct and if SQL Server is configured
to allow remote connections. For more information see SQL Server Books
Online.
|
HYT00
|
Login timeout expired
|
if @@trancount > 0 rollback tran
|
No comments:
Post a Comment