Como evitar uma condição de corrida do banco de dados ao incrementar manualmente a PK da nova linha

Tenho uma tabela de dados herdada no SQL Server 2005 que possui uma PK sem identidade / incremento automático e sem poder de implementar um

Como resultado, sou forçado a criar novos registros no ASP.NET manualmente, através da técnica "SELECT MAX (id) + 1 FROM tabela" - antes da inserçã

Obviamente, isso cria uma condição de corrida no ID no caso de inserções simultânea

Qual é a melhor maneira de resolver graciosamente o evento de uma colisão de corrida? Estou procurando idéias de código VB.NET ou C # ao longo da linha de detecção de uma colisão e, em seguida, tente novamente a inserção com falha obtendo mais um máximo (id) + 1. Isso pode ser feit

Pensamentos? Comentários? Sabedoria

Obrigado

OTA: E se eu não puder alterar o banco de dados de nenhuma maneir

questionAnswers(7)

yourAnswerToTheQuestion