В объектном графе чуть менее миллиона узлов, в основном несвязанных, которые необходимо импортировать массово.
Все ключи генерируются сервером. Существует несколько уровней отношений, поэтому после вставки каждого пакета необходимо извлечь правильные идентификационные ключи, чтобы использовать их в качестве значений внешнего ключа в следующем пакете.
Каков самый простой способ сделать это? Есть ли выход из BULK INSERT
?
Или может быть хорошо скорректировать текущее значение добавочного идентификатора в таблице, чтобы освободить место для количества строк, которые мы вставляем, назначить идентификаторы на стороне клиента из этих чисел и выполнить массовое копирование с вставкой идентификатора? Например. если следующий инкрементный идентификатор будет равен 120 001 и нужно вставить 600 000 строк, установите для следующего идентификатора значение 720 001 и вручную используйте числа от 120 001 до 720 000 в качестве идентификаторов перед любыми вставками?
declare @lastID int, @newLastID int;
begin tran
set @lastID = ident_current('dbo.Strains');
set @newLastID = @lastID + 1000;
dbcc checkident('dbo.Strains', reseed, @newLastID);
commit
select @lastID + 1;