Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Странные сбои в программе / 10 сообщений из 10, страница 1 из 1
09.05.2007, 10:58
    #34514343
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странные сбои в программе
Привет всем еще раз ;)
Есть программа, база на SQL Server, каждые n-секунд обращается к базе, через ADO.
Каждый шаг в программе отображается в текстовом логе, типа "проверка новых данных...", "новых данные нет...", "данные для обработки..." и т.д.
все нормально работает, периодическая проверка данных идет через стандартный Timer.
Иногда вот эта проверка тормозит. К примеру так:
1. Проверка новых данных...
2. Новых данных нет...
3. Проверка новых данных...
4. Данные для обработки...
5. Данные обработаны...
6. Проверка новых данных...
7. Новых данных нет...
8. Данные для обработки...
9. Данные обработаны...
10. Проверка новых данных...
11. Новых данных нет...
12. Проверка новых данных...
13. Новых данных нет...
И раз все дальше уже ничего не выполняется, т.е. следующая генерация Timer'а не происходит, нету никаких ошибок, все ошибки перехватываются и записываются в логе. Соотвественно должно же было дальше работать или ошибку выдавать, ничего нет.
С SQL Server'ом только начал работать, слышал про блокировки, может ли такое быть? Т.е. произошла блокировка и уже следующее обращение к базе не выполняется или выполняется слишком долго, что приводит к зависанию проги, или слишком длинному обращению к данным?
Или же здесь какой-то глюк в стандартном таймере? Или что? Посоветуйте пожалуйста.
Спасибо.
...
Рейтинг: 0 / 0
09.05.2007, 12:57
    #34514485
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странные сбои в программе
А код этих опросов можно посмотреть?
Предпологаю - открывается connection и не закрывается.
Что за SQL? Количество подключений какое при этих "тормозах"
...
Рейтинг: 0 / 0
09.05.2007, 13:11
    #34514502
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странные сбои в программе
Пардон. Не "тормозах" а "Сбоях"
...
Рейтинг: 0 / 0
09.05.2007, 13:21
    #34514507
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странные сбои в программе
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    strSQL = "SELECT TOP 1 * FROM TblContragentMessages WHERE (Checked=0) AND (MessageStatusID=1)"
    If rstTemp.State <>  0  Then rstTemp.Close
    rstTemp.Open strSQL, cnnMain, adOpenForwardOnly, adLockReadOnly
    If Not rstTemp.EOF Then
        lngMessageID = rstTemp.Fields("ID").Value
	.....
	processing...
	.....
        strSQL = "UPDATE TblContragentMessages SET Checked=1,CheckedDateTime=GETDATE() WHERE ID=" & lngMessageID
	cnnMain.Execute strSQL
    End If
...
Рейтинг: 0 / 0
09.05.2007, 13:31
    #34514525
ILL HEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странные сбои в программе
клиент один ?
после возникновения "сбоя" проверить на сервере заблокированные объекты
sp_lock и sp_who . подробности в BOL
...
Рейтинг: 0 / 0
09.05.2007, 13:32
    #34514526
ILL HEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странные сбои в программе
ошибки в таймере обрабатываем ?
...
Рейтинг: 0 / 0
09.05.2007, 13:35
    #34514529
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странные сбои в программе
ILL HEADклиент один ?
после возникновения "сбоя" проверить на сервере заблокированные объекты
sp_lock и sp_who . подробности в BOL
в смысле программа обработки сообщений? или вообще подключенные к SQL Server'у?
Если 1ое то только один клиент, в данный момент, если второе, тогда две программы одновременно подключены.
Ошибки в таймере тоже обрабатываются, везде короче обработчики стоят, с записью ошибок в лог-файл.
Если была блокировка в SQL Server'е, никаких ошибок не будет чтоли?
Т.е. при следующей попытке проверки данных?
Спасибо
...
Рейтинг: 0 / 0
10.05.2007, 09:35
    #34515259
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странные сбои в программе
Чтобы минимизировать влияние блокировок, добавьте к запросу хинт NOLOCK, т.е.
Код: plaintext
 strSQL = "SELECT TOP 1 * FROM TblContragentMessages (NOLOCK) WHERE (Checked=0) AND (MessageStatusID=1)"
А чтобы посмотреть сетевую активность вашей программы, используйте Profiler.
...
Рейтинг: 0 / 0
10.05.2007, 13:36
    #34516136
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странные сбои в программе
MelkiadesЧтобы минимизировать влияние блокировок, добавьте к запросу хинт NOLOCK, т.е.
Код: plaintext
 strSQL = "SELECT TOP 1 * FROM TblContragentMessages (NOLOCK) WHERE (Checked=0) AND (MessageStatusID=1)"
А чтобы посмотреть сетевую активность вашей программы, используйте Profiler.
спасибо
...
Рейтинг: 0 / 0
10.05.2007, 13:36
    #34516138
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странные сбои в программе
попробую такой метод
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Странные сбои в программе / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]