SQL 服务器 - 向 AD 用户授予对 SP 的访问权限

SQL Server - Giving Access to an SP to an AD user

使用 SQLServer 2008 R2 并将 excel 宏 (vba) 从 SQL 身份验证转换为 AD 身份验证。我有一个名为 Company\Excel_Commission 的广告组,harry 是该组的成员。

当以 CompanyA\Harry 身份登录并使用 SQL 身份验证时,我什至无法连接到 SSMS 中的 SQL 服务器。

我在“登录”下添加了一个新用户 CompanyA\Excel_Commission。 服务器角色是 public

如果我这样做 "script user as create to" 我得到:

CREATE LOGIN [CompanyA\Excel_Commission] FROM WINDOWS WITH DEFAULT_DATABASE=[Commission], DEFAULT_LANGUAGE=[us_english]

我也把用户添加到SP所在的DB,并授予了执行权限。用户也是此数据库中角色 db_datareader 和 db_datawriter 的成员:

同样,如果我 运行 "script user as create to",我得到

CREATE USER [Excel_Commission] FOR LOGIN [CompanyA\Excel_Commission]

更多信息。

运行这个

SELECT endpnt.name,
       suser_name(perms.grantee_principal_id) as grantee_principal,
       perms.permission_name, perms.state_desc
    FROM
       sys.server_permissions perms,
       sys.endpoints endpnt
    WHERE
       perms.class = 105
       AND perms.major_id = endpnt.endpoint_id

知道了

name    grantee_principal   permission_name state_desc
TSQL Local Machine  public  CONNECT GRANT
TSQL Named Pipes    public  CONNECT GRANT
TSQL Default TCP    public  CONNECT GRANT
TSQL Default VIA    public  CONNECT GRANT

错误是错误:18456,严重性:14,状态:11。

好像是"Valid login but server access failure"

我错过了什么?

此致

标记

连接到 SQL 服务器是一个两步舞。

第一步是创建一个登录名(可以是 Windows user/group),其中用户 Windows 密码等或 SQL 服务器登录名您创建一个用户名和密码(并且必须启用)。您通常会为新登录分配一个默认数据库(不应是主数据库)。

第 2 步是您使用在第 1 步中创建的登录名在一个或多个数据库中创建用户并授予用户执行操作的权限。有时,通过将用户放入 SQL 服务器组,您可以向该用户授予自动权限。尝试授予尽可能窄的权限。