Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.11.12;
Скачать: CL | DM;

Вниз

Блокировка в SQL   Найти похожие ветки 

 
miau   (2011-09-08 12:23) [0]

Уважаемые мастера, столкнулся с непонятной хренью, и не знаю, как её забарывать.

Суть проблемы такая:
Есть небольшая табличка, 7 столбцов, а число строк редко переваливает за 10. Когда пользователь открывает форму редактирования, туда вносится строка. Когда форма закрывается, строка удаляется.
Всё хорошо работало, пока не перешли с SQL-2000 на SQL-2008. Потом началась полная хрень: где-то раз на три дня таблица блокируется так, что внести в неё запись можно, прочитать через (nolock) можно, а удалить или прочитать без флага (nolock) не выходит.
Единственным выходом пока является стоп-старт сервера. Есть ли у кого-нибудь мысли, в чём может быть дело?


 
OW ©   (2011-09-08 12:39) [1]

ADOTable не юзать.
в свойствах соединения внимательно с режимом

определить кто блокирует
select * from sys.sysprocesses
where blocked <> 0

потом, узнать его(их) sql-запрос
dbcc inputbuffer(spid полученного на шаге 1)

потом смотря что видим


 
miau   (2011-09-08 12:49) [2]


> ADOTable не юзать

Не юзаю. Только ADOQuery и ADOStoredProc.

> в свойствах соединения внимательно с режимом

А что там может быть не то, просветите ламера?

> определить кто блокирует

Спасибо, буду смотреть, как повесятся.


 
OW ©   (2011-09-08 12:53) [3]


> А что там может быть не то, просветите ламера?

ну, это..
{ TADOConnection }

 TConnectMode = (cmUnknown, cmRead, cmWrite, cmReadWrite, cmShareDenyRead,
   cmShareDenyWrite, cmShareExclusive, cmShareDenyNone);

 TConnectOption = (coConnectUnspecified, coAsyncConnect);

 TCursorLocation = (clUseServer, clUseClient);

 TCursorType = (ctUnspecified, ctOpenForwardOnly, ctKeyset, ctDynamic,
   ctStatic);

лишнего не просить, в смысле


 
Кщд   (2011-09-08 16:46) [4]

>miau   (08.09.11 12:23)  
commit ставьте


 
miau   (2011-09-08 16:57) [5]


> commit ставьте


Там нет транзакций, объявленных через BEGIN TRANSACTION.


 
Кщд   (2011-09-08 20:38) [6]

>miau   (08.09.11 16:57) [5]
вы данные внетранзакционно вставляете?
научите?
и, конечно, код не показывайте


 
SQLEX ©   (2011-09-08 22:06) [7]

commit явный нужен если в св-ах стоит не автоматическая транзакция, или она начата явно.
иначе она и так начинается автоматически и автоматически завершается тоже.


 
Кщд   (2011-09-08 22:23) [8]

>SQLEX ©   (08.09.11 22:06) [7]
откуда блокировки?
либо commit, либо непоказанный код, либо комбинация.
лично я предлагаю ТС не читать про транзакции и рестартовать сервер из-за блокировок в таблице с десятью записями, ибо очевидно, что во всём виноват MS


 
OW ©   (2011-09-09 08:34) [9]


> Кщд   (08.09.11 22:23) [8]
>
> >SQLEX ©   (08.09.11 22:06) [7]
> откуда блокировки?
> либо commit, либо непоказанный код, либо комбинация.

100%
Но откуда уверенность, что именно этого приложения?
Надо выяснить кто блокирует сначала


 
OW ©   (2011-09-09 09:15) [10]


> определить кто блокирует
> select * from sys.sysprocesses
> where blocked <> 0


а потом можно
kill spid_полученного_соединения и сидим ждем, кто позвонит с проблемой "я работала, а тут все перестало показываться почему-то "
Отвечаем, что понятия не имеем почему же это так произошло и пытаем что было запущено и что при этом делалось. Потом звоним автору и говорим, что он балбес и при таких-то действиях такой-то программы таблица у него блокируется. И пусть разбирается сам :)

Шутка.


 
Anatoly Podgoretsky ©   (2011-09-09 09:20) [11]

> OW  (09.09.2011 08:34:09)  [9]

> Надо выяснить кто блокирует сначала

А чего тут выяснять и так ясно кто.


 
miau   (2011-09-13 14:12) [12]

Помогло уничтожение индексов на таблице.


 
DiamondShark ©   (2011-09-13 14:47) [13]


> miau   (13.09.11 14:12) [12]
> Помогло уничтожение индексов на таблице.

Таракан слышит ногами.



Страницы: 1 вся ветка

Текущий архив: 2017.11.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.006 c
2-1449542054
Арлекино
2015-12-08 05:34
2017.11.12
Корректно ли объявление аргумента как var Param: PByte?


2-1450208244
Alex4445
2015-12-15 22:37
2017.11.12
Синхронизация через SendMessage


2-1450086211
TheEd
2015-12-14 12:43
2017.11.12
как отловить необходимость погасить кнопку в ячейке StringGrid


3-1315470203
miau
2011-09-08 12:23
2017.11.12
Блокировка в SQL


15-1467495002
Юрий
2016-07-03 00:30
2017.11.12
С днем рождения ! 3 июля 2016 воскресенье