你首先要给这个账号在服务器级别有public的角色,不然都登录不了服务器,然后把这个账号的默认数据库指向你的数据库,数据库角色什么都不要给,再grant exec on 试图名 to 这个用户名

解决方案 »

  1.   

    怎么给这帐号有pulic角色,你说的角色是指数据库的吧?sql语句怎么写?
      

  2.   

    其实新建了账号之后,就具有了public角色,先要有服务器角色,数据库角色才有意义,这里你可以先不管,只需要把账号的默认数据库指定就可以了,修改默认数据库:
    USE [master]
    GO
    ALTER LOGIN [test] WITH DEFAULT_DATABASE=[AdventureWorks], DEFAULT_LANGUAGE=[简体中文], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
    GO
      

  3.   

    这是sql2000吗?
    --------------
    服务器: 消息 170,级别 15,状态 1,行 1
    第 1 行: 'LOGIN' 附近有语法错误。
      

  4.   

    今天早上我换了另一种方法来处理,添加角色,授权给角色,再把用户加到角色中。不知道这个有什么缺点,只是知道这个用户只有查询目标数据库视图的权限,但是可以查询master一些表的权限use DBtest
    --当前数据库创建角色 
    exec sp_addrole 'rTest'
    --分配视图权限 GRANT SELECT  ON veiw TO [角色]  
    GRANT SELECT ON  V_Test TO rTestgo
    --添加只允许访问指定视图的用户: exec sp_addlogin '登录名','密码','默认数据库名' 
    exec sp_addlogin 'test','test','DBtest' 
    go
    --添加只允许访问指定视图的用户到rCRM角色中: exec sp_adduser '登录名','用户名','角色' 
    exec sp_adduser 'test','test','rTest' -----------------
      

  5.   

    已经测试,目前的情况就是
    这个登录用户只有查询目标数据库视图的权限,但是可以查询master一些表的权限
      

  6.   

    我试了一下,即使啥都不做,仅仅让账号能连到一个库,在这个库上也什么权限都没有,依然能访问master的一些表,可能不给访问的话就连不到sqlserver吧
      

  7.   

    还有谁能再提点意见,访问这些master表有什么坏处吗?
      

  8.   

    use 数据库
    go 
    --建立登录用户:用户名,密码,数据库
    exec sp_addlogin 'bcuser','bcuser','数据库'
    --创建角色golden
    exec sp_addrole 'golden'
    --授予角色golden 对数据库的select 权限
    grant select to golden
    --为bcuser 添加安全帐户
    exec sp_grantdbaccess 'bcuser','u_bcuser'
    --添加 u_sm角色golden 的成员
    exec sp_addrolemember 'golden','u_bcuser'
    go