2008-10-19 5 views
8

Я планирую использовать роли приложения MS SQL Server 2005 в своем приложении. Я запустил эту роль, выполнив sp_setapprole и закончив, выполнив sp_unsetapprole SP. Приложение реализовано в ASP.NET.Роль приложения SQL Server, производительность

Я читал, что «объединение пулов не работает» с пулом приложений, и нет способа реагировать на соединение «событие разъединения» (выполнить sp_unsetapprole непосредственно перед отключением).

Я планирую позвонить sp_setapprole в начале всех моих SP и позвонить по номеру sp_unsetapprole в конце всех моих SP.

Используете ли вы роли приложений SQL? Каковы ваши XP? Как насчет производительности?

ответ

-1

Я раньше не занимался ролями приложений, но из того, что я знаю о перфомансе, заключается в том, что после установки роли приложения нет способа вернуться к предыдущей. контекст безопасности. Таким образом, соединение не может быть повторно использовано при объединении. Это само по себе является огромным перфомансом. это заставляет вас дважды подумать об использовании ролей приложений.

Однако документы говорят, что начиная с SQL Server 2005 существует способ запомнить исходный контекст безопасности в виде cookie, возвращенного из sp_setapprole, и после этого использовать sp_unsetapprole, чтобы вернуться к нему. Таким образом, объединение должно работать снова. Если бы я был вами, я бы сравнил перф. с несколькими простыми утверждениями/sprocs.

Любые причины, по которым вы не используете стандартный API членства ASP.NET на уровне приложения вместо ролей приложений?

+0

Я использую API членства ASP.NET. Роль приложения SQL будет дополнительным уровнем безопасности. – artur02 2008-10-19 19:45:09

+0

Мне пришлось проголосовать за этот ответ, потому что в вопросе явно просят тех, кто имеет опыт использования ролей приложений. Также первый абзац излишне смущает читателя. Проблема пулов приложений была устранена с SQL Server 2005. См. Http://blogs.solidq.com/dsarka/Post.aspx?ID=54&title=application+roles+and+connection+pooling – zumalifeguard 2014-07-09 18:02:23

0

Я закатил свой «одобрение» в прошлом, это не слишком сложно. Создайте роль базы данных для каждого типа пользователей (менеджер, casher, clerk, что угодно). Создайте пользователя базы данных с именем группы (manager_user, casher_user, clerk_user и т. Д.). Создавайте учетные записи для реальных пользователей и помещайте их в роли базы данных. Подтвердите своих пользователей asp.net, запустив их в базу данных (откройте &, закройте соединение), справочную таблицу или лучше всего, если вы используете проверку подлинности Windows и просто получите свое имя пользователя от IIS. Проверьте их членство в роли базы данных, но войдите в базу данных с помощью role_user. Вы можете защитить объекты базы данных через role_user, пользователи не заходят в систему и не имеют доступа к каким-либо объектам sql, и вы получаете пул соединений.