Поскольку мы не реализуем пользователей наших приложений как пользователей SQL-сервера, когда сервер приложений подключается к базе данных, каждое приложение всегда использует одни и те же учетные данные для подключения к каждой базе данных.
Это создает проблему аудита. Используя триггеры, мы хотим хранить каждое обновление, вставлять и удалять и приписывать каждое конкретному пользователю. Одним из возможных решений является добавление столбца «обновлено пользователем» в каждую таблицу и обновлять его каждый раз. Это означает новый столбец в каждой таблице и новый параметр в каждой хранимой процедуре. Это также означает, что вы можете выполнять только мягкое удаление.
Вместо этого я предлагаю использовать свойство Application Name строки подключения и читать его с помощью свойства App_Name() внутри триггера. Я протестировал это с помощью простого приложения, и оно, похоже, работает (формат может быть таким: App=MyApp|User=100).
Вопрос к вам, ребята, это плохая идея, и есть ли у вас идея получше?
CONTEXT_INFO
? Мне нужно изменить триггеры, используемые ApexSQL Audit 2008, и сохранить пользователя, переданного через «Имя приложения». - person AMissico   schedule 27.07.2013