Как лучше передавать большие вставки в SQL Server как параметр с табличным значением или как оператор вставки строки?

Я пишу приложение .NET, которое записывает данные в SQL Server 2008r2. У меня есть два варианта вставки данных: либо я могу создать оператор вставки большой строки и отправить его в виде текстовой команды, либо я могу собрать данные в .NET DataTable и передать их как параметр с табличным значением. Каковы преимущества и затраты каждого метода?

(Я опускаю большую часть кода, так как я просто спрашиваю об относительных преимуществах, а не о конкретном синтаксисе)

например:

Вариант 1:

    string insert = @"insert into MyTable (id, val) values
        ( 1, 'a'),(2,'b'),(3,'c'),(4,'d');"

Вариант 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"

Спасибо за любой помощь.

7
задан Sako73 25 May 2012 в 15:27
поделиться