Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как избавиться от выбросов программы системой?  [new]
Sergi
Member

Откуда:
Сообщений: 368
Имею компьютер: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz 3.00 ГГц 2.00 ГБ ОЗУ
Имею серверную ОС - MS Win2003 с ОЗУ 2Гб. Здесь же установлен MS SQL Server 2000 SP4.
Проблема такая:
Вначале запускается компьютер с ОС, затем SQL Server, за ним рабочая программа контроля производственных линий через COM-порты.
В момент загрузки программы, SQL Server начинает отрабатывать свои процедуры: организовывать кэши и т.д. При этом нормальным образом потребляется ОЗУ. Эти процессы вполне понятны и правильны. И это отрабатывается сервером только один раз при первой перезагрузке системы. На эту процедуру уходит около минуты. Эта задержка вызывает в Диспетчере задач состояние основной программы - не отвечает. И бывает так, что все проходит без проблем, а бывает так, что система выкидывает программу, как не отвечающую каким-то runtime-ам.
1. Где в системе можно выставить такие задержки?
2. На самом SQL Server задержка выставлена - в неограниченное временное состояние.
Возможно ли чтобы такое происходило из-за того, что сам SQL Server не успевает подкачивать логи из-за малого быстродействия компьютера?
14 ноя 11, 11:23    [11591669]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Sergi
Возможно ли чтобы такое происходило из-за того, что сам SQL Server не успевает подкачивать логи из-за малого быстродействия компьютера?

"Выкидывает" то вашу программу, а не SQL Server
А вот зачем ваша программа пытается чего-то добиться от незапустившегося еще сервера непонятно
14 ноя 11, 11:39    [11591770]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Sergi
Member

Откуда:
Сообщений: 368
Glory
Sergi
Возможно ли чтобы такое происходило из-за того, что сам SQL Server не успевает подкачивать логи из-за малого быстродействия компьютера?

"Выкидывает" то вашу программу, а не SQL Server
А вот зачем ваша программа пытается чего-то добиться от незапустившегося еще сервера непонятно


Программа естественно запускается после того, как сервер запустится. Для этого в ней есть специальная проверка.
14 ноя 11, 11:47    [11591830]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Sergi
Программа естественно запускается после того, как сервер запустится. Для этого в ней есть специальная проверка.


Что за проверка?
14 ноя 11, 11:47    [11591834]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Sergi
Member

Откуда:
Сообщений: 368
pkarklin
Sergi
Программа естественно запускается после того, как сервер запустится. Для этого в ней есть специальная проверка.


Что за проверка?


ServiceGetStatus(ParamString4,ParamString5)=SERVICE_RUNNING
14 ноя 11, 13:42    [11592806]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Sergi
Member

Откуда:
Сообщений: 368
ParamString4:=''
ParamString5:='MSSQLSERVER'
14 ноя 11, 13:46    [11592847]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Sergi
pkarklin
пропущено...


Что за проверка?


ServiceGetStatus(ParamString4,ParamString5)=SERVICE_RUNNING


После того как стартанул сервис он должен "поднять" базы данных, чтобы их "поднять" он проводит ряд проверок, откаты\накаты транзакций в соответствии с логом и т.п. - на это надо время.
14 ноя 11, 13:49    [11592865]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
лучше проверять возможность соединения с нужной БД, если нет соединения - таймаут и новая попытка, ну и после 3-5 попыток если нет соединения выводить ошибку соединения...
14 ноя 11, 13:50    [11592887]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Glory
Member

Откуда:
Сообщений: 104751
SERVICE_RUNNING
MSSQL готов к работе тогда, когда в его логе появляется сообщение вида

10/19/2011 17:09:56,Server,Unknown,SQL Server is now ready for client connections. This is an informational message; no user action is required.
14 ноя 11, 13:56    [11592943]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
komrad
Member

Откуда:
Сообщений: 5760
Glory
SERVICE_RUNNING
MSSQL готов к работе тогда, когда в его логе появляется сообщение вида

10/19/2011 17:09:56,Server,Unknown,SQL Server is now ready for client connections. This is an informational message; no user action is required.


он это выдает когда еще базы не отрекаверил
так что ориентировать на данную запись смысла нет
14 ноя 11, 14:02    [11592985]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Glory
Member

Откуда:
Сообщений: 104751
komrad
он это выдает когда еще базы не отрекаверил
так что ориентировать на данную запись смысла нет

Ну так будет ошибка обращения к базе
Которую можно обработать
14 ноя 11, 14:04    [11593004]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Sergi
Member

Откуда:
Сообщений: 368
В том то и дело, что ошибок не выдается никаких перед вылетом рабочей программы.
Рабочая программа вылетает на момент подгрузки памяти программы - sqlservr.exe.
То есть идет отработка загрузки логов в tempdb.
Бывает так, что в системе указывается, что логи не успели загрузиться в базу tempdb и поэтому произошел сбой. Или произашла нехватка добавки.
14 ноя 11, 16:39    [11594553]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Sergi
Рабочая программа вылетает на момент подгрузки памяти программы - sqlservr.exe.

И как вы установили именно такую взаимосвязь ?

Sergi
То есть идет отработка загрузки логов в tempdb.

