This error didn’t seem to make sense as the Primary-Key was an identity column – and therefore the Insert that generated the error didn’t include it.
Msg 2627, Level 14, State 1, Line 5
Violation of PRIMARY KEY constraint ‘PK_somecolumn’. Cannot insert duplicate key in object ‘dbo.sometable’.
It transpired that the database had recently been restored in an inconsistent state, and the identity column had lost track of how many rows were in the table, and was trying to insert a Primary-Key value that already existed.
The fix was to refresh the identity column with the biggest value it contained, before the Insert …
DECLARE @nextid INT; SET @nextid = (SELECT MAX([columnname]) FROM [tablename]); DBCC CHECKIDENT ([tablename], RESEED, @nextid);