Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Аудит, получить вместо IP имя компьютера.  [new]
Dmitriyv
Member

Откуда:
Сообщений: 68
Доброго времени суток.
Табличка, триггер который работает отлично и пишет то, что нужно. Но есть одно проблема нужно писать вместо IP, имена компов.
пример таблички
ID DATA Destunaion login login Event spid Host_name App_name
1 09.09.2013 14:28 Local_host tets\user LOGON 56 192.168.1.0 Microsoft SQL Server Management Studio


Сам запрос
/* Create Audit Database */
CREATE DATABASE AuditDb
GO
USE AuditDb
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ServerLogonHistory](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[Date] [datetime] NULL,
	[Destunation] [sysname] COLLATE Cyrillic_General_CI_AS NOT NULL,
	[Login] [sysname] COLLATE Cyrillic_General_CI_AS NOT NULL,
	[event_type] [sysname] COLLATE Cyrillic_General_CI_AS NOT NULL,
	[spid] [int] NULL,
	[host_name] [sysname] COLLATE Cyrillic_General_CI_AS NULL,
	[app_name] [sysname] COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY]
/* Create Logon Trigger */
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*CREATE TRIGGER [tr1]
ON ALL SERVER*/

CREATE TRIGGER TR_audit_logins 
ON ALL SERVER WITH EXECUTE AS 'sa'
FOR LOGON 
AS
    BEGIN
        
declare @eventdata xml
set @eventdata = EventData()

begin tran
insert AuditDB.dbo.ServerLogonHistory (Date,Destunation,[Login],event_type,spid,[host_name],[app_name])
values (
         @eventdata.value('(/EVENT_INSTANCE/PostTime)[1]', 'datetime'),
         @eventdata.value('(/EVENT_INSTANCE/ServerName)[1]', 'sysname'),
         @eventdata.value('(/EVENT_INSTANCE/LoginName)[1]', 'sysname'),
         @eventdata.value('(/EVENT_INSTANCE/EventType)[1]', 'sysname'),
         @eventdata.value('(/EVENT_INSTANCE/SPID)[1]', 'int'),
         @eventdata.value('(/EVENT_INSTANCE/ClientHost)[1]', 'sysname'),     
             App_Name()
       )
	
	commit
        
   
END;
11 сен 13, 11:21    [14824838]     Ответить | Цитировать Сообщить модератору
 Re: Аудит, получить вместо IP имя компьютера.  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 659
Dmitriyv,

HOST_NAME()
11 сен 13, 13:15    [14825808]     Ответить | Цитировать Сообщить модератору
 Re: Аудит, получить вместо IP имя компьютера.  [new]
aleks2
Guest
Guf
Dmitriyv,

HOST_NAME()


Не надо изображать страуса.
HOST_NAME() содержит то, чего я напишу в строке подключения

;HOST = 'кампутер Путена'

и HOST_NAME() вернет ЭТО.

ЗЫ. Тредстартеру: не майтесь фигней, IP можно точно также сменить, как и имя...
11 сен 13, 13:35    [14825972]     Ответить | Цитировать Сообщить модератору
 Re: Аудит, получить вместо IP имя компьютера.  [new]
Dmitriyv
Member

Откуда:
Сообщений: 68
aleks2, мне и так пойдет, шефа так не устраивает.
11 сен 13, 13:51    [14826067]     Ответить | Цитировать Сообщить модератору
 Re: Аудит, получить вместо IP имя компьютера.  [new]
Dmitriyv
Member

Откуда:
Сообщений: 68
aleks2
Guf
Dmitriyv,

HOST_NAME()


Не надо изображать страуса.
HOST_NAME() содержит то, чего я напишу в строке подключения

;HOST = 'кампутер Путена'

и HOST_NAME() вернет ЭТО.

ЗЫ. Тредстартеру: не майтесь фигней, IP можно точно также сменить, как и имя...


мне как раз надо получить ИМЯ КОМПА, а не IP
11 сен 13, 13:53    [14826077]     Ответить | Цитировать Сообщить модератору
 Re: Аудит, получить вместо IP имя компьютера.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Dmitriyv
мне как раз надо получить ИМЯ КОМПА, а не IP

Сервер и сообщает то, что он получил в качестве ClientHost
11 сен 13, 14:20    [14826256]     Ответить | Цитировать Сообщить модератору
 Re: Аудит, получить вместо IP имя компьютера.  [new]
Dmitriyv
Member

Откуда:
Сообщений: 68
Glory, запутался, почему тогда в табличку пишет IP?
11 сен 13, 15:03    [14826582]     Ответить | Цитировать Сообщить модератору
 Re: Аудит, получить вместо IP имя компьютера.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Dmitriyv
Glory, запутался, почему тогда в табличку пишет IP?

Потому что кто-то не читает хелп ?

<ClientHost>
Contains the host name of the client from where the connection is made. The value is '<local_machine>' if the client and server name are the same. Otherwise, the value is the IP address of the client.
11 сен 13, 15:25    [14826774]     Ответить | Цитировать Сообщить модератору
 Re: Аудит, получить вместо IP имя компьютера.  [new]
Dmitriyv
Member

Откуда:
Сообщений: 68
победил на свежую голову
 @eventdata.value('(/EVENT_INSTANCE/PostTime)[1]', 'datetime'),
         @eventdata.value('(/EVENT_INSTANCE/ServerName)[1]', 'sysname'),
         @eventdata.value('(/EVENT_INSTANCE/LoginName)[1]', 'sysname'),
         @eventdata.value('(/EVENT_INSTANCE/EventType)[1]', 'sysname'),
         @eventdata.value('(/EVENT_INSTANCE/SPID)[1]', 'int'),
         --@eventdata.value('(/EVENT_INSTANCE/host_name)[1]', 'sysname'), 
         HOST_NAME(),    
             App_Name()


Glory, спасиб за наводку :)
13 сен 13, 09:02    [14834511]     Ответить | Цитировать Сообщить модератору
 Re: Аудит, получить вместо IP имя компьютера.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Dmitriyv
победил на свежую голову

HOST_NAME() возвращает значение аттрибута строки коннекта.
В этом аттрибуте может быть что угодно. В том числе и пустое значение
13 сен 13, 09:12    [14834553]     Ответить | Цитировать Сообщить модератору
 Re: Аудит, получить вместо IP имя компьютера.  [new]
Dmitriyv
Member

Откуда:
Сообщений: 68
Glory, может, пока на тестовой базе пашет.
13 сен 13, 10:05    [14834806]     Ответить | Цитировать Сообщить модератору
 Re: Аудит, получить вместо IP имя компьютера.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Dmitriyv
Glory, может, пока на тестовой базе пашет.

Причем тут база ? Строка соединения находится на клиенте. И от сервера и тем более базы никак не зависит
13 сен 13, 10:07    [14834813]     Ответить | Цитировать Сообщить модератору
 Re: Аудит, получить вместо IP имя компьютера.  [new]
Dmitriyv
Member

Откуда:
Сообщений: 68
Glory,понятно, будет повод купить нормальную систему :)
13 сен 13, 16:20    [14837606]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить