none
Как узнать IP-адрес клиента MSSQL? RRS feed

  • Вопрос

  • Необходимо вести лог в котором будет время логона, логин под которым вошли и ip с которого вошли.
    В данный момент используется вариант с firewall, который стоит перед mssql. C него берутся логи подключений, а логин с которого вошли берется из логов mssql.
    Это по ряду причин не удобно.

    Каким образом можно получить ip подключения на самом sql-сервере?

    25 августа 2008 г. 19:51

Ответы

  • Так как-нибудь попhобуйте...
    Code Snippet

    DECLARE @host varchar(255)
    SET @host = host_name()

    CREATE TABLE #Results (
    Results varchar(255)
    )

    DECLARE @cmd varchar(260)
    SET @cmd = 'ping ' + @host

    INSERT INTO #Results
    EXEC master..xp_cmdshell @cmd

    SELECT Replace(Left(Results, CharIndex(']', Results)), 'Pinging ', '') As [client]
    , host_name() As [host_name()]
    FROM #Results
    WHERE Results LIKE 'Pinging%'

    DROP TABLE #Results

    13 сентября 2008 г. 11:52

Все ответы

  • Хм. Да в логах самого сиквела все пишется...

    26 августа 2008 г. 2:44
  • А вместо IP имя хоста пойдет?

    можно так:

    select hostname, loginame from master.dbo.sysprocesses where loginame = 'sa'

     

     

    26 августа 2008 г. 2:56
  •  Alexander Trofimov написано:

    Хм. Да в логах самого сиквела все пишется...

    Речь идет о 2000-й версии. 

    Где конкретно в логах сиквела пишется адрес с которого был произведен вход? 

    26 августа 2008 г. 6:47
  •  Ilgiz Mamyshev написано:

    А вместо IP имя хоста пойдет?

    можно так:

    select hostname, loginame from master.dbo.sysprocesses where loginame = 'sa'

    Про имя хоста мне известно, но это не подходит, нужен именно ip.

    26 августа 2008 г. 6:51
  • IP помоему нигде не пишется.

    Есть имя хоста.

    Можно конечно поразрешать имена хостов..

    exec master..xp_cmdshell 'nslookup имя_хоста'

    а потом оттуда выцеплять IP адрес..

    но все это как то некрасиво.

     

    Зачем вам IP? Он же на клиентской машине может меняться - DHCP сервер в сети может выдать и другой адрес клиенту.

    Ну только не говорите что вы ip адреса на клиентских ПК раздаете \ведете вручную, в каком нибудь файлике..

    26 августа 2008 г. 7:34
  • Сервер смотрит в инет, поэтому mac-адрес и имя хоста мне ни чего не дадут.
    26 августа 2008 г. 8:36
  • Так как-нибудь попhобуйте...
    Code Snippet

    DECLARE @host varchar(255)
    SET @host = host_name()

    CREATE TABLE #Results (
    Results varchar(255)
    )

    DECLARE @cmd varchar(260)
    SET @cmd = 'ping ' + @host

    INSERT INTO #Results
    EXEC master..xp_cmdshell @cmd

    SELECT Replace(Left(Results, CharIndex(']', Results)), 'Pinging ', '') As [client]
    , host_name() As [host_name()]
    FROM #Results
    WHERE Results LIKE 'Pinging%'

    DROP TABLE #Results

    13 сентября 2008 г. 11:52
  • Попробуйте это решение (работает даже на шаред-хостинге)

    http://dev-doc.blogspot.com/2012/08/ms-sql-2008-ip.html

    23 августа 2012 г. 22:05
  • современными средствами, конечно, куда проще; в том-то и дело, что разговор шел о 2000-ой версии SQL Server


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    24 августа 2012 г. 12:38