[Это немного необычной проблемой, я знаю ...]Массовое изменение уникальных идентификаторов в SQL Server
Что мне нужно, это скрипт, который будет меняться каждый уникальное значение идентификатора нового в нашей базе , Проблема заключается в том, что у нас есть таблицы конфигурации, которые могут быть экспортированы между экземплярами нашего программного обеспечения, которое является id-чувствительным (clobbering existing ids). Несколько лет назад мы установили «достаточно широкий» пробел в идентификаторе между нашей стандартной «стандартной конфигурацией» и экземплярами нашего клиента, которая теперь не достаточно широка :((например, мы получаем конфликты с идентификаторами, когда клиенты импортируют нашу стандартную конфигурацию
Скрипт sql для выполнения следующего, безусловно, является самым простым/самым коротким таймфреймом, который мы можем сделать, например, исправление кода слишком сложное и подверженное ошибкам рассмотрение. Обратите внимание, что мы не «устраняем» проблему . здесь Просто изменяя зазор от 1000-х до 1000000-х или более (существующий разрыв Потребовалось 5 лет, чтобы заполнить)
Я считаю, самым простым решением было бы:.
- изменить все наши таблицы в UPDATE_CASCADE (ни один из них не являются - это значительно упростит сценарий)
- создать таблицу идентичности с новым наименьшим идентификатором, который мы хотим
- Для каждой таблицы, изменять идентификатор в следующий в таблице идентификации (при необходимости, используя флаги модификатора вставки идентификатора). Возможно, после обработки каждой таблицы мы можем сбросить таблицу идентификации.
- отключите UPDATE_CASCADE и удалите таблицу идентификации.
Есть ли у кого-нибудь скрипты для этого (или частичные скрипты?). Я буду использовать все полезные :).
мог бы сделать, но это было бы модифицировать код, не используя тождества (это тот же самый код, который будет сохранять клиент и наша конфигурация), и проблема, которую мы имеем с текущими данными. Нам нужно изменить базу данных независимо от того, что мы делаем, так что может пойти по этому пути. – Stephen