Имя: Пароль:
IT
Админ
Как работают блокировки в MSSQL?
0 DTX 4th
 
14.03.19
13:23
Проблема следующая: открываю транзакцию, начинаю писать данные... Последующее можно опустить.
Пока транзация открыта, я не могу на втором компе сделать SELECT TOP 1 * FROM Table - СУБД ждём окончания транзакции. Хотя я ожидал увидеть данные на момент начала транзакции.
ЧЯДНТ?
1 H A D G E H O G s
 
14.03.19
13:30
Делай запрос в 1С!
2 H A D G E H O G s
 
14.03.19
13:30
Или ты и пишешь не в 1С, а в SQL ?
3 rsv
 
14.03.19
13:31
(0) from table(nolock) и ...увидишь
4 rsv
 
14.03.19
13:34
Или ...вставлять данные в колонки а читать из других..тогда взлетит без хинта
5 scanduta
 
14.03.19
13:47
(0) ну все верно работает, в ms sql уовень изоляции по умолчанию read commited, это тебе не 1с
6 vi0
 
14.03.19
13:52
(0) тебе зачем селект в транзакции?
7 vi0
 
14.03.19
13:54
> Хотя я ожидал увидеть данные на момент начала транзакции.
если я не ошибаюсь, тебе поможет read committed snapshot
8 DTX 4th
 
14.03.19
13:55
(2) SQL

(3) Зачем мне грязное чтение? Туда попадут записи ещё из незаконченной транзакции.

(5) А в 1С как?

(6) Транзакция на одном компе, селект на другом.

(7) До этого почти дошёл, но не понял, как исполнить. Сейчас погуглю
9 scanduta
 
14.03.19
14:03
(8) В 1с вне транзации (допустим при выполнении  запроса в консоли) будет уровень изоляции  READ UNCOMMITTED

тебе должно помочь по идее так:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
GO
SELECT * from
10 DTX 4th
 
14.03.19
14:08
(9) Что-то я сомневаюсь. В 1С же можно начать транзакцию и читать данные на начало транзакции.
А READ UNCOMMITTED - то же самое, что и NOLOCK из (3)
11 scanduta
 
14.03.19
14:22
(10)read uncommitted определяет блокировкe для всего соединения, а nolock только для таблицы
12 Cyberhawk
 
14.03.19
14:28
(10) "В 1С же можно начать транзакцию и читать данные на начало транзакции" // Только если RCSI
13 Cyberhawk
 
14.03.19
14:28
(или если S, а не X)
14 Cyberhawk
 
14.03.19
14:29
А ты же пишешь-блокируешь эксклюзивно, вот и не можешь даже прочитать в другом сеансе
15 Провинциальный 1сник
 
14.03.19
14:33
MSSQL изначально не версионник, а блокировочник. И соответственно, 1с разрабатывалась в парадигме блокировочной СУБД. С какой-то версии mssql появилась некая версионность, но в 1с уже привыкли на блокировках жить, а не разруливать конфликты изменений.
16 DTX 4th
 
14.03.19
14:59
В общем, RCSI устанавливается уже около часа на базу-миллионник..
Потом отпишусь
17 Cyberhawk
 
14.03.19
15:00
"базу-миллионник" // Миллион чего - мегабайт / записей в таблицах / денег в кармане пользователей? ))
18 DTX 4th
 
14.03.19
15:00
записей.
Не ожидал, что так долго будет
Сейчас около 1гб всего
19 DTX 4th
 
14.03.19
15:47
Не дождался, отменил :|
20 Вафель
 
14.03.19
15:48
(18) с базой наверно активная работа шла?
21 DTX 4th
 
14.03.19
15:53
(20) Да вроде нет
Но возможно что-то зависло
Ща ещё раз попробую
22 vi0
 
14.03.19
18:05
(9) нужно это только указать снапшот
23 vi0
 
15.03.19
13:29
(21) ну и?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.