powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Разрыв пользовательского соединения через 2 часа
19 сообщений из 144, страница 6 из 6
Разрыв пользовательского соединения через 2 часа
    #39517193
nnivanova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
string sql = "select current_timestamp from rdb$database";

public static void ConnectReader(object sender, EventArgs e)
        {
            FbCommand c = new FbCommand(sql, DbCommon.Dtb);
            Object obj = null;
            try
            {               
                obj = c.ExecuteScalar();
                // если выполнилось ExecuteScalar, значит есть связь с БД                
                if (obj != null)
                    DbCommon.CurrentDateTimeDb = DateTime.Parse(obj.ToString());
            }
            catch (Exception exc)
            {               
            }
        }
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517195
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

потому что ты экстраполируешь свои знания Delphi на C#, хотя с последним похоже никогда не работал
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517204
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nnivanova> FbCommand c = new FbCommand(sql, DbCommon.Dtb);

Вот собсно про это и говорит Влад.
Хотя у меня всё равно сомнения, что
просто запросы, даже 2 в минуту,
могут накопиться до 8гиг за день,
даже при 200 коннектах.

Там ведь и обычных прикладных
запросов тьма должна быть.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517205
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениспотому что ты экстраполируешь свои знания Delphi на C#, хотя с последним похоже никогда не работалВообще забыл, что такое Delphi. С++ наше фсё! :)
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517212
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nnivanova,

если не использовать prepare а пересоздавать команду заново, то лучше использовать конструкцию using, которая автоматически вызывает dispose при выходе из блока. Да и ещё если соединения нет, то c.ExecuteScalar() врядл и вернёт null тут скорее Exception будет

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
string sql = "select current_timestamp from rdb$database";

public static void ConnectReader(object sender, EventArgs e)
{
   using(FbCommand c = new FbCommand(sql, DbCommon.Dtb)) 
   {
     try
     { 
        Object obj = c.ExecuteScalar();
        // если выполнилось ExecuteScalar, значит есть связь с БД
        DbCommon.CurrentDateTimeDb = DateTime.Parse(obj.ToString());
     }
     catch (Exception exc)
     {
        // тут надо либо отрапортовать об ошибке, либо восстановить коннект 
     }
   }
}



Если же надо препарировать запрос и использовать многократно, то тебе нужно сделать специальную функцию конструктор которая возвращает сингелтон подготовленного запроса. Как то так
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517218
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devСимонов Дениспотому что ты экстраполируешь свои знания Delphi на C#, хотя с последним похоже никогда не работалВообще забыл, что такое Delphi. С++ наше фсё! :)
Ну, "на плюсах"-то точно иксцепшны никто так не глотает:
Код: c#
1.
2.
3.
catch (Exception exc)
{ 
}

? :)
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517225
nnivanova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

в catch и был вызов окна переподключения.
Попробовала создать функцию считывания данных с коммитом транзакции по завершению. В системной таблице MON$STATEMENTS все запросы сохраняются, пока пользователь не закроет соединение. Я не правильно понимаю, или в MON$STATEMENTS накапливаются активные запросы. Почему после коммита они не удаляются?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
private void LoadData()
        {
            try
            {
                FbTransaction t = DbCommon.Dtb.BeginTransaction(FbTransactionOptions.ReadCommitted);

                Cursor = Cursors.WaitCursor;
                dt.Clear();

                string filter = string.Empty;

                if (gluProject.EditValue is int && (int)gluProject.EditValue > 0)
                    filter = " and v268.sparent = " + (int)gluProject.EditValue;

                // если обе даты из контрола есть, фильтруем по ним
                // иначе это сброс фильтра, не применяем вообще
                if (!btFilter.GetNullDates())
                    // фильтр по фактической дате начала трудозатрат
                    filter += string.Format(" and ((v276f.sda1 between '{0}' and '{1}') or v276f.sda1 is null)",
                                         btFilter.GetDateStart().ToShortDateString(),
                                         btFilter.GetDateEnd().ToShortDateString());

                // считаем данные
                using (FbDataAdapter da = new FbDataAdapter(string.Format(sqlLoad, filter), DbCommon.Dtb))
                {
                    da.SelectCommand.Transaction = t;
                    da.Fill(dt);
                }

                t.Commit();
                DbCommon.Dtb.Close();
            }
            catch (Exception exc)
            {
                MessageBoxForLog.ShowError(exc, Errors.ErrReadData, false);
            }
            finally
            {
                Cursor = Cursors.Default;
            }
        } ~-+2219446+-~
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517227
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДНу, "на плюсах"-то точно иксцепшны никто так не глотает:
Код: c#
1.
2.
3.
catch (Exception exc)
{ 
}

