sql语句查看sqlserver用户权限
时间: 2023-07-01 15:09:21 浏览: 63
可以使用以下 SQL 查询语句来查看 SQL Server 数据库用户的权限:
```sql
USE [database_name]
GO
SELECT
[UserName] = [users].[name],
[RoleName] = [roles].[name]
FROM
[sys].[database_principals] AS [users]
JOIN
[sys].[database_role_members] AS [links] ON [links].[member_principal_id] = [users].[principal_id]
JOIN
[sys].[database_principals] AS [roles] ON [roles].[principal_id] = [links].[role_principal_id]
WHERE
[users].[type] = 'S' -- SQL Server user
ORDER BY
[UserName],
[RoleName];
```
将 `database_name` 替换为你要查询的数据库名称。这个查询语句将返回一个结果集,其中包含每个 SQL Server 用户的名称和他们所属的角色名称。
相关问题
sqlserver 权限常用语句
以下是 SQL Server 常用的权限相关语句:
1. 创建数据库用户并授权:
```
CREATE LOGIN [username] WITH PASSWORD = 'password';
USE [database_name];
CREATE USER [username] FOR LOGIN [username];
GRANT SELECT, INSERT, UPDATE, DELETE ON [table_name] TO [username];
```
2. 授予数据库角色权限:
```
USE [database_name];
EXEC sp_addrolemember 'db_datareader', 'username';
EXEC sp_addrolemember 'db_datawriter', 'username';
```
3. 授予服务器角色权限:
```
USE [master];
EXEC sp_addsrvrolemember 'username', 'sysadmin';
```
4. 检查当前用户的权限:
```
SELECT * FROM fn_my_permissions(NULL, 'DATABASE');
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
```
5. 检查指定用户的权限:
```
SELECT * FROM fn_my_permissions('username', 'DATABASE');
SELECT * FROM fn_my_permissions('username', 'SERVER');
```
sql 语句查询某用户权限
要查询某个用户在 SQL Server 中的权限,可以使用以下 T-SQL 语句:
```sql
-- 查询用户在服务器级别的权限
USE [master];
SELECT p.name AS [Permission], sp.state_desc AS [State]
FROM sys.server_permissions sp
INNER JOIN sys.server_principals p ON sp.grantee_principal_id = p.principal_id
WHERE p.name = '[user_name]';
-- 查询用户在数据库级别的权限
USE [database_name];
SELECT dp.name AS [Permission], dp.state_desc AS [State]
FROM sys.database_permissions dp
INNER JOIN sys.database_principals p ON dp.grantee_principal_id = p.principal_id
WHERE p.name = '[user_name]';
```
其中,`[user_name]` 是要查询权限的用户名,`[database_name]` 是要查询权限的数据库名。
上述语句将分别查询指定用户在服务器级别和数据库级别的权限信息,并返回权限名称和状态。如果查询结果为空,则表示该用户没有相应的权限。