Все зависит от требований к производительности и общей практики, которую вы используете. Ответ Руны может быть совершенно в порядке. Если вы вставляете 100 000 строк, посмотрите на массовый инструмент вставки.
Если вы привыкли писать хранимые процедуры и вам посчастливилось запустить SQL 2008, вы можете использовать табличные параметры
Это позволяет вам делать такие вещи:
SqlCommand cmd = new SqlCommand("usp_ins_Portfolio", conn);
cmd.CommandType = CommandType.StoredProcedure;
//add the ds here as a tvp
SqlParameter sp = cmd.Parameters.AddWithValue("@Portfolio", ds.Tables[0]);
//notice structured
sp.SqlDbType = SqlDbType.Structured;
cmd.ExecuteNonQuery();
Тогда один вызов сохраненного процесса может вставить все необходимые строки в таблицу тегов.
Для SQL 2005 и ниже я обычно использую один разделенный запятыми параметр для всех значений и разделяю его в TSQL внутри хранимого процесса. Это имеет тенденцию работать довольно хорошо и избегает возиться с временными таблицами. Это также безопасно, но вы должны убедиться, что вы используете параметр ввода текста для процедуры или имеете какой-то механизм ограничения или пакетирования в коде (чтобы вы не усекали длинные списки).
Для идей о том, как разделить списки в TSQL, посмотрите превосходную статью Эрланда .
Sql 2000 версия статьи здесь .