MSSQL kill locked process

1 отговора 285 прегледа
#1

MSSQL kill locked process

Здравейте.

Имам MSSQL база и клиентски софтуер който изпраща заявки написан много калпаво. За жалост не зависи от мен да го пренапиша. Проблемът е следният. При четене от 1 таблица, тя се заключва, т.е. изчаква се даден процес да свърши преди и други да могат да четат. Когато има много такива, базата увисва.

Какво може да се направи по въпроса? Могат ли да се пращат отдалечно команди, с които такива процеси които има статус locked (за някакъв по-голям интервал от време, 15 сек да речем) да се убиват, така че да не увисват всички?

Мерси!

Отговор
в отговор на uptime #2

Re: MSSQL kill locked process

По принцип при четене на таблица от една конекция другите конекции не се блокират, понеже се ползват shared lock-ове. Вероятно по някое време се прави insert/update/delete.

Погледни SET ISOLATION LEVEL и SET LOCK_TIMEOUT като възможност за ограничаване на заключванията. Тук ще трябва да пипаш приложението или някаква негова записана която се вика при отваряне на конекция.

Друг вариант е да погледнеш query governor за ограничаване на сложни заявки - не знам колко ще е полезно в случая.

cheers,
</wqw>

Отговор