|
rs.UpdateBatch
|
|||
---|---|---|---|
#18+
У меня 2 recordset один к Excel(листу) другой к MSSQL(таблица без индексов, триггеров) Из rs_excel мне необходимо загрузить в rs_mssql Циклом по rs_excel я пробежался в кэш rs_mssql записал, потом выполняю Код: vbnet 1.
И почему-то запись на сервер идет очень медленно, как можно ускорить работу? медленно по ~15 записей за раз, возможно это ограничение увеличить? План запроса ниже Возможно вы предложите использовать инструменты MSSQL для загрузки excel на сервер, файл находится на компьютере пользователя. Настройки rs Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 11:36 |
|
rs.UpdateBatch
|
|||
---|---|---|---|
#18+
Focha, кол-во записей скорее всего прописано в провайдере В лоб, ускорить никак нельзя, т.к будет все одно построчное выполнение (/на каждую строку будет формироваться insert/update) Для ускорения : 1 вариант: если у MSSQL сервера есть доступ к файлу, то загрузить стандартными средствами (Export/Import) 2 вариант (в таком виден не разу не использовал): преобразовать рекордсет в строку (GetString) строку передать на сервер одним запросом распарсить и вставить переданные данные на сервере ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 14:37 |
|
rs.UpdateBatch
|
|||
---|---|---|---|
#18+
HandKotFocha, кол-во записей скорее всего прописано в провайдере Вот это я понимаю, но может есть варианты управлять данным ограничением? Мое подключение к серверу: Код: vbnet 1. 2. 3. 4. 5.
HandKot1 вариант: если у MSSQL сервера есть доступ к файлу, то загрузить стандартными средствами (Export/Import) файл на машине пользователя HandKot2 вариант (в таком виден не разу не использовал) это точно нет ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2019, 13:13 |
|
rs.UpdateBatch
|
|||
---|---|---|---|
#18+
Focha, точно не знаю, возможно в параметре строки подключения увеличить Packet Size а чем второй вариант не устраивает? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2019, 08:42 |
|
rs.UpdateBatch
|
|||
---|---|---|---|
#18+
https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/updatebatch-method?view=sql-server-2017 You should use batch updating with either a keyset or static cursor only https://www.sql.ru/docs/mssql/adoandsql/index.shtml 8.4. Использование пакетного обновления (Batch Updating) ... В SQL Server метод UpdateBatch является допустимым только, когда свойство LockType установлено в adLockBatchOptimistic и тип курсора - либо keyset-driven, либо static. Курсор типа keyset-driven может открываться с таблицами, имеющими уникальные индексы. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2019, 10:26 |
|
rs.UpdateBatch
|
|||
---|---|---|---|
#18+
Заменил Код: vbnet 1.
на Код: vbnet 1.
стало в разы быстрее HandKot Focha, кол-во записей скорее всего прописано в провайдере В лоб, ускорить никак нельзя, т.к будет все одно построчное выполнение (/на каждую строку будет формироваться insert/update) При параметре adLockBatchOptimistic и UpdateBatch, он формирует Код: sql 1. 2.
А это значит, от отправляет вставку сразу нескольких строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2020, 10:46 |
|
|
start [/forum/topic.php?fid=61&fpage=5&tid=2171855]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 125ms |
0 / 0 |