Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Проблема эффективного удаления записей  [new]
SQL Lover
Guest
Народ - требуется очистить таблицу.
Делаю DELETE * FROM Table и получаю
"Превышено число блокировок файлов общего доступа. Увеличьте значение параметра реестра MaxLocksPerFile"

Можно ли как нибудь очистить содержимое таблицы, что бы Jet задействовал например только одну блокировку на уровне всей таблицы ?

Работаю через ADO. Думал сделать Drop Table, но тогда проблема в том что как воссоздлать заново таблицу ? Эта процедура может применятся к различным таблицам, так что структура таблицы должна определится в run time...

Какие есть идеи ?
9 окт 05, 12:35    [1951792]     Ответить | Цитировать Сообщить модератору
 Re: Проблема эффективного удаления записей  [new]
Latuk
Member

Откуда: N 54°38', E 037°35'
Сообщений: 7310
Не помню возможно ли в Jet
но в T-SQL для отчистки всей таблицы можно так
DELETE Table 

попробуй мож получится
9 окт 05, 12:51    [1951821]     Ответить | Цитировать Сообщить модератору
 Re: Проблема эффективного удаления записей  [new]
АлексейК
Member

Откуда: http://www.msdatabase.ru , Moscow
Сообщений: 7683
неверное имелось ввиду Drop / truncate

drop в jet можно truncate нет

параметр максимальное число блокировок правится в реестре
9 окт 05, 13:00    [1951832]     Ответить | Цитировать Сообщить модератору
 Re: Проблема эффективного удаления записей  [new]
ЛП
Guest
наверняка какое-нибудь каскадное удаление стоит?
можно попробовать в транзакцию завернуть
9 окт 05, 13:34    [1951862]     Ответить | Цитировать Сообщить модератору
 Re: Проблема эффективного удаления записей  [new]
SQL Lover
Guest
АлексейК
неверное имелось ввиду Drop / truncate

drop в jet можно truncate нет

параметр максимальное число блокировок правится в реестре


Я понимаю, но нужно как нибудь извернутся что бы это значение не настраивать - заставить Jet проэскадировать блокировки до уровня всей таблицы... Никакого каскадного удаления нет.
9 окт 05, 14:31    [1951915]     Ответить | Цитировать Сообщить модератору
 Re: Проблема эффективного удаления записей  [new]
ЛП
Guest
Никакого каскадного удаления нет.

Тогда странное, что оно возникает.
А сколько записей удаляется?
9 окт 05, 14:35    [1951920]     Ответить | Цитировать Сообщить модератору
 Re: Проблема эффективного удаления записей  [new]
SQL Lover
Guest
ЛП
Никакого каскадного удаления нет.

Тогда странное, что оно возникает.
А сколько записей удаляется?


Сколько сейчас не скажу, но дофига точно, плюс всё это внутри другой транзакции так что может ещё и другие блокировки накопились... Вынести в отдельную транзакцию нереально по ряду причин.
9 окт 05, 14:47    [1951932]     Ответить | Цитировать Сообщить модератору
 Re: Проблема эффективного удаления записей  [new]
ЛП
Guest
Сколько сейчас не скажу, но дофига точно

Не, на "дофига" не должно быть такого. Было б "дофуя" - еще могло бы быть.

А если серьезно - то что-то странное. Сталкивался с такими чудесами либо при массовых инсертах в таблицы со счетчиками, либо при всяких каскадных операциях. Тупое удаление, тем более через DAO-шный (ADODB-шный) запрос - всегда без проблем.
9 окт 05, 15:07    [1951947]     Ответить | Цитировать Сообщить модератору
 Re: Проблема эффективного удаления записей  [new]
SQL Lover
Guest
ЛП
Сколько сейчас не скажу, но дофига точно

Не, на "дофига" не должно быть такого. Было б "дофуя" - еще могло бы быть.

А если серьезно - то что-то странное. Сталкивался с такими чудесами либо при массовых инсертах в таблицы со счетчиками, либо при всяких каскадных операциях. Тупое удаление, тем более через DAO-шный (ADODB-шный) запрос - всегда без проблем.


Не ну там ещё по моему штуки три индекса так что сразу кол-во блокировок в три раза возрастает... А с какой радости Jet ставит блокировку на каждую запись когда я удаляю все записи... ИМХО с позиции эффективности надо б ему ставить одну блокировку сразу на всю таблицу... Нету идеи как такую беду преодолеть ?;)
9 окт 05, 15:28    [1951963]     Ответить | Цитировать Сообщить модератору
 Re: Проблема эффективного удаления записей  [new]
ЛП
Guest
SQL Lover
Нету идеи как такую беду преодолеть ?;)

Не, идей нет. Потому что этого быть не должно (имхо).
Если бы Вы через DAO работали, то можно было бы предложить самому поставить блокировку на всю таблицу, вдруг поможет. Через ADO не получится.
9 окт 05, 15:33    [1951966]     Ответить | Цитировать Сообщить модератору
 Re: Проблема эффективного удаления записей  [new]
SQL Lover
Guest
ЛП
SQL Lover
Нету идеи как такую беду преодолеть ?;)

Не, идей нет. Потому что этого быть не должно (имхо).
Если бы Вы через DAO работали, то можно было бы предложить самому поставить блокировку на всю таблицу, вдруг поможет. Через ADO не получится.


Почем ж не должно если в транзакции наложено дофига блокировок плюс дополняется ещё куча от чустки большой таблицы ? :) Вполне нормально.... Только вот что Jet вместо того что бы их укрупнять и разруливать ругается - бред... !!!
10 окт 05, 10:18    [1952744]     Ответить | Цитировать Сообщить модератору
 Re: Проблема эффективного удаления записей  [new]
msdatabaseru
Guest
если связей нет то быстрее всего и беспроблемно
будет дропнуть и создать таблицу заново
10 окт 05, 11:09    [1953059]     Ответить | Цитировать Сообщить модератору
 Re: Проблема эффективного удаления записей  [new]
ertgertyretyetyerty
Guest
msdatabaseru
дропнуть и создать


а может быть скопировать (без данных) и дропнуть?
10 окт 05, 11:14    [1953093]     Ответить | Цитировать Сообщить модератору
 Re: Проблема эффективного удаления записей  [new]
SQL Lover
Guest
msdatabaseru
если связей нет то быстрее всего и беспроблемно
будет дропнуть и создать таблицу заново


Ага - а воссоздать таблицу как ? Надо тогда узнать какие поля есть в таблице и какие индексы/первичные ключи в ней были ...
10 окт 05, 11:17    [1953123]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить