V tomto scénáři bych použil SqlBulkCopy
vložit do stagingu tabulku (tj. takovou, která vypadá jako data, která chci importovat, ale není součástí hlavních transakčních tabulek), a poté v DB na INSERT
/SELECT
přesunout data do první skutečné tabulky.
Nyní mám dvě možnosti v závislosti na verzi serveru; Mohl bych udělat druhý INSERT
/SELECT
do druhé skutečné tabulky, nebo bych mohl použít INSERT
/OUTPUT
klauzule k provedení druhého vložení pomocí řádků identity z tabulky.
Například:
-- dummy schema
CREATE TABLE TMP (data varchar(max))
CREATE TABLE [Table1] (id int not null identity(1,1), data varchar(max))
CREATE TABLE [Table2] (id int not null identity(1,1), id1 int not null, data varchar(max))
-- imagine this is the SqlBulkCopy
INSERT TMP VALUES('abc')
INSERT TMP VALUES('def')
INSERT TMP VALUES('ghi')
-- now push into the real tables
INSERT [Table1]
OUTPUT INSERTED.id, INSERTED.data INTO [Table2](id1,data)
SELECT data FROM TMP