Вы хотите добавить вторую таблицу, содержащую доступные идентификаторы, например:
AssignedIdsByClient:
Но когда вам нужно 1000 идентификаторов, не вставляйте сюда 1000 записей: вместо этого возьмите этот AssignedID и умножьте его на 1000. Например, если кто-то получает AssignedID 15, это означает, что у него есть идентификаторы от 15 000 до 15 999 в другой таблице, где вам действительно нужны идентификаторы.
В противном случае, если вы пытаетесь вставить 1000 записей в одну транзакцию каждый раз, когда кому-то требуется диапазон идентификаторов, у вас будет кошмар параллелизма.