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

Сами мы не местные поэтому вопрос может показаться на первый взгляд и банальным.
За дача заключается в фиксации всех конектов и дисконектов к серверу, пока нашел два решения

1) через аудит CREATE SERVER AUDIT + CREATE SERVER AUDIT SPECIFICATION + (SUCCESSFUL_LOGIN_GROUP, LOGOUT_GROUP)
2) Event Notifications + процедура записи данных в мою табличку

И собственно вопросы
- какой метод лучше использовать?
- если первый вариант, то как организовать перенос даых их файла в мою табличку или есть какая-то проседура которая читает данные из лог-файла, что бы к ним можно было добраться из запроса?
- какой из методов больее надежен и будет менее загружать сесервер?

P.S. Использую SQL Server 2005
5 дек 09, 01:33    [8023470]     Ответить | Цитировать Сообщить модератору
 Re: Аудит LOGON / LOGOFF  [new]
You_got_it
Guest
автор
P.S. Использую SQL Server 2005


Тогда о каком CREATE SERVER AUDIT речь? Только 2).
5 дек 09, 10:18    [8023712]     Ответить | Цитировать Сообщить модератору
 Re: Аудит LOGON / LOGOFF  [new]
!_need_help_!
Guest
You_got_it
автор
P.S. Использую SQL Server 2005


Тогда о каком CREATE SERVER AUDIT речь? Только 2).


А при втором варианте в файл или в какой-нибудь лог будут попадать данные?
5 дек 09, 15:13    [8024062]     Ответить | Цитировать Сообщить модератору
 Re: Аудит LOGON / LOGOFF  [new]
You_got_it
Guest
А это уж куда скажете.

Если создадите трассировку, можете читать файл трассы fn_trace_gettable, если нотификацию - события будут сыпаться в очередь, а дальше - куда вы их оттуда разгребете.
5 дек 09, 16:40    [8024171]     Ответить | Цитировать Сообщить модератору
 Re: Аудит LOGON / LOGOFF  [new]
!_need_help_!
Guest

create proc dbo.QueueProcessing as begin
 declare @msg_body as xml, @msg_type as nvarchar(256)
 while 1 = 1 begin
  waitfor (
   receive top(1) @msg_type = message_type_name,  @msg_body = message_body
   from UserHitNotificationQueue
  )
  insert LogoutLog values (@msg_body.value('*[1]/EndTime[1]', 'datetime'), @msg_body.value('*[1]/SessionLoginName[1]', 'sysname'),
                           @msg_body.value('*[1]/HostName[1]', 'sysname'), @msg_body.value('*[1]/ApplicationName[1]', 'sysname'),
                           @msg_body.value('*[1]/LoginName[1]', 'sysname'))
 end
end
go

create queue UserHitNotificationQueue with activation (
 status = on,       
 procedure_name = dbo.QueueProcessing,
 max_queue_readers = 2,
 execute as self)  
GO

create service UserHitNotification on queue UserHitNotificationQueue ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification])
GO

CREATE EVENT NOTIFICATION UserHitEvent
ON SERVER 
FOR AUDIT_LOGIN
TO SERVICE 'UserHitNotification','current database'
GO

Вот мой скрипт по созданию объектов для аудита. Все работает данные вставляются в табличку с логом, но есть два вопросика:
1) Почему когда я логинюсь, то в табличку вставляется две одинаковые записи?
2) как можно ли как нибудь убрать "Report Server" кроме как @xml.value('*[1]/ApplicationName[1]', 'sysname') <> 'Report Server'

Первый вопрос более критичен, если кто-то с таким сталкивался посоветуйте что делать... почему AUDIT_LOGIN обрабатывается дважды?
7 дек 09, 14:30    [8029147]     Ответить | Цитировать Сообщить модератору
 Re: Аудит LOGON / LOGOFF  [new]
!_need_help_!
Guest
Нашнл в чем причина - SQL Management Studio сатртует несколько сессий при открытии новых закладок
7 дек 09, 14:57    [8029405]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить