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

Тема в разделе "SQL", создана пользователем Balda, 11 фев 2009.

  1. Balda

    Balda Гость

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

    etc Гость

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

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

    Balda Гость

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

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

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

    INSERT INTO Log Values(...)

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

    etc Гость

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

Поделиться этой страницей