GUID может создать больше проблем, чем решить, если вы не используете репликацию.Во-первых, вам нужно убедиться, что они не являются кластеризованным индексом (по крайней мере, по умолчанию для PK в SQL Server), потому что вы действительно можете снизить производительность вставки.Во-вторых, они длиннее целых и поэтому занимают не только больше места, но и делают соединения медленнее.Каждое соединение в каждом запросе.
Вы собираетесь создать большую проблему, пытаясь решить редкое происшествие.Вместо этого подумайте о том, как все настроить, чтобы вам не потребовались часы для восстановления после ошибки.
Вы можете создать решение для аудита.Таким образом, вы можете легко оправиться от всевозможных ошибок.И напишите код заранее, чтобы сделать восстановление.Тогда это относительно легко исправить, когда что-то пойдет не так.Честно говоря, я бы никогда не позволил создать базу данных, содержащую критические данные компании, без какой-либо формы аудита.Это просто слишком опасно, чтобы не
Или вы могли бы даже иметь готовый сценарий, чтобы переместить записи во временное место и затем снова вставить их с новым идентификатором (и обновить идентификаторы в дочерних записях до нового).Вы сделали это один раз, dba должен был создать скрипт (и поместить его в систему контроля версий), чтобы он был доступен в следующий раз, когда вам нужно будет сделать подобное исправление.Если ваш dba настолько некомпетентен, что он не создает и не сохраняет подобные сценарии, то избавьтесь от него и наймите того, кто знает, что он делает.