Jump to content


Photo

Como capturar el nombre de la pc que se conecte a mi base de datos.


  • Please log in to reply
4 replies to this topic

#1 gpaulino

gpaulino

    Newbie

  • Miembros
  • Pip
  • 4 posts

Posted 10 July 2012 - 01:01 PM

Hola a todos

Soy Nuevo en Firebird y me gustaria sabes si puedo capturar el nombre de la pc que se conecte a mi base de datos en firebird,
ya que lo necesito para fines de crear un log en el sistema.


Muchas Gracias por adelantado.
  • 0

#2 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6301 posts
  • LocationArgentina

Posted 10 July 2012 - 01:20 PM

Hola gpaulino, Firebird desde la versión 2.5 cuenta con un conjunto de tablas de sistemas "extendida" que permite entre otras cosas llevar un buen monitoreo. Se puede hacer unas cuantas consultas a esas tablas para obtener la información que necesitas.
Lamentablemente no recuerdo bien cuáles son esas tablas, y desconozco como usarlas (ya que aún estoy en 1.5), pero todas están bajo el prefijo MON$.
Tal vez esto te de un norte.

Ahora, si la idea es hacer desde el sistema, entonces deberías pensar en las funciones API GetUserName, GetUserNameEx y si en verdad necesitas algo sobre la computadora en si y no del usuario lo más cercano que conozco es GetComputerName y GetComputerNameEx aunque esto regresan el nombre de NetBIOS y/o el de DNS (para el caso de la versión Ex, o Extendida) y no se si es justamente esto lo que estás buscando.

Saludos,
  • 0

#3 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 posts
  • LocationOaxaca, México

Posted 10 July 2012 - 01:30 PM

Tal como menciona Delphius, puedes intentar con:



delphi
  1. select * from  mon$attachments



Checa la columna MON$REMOTE_ADDRESS, te podrá ayudar en lo que buscas. Mas info: http://www.firebird....y_seguridad.pdf, página 6 Monitorización.

Saludos
  • 0

#4 gpaulino

gpaulino

    Newbie

  • Miembros
  • Pip
  • 4 posts

Posted 10 July 2012 - 01:34 PM

gracias a todos pero encontre

esto y creo que con esto y la funciones de las api puedo resolver mi problema.

Gracias a todos.

SELECT RDB$GET_CONTEXT('SYSTEM', 'ENGINE_VERSION') AS engineversion,
      RDB$GET_CONTEXT('SYSTEM', 'NETWORK_PROTOCOL') AS protocol,
      RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS') AS address,
      RDB$GET_CONTEXT('SYSTEM', 'DB_NAME') AS dbname,
      RDB$GET_CONTEXT('SYSTEM', 'SESSION_ID') AS sesionid,
      RDB$GET_CONTEXT('SYSTEM', 'TRANSACTION_ID') AS transactionid,
      RDB$GET_CONTEXT('SYSTEM', 'CURRENT_USER') AS currentuser
FROM RDB$DATABASE;

  • 0

#5 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1092 posts
  • LocationMurcia, España

Posted 11 July 2012 - 06:48 AM

El codigo que envias no te sirve, es para ejecutar en el programa cliente y saber los datos de tu conexion actual, pero no es para consultarlo desde el servidor (te daria la conexion de la herramienta que usas para conectar con FB en el servidor).

Es la tabla mon$ que te comentan arriba la que si que te daría esa misma informacion pero sobre todos los clientes conectados, incluido tú, y pudiendola pedir desde cualquier conexion a la BD.

Para lo que si que te serviria tu código es para quitar de la lista de mon$ tu propia conexion, para que no aparezca tu mimso en el listado.
  • 0




IP.Board spam blocked by CleanTalk.