Мы разрабатываем сервисный уровень для новой системы, которая будет обрабатывать все взаимодействия с базой данных MSSQL (2005).Мы немного озадачены тем, как собрать всю информацию «кто это сделал», которая требуется нашим пользователям, в некоторых из наших устаревших таблиц аудита.Хотя мы можем передать имя пользователя, которое модифицировало данные, и записать вызов, у нас есть несколько устаревших таблиц, которые мы будем использовать, которые имеют триггеры для захвата system_user при вставке, обновлении и удалении записи.В некоторых местах мы также применяем некоторую безопасность на уровне строк, которую мы также хотели бы использовать, не меняя код, если это возможно.Я читал, что некоторые используют contextinfo для хранения пользователя, но это кажется немного менее безопасным в этой ситуации.
Опция, которая мне нравится больше всего, - это использовать execute as user для каждого вызова хранимой процедуры
execute sp_myproc @foo as user = 'username'
Проблема, с которой мы сталкиваемся, заключается в том, что в рамках сущности невозможно добавить команду execute как команды к вызовам хранимых процедур.
Спасибо за любыевход.