Qual è la procedura migliore per aggiornare gli ID entità generati dal server dopo un inserimento di massa?

entity identity-column orm sqlbulkcopy sql-server

Domanda

Ci sono solo meno di un milione di nodi in un oggetto grafico, per lo più disconnessi, che devono essere importati alla rinfusa.

Le chiavi sono tutte generate dal server. Esistono diversi livelli di relazioni, quindi dopo aver inserito ciascun batch devono essere recuperate le chiavi di identità corrette da utilizzare come valori della chiave esterna nel batch successivo.

Qual è il modo più semplice per farlo? Esiste un output di BULK INSERT ?

Oppure potrebbe funzionare bene per regolare il valore ID incrementale corrente sulla tabella per fare spazio al numero di righe che stiamo inserendo, assegnare gli ID sul lato client da questi numeri e la copia bulk con l'inserimento dell'identità? Ad esempio, se il prossimo ID incrementale sarebbe 120,001 e ci sono 600.000 righe da inserire, impostare l'ID successivo su 720,001 e utilizzare manualmente i numeri da 120,001 a 720.000 come ID prima degli inserti?

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;

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché