Ir al contenido


Foto

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


  • Por favor identifícate para responder
4 respuestas en este tema

#1 gpaulino

gpaulino

    Newbie

  • Miembros
  • Pip
  • 4 mensajes

Escrito 10 julio 2012 - 01:01

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
  • 6.301 mensajes
  • LocationArgentina

Escrito 10 julio 2012 - 01:20

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 mensajes
  • LocationOaxaca, México

Escrito 10 julio 2012 - 01:30

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 mensajes

Escrito 10 julio 2012 - 01:34

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
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 11 julio 2012 - 06:48

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.