检查用户是否可以 运行 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;