在sql中添加一个用户,只能访问指定数据库中的指定的表,添加用户的步骤是怎样的?

解决方案 »

  1.   

    --创建角色
    EXEC sp_addrole @RoleName
    --授予数据库中所有用户表查询权限给某一个角色
    declare @UserTablename varchar(20)
    Declare Cur Cursor For 
         select Name from sysobjects where xtype='u' and status>=0
    declare @SQL Varchar(200)
    Open Cur 
    Fetch Cur Into @UserTablename
    While @@FETCH_STATUS=0
             BEGIN
                    Set @sql='GRANT SELECT ON '+@UserTablename+' TO '+@RoleName+''
      Exec(@sql)
                    Fetch Cur Into @UserTablename
             End
    Close Cur
    Deallocate cur
    --添加登录,设置密码,默认数据库
    EXEC sp_addlogin @LoginUserName,@LoginUserPwd,@DbName
    --为登录在数据库中添加安全账户
    EXEC sp_grantdbaccess @LoginUserName,@SafeAccount
    --添加安全帐户为角色的成员
    EXEC sp_addrolemember @RoleName,@SafeAccount
      

  2.   

    谢谢zlp321002
    我原来是这样操作的在企业管理器中
    在某个数据库(如"officedb"中新建角色(限制了某些数据表的访问),然后在服务器的安全性的登录中新建登录用户,服务器角色为空,指定访问数据库我只选定了"officedb",但是我在vb中用这个新建登录用户连接sql,连接后在officedb中对这个用户的限制有效(比如只能访问指定数据表),但是仍能正常访问其他数据库,这是怎么回事?