А как идет "загрузки логов в tempdb", если сервер еще загружается ?
14 ноя 11, 16:42    [11594582]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2517
Sergi
...
Эта задержка вызывает в Диспетчере задач состояние основной программы - не отвечает. И бывает так, что все проходит без проблем, а бывает так, что система выкидывает программу, как не отвечающую каким-то runtime-ам.

Для начала приведите текст сообщения, которым сопровождается "выкидывание программы".

Вы разрабатываете обычное приложение, или службу?

Sergi
В том то и дело, что ошибок не выдается никаких перед вылетом рабочей программы.
Рабочая программа вылетает на момент подгрузки памяти программы - sqlservr.exe.
То есть идет отработка загрузки логов в tempdb.

Бывает так, что в системе указывается, что логи не успели загрузиться в базу tempdb и поэтому произошел сбой. Или произашла нехватка добавки.

На основании чего Вы пришли к этому заключению?
Что есть "отработка загрузки логов в tempdb"?
Текст ошибки?
14 ноя 11, 17:43    [11595148]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Sergi
Member

Откуда:
Сообщений: 368
Александр Спелицин
Sergi
...
Эта задержка вызывает в Диспетчере задач состояние основной программы - не отвечает. И бывает так, что все проходит без проблем, а бывает так, что система выкидывает программу, как не отвечающую каким-то runtime-ам.

Для начала приведите текст сообщения, которым сопровождается "выкидывание программы".

Вы разрабатываете обычное приложение, или службу?

Sergi
В том то и дело, что ошибок не выдается никаких перед вылетом рабочей программы.
Рабочая программа вылетает на момент подгрузки памяти программы - sqlservr.exe.
То есть идет отработка загрузки логов в tempdb.

Бывает так, что в системе указывается, что логи не успели загрузиться в базу tempdb и поэтому произошел сбой. Или произашла нехватка добавки.

На основании чего Вы пришли к этому заключению?
Что есть "отработка загрузки логов в tempdb"?
Текст ошибки?


Обычное приложение.
Программу просто вышибает без указания ошибки. Если бы была показана ошибка, я давно от нее избавился бы. Копаясь в просмотре событий, пришел к выводу, что программу вышибает система, делая соответствующее прерывание.
14 ноя 11, 17:51    [11595214]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Sergi
Member

Откуда:
Сообщений: 368
Glory
Sergi
Рабочая программа вылетает на момент подгрузки памяти программы - sqlservr.exe.

И как вы установили именно такую взаимосвязь ?

Sergi
То есть идет отработка загрузки логов в tempdb.

А как идет "загрузки логов в tempdb", если сервер еще загружается ?


Включил Диспетчер задач и смотрел.

1. Первый случай выкидывания. Это когда загружается программа после первой загрузки SQL сервера (сервер уже загружен).
2. Подгрузка логов tempdb - это уже второй случай выкидывания, когда программа уже давно работает. Выкидывает примерно раз в неделю. Может что с индексами случается, хотя я их перестраиваю время от времени.
14 ноя 11, 17:57    [11595280]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2517
Sergi
1. Первый случай выкидывания. Это когда загружается программа после первой загрузки SQL сервера (сервер уже загружен).

Запустите программу из среды разработки. При возникновении ошибки Вы увидите место ее возникновения.
Sergi
2. Подгрузка логов tempdb - это уже второй случай выкидывания, когда программа уже давно работает. Выкидывает примерно раз в неделю. Может что с индексами случается, хотя я их перестраиваю время от времени.

В MSSQL "Подгрузка логов tempdb" нет такого понятия. Все ошибки/события пишутся в лог MS SQL Server'a. Вот там и нужно смотреть. Если ничего не увидите, то это однозначно проблемы Вашего приложения.
Если у Вас COM порт, то программа создает минимум доп. поток для работы с ним. А если портов несколько, то и потоков может быть несколько. В итоге получаем программу с потенциальной проблемой неправильной синхронизации данных между потоками.
В любом случае это уже проблема Вашего приложения, а не MSSQL и обсуждать ее нужно в соответствующем профильном форуме
14 ноя 11, 18:52    [11595749]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Sergi
Member

Откуда:
Сообщений: 368
[quot Александр Спелицин]
Sergi
1. Первый случай выкидывания. Это когда загружается программа после первой загрузки SQL сервера (сервер уже загружен).

Запустите программу из среды разработки. При возникновении ошибки Вы увидите место ее возникновения.

Дело в том, что прога вылетает раз в месяц или раз в неделю. Поймать момент вылета не удается.
15 ноя 11, 11:23    [11597797]     Ответить | Цитировать Сообщить модератору
 Re: Как избавиться от выбросов программы системой?  [new]
Sergi
Member

Откуда:
Сообщений: 368
Разобрался, в чём дело.
Я в программе использовал просмотр таблицы. Организовывал это через TTable. Оказалось, что если смотреть большие таблицы и делать часто обновление данных, то появляется этот странный эффект. Вначале, как бы подвешивается просмотр после Refresh, потом программа вываливается.
Заменил TTable на TQuery, как обычно всегда делал и прога работает после этого стабильно.
Расширение памяти тоже помогло в работе SQL Server.
12 янв 12, 12:07    [11891159]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить