sql server查询用户权限
时间: 2024-11-13 07:15:35 浏览: 9
sql server 2005用户权限设置深入分析
在SQL Server中,查询用户权限通常涉及检查用户的登录名、角色以及他们对数据库对象(如表、存储过程、视图等)的访问控制。你可以通过以下几个步骤或系统存储过程来查看用户权限:
1. **`sp_help_revlogin`**:这个系统存储过程显示了登录名及其当前拥有或分配的所有权限。
```sql
EXEC sp_help_revlogin 'username';
```
将`username`替换为你关心的用户名称。
2. **`sys.database_principals`** 和 `sys.database_permissions`:这两个系统视图可以联合查询,找到特定用户在特定数据库中的权限。例如:
- 查看所有用户在某数据库的权限:
```sql
SELECT dp.name AS PrincipalName, dp.type_desc, dp.is_fixed_role,
dp.login_name AS LoginName, dp.default_schema_name AS DefaultSchemaName,
dp.server_principal_id, dp.state_desc
FROM sys.database_principals dp
WHERE dp.name = 'your_username'
```
3. **`db_owner`, `db_securityadmin`, `db_datareader`, `db_datawriter` 等固定角色**:这些角色决定了用户的基本操作级别。比如,`db_datareader`允许用户读取数据,而`db_datawriter`则允许更改数据。
4. **`SELECT permissions`** 直接在对象上检查:如果你想知道某个用户对特定表的操作(如SELECT、INSERT等),可以在对象上运行类似下面的查询:
```sql
SELECT permission_name
FROM sys.sql_permissions
WHERE grantee_principal_id = ObjectId('database::schema::table') AND grantor_principal_id = ObjectId('your_login')
```
记得替换`your_username`和具体的数据库、对象名。
阅读全文