Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как добиться NOLOCK или ROWLOCK / 9 сообщений из 9, страница 1 из 1
12.10.2001, 13:26
    #32015253
NiceBigMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добиться NOLOCK или ROWLOCK
Здравствуйте !!

Необходимо вставить записи у удаленную таблицу:

Insert into aa select a.b.dbo.c with (ROWLOCK) но LockType показывается TAB. Как это побороть ?
ситуация аналогична и с Delete. Зачем блокировать всю таблицу, если можно только строки ?
...
Рейтинг: 0 / 0
18.10.2001, 14:25
    #32015585
Игорь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добиться NOLOCK или ROWLOCK
Как всетаки добиться ROWLOCK?
...
Рейтинг: 0 / 0
18.10.2001, 14:46
    #32015587
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добиться NOLOCK или ROWLOCK
IMHO ваш INSERT воспринимается сервером не как скажем 100 отдельных команд INSERT для каждой записи из a.b.dbo.c, а как bulk insert, что есть несколько другое дело.

Возможно вам поможет установка "table lock on bulk load" в процедуре sp_tableoption
...
Рейтинг: 0 / 0
19.10.2001, 10:46
    #32015656
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добиться NOLOCK или ROWLOCK
При добавлении записи (записей) в таблицу происходит блокирование всей таблицы. От этого никуда не уйти, хоть какие хинты выставляй. Иначе возможна попытка одновременого добавления записи из разных сессий (десятой после существующих девяти), которые при сохранении наложатся друг на друга - одна новая запись уничтожит другую. Блокировка RowLock не поможет, поскольку добавляются РАЗНЫЕ записи. RowLock работает только по команде Update.
...
Рейтинг: 0 / 0
19.10.2001, 11:43
    #32015666
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добиться NOLOCK или ROWLOCK
2Garya

Что тогда подразумевает наличие в BOL для команды INSERT утверждения что


INSERT [ INTO] { table_name WITH ( < table_hint_limited > [ ...n ] )
...
< table_hint_limited > ::=
{ FASTFIRSTROW
| HOLDLOCK
| PAGLOCK
| READCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| TABLOCK
| TABLOCKX
| UPDLOCK
}


Или создатели BOL просто скопировали один и тот же список хинтов для SELECT/INSERT/UPDATE ?
...
Рейтинг: 0 / 0
19.10.2001, 13:12
    #32015670
Игорь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добиться NOLOCK или ROWLOCK
У меня проблема не с блокировкой таблицы при вставке записи, а в блокировании нескольких строк , соответствующих табличной части открытого док-та, вместо страниц таблицы.
Как этого добиться?
И, вообще, как обеспечить полное соответсвие табличной части, если возможен к ней доступ вне док-та?
...
Рейтинг: 0 / 0
19.10.2001, 17:26
    #32015685
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добиться NOLOCK или ROWLOCK
2Glory. Я вычитал такую трактовку в книге. Сечас специально полез искать, но не смог найти. Хорошо помню, что видел. Тем не менее, признаю, что мог несколько некоректно истолковать написанное. Возможно, там подразумевалось поведение блокировки при определенном значении уровня изоляции и, возможно, не при всех уровнях изоляции результат выполнения запроса с этим хинтом одинаков.
...
Рейтинг: 0 / 0
18.03.2002, 07:59
    #32025502
KonstN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добиться NOLOCK или ROWLOCK
Я вот помню, что при выходе 6.5 одним из главных преимуществ по сравнению с 6.0 было то, что добились ROWLOCK при инсерте, а не PAGELOCK как раньше.
Идея в том, что при нарастающем кластерном индексе страница на конце таблицы становится "горячей точкой" - при одновременном инсёрте получается блокировка и обязательно последовательное выполнение. А если ROWLOCK, то инсёрт может идти параллельно, не блокируя соседние записи.
Так что ROWLOCK при инсерте есть, начиная с 6.5.
...
Рейтинг: 0 / 0
22.03.2002, 12:26
    #32026014
Как добиться NOLOCK или ROWLOCK
Ты всё перепутал, насколько я понимаю. Вот как надо:

Insert into aa with(rowlock) (fields-list) select fields-list from remote-table with (NOLOCK)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как добиться NOLOCK или ROWLOCK / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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