Sto scrivendo un'applicazione .NET che scrive dati su SQL Server 2008r2. Ho due opzioni per inserire i dati, o posso creare una dichiarazione di inserimento stringa di grandi dimensioni e inviarlo come comando di testo, oppure posso raccogliere i dati in un DataTable .NET e passarlo come parametro valutato a livello di tabella. Quali sono i vantaggi e i costi di ciascun metodo?È meglio passare inserti di grandi dimensioni a SQL Server come parametro con valori di tabella o come istruzione di inserimento stringa?
(sto omettendo una buona dose di codice dal momento che sto solo chiedendo circa i relativi benefici, non la sintassi specifica)
esempio:
Opzione 1:
string insert = @"insert into MyTable (id, val) values
(1, 'a'),(2,'b'),(3,'c'),(4,'d');"
Opzione 2 :
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("val", typeof(string));
....
create procedure uspMyProc
@tt ttMyTableType readonly
as
begin
insert into TestTable1 (id, strValue)
select myId, myVal from @tt;
end"
Grazie per qualsiasi aiuto.
Opzione # 3. Utilizzare SqlCommand. La struttura può essere dinamica (* se e solo se necessario *), mantenendo i parametri parametrizzati. –
(Molti inserimenti SqlCommand sono molto veloci quando le transazioni vengono utilizzate correttamente.) –