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

Откуда:
Сообщений: 3
Здравствуйте.

Столкнулся с задачей переписывания старой системы почти с нуля, добрался до ведения логов изменений. Стандартная задача, отслеживается 2-3 главных таблицы. Нашел хорошие примеры ведения логов через триггеры, но столкнулся с проблемой. В текущей базе существует таблица пользователей (ид, имя, пароль, настройки, права доступа). Клиентское приложение логинится по этой таблице и оперирует ИД пользователя. Т.о. в лог изменений помимо прочего обязательно надо вставить это ИД. Но при этом в триггеры нельзя передавать параметры, и при логгировании через триггеры неизвестно, кто производил изменения. Варианты следующие:

1. Использовать встроенную систему ролей СУБД, там вроде можно даже в триггере определить текщего пользователя. Это подходит, только если есть возможность полностью управлять ролями из клиентского приложения и создать таблицу 1-к-1 к системной таблице пользователей, чтобы хранить пользовательские настройки для приложения и прочую информацию. Если так делать, смогу ли я управлять созданием, изменением, удалением пользователей и ролей, назначением прав только из приложения?

2. Использовать хранимую процедуру для каждого логируемого действия, там составлять или передавать запрос и сразу же вести лог. Неприятность в том, что я не понимаю, как там распознать, какие поля изменились, как получить старые и новые значения. Выходит чуть ли не парсинг запроса. В триггерах же есть update(field) итп.

В программировании БД новичок. Подскажите, что посмотреть-почитать по поводу.
Заранее спасибо.

Клиент пишется на C#, .NET 3.5 (LINQ2SQL)
СУБД SQL Server 2008 Express, в перспективе - неExpress.
8 сен 09, 06:15    [7629483]     Ответить | Цитировать Сообщить модератору
 Re: Роли, пользователи и ведение логов  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
1. Открыть БОЛ и прочитать о безопасности SQL.
1.1 Можно "замапить" ИД логинов на ваших внутренних пользователей.
1.2 Можно создавать/ удалять/логины пользователей БД если у вас есть соответствующие права.

2. Есть хорошая статья
8 сен 09, 06:24    [7629487]     Ответить | Цитировать Сообщить модератору
 Re: Роли, пользователи и ведение логов  [new]
niello
Member

Откуда:
Сообщений: 3
1.1 То есть можно установить однозначное соответствие между пользователями СУБД и пользователями системы. Правильно? И тогда можно будет точно восстановить внутренний ИД по записи о пользователе из триггерного лога.

1.2 Про соответствующие API тоже в БОЛ? Или управление ролями и пользователями СУБД вообще через SQL-запросы реализуется?

За ссылки спасибо, уже читаю.
8 сен 09, 06:32    [7629492]     Ответить | Цитировать Сообщить модератору
 Re: Роли, пользователи и ведение логов  [new]
niello
Member

Откуда:
Сообщений: 3
Хм. А статью я как раз эту и нашел. И там как раз таки моя проблема с триггерами и всплыла =)
8 сен 09, 06:34    [7629493]     Ответить | Цитировать Сообщить модератору
 Re: Роли, пользователи и ведение логов  [new]
aleks2
Guest
niello,

Если идентификатор пользователя определяется (передается) приложением - можно не париться, ибо, один хрен, это не несет НИКАКОЙ полезной информации для разбора полетов.

Но ежели вам очень хочется заняться сексуальными извращениями и доступ к исх. коду приложения есть - почитайте про SET CONTEXT_INFO.
8 сен 09, 06:38    [7629494]     Ответить | Цитировать Сообщить модератору
 Re: Роли, пользователи и ведение логов  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
Во первых создать логины на SQL server , дать права на доступ к БД. замапить логины на ваши внутренние ид пользователей. Каждый юзверь подключается к серверу со своим личным логином / паролем.

API вы имеете ввиду SMO ?
можно всё реализовать на запросах использую соответствующие хп.

Откройтете для себя BookOnLine там всё есть, ну хоть почитайте, а ?
8 сен 09, 06:59    [7629504]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить