Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 Пакетное обновление и добавление  [new]
Proga
Member

Откуда: МО
Сообщений: 3042
Может и туплю, понедельник однако, многие на форуме говорили, что в реализовано во 2-серии(ADO.NET 2), но сам всё никак не могу найти, киньте ссылку, где можно почитать, очень нада, задолбался рисовать велосипеды.

Сообщение было отредактировано: 4 дек 06, 13:29
4 дек 06, 12:55    [3486904]     Ответить | Цитировать Сообщить модератору
 Re: Пакетное обновление и добавление  [new]
Sa
Member

Откуда: Ekaterinburg
Сообщений: 4019
см. MSDN Performing Batch Updates with a DataAdapter

uid = Sa
4 дек 06, 13:49    [3487357]     Ответить | Цитировать Сообщить модератору
 Re: Пакетное обновление и добавление  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
SqlBulkCopy - Вы часом не об этом?
4 дек 06, 14:04    [3487468]     Ответить | Цитировать Сообщить модератору
 Re: Пакетное обновление и добавление  [new]
Proga
Member

Откуда: МО
Сообщений: 3042
2 Sa: Если это всё, что смог сделать "мелкий", то меня это расстраивает, от велосипедов видимо не получится избавиться, а жаль.
А в принципе хотелось получить вставку данных, но напрямую из dataset-a как будто это темповая табла типа такого
 INSERT INTO TTT FROM select  a1,a2.... FROM #T
Не хочется иметь построчную вставку. А бач не до конца решает этой проблемы.
4 дек 06, 14:15    [3487563]     Ответить | Цитировать Сообщить модератору
 Re: Пакетное обновление и добавление  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
автор
Не хочется иметь построчную вставку. А бач не до конца решает этой проблемы.

Можно сливать на сервер датасет в формате xml и далее через openxml. Скрипт, расставляющий соответствия схемы датасета и набора таблиц на сервере пишется достаточно быстро.
4 дек 06, 14:22    [3487621]     Ответить | Цитировать Сообщить модератору
 Re: Пакетное обновление и добавление  [new]
Proga
Member

Откуда: МО
Сообщений: 3042
buser
SqlBulkCopy - Вы часом не об этом?

Прочитал, интересная фича.
но всё опошлило вот это
This sample will not run unless you have created the work tables as described in Creating Tables for the Bulk Copy Examples. This code is provided to demonstrate the syntax for using SqlBulkCopy only. If the source and destination tables are in the same SQL Server instance, it is easier and faster to use a Transact-SQL INSERT … SELECT statement to copy the data.


2 Roman S. Golubin: Попытки релизации на основе XML были, очень наворочено, дорого в поддержке (я думаю вы меня поняли), и главное проигрывает по скорости, причем прилично, стандартной вставке из темпа.

Очень жаль, видимо я как написал в своё время свой пакетный обновлятель на VB, так его на корню и перетащу на шарпу, а хотелось чего-нибудь стандартного от создателя.
Всем спасибо за помощь.
4 дек 06, 14:33    [3487709]     Ответить | Цитировать Сообщить модератору
 Re: Пакетное обновление и добавление  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
Xml - как вариант. Ни чуть не лучше и не хуже. Просто в свете "Не хочется иметь построчную вставку" это как вариант. Для массовой заливки конечно не фонтан, но для передачи с клиента отдельных отредактированных документов - идеальный вариант.

Другой вариант - создавайте скрипт для вставки через union all:
insert table
select ... union all
select ... union all
select ... union all
...

Да, еще 2005-му серверу можно передавать объекты типа DataSet через сериализацию - что мешает использовать этот вариант? :-) На клиенте сериализация->упаковка->перекодировка в base64, на сервере все в обратную сторону и возвращаем результат обратно в виде таблицы / набора таблиц . Только серверную процедуру надо будет на CLR писать.

Да, кстати, этот самый "другой вариант" - это та же сериализация, вид сбоку, его точно так же можно упаковать и т.п. :-)
4 дек 06, 15:45    [3488334]     Ответить | Цитировать Сообщить модератору
 Re: Пакетное обновление и добавление  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
Дополню слегка. После упаковки можно получить плюс или минус (кому как): текст в профайлере будет совершенно нечитабелен :-))
4 дек 06, 15:47    [3488364]     Ответить | Цитировать Сообщить модератору
 Re: Пакетное обновление и добавление  [new]
Proga
Member

Откуда: МО
Сообщений: 3042
2 Roman S. Golubin: Ещё раз спасибо. Интересный способ, я о сериализации.
Буду пытаться.
4 дек 06, 16:09    [3488559]     Ответить | Цитировать Сообщить модератору
 Re: Пакетное обновление и добавление  [new]
Sa
Member

Откуда: Ekaterinburg
Сообщений: 4019
Proga

Очень жаль, видимо я как написал в своё время свой пакетный обновлятель на VB, так
его на корню и перетащу на шарпу, а хотелось чего-нибудь стандартного от создателя

А что у Вас было на VB? DTS - пакет?
Proga

Прочитал, интересная фича.
но всё опошлило вот это...

а что тут страшного? ясно что чем ближе к телу тем быстрее... даешь
сравнительный тест на своих реальных данных :-))).

Пока не понятна задача посоветовать что либо сложно....
Если Вы обязанныиспользовать DataSet, значит SqlBulkCopy вам
не подходит. и здесь немного облегчит жизнь UpdateBatchSize.
Если подобных ограничений нет, то используйте SqlBulkCopy ИМХО решение
попрозрачнее, чем реинкарнация VB.

Вообщем тестируйте смотрите что быстрее, что медленнее. что проще в сопровождении и
т.д.
PS. только не умрите от оптимизационного паралича выкраивая лишние миллисекунды

uid = Sa


Сообщение было отредактировано: 6 дек 06, 22:25
6 дек 06, 22:19    [3501781]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить