Использование пробелов в столбцах идентификаторов в SQL Server 2017 - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть несколько 1000 прыжков в моей таблице.Я выяснил причину, я бы сказал, довольно поздно, - это частый сбой сервера, перезапуск и выполнение set identity cache=off.

Надеюсь, эти большие прыжки не произойдут.Теперь я хочу повторно использовать эти цифры в промежутках для новых записей, каков наилучший способ сделать это?Возможно ли изменить начальное значение?Обратите внимание, что я не могу изменить какие-либо существующие данные.Кроме того, обратите внимание, что скорость добавления новых записей медленная (менее 10 записей в день), и я могу следить за этой базой данных и при необходимости вручную изменять начальное значение.

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Я не думаю, что эти цифры важны для пользователей.но вы можете сделать массовую операцию за один раз, чтобы исправить их.Не пытайтесь вставлять между ними

, устанавливая идентификационную вставку на или на уровне таблицы, чтобы изменить структуру вашей таблицы, и это не безопасно для транзакций.

вам нужно написать скрипт TSQL для одновременного изменения вашей базовой и зависимой таблиц

0 голосов
/ 23 февраля 2019

Вы можете написать скрипт для каждого экземпляра, используя SET IDENTITY INSERT table_name ON и SET IDENTITY INSERT table_name OFF в начале и конце вашего скрипта.Полная документация здесь .Вы можете использовать его только для одной таблицы за раз.

Изменение начального значения не будет иметь эффекта, так как всегда будет использоваться следующее наибольшее значение.

Следующий скрипт поможет определить пробелы.

SELECT  TOP 1
    id + 1
FROM    mytable mo
WHERE   NOT EXISTS
    (
    SELECT  NULL
    FROM    mytable mi 
    WHERE   mi.id = mo.id + 1
    )
ORDER BY
    id

Что из этого вопрос / ответ

ОБНОВЛЕНИЕ

Возможной стратегией будет перевод базы данных в автономный режим, используйте SET IDENTITY INSERT заполнить пропуски / переходы с помощью необходимого идентификатора, но в остальном минимальные / пустые данные, а затем снова начать работу.Затем используйте пустые записи, пока все не будут использованы, а затем вернитесь к предыдущему методу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...