|
|
A permission is an action that a user is allowed to
perform, or is prevented from performing, on a database or on one of its
objects.
|
Revoking a permission consists of either denying a
permission that was previously granted or granting a permission that was
previously denied. To visually do this, open the Properties dialog box of
the database (or the object) on which the permission was managed.
To programmatically revoke a
permission, the formula to follow is:
REVOKE [ GRANT OPTION FOR ] <permission> [ ,...n ]
{ TO | FROM } <database_principal> [ ,...n ]
[ CASCADE ]
[ AS <database_principal> ]
<permission> ::= permission | ALL [ PRIVILEGES ]
<database_principal> ::= Database_user
| Database_role
| Application_role
| Database_user_mapped_to_Windows_User
| Database_user_mapped_to_Windows_Group
| Database_user_mapped_to_certificate
| Database_user_mapped_to_asymmetric_key
| Database_user_with_no_login
Start with the REVOKE keyword followed
by the permission(s). This is followed by either TO or
FROM and the login name of the account whose permission
must be managed. Here is an example:
/*
DENY CREATE ANY DATABASE
TO rkouma;
GO
*/
REVOKE CREATE ANY DATABASE
TO rkouma;
GO
Revoking a permission doesn't give that same permission.
Imagine a user with a newly created account didn't have the permission to
create new databases. If you deny that person the ability to create new
databases, that denial becomes effective. If you revoke the permission, you
are asking the server to restore the status of that person with regards to
that particular right. That doesn't give that user the permission. The above
code doesn't give the user the right to create new databases. If you want
the user to have a right, you must explicitly grant the permission. Consider
the following code:
REVOKE CREATE ANY DATABASE
TO rkouma;
GO
GRANT CREATE ANY DATABASE
TO rkouma;
GO
This restores the user's denial for creating new
databases, then grants the permission to that user. This time, the user has
the right to create new databases.