我只想给这个用户只可查询的权限,但是如果服务器角色勾选上sysadmin的话就拥有全部权限了,但是不勾上的话又提示登录失败错误18456有人遇到类似问题么?

解决方案 »

  1.   

    补充一点,在本地计算机的话是可以不勾选sysadmin也能登录的,但是远程访问我的本地计算机的时候就不能登陆了,提示错误18456,但是如果我我吧sysadmin勾上,则远程也能访问了,但是却具有全部权限了
      

  2.   

    检查一下 public 角色是否对 TSQL Default TCP 端点具有 connect 权限。select class_desc,
    (select name from sys.endpoints where p.major_id=endpoint_id) endpoint_name,
    SUSER_NAME(grantee_principal_id) grantee,
    permission_name,state_desc
    from sys.server_permissions p
    where class=105;
      

  3.   


    得到结果如下
    ENDPOINT TSQL Default TCP public ALTER         DENY
    ENDPOINT TSQL Default TCP public CONTROL         DENY
    ENDPOINT TSQL Default TCP public CONNECT         DENY
    ENDPOINT TSQL Default TCP public TAKE OWNERSHIP DENY
    ENDPOINT TSQL Default TCP public VIEW DEFINITION DENY
      

  4.   


    --这是我的
    class_desc endpoint_name grantee permission_name state_desc
    ENDPOINT TSQL Local Machine public CONNECT GRANT
    ENDPOINT TSQL Named Pipes public CONNECT GRANT
    ENDPOINT TSQL Default TCP public CONNECT GRANT
    ENDPOINT TSQL Default VIA public CONNECT GRANT
      

  5.   

    用windows账号还是可以登录的。查找问题的过程:
    第一步: 启动所有与SQL有关的服务,问题依旧;
    第二步: 查看windows防火墙,被默认启动了,不启动选择项被Disabled。两个提示“由于安全考虑,某些设置由组策略控制”“Windows防火墙正在使用您的域设置”,先用gpedit.msc打组策略编辑器,机算机配置--管理模板--网络--网络连接--Windows防火墙--标准配置文件,查看右边各选项属性,都是未配置状态,问题不在这里。
    另外一个提示中提到域设置,域设置不可能禁用SQL Server,并且我查看本地开放端口(netstart -an),25,1433,1434都是开发状态。晕,会不会是密码错误? 第三步:我用windows账号登录,连接成功后,, 选择"属性",
    右键实例,在"属性"窗口中, 转到"Security"(安全性)项, 查看"服务器身份验证"中设置确为"SQL Server和Windows身份验证模式", 
     然后执行下面的语句启用sa用户, 同时更改sa的密码
    EXEC sp_password 'sa',null,'sa'
    ALTER LOGIN sa ENABLE执行出错:
    消息 15116,级别 16,状态 1,第 1 行
    密码有效性验证失败。该密码太短,不符合 Windows 策略要求。哈哈,问题找到。本地设置可能被域设置覆盖。而域设置中指定了安全策略,密码必须有一定的复杂性。重新更改sa密码,
    EXEC sp_password 'sa','Uiop_098Mn','sa'
    ALTER LOGIN sa ENABLE
      

  6.   

    public 角色在 TCP 端点的 connect 权限被拒绝,当然不能远程访问。直接授权
    grant connect on endpoint::[TSQL Default TCP] to public;