
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
06.11.2002, 22:28:55
|
|||
|---|---|---|---|
Аудит хранимых процедур |
|||
|
#18+
http://www.osp.ru/win2000/2000/06/059.htm "...Механизм расширенных свойств можно использовать для аудита вызова хранимых процедур, т. е. для получения сведений о том, кто вызвал хранимую процедуру, когда и с какими параметрами. Для этого нужно создать расширенные свойства для процедуры или пользователя, например, в Query Analyzer, а текст процедуры дополнить вызовом обновления соответствующих расширенных свойств. .." neponiatno tol"ko kak etim pol'zovatcia ... ochen" nado audit cdelat" .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2002, 21:11:58
|
|||
|---|---|---|---|
Аудит хранимых процедур |
|||
|
#18+
там же пример есть... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2002, 22:26:56
|
|||
|---|---|---|---|
|
|||
Аудит хранимых процедур |
|||
|
#18+
Я не думаю, что использование расширенных свойств объектов является блестящим решением для аудита. Допустим, Вы хотите отслеживать, кто и когда вызывал данную процедуру. При помощи расширенных св-в это будет выглядеть примерно так: use tempdb if exists(select 1 from information_schema.routines where routine_name = 'spTest' and routine_type = 'procedure') drop proc spTest go create proc spTest as declare @msg as sql_variant, @user as sysname set @msg = 'Я - процедура ' + object_name(@@procid) + '. Последний раз вызывалась юзером ' + user_name() + ' в ' + convert(char(24), getdate(), 121) exec sp_updateextendedproperty 'LastCall', @msg, 'user', dbo, 'procedure', 'spTest' go exec sp_addextendedproperty 'LastCall', null, 'user', dbo, 'procedure', spTest exec spTest Теперь, если мы посмотрим значение св-ва LastCall при помощи ::fn_listextendedproperty() или напрямую: select value from sysproperties where name = 'LastCall' and id = object_id('spTest') то получим ----------------------------------------------------------------------------------- Я - процедура spTest. Последний раз вызывалась юзером dbo в 2002-11-07 11:28:46.293 (1 row(s) affected) Но не спешите радоваться. В BOL сказано "Members of the db_owner and db_ddladmin fixed database roles may update the extended properties of any object. Users may update extended properties to objects they own. However, only db_owner may update properties to user names." Поэтому как только мы заводим обычного юзера aaa, разумеется, не являющегося владельцем процедуры и не входящего в указанные роли (а таких большинство), то данный способ работать не будет: grant exec on spTest to aaa setuser 'aaa' exec spTest setuser Server: Msg 15247, Level 16, State 1, Procedure sp_validatepropertyinputs, Line 162 User does not have permission to perform this action. Ну т.е. не может aaa вызвать sp_updateextendedproperty. Поэтому мой Вам совет. Забейте в данном случае на расширенные св-ва и используйте вместо них для аудита собственную таблицу. Идейно это будет тоже самое, что и с sysproperties, только меньше геморроя с правами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&tablet=1&tid=1818989]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 360ms |

| 0 / 0 |
