> Applications roles work the same way normal users works....
Application roles might appear similar to normal users in some areas but
these are actually very different.
A login is first authenticated at the SQL Server level. If valid, SQL
Server checks to see if the login has access to the requested database by
looking for a database user mapped to that login. If present, access to the
database is allowed to the database under the security context of the
database user. An database application role be activated only after SQL
Server allows database access.
As you indicated, a login/user mismatch can occur when a database is
attached or restored to another server. This problem can be addressed by
either recreating the problem database users or executing
sp_change_users_login to correct the problem. It is naive to assume that
application roles will circumvent the mismatched user problem because not
only is database access not guaranteed, the database could be accessed under
the wrong security context before the app role is activated.
--
Hope this helps.
Dan Guzman
SQL Server MVP
"luxspes" <me@privacy.net> wrote in message
news:uW**************@TK2MSFTNGP12.phx.gbl...
Applications roles work the same way normal users works... IMHO you
shouldnt be trying to create them from you application... you should
define them when configuring your database for deployment (or development)
... the main (and only?) difference between app roles and users... is that
app roles are "saved" inside your database (while users are saved in the
database server) so if you backup and restore you database in multiple
sqlserver you app roles will continue to work... while you user might have
to be reatached (because their internal id keys could be different in
different dabase servers)...
I hope that helps ;) .
Jonathan Allen wrote: Allow me to restate my question.
What the hell is the right way to use application roles from VB/C#? When
I try the below code, I get an exception the second time I call
GetDBConnection.