SQL Server: изменение свойства «Имя приложения» для целей аудита

StackOverflow https://stackoverflow.com/questions/323494

Вопрос

Поскольку мы не реализуем пользователей наших приложений как пользователей на сервере SQL, при подключении сервера приложений к базе данных каждое приложение всегда использует одинаковые учетные данные для подключения к каждой базе данных.

Это представляет проблему аудита. Используя триггеры, мы хотим хранить каждое обновление, вставлять и удалять и приписывать каждое конкретному пользователю. Одним из возможных решений является добавление «обновлено пользователем». столбец каждой таблицы и обновлять это каждый раз. Это означает новый столбец в каждой таблице и новый параметр в каждой хранимой процедуре. Это также означает, что вы можете делать только мягкие удаления.

Вместо этого я предлагаю использовать свойство «Имя приложения» строки подключения и прочитать его с помощью свойства App_Name () внутри триггера. Я проверил это с помощью простого приложения, и оно, кажется, работает (формат может быть таким: App = MyApp | User = 100).

Вопрос для вас, ребята, это плохая идея, и у вас есть идея получше?

Это было полезно?

Решение

Я использую SET CONTEXT_INFO для этого. Это именно то, что вам нужно.

Другие советы

Это, конечно, кажется возможным решением, хотя вам нужно будет вводить имя пользователя в строку подключения каждый раз, когда загружается ваше приложение. Обратите внимание, что это решение, вероятно, не будет работать с веб-приложением, поскольку строка подключения каждый раз будет отличаться, что может привести к огромным проблемам с пулами подключений.

Другой вариант - получить имя хоста / IP-адрес (SELECT host_name ()) и сохранить его вместо этого.

Вам не обязательно нужен новый параметр в каждой хранимой процедуре, так как вы можете изменить каждую хранимую процедуру (или триггер) для автоматической вставки App_Name / Hostname.

Потенциальным недостатком является то, что любые изменения, выполненные через Management Studio, не будут иметь пользовательского App_Name, и у вас останется " Microsoft Management Studio " как пользователь.

Мы используем свойство «Имя приложения» для управления триггерами аудита и не видим никаких проблем с его использованием, а также не замечаем никаких проблем со скоростью (хотя в нашем случае мы специально не проводим аудит для определенных приложений, поэтому его сложно измерить, сколько времени не делать что-то занимает :))

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top