Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Блокировки / 5 сообщений из 5, страница 1 из 1
16.12.2004, 12:04:15
    #32829977
YP
YP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировки
Есть связка Access 2000(mdb) + MSSQL 2000. Таблицы подлинкованы через ODBC. В форме (в формате Datasheet) отображется информация. Если в этой форме осуществлять вставку большого количества строк одновременно (например копированием информации из Excel), то происходит полное блокирование таблицы на сервере. При этом вставка строк на сервер происходит построчно. Можно ли как-то в форме оптимизировать этот процесс (в смысле чтоб информация уходила на сервер одним пакетом)? Или нужно писать отдельную обработку таких массовых вставок (например непосредственно на сервере)? Спасибо.
...
Рейтинг: 0 / 0
16.12.2004, 13:54:11
    #32830338
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировки
Вот как раз из-за отправки одним пакетом и происходит полная блокировка таблицы (читать про эскалацию блокировок, если интересно)
...
Рейтинг: 0 / 0
17.12.2004, 17:39:18
    #32832916
YP
YP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировки
Чем ж тогда обяснить, что вставка этих же строк в Enterprise Manager (тоже копирование) происходит мгновенно, а в Access на это уходит до 30-40 секунд? В событиях BeforeInsert, AfterInsert, BeforeUpdate, AfterUpdate ничего нет.
...
Рейтинг: 0 / 0
17.12.2004, 17:45:19
    #32832927
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировки
YPЧем ж тогда обяснить, что вставка этих же строк в Enterprise Manager (тоже копирование) происходит мгновенно, а в Access на это уходит до 30-40 секунд? В событиях BeforeInsert, AfterInsert, BeforeUpdate, AfterUpdate ничего нет.
Enterprise Manager и QA работают через ODBC
...
Рейтинг: 0 / 0
17.12.2004, 17:49:27
    #32832933
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировки
Вот тебе хранимка, а дальше сам всё поймёшь, если не глуп
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE  proc dbo.Updater_PLAN
as
set nocount ON
insert into Plan1(Cost_Center_PL,Project_PL,Phase_pl,account_pl,sum_PL) 
SELECT * 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=\\pc044\special\11111.xls',
'SELECT Cost_Center_PL,Project_PL,Phase_PL,Account_PL,Sum_PL From [Th$] where (Project_pl is not Null) or Project_pl<>""')
под себя заточить не забудь!!!!!!!!!!!!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Блокировки / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]