W tym scenariuszu użyłbym SqlBulkCopy
wstawić do inscenizacji tabela (tj. taka, która wygląda jak dane, które chcę zaimportować, ale nie jest częścią głównych tabel transakcyjnych), a następnie w bazie danych do INSERT
/SELECT
aby przenieść dane do pierwszej rzeczywistej tabeli.
Teraz mam dwie możliwości w zależności od wersji serwera; Mógłbym zrobić drugi INSERT
/SELECT
do drugiej rzeczywistej tabeli, lub mógłbym użyć INSERT
/OUTPUT
klauzulę, aby wykonać drugie wstawienie , używając wierszy tożsamości z tabeli.
Na przykład:
-- 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