1

Прямо сейчас у меня есть БД, где PK - int IDENTITY. Недавно, в прошлом году, мне было поручено добавить их в топологию репликации. Это получилось достаточно хорошо, за исключением полей IDENTITY.Замена PK в существующих таблицах SQL DB

Я хочу изучить варианты замены или замены их uniqeidentifier (GUID).
Возможно ли вставить столбец NEW PK?
Могу ли я лучше всего увеличить его до big int?

Что-нибудь еще, что я должен учитывать?


Чтобы уточнить, почему я хочу сделать это сделать:

Это мое понимание того, что при репликации сталкивается с IDENTITY столбца он устанавливает отложенный диапазон идентификаторов, скажем, 1-1000 (по умолчанию), для каждого для обеспечения уникального INT для этого столбца. Чем больше подписчиков у вас есть, тем больше проблема может стать. Это приводит к ошибкам, связанным с ошибками идентификации диапазона идентификации, которые мы продолжаем получать.

Благодаря

+0

Не можете ли вы добавить новый столбец GUID для использования в репликации? Просто добавьте - не заменяйте - может быть проще (если это возможно) –

+0

Для этого нужно сделать заказ на использование репликации и сделано. Проблема, которую я пытаюсь решить, связана с «ограничениями проверки диапазона идентификации», которая является прямой корреляцией с тем, как Replication имеет дело с полями Identity. –

+0

Итак, в этом случае я бы * добавил * новое поле GUID и сделал бы это PK - но NCLCLUSTERED PK - и оставил INT IDENTITY в качестве ключа кластеризации в таблице. Ваша производительность может сильно пострадать в противном случае ... –

ответ

1

Если вы действительно должны удалить INT IDENTITY колонку, то вы должны сделать эти шаги (более или менее):

  • создать новый столбец GUID в таблице и заполнить его со значениями
  • идентифицировать все отношения внешнего ключа, ссылающиеся на эту таблицу, и их замечать (например, хранить их скрипты CREATE на диске или что-то в этом роде)
  • добавить новое ссылочное поле GUID во все ссылочные таблицы
  • заполнить эти значения на основе опорного поля INT у вас уже есть
  • удалить все ссылки FK таблицу
  • уронить INT IDENTITY ПК на вашем столе
  • сделать новый столбец GUID ваш ПК
  • уронить старые опорные колонны INT из всех ссылающихся таблиц
  • воссоздают все иностранные ключевые ссылки, используя нового GUID ссылочного столбец

Я надеюсь, что S Это может сделать трюк.