Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сканирование подключений к базе firebird, возвращает лишь одно подключение :( 
:(
    Опции темы
Cinemaizer[Олег]
Дата 7.9.2011, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 10.4.2008
Где: Москва

Репутация: нет
Всего: 0



Располагаем D7, firebird 2.5, fibplus. Задача - раз в секунду сканить текущие подключения (имя юзера и айпишник) к базе.
Простой код с участием фиб-запроса (на таймере) выдает лишь одно подключение - то с которым я авторизовался при запуске приложение и подключился к базе. Хотя тот же самый запрос если использовать в ibexpert, там все корректно - кажет и свое подключение и мои - из приложений. Вопрос - что у меня не так?

Код

procedure TfrmMAIN.Timer2Timer(Sender: TObject);
var
  ListItem: TListItem;
begin
  with DM.ReadQuery do
  begin
    Close;
    SQL.Clear;
    SQL.Text:='select MON$USER, MON$REMOTE_ADDRESS from mon$attachments';
    ExecQuery;
    sListView1.Items.Clear;
    while not Eof do
    begin
      ListItem:=sListView1.Items.Add;
      ListItem.Caption:=Fields[0].AsString;
      ListItem.SubItems.Add(Fields[1].AsString);
      Next;
    end;
  end;
end;


Использовал разные типы запросов - и простые (всегда открытые на чтение) и другие (с авто-стартом и автокомитом). GotoFirstRecordOnExecute = True, естественно.
В общем, запросы на чтение возвращают лишь одну запись, запросы с авто-стартом и автокомитом вообще ничего не возвращали.


Это сообщение отредактировал(а) Cinemaizer[Олег] - 7.9.2011, 15:56
PM MAIL WWW   Вверх
AndreyIQ
Дата 7.9.2011, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 5.2.2007

Репутация: 1
Всего: 8



Цитата(Cinemaizer[Олег)
,7.9.2011,  15:55]Располагаем D7, firebird 2.5, fibplus. Задача - раз в секунду сканить текущие подключения (имя юзера и айпишник) к базе.
Простой код с участием фиб-запроса (на таймере) выдает лишь одно подключение - то с которым я авторизовался при запуске приложение и подключился к базе. Хотя тот же самый запрос если использовать в ibexpert, там все корректно - кажет и свое подключение и мои - из приложений. Вопрос - что у меня не так?

Код

procedure TfrmMAIN.Timer2Timer(Sender: TObject);
var
  ListItem: TListItem;
begin
  with DM.ReadQuery do
  begin
    Close;
    SQL.Clear;
    SQL.Text:='select MON$USER, MON$REMOTE_ADDRESS from mon$attachments';
    ExecQuery;
    sListView1.Items.Clear;
    while not Eof do
    begin
      ListItem:=sListView1.Items.Add;
      ListItem.Caption:=Fields[0].AsString;
      ListItem.SubItems.Add(Fields[1].AsString);
      Next;
    end;
  end;
end;


Использовал разные типы запросов - и простые (всегда открытые на чтение) и другие (с авто-стартом и автокомитом). GotoFirstRecordOnExecute = True, естественно.
В общем, запросы на чтение возвращают лишь одну запись, запросы с авто-стартом и автокомитом вообще ничего не возвращали.

На Delphi 2009, firebird 2.5 через обычный IBQuery, без проблем выдает все подключения.
Может надо заменить ExecQuery на Open

Это сообщение отредактировал(а) AndreyIQ - 7.9.2011, 16:27
PM MAIL   Вверх
Cinemaizer[Олег]
  Дата 7.9.2011, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 10.4.2008
Где: Москва

Репутация: нет
Всего: 0



Open в данном случае не метод, а ридонли-свойство, так что не пойдет.

Добавлено @ 16:57
Упс... Залогинился в ibexperte под простым юзером (не SYSDBA), теперь тоже только одно подключение вижу, хотя их два на сей момент. А вот если в приложении логинюсь под SYSDBA то все подключения вижу. Хм... и как быть?
Получается, что токмо Богу (SYSDBA) сверху всех видно, а простым священнослужителям-шаманам-админам, не?  smile 

Это сообщение отредактировал(а) Cinemaizer[Олег] - 7.9.2011, 17:03
PM MAIL WWW   Вверх
Cinemaizer[Олег]
Дата 7.9.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 10.4.2008
Где: Москва

Репутация: нет
Всего: 0



И кстати, архитектура сервера у меня: SuperServer.
PM MAIL WWW   Вверх
Cinemaizer[Олег]
Дата 8.9.2011, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 10.4.2008
Где: Москва

Репутация: нет
Всего: 0



Цитата(Cinemaizer[Олег)
, 7.9.2011,  14:45, post2398947]Залогинился в ibexperte под простым юзером (не SYSDBA), теперь тоже только одно подключение вижу, хотя их два на сей момент. А вот если в приложении логинюсь под SYSDBA то все подключения вижу. Хм... и как быть?
Получается, что токмо Богу (SYSDBA) сверху всех видно, а простым священнослужителям-шаманам-админам, не?   

Неужели никто не знает точный ответ?

PM MAIL WWW   Вверх
AndreyIQ
Дата 9.9.2011, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 5.2.2007

Репутация: 1
Всего: 8



Цитата(Cinemaizer[Олег)
,8.9.2011,  20:33]
Цитата(Cinemaizer[Олег)
, 7.9.2011,  14:45, post2398947]Залогинился в ibexperte под простым юзером (не SYSDBA), теперь тоже только одно подключение вижу, хотя их два на сей момент. А вот если в приложении логинюсь под SYSDBA то все подключения вижу. Хм... и как быть?
Получается, что токмо Богу (SYSDBA) сверху всех видно, а простым священнослужителям-шаманам-админам, не?   

Неужели никто не знает точный ответ?

Первое, что пришло в голову, поставить триггер на connect и diconnect. Примерно так:
Код

CREATE TABLE CONNECTIONS (
    USER_NAME  CHAR(100),
    ADDRESS    CHAR(100),
    ID         INTEGER
);
.....
CREATE OR ALTER TRIGGER t_connect
ACTIVE ON CONNECT POSITION 0
as
 BEGIN
 insert into connections
 select MON$USER, MON$REMOTE_ADDRESS, MON$ATTACHMENT_ID from MON$ATTACHMENTS where MON$ATTACHMENT_ID = CURRENT_CONNECTION;
 END
.......
CREATE OR ALTER TRIGGER t_disconnect
ACTIVE ON DISCONNECT POSITION 0
as
 BEGIN
 delete from connections where ID = CURRENT_CONNECTION;
 END


Это сообщение отредактировал(а) AndreyIQ - 9.9.2011, 08:37
PM MAIL   Вверх
Cinemaizer[Олег]
Дата 9.9.2011, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 10.4.2008
Где: Москва

Репутация: нет
Всего: 0



О! Точно. Спасибо! Хорошая идея...
PM MAIL WWW   Вверх
Akella
Дата 9.9.2011, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Cinemaizer[Олег)
,8.9.2011,  20:33]
Цитата(Cinemaizer[Олег)
, 7.9.2011,  14:45, post2398947]Залогинился в ibexperte под простым юзером (не SYSDBA), теперь тоже только одно подключение вижу, хотя их два на сей момент. А вот если в приложении логинюсь под SYSDBA то все подключения вижу. Хм... и как быть?
Получается, что токмо Богу (SYSDBA) сверху всех видно, а простым священнослужителям-шаманам-админам, не?   

Неужели никто не знает точный ответ?

читай доки smile
Юзер видит только свои подключения. SYSDBA все.

Добавлено через 1 минуту и 47 секунд
Цитата(Cinemaizer[Олег)
, 7.9.2011,  15:55, post2398921]раз в секунду сканить текущие подключения

Не часто ли?
PM MAIL   Вверх
Cinemaizer[Олег]
  Дата 9.9.2011, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 10.4.2008
Где: Москва

Репутация: нет
Всего: 0



Цитата(Akella @  9.9.2011,  10:30 Найти цитируемый пост)
Не часто ли? 


А чего, сильно часто на твой взгляд?  smile 

Это сообщение отредактировал(а) Cinemaizer[Олег] - 9.9.2011, 14:52
PM MAIL WWW   Вверх
Akella
Дата 9.9.2011, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



а какой смысл так часто?
PM MAIL   Вверх
Cinemaizer[Олег]
Дата 9.9.2011, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 10.4.2008
Где: Москва

Репутация: нет
Всего: 0



да фз smile можно и 5 сек поставить в принципе smile 
ЗЫ:
У меня снова проблема с восприятием баланса ОПТИМАЛЬНАЯ производительность<->требования? smile
(вообще это не сарказм, я серьезен вполне)

Это сообщение отредактировал(а) Cinemaizer[Олег] - 9.9.2011, 20:28
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0910 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.