powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADO, ошибка из-за блокировки таблицы.
8 сообщений из 8, страница 1 из 1
ADO, ошибка из-за блокировки таблицы.
    #39000473
nrmBeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VB6, база на аксесе. Скажем есть две таблицы:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE Tab1 (
	id INTEGER,
	dt INTEGER
);

CREATE TABLE Tab2 (
	id INTEGER,
	dt INTEGER
);


По этим таблцицам выполняются следующие запросы:

Код: vbnet
1.
2.
3.
4.
5.
MainConnection.Execute "UPDATE Tab1 INNER JOIN Tab2 ON Tab1.id = Tab2.id
" _
	& "SET Tab2.dt = Tab2.dt - Tab1.dt;", , adExecuteNoRecords

MainConnection.Execute "DROP TABLE Tab1;", , adExecuteNoRecords


Если перед выполнением этих двух запросов открыть транзакцию:
Код: vbnet
1.
2.
Public Cnn as ADODB.Connection
Cnn.BeginTrans


То на DROP TABLE фреймворк ругается на блокировку таблицы:
Таблица 'Tab1' не может быть заблокирована ядром базы данных. Она уже используется другим пользователем или процессом.

Нужно и открытие транзакции и удаление таблицы. В чем проблема как разрешить ситуацию?
...
Рейтинг: 0 / 0
ADO, ошибка из-за блокировки таблицы.
    #39000609
nrmBeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня опечатка в вопросе, MainConnection и Cnn это один и тот же объект.
...
Рейтинг: 0 / 0
ADO, ошибка из-за блокировки таблицы.
    #39000772
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nrmBeginner , представь, что кто-то открывает дверь (читай замок) ключем с одной стороны. Ты открываешь дверь ключём с другой стороны, но не тут-то было, чей-то ключ уже в замочной скважине. Что нужно делать?
...
Рейтинг: 0 / 0
ADO, ошибка из-за блокировки таблицы.
    #39000831
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nrmBeginnerMainConnection и Cnn это один и тот же объект. недоглядел.
Если зафиксировать транзакцию после выполнения первого запроса?
...
Рейтинг: 0 / 0
ADO, ошибка из-за блокировки таблицы.
    #39000836
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nrmBeginner,

Похоже, что DDL операции запрещены в транзакциях. Я как-то вспомнил это + сразу нагуглились похожие проблемы у людей:

http://www.sql.ru/forum/93071/izmenenie-struktury-tablicy-v-tranzakcii
...
Рейтинг: 0 / 0
ADO, ошибка из-за блокировки таблицы.
    #39000869
nrmBeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hclubmk,

Ошибка появляется только при условии обоих запросов в контексте одной транзакции. А без одной транзакции теряется смысл.
...
Рейтинг: 0 / 0
ADO, ошибка из-за блокировки таблицы.
    #39000870
nrmBeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, VSVLAD,
к сожалению это все объясняет. Спасибо.
...
Рейтинг: 0 / 0
ADO, ошибка из-за блокировки таблицы.
    #39000916
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nrmBeginnerбез одной транзакции теряется смысл.
Это понятно, что транзакция имеет смысл, объединяя несколько запросов, смысл был в том, чтобы вывести из-под транзакции DROP TABLE, впрочем, VSVLAD поставил точку в этом вопросе.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADO, ошибка из-за блокировки таблицы.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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