目录标题
-
-
- 查看现有权限
- 授予权限
- 拒绝权限
- 撤销权限
- 角色管理
-
在SQL Server中管理账号权限主要通过以下几个关键步骤:
查看现有权限
可以使用系统视图来查看账号的权限,比如 sys.database_permissions
视图,示例查询如下:
SELECT
dp.class_desc,
OBJECT_NAME(major_id) AS object_name,
dp.permission_name,
grantee_principal_name = grp.name,
grantor_principal_name = gran.name
FROM
sys.database_permissions dp
JOIN
sys.database_principals grp ON dp.grantee_principal_id = grp.principal_id
JOIN
sys.database_principals gran ON dp.grantor_principal_id = gran.principal_id;
上述查询可以列出数据库中各权限的授予情况,包括权限作用的对象类别、对象名称、权限名称、被授权账号和授权者账号。
授予权限
使用 GRANT
语句来授予账号权限,常见的权限类型有 SELECT
、INSERT
、UPDATE
、DELETE
等。例如,要授予名为 testuser
的账号对名为 dbo.MyTable
的表的 SELECT
权限,可以执行以下语句:
GRANT SELECT ON dbo.MyTable TO testuser;
如果要授予对整个数据库的某种权限,比如授予 testuser
对数据库的 CREATE TABLE
权限:
GRANT CREATE TABLE TO testuser;
拒绝权限
使用 DENY
语句拒绝账号的某些权限,阻止其执行特定操作。例如,拒绝 testuser
对 dbo.MyTable
的 DELETE
权限:
DENY DELETE ON dbo.MyTable TO testuser;
撤销权限
使用 REVOKE
语句撤销之前授予的权限,例如撤销之前授予 testuser
对 dbo.MyTable
的 UPDATE
权限:
REVOKE UPDATE ON dbo.MyTable FROM testuser;
角色管理
SQL Server中有固定数据库角色和自定义角色,你可以将账号添加到角色中,通过管理角色权限来间接管理账号权限。
- 添加账号到固定角色:
EXEC sp_addrolemember 'db_datareader', 'testuser';
上述语句将 testuser
添加到 db_datareader
固定数据库角色,该角色成员拥有对数据库中所有用户表的 SELECT
权限。
- 创建自定义角色并分配权限:
CREATE ROLE my_custom_role;
GRANT SELECT, INSERT ON dbo.AnotherTable TO my_custom_role;
EXEC sp_addrolemember'my_custom_role', 'testuser';
这样,testuser
就拥有了对 dbo.AnotherTable
的 SELECT
和 INSERT
权限。
请根据实际情况,将示例中的账号名、表名等替换为你自己环境中的具体名称来管理账号权限。