? :)
Да, там это делают иначе:
Код: plaintext
1.
catch (...) {}

:)
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517233
nnivanova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не придираемся) в catch код удалила просто:
Код: c#
1.
2.
3.
4.
5.
6.
catch (Exception exc)
            {
                // такая ошибка означает проблемы соединения с сервером
                if (exc.Message.ToLower().Contains("connection")) 
                    ActivTimerFm.Open();
            }
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517254
nnivanova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_dev а на своём компе, ради эксперимента, в свойствах сетевого адаптера попробуйте запретить управление питанием (снять галочку с "Разрешить отключение этого устройства для экономии энергии").
попробовала, не помогло(( два часа-разрыв.
Пришел сисадмин, послушал, подумает по счет оборудования сети. Как понимаю, это на долго и может быть безрезультатно. Буду писать запрос на проверку соединения по таймеру, учитывая все ваши советы)
Спасибо еще раз всем!
Остался лишь вопрос касаемо таблицы MON$STATEMENTS - почему в нем копятся запросы.
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517264
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nnivanovaОстался лишь вопрос касаемо таблицы MON$STATEMENTS - почему в нем копятся запросы.Потому что клиент их не удаляет.
См 20778031
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517338
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nnivanovaПришел сисадмин, послушал, подумает по счет оборудования сети. Как понимаю, это на долго и может быть безрезультатно.

с полгода назад кто-то писал тут, что что пресловутый лимит keep-alive обнаружил в каком-то сетевом железе. Только там было 30 минут настроено. И точно так же бегали в поисках "кто же рвет соединения".
Вообще правильно Рустам сказал, что топик бесперспективный. Эти обрывы могут инициироваться keepalive, клиентами прокси, firewall, антивирусами, кривым сетевым софтом (откуда лезет много 10054), помехами в сети, оборудованием, и т.д.
Единственная польза - если вы найдете-таки источник, и укажете его тут.

nnivanovaОстался лишь вопрос касаемо таблицы MON$STATEMENTS - почему в нем копятся запросы.
видимо, потому что приложение эти запросы не закрывает. В некоторых системах наблюдал до 100 раз больше запросов, не привязанных к транзакциям, чем привязанных и выполняемых. Типа, 100 соединений выполняют 90 запросов, а незакрытых запросов около 10 тысяч.
К примеру
FbCommand c = new FbCommand(sql, DbCommon.Dtb)
явно же создается новый объект с запросом, который освобождается ... ГДЕ? Типа, сборщик мусора C# КОГДА-НИБУДЬ его освободит? Лет через 10?
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517361
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvс полгода назад кто-то писал тут, что что пресловутый лимит keep-alive обнаружил в каком-то сетевом железе. Только там было 30 минут настроено. И точно так же бегали в поисках "кто же рвет соединения".О чем и речь! Неизвестно, какой алгоритм использует программа контроллера сетевой карты при переходе в энергосберегающий режим и на сколько корректно этот контроллер обрабатывает keepalive, работая на 3-ем уровне модели OSI, если в нем реализован подобный механизм.
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517369
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devНеизвестно, какой алгоритм использует программа контроллера сетевой карты при переходе
там речь шла про какой-то умный маршрутизатор или свитчер или что-то такое, не про сетевые карты.
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517383
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамP.S. Закройте топик, плиз, всё равно уже бестолку.
kdvЕдинственная польза - если вы найдете-таки источник, и укажете его тут.
Рустам, может ты немного сбавишь обороты? Дай барышне решать СВОЮ проблему в том ритме, который ей нравится. Препирательства с rdb_dev я зачищу.
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517387
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> Автор свою проблему ещё не решил

Можно делать ставки, что и не найдёт причину (отвала коннектов).

Но да, было бы интересно узнать, если вдруг случится чудо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517388
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Обвести красной рамочкой? rdb_dev, тебе тоже персональное уведомление надо?
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517392
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvтам речь шла про какой-то умный маршрутизатор или свитчер или что-то такое, не про сетевые карты.Принципиальной разницы нет. Сейчас некоторые сетевухи даже на ARP/NS запросы отвечают, при том, что ЦП находится в C3.
...
Рейтинг: 0 / 0
Разрыв пользовательского соединения через 2 часа
    #39517396
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyМодератор: Обвести красной рамочкой? rdb_dev, тебе тоже персональное уведомление надо? Тыж заметил, что я публиканул раньше твоего предупреждения?
...
Рейтинг: 0 / 0
19 сообщений из 144, страница 6 из 6
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Разрыв пользовательского соединения через 2 часа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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