SQL Server - 将SP的访问权限授予AD用户

时间:2015-03-02 22:30:09

标签: sql-server windows-authentication

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

以CompanyA \ Harry身份登录并使用SQL身份验证时,我甚至无法连接到SSMS中的SQL Server。

我在登录下添加了一个新用户CompanyA \ Excel_Commission。 服务器角色是公开的

如果我做"脚本用户作为创建到"我明白了:

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

我还将用户添加到SP所在的DB并授予执行权限。用户也是此DB中角色db_datareader和db_datawriter的成员:

如果我运行"脚本用户作为创建到",我得到

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。

似乎是"有效登录但服务器访问失败"

我缺少什么?

此致

标记

1 个答案:

答案 0 :(得分:1)

连接到SQL Server是一个两步舞蹈。

第一步是创建一个登录(可以是Windows用户/组),用户使用Windows密码等,或者创建用户名和密码(必须启用)的SQL Server登录。您通常会将默认数据库(不应该是主数据库)分配给新登录。

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