MSSQL kill locked process
1 отговора
285 прегледа
MSSQL kill locked process
Здравейте.
Имам MSSQL база и клиентски софтуер който изпраща заявки написан много калпаво. За жалост не зависи от мен да го пренапиша. Проблемът е следният. При четене от 1 таблица, тя се заключва, т.е. изчаква се даден процес да свърши преди и други да могат да четат. Когато има много такива, базата увисва.
Какво може да се направи по въпроса? Могат ли да се пращат отдалечно команди, с които такива процеси които има статус locked (за някакъв по-голям интервал от време, 15 сек да речем) да се убиват, така че да не увисват всички?
Мерси!
Имам MSSQL база и клиентски софтуер който изпраща заявки написан много калпаво. За жалост не зависи от мен да го пренапиша. Проблемът е следният. При четене от 1 таблица, тя се заключва, т.е. изчаква се даден процес да свърши преди и други да могат да четат. Когато има много такива, базата увисва.
Какво може да се направи по въпроса? Могат ли да се пращат отдалечно команди, с които такива процеси които има статус locked (за някакъв по-голям интервал от време, 15 сек да речем) да се убиват, така че да не увисват всички?
Мерси!
Re: MSSQL kill locked process
По принцип при четене на таблица от една конекция другите конекции не се блокират, понеже се ползват shared lock-ове. Вероятно по някое време се прави insert/update/delete.
Погледни SET ISOLATION LEVEL и SET LOCK_TIMEOUT като възможност за ограничаване на заключванията. Тук ще трябва да пипаш приложението или някаква негова записана която се вика при отваряне на конекция.
Друг вариант е да погледнеш query governor за ограничаване на сложни заявки - не знам колко ще е полезно в случая.
cheers,
</wqw>
Погледни SET ISOLATION LEVEL и SET LOCK_TIMEOUT като възможност за ограничаване на заключванията. Тук ще трябва да пипаш приложението или някаква негова записана която се вика при отваряне на конекция.
Друг вариант е да погледнеш query governor за ограничаване на сложни заявки - не знам колко ще е полезно в случая.
cheers,
</wqw>