Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Блокировка в SQL [MSSQL]


miau ©   (2011-09-08 12:23:00) 

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

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


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


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

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


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

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


Anatoly Podgoretsky   (2011-09-09 09:20:00) [3]

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

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

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


OW   (2011-09-09 09:15:00) [4]


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


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

Шутка.


OW   (2011-09-09 08:34:00) [5]


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

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


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

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


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

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


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

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


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


> commit ставьте


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


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

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


OW   (2011-09-08 12:53:00) [11]


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

ну, это..
{ TADOConnection }

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

 TConnectOption = (coConnectUnspecified, coAsyncConnect);

 TCursorLocation = (clUseServer, clUseClient);

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

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


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


> ADOTable не юзать

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

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

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

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

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


OW   (2011-09-08 12:39:00) [13]

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

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

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо