检查用户是否可以 运行 RECONFIGURE 语句
Check if a user can run the RECONFIGURE statement
我在 AWS 上使用 SQL Server Express,当我尝试通过 T-SQL 查询更改 MAXDOP
时,我收到一条错误消息
Database Error: [Microsoft][SQL Server Native Client 11.0][SQL
Server]User does not have permission to perform this action. (37000:
15,247) ... You do not have permission to run the RECONFIGURE
statement (37000: 5,812).
我想这也可能发生在 SQL 不在 AWS 上的服务器实例上,这似乎是用户权限问题。
有没有办法以编程方式检查用户是否可以(或不能)运行 RECONFIGURE
语句,最好是 运行 在 SQL 服务器 >= 2014?
上进行 T-SQL 查询
RECONFIGURE
statement requires the server-level ALTER SETTINGS
permission. The fn_my_permissions
TVF可以编程方式使用来检查当前用户是否有权限:
IF NOT EXISTS(
SELECT 1
FROM fn_my_permissions(NULL, 'server')
WHERE permission_name = N'ALTER SETTINGS'
)
BEGIN
PRINT N'Current user does not have ALTER SETTINGS permission needed for RECONFIGURE statement';
END;
或者根据@lptr 的评论,可以使用 HAS_PERMS_BY_NAME scalar function:
IF HAS_PERMS_BY_NAME(NULL, NULL, 'ALTER SETTINGS') = 0
BEGIN
PRINT N'Current user does not have ALTER SETTINGS permission needed for RECONFIGURE statement';
END;
我在 AWS 上使用 SQL Server Express,当我尝试通过 T-SQL 查询更改 MAXDOP
时,我收到一条错误消息
Database Error: [Microsoft][SQL Server Native Client 11.0][SQL Server]User does not have permission to perform this action. (37000: 15,247) ... You do not have permission to run the RECONFIGURE statement (37000: 5,812).
我想这也可能发生在 SQL 不在 AWS 上的服务器实例上,这似乎是用户权限问题。
有没有办法以编程方式检查用户是否可以(或不能)运行 RECONFIGURE
语句,最好是 运行 在 SQL 服务器 >= 2014?
RECONFIGURE
statement requires the server-level ALTER SETTINGS
permission. The fn_my_permissions
TVF可以编程方式使用来检查当前用户是否有权限:
IF NOT EXISTS(
SELECT 1
FROM fn_my_permissions(NULL, 'server')
WHERE permission_name = N'ALTER SETTINGS'
)
BEGIN
PRINT N'Current user does not have ALTER SETTINGS permission needed for RECONFIGURE statement';
END;
或者根据@lptr 的评论,可以使用 HAS_PERMS_BY_NAME scalar function:
IF HAS_PERMS_BY_NAME(NULL, NULL, 'ALTER SETTINGS') = 0
BEGIN
PRINT N'Current user does not have ALTER SETTINGS permission needed for RECONFIGURE statement';
END;