У нас есть база данных в SQL Server Express Edition, которая используется сторонним приложением для хранения данных. Когда пользователи входят в систему через эту стороннюю программу, используется их аутентификация Windows, и (я предполагаю) их аутентификация Windows также передается в базу данных sql. Мы предоставили пользователям роли public и dbwriter, чтобы они могли писать в базу данных. Если мы удалим их из роли dbwriter, стороннее приложение не сможет выполнять нужные ему запросы.
Проблема заключается в том, что мы предоставили нашим пользователям роли писателя данных, которые мы дали им возможность входить в систему через инструмент управления сервером и вручную изменять данные. Мы не можем допустить этого из-за наших правил аудита.
В идеале я хотел бы сделать так, чтобы, когда пользователь находится в определенной роли, он не мог войти в систему с помощью утилиты управления сервером, чтобы внести изменения, однако, когда они входят в систему через программное обеспечение третьей стороны и вносят изменения, требуемые программным обеспечением третьей стороны. Единственное решение, с которым я пришел до сих пор, - это изменить тип входа в систему на имя входа в базу данных, назначенное во время создания базы данных, когда кто-то пытается войти в систему через служебную программу сервера и использовать проверку подлинности Windows со сторонним приложением. Это не лучшее решение, и поэтому я здесь. Мы будем рады любым идеям!
С уважением, Ананд
С помощью Приложения Роли лучший способ сделать это. Предполагая, что вы используете C # здесь некоторый образец кода.
Хотя может случиться так, что приложение передает учетные данные Windows конечного пользователя, это может быть не так. Запустите профилировщик SQL и посмотрите, какое имя пользователя выполняет изменения данных. Во многих приложениях сервер приложений выполняет манипуляции с данными от имени пользователя, поэтому вы можете увидеть, что эта учетная запись выполняет действие. Если нет, то можно использовать роль приложения. Проверять, выписываться http://msdn.microsoft.com/en-us/library/ms190998.aspx.