Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / MsSQL и блокировка. / 9 сообщений из 9, страница 1 из 1
16.07.2003, 16:55
    #32210052
AndreyBond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsSQL и блокировка.
Mне надо вставить 10 тыс строк., можно ли на время вставки заблокировать всё таблицу, как это в ADOQuery сделать, какой запрос послать... Нужно чтобы между вствками записей не вставлялись записи от других клиентов, чтоб они по порядку вставлялись, то есть читать таблицу можно, но вот ставлять ни-ни. Как?? И как обратно потом разлочить???
...
Рейтинг: 0 / 0
16.07.2003, 20:57
    #32210290
Denis A.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsSQL и блокировка.
вставляйте транзакцией.

Код: plaintext
1.
2.
3.
4.
5.
6.
begin transaction
insert (...) values (...) // record  1 
insert (...) values (...) // record  2 
...
insert (...) values (...) // record N
commit transaction
...
Рейтинг: 0 / 0
17.07.2003, 09:15
    #32210478
AndreyBond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsSQL и блокировка.
Транзакци можно сделать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
MsSQL.SQL.Clear;
MsSQL.SQL.Add('begin transaction');
MsSQL.ExecSQL;
MsSQL.SQL.Clear;
MsSQL.SQL.Add(insert (...) values (...));   // record  1 
MsSQL.ExecSQL;
MsSQL.SQL.Clear;
MsSQL.SQL.Add(insert (...) values (...));   // record  2 
MsSQL.ExecSQL;
.......
MsSQL.SQL.Clear;
MsSQL.SQL.Add(insert (...) values (...));   // record N
MsSQL.ExecSQL;
MsSQL.SQL.Clear;
MsSQL.SQL.Add('commit transaction');
MsSQL.ExecSQL;

Но будет ли тогда вся даблица блокироваться, или так нельзя, а нужно делать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
MsSQL.SQL.Clear;
MsSQL.SQL.Add('begin transaction');
MsSQL.SQL.Add(insert (...) values (...));   // record  1 
MsSQL.SQL.Add(insert (...) values (...));   // record  2 
...
MsSQL.SQL.Add(insert (...) values (...));   // record N
MsSQL.ExecSQL;

Но тогда этож какой запрос то будет, если надо вставить около 10 тыс. записей, и в одно записи не хило полей то...
Неужели нельзя как то в ручную, каким нить запросом залочить таблицу????
...
Рейтинг: 0 / 0
17.07.2003, 09:43
    #32210514
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsSQL и блокировка.
2 AndreyBond

Почитай в BOL про Locking Hints.
...
Рейтинг: 0 / 0
17.07.2003, 09:59
    #32210526
AndreyBond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsSQL и блокировка.
Я уже где мог всё перерыл на тему ручной блокировки таблици, но ни чего не нашёл, написал сюда, думал может кто здесь что то знает...
...
Рейтинг: 0 / 0
17.07.2003, 10:24
    #32210561
AndreyBond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsSQL и блокировка.
Вот есть во время вставки можно укзать блокировку таблицы, но мне кажется, как только вставк закончится, то таблица разблокируется, а мне надо чтоб после вставки она была заблокирована, хотя бы на секунду, так как в следующей вставке можно указать опять заблокировать, и в итге она будет во время вставки 10 тыс записей постоянно заблокирована... Как это сделать ХЕЕЕЕЕЕЕЕЕЕЕЛП!!!!!!!!! Нужно, очень нужно
...
Рейтинг: 0 / 0
17.07.2003, 10:44
    #32210581
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsSQL и блокировка.
Так попробуй:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
BEGIN TRAN

SELECT TOP  1   1  FROM Table1 WITH(TABLOCK, HOLDLOCK)

INSERT...
INSERT...
INSERT...

COMMIT TRAN
...
Рейтинг: 0 / 0
17.07.2003, 11:27
    #32210658
AndreyBond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsSQL и блокировка.
Я уже спрашивал, это надо в ADO добовлять за раз всё а потом делать execute, или можно делать execute после каждой строчки???
...
Рейтинг: 0 / 0
17.07.2003, 11:38
    #32210674
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MsSQL и блокировка.
А ты и так и так попробуй.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / MsSQL и блокировка. / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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