Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
magvik Member Откуда: Сообщений: 11 |
Настраиваю аудит действий конкретного пользователя есть тестовая база - test1, в ней простая таблица CREATE TABLE tab1 (id int, mess varchar(10)) нужно отследить выборку данных из этой таблицы только скажем пользователем user1 итак... создаю объект аудита и объект спецификации аудита БД USE master GO --=========================================================================================== -- О Б Ъ Е К Т А У Д И Т А --=========================================================================================== IF EXISTS (select 1 from sys.server_audits where name = 'SrvAudit_File') BEGIN ALTER SERVER AUDIT SrvAudit_File WITH (STATE=OFF) DROP SERVER AUDIT SrvAudit_File END CREATE SERVER AUDIT SrvAudit_File TO FILE (FilePath = N'd:\Work\Audit') ALTER SERVER AUDIT SrvAudit_File WITH (STATE=ON) --=========================================================================================== -- О Б Ъ Е К Т С П Е Ц И Ф И К А Ц И Я А У Д И Т А Б Д --=========================================================================================== USE test1 GO if EXISTS (select 1 from sys.database_audit_specifications where name = 'SrvAuditSpec_File') BEGIN ALTER DATABASE AUDIT SPECIFICATION SrvAuditSpec_File WITH (STATE=OFF) DROP DATABASE AUDIT SPECIFICATION SrvAuditSpec_File; END CREATE DATABASE AUDIT SPECIFICATION SrvAuditSpec_File FOR SERVER AUDIT SrvAudit_File; ALTER DATABASE AUDIT SPECIFICATION SrvAuditSpec_File ADD (SELECT ON dbo.tab1 BY user1) ALTER DATABASE AUDIT SPECIFICATION SrvAuditSpec_File WITH (STATE=ON) делаем выборку select * from test1..tab1 и ничего, запрос SELECT * FROM fn_get_audit_file('d:\Work\Audit\*', null, null) WHERE not (action_id = 'AUSC' AND class_type = 'A') ORDER BY event_time DESC не выдает ни одной строки если при создании спецификации аудита вместо ALTER DATABASE AUDIT SPECIFICATION SrvAuditSpec_File ADD (SELECT ON dbo.tab1 BY user1) прописать ALTER DATABASE AUDIT SPECIFICATION SrvAuditSpec_File ADD (SELECT ON dbo.tab1 BY dbo) то всё конечно работает, но для всех пользователей, а нужен только один в чем проблема? |
25 сен 14, 14:10 [16621083] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
В том, что ваш логин, отмапленный в user1, является dbo ? |
||
25 сен 14, 14:17 [16621126] Ответить | Цитировать Сообщить модератору |
magvik Member Откуда: Сообщений: 11 |
Glory, вот код создания логина и пользователя БД IF EXISTS (SELECT 1 FROM sys.server_principals WHERE name = N'user1' ) DROP LOGIN user1 CREATE LOGIN user1 WITH PASSWORD='123' EXEC sys.sp_addsrvrolemember @loginame = user1, @rolename = N'sysadmin' GO USE test1 GO IF EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N'user1') DROP USER user1 CREATE USER user1 FOR LOGIN user1 WITH DEFAULT_SCHEMA = dbo что сделать чтобы аудит работал только по user1? |
25 сен 14, 14:26 [16621190] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Убрать у логина роль sysadmin Потому что sysadmin-у получает все права на всех базах. И во всех базах является dbo, а не отмапленным туда пользователем. |
||
25 сен 14, 14:31 [16621238] Ответить | Цитировать Сообщить модератору |
magvik Member Откуда: Сообщений: 11 |
Glory, да, на всякий случай select @@version Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) Apr 22 2011 19:23:43 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) |
25 сен 14, 14:35 [16621272] Ответить | Цитировать Сообщить модератору |
Maxx Member [скрыт] Откуда: Сообщений: 24290 |
пропатчить бы надобно ..причем давненько |
||
25 сен 14, 14:47 [16621366] Ответить | Цитировать Сообщить модератору |
magvik Member Откуда: Сообщений: 11 |
Glory, Вопрос решился, спасибо |
25 сен 14, 14:47 [16621367] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |