У меня есть консольное приложение C #, которое использует хранимую процедуру для вставки строк в базу данных SQL Server.В настоящее время в базе данных имеется около 1 млн строк, однако столбец идентификаторов находится на 26 метрах!
При последней успешной вставке идентификатор увеличился с 16 до 26 миллионов.Приложение запускает несколько потоков параллельно, поэтому существует вероятность того, что оно может пытаться вставить две вещи одновременно.
Есть ли что-нибудь кроме отката транзакции, который может привести к увеличению столбца идентификаторов без добавленияrow?
Кажется маловероятным, что было 10 миллионов раз, когда два потока пытались написать конфликтующую строку одновременно.
Я использую переменную временной таблицы, которая заполняется передачейXML в хранимой процедуре:
-- insert data if it doesn-t already exist
insert into DataStore (DataText, DataSourceID)
select distinct td.dataText, td.dataSource
from @tempData td
where not exists ( select 'x'
from DataStore ds
where ds.DataText = td.dataText );