Контроль над пользователями БД

  • Автор темы Balda
  • Дата начала
B

Balda

Гость
#1
Используется MS SQL Server 2005.
Необходимо получить информацию о том какой пользователь какие изменения вносил, какие записи добавлял и т.д.
Где эту инфу можно найти? И можно ли выудить её с помощью SQL запроса?
 
E

etc

Гость
#2
Сначала надо определиться какого пользователя разыскиваем.
Но чтото можно узнать из лога, при том что лог настроен.

В общем случае считайте что нет.
 
B

Balda

Гость
#3
А если попробовать прописать триггеры, которые будут вносить нужную информацию в специальную таблицу?

Пусть есть таблица Log, в которую будем заносить информацию об измененных и добавленных строках.
В ней есть столбцы:
ID-первичный ключ таблицы,
login-имя пользователя БД,
date-время изменения БД
action-изменение/добавление,
table-имя таблицы, в которой произошли изменения,
record_id-номер добавленной или измененной записи.

Теперь пишем триггер. Например для таблицы Table:
Код:
Create trigger dbo.TR_table ON dbo.Table
After INSERT, UPDATE
AS
BEGIN

INSERT INTO Log Values(...)

END
Вот по этой строке
Код:
INSERT INTO Log Values(...)
возникают вопросы:
1). Как выловить номер последней записи в таблице Log и передать его как параметр+1 в триггер?
2). Есть ли стандартная переменная, хранящая имя текущего пользователя БД?
3). Поле action таблицы Log должно содержать значение "изменен", если триггер сработал на Update и "добавлен"-на Insert. Где-то запоминается на какое событие сработал триггер?
4). Как передать в триггер номер измененной/добавленной записи?
 
E

etc

Гость
#4
1) 4) 3) Читайте инфу по тригерам, там все это есть. inserted, deleted ...
2) Опять таки про каких речь? есть такое CURRENT_USER, оно?