解决方案 »

  1.   

    1、对于sqlserver,能否查询到当前登录用户所能看到的所有数据库?
    我是用jdbc来实现与数据库的连接,假如现在有个登录用户登录了XXX库,
    我想知道当前的这个登录用户有几个数据库的权限,就是还能访问哪些数据库,应该怎么处理?
    能,不过这个要看sqlserver的版本,并且有时候不能尽如人意。
    2、对于sql server,什么用户都可以登录master库吗?如果不行,那没有登录该库权限的用户要如何登录master库?
    假如当前登录没有登录master的权限,但是系统好像会给他一个guest的一个默认用户,此时他能在master库中
    查到什么信息呢?可以查到并访问所有的数据库吗?
    所有用户默认都能访问master,只是权限有多大而已,另外tempdb也是一样的。这两个库是默认对所有用户开放。另外访问别的库的最低要求是这个帐号对这个库最少有public的权限,也就是允许联接,至于能不能读表、存储过程等,需要额外配置权限。
    3、假设有个用户拥有登录master的权限,那他可以在看到所有的数据库吗?》并且可以访问这些数据库吗?
    默认情况下,不能,只能访问master和tempdb,其他库需要额外配置,用户登录仅保证你能连接sqlserver并访问两个库,但是其他库,需要单独配置对这个库的权限
      

  2.   

    形象一点地说:
    登录,就像你能进入一个旅馆(SQL Server),可以在走廊、大厅走来走去。但是你不能进入房间(某个数据库),只有当你有一个用户,这个用户映射到对应的登录名的时候,才能进入特定的房间,访问、操作特定的对象。所以如果你需要访问用户数据库或者msdb(一般来说你不会访问model库),需要对这个登录帐号,映射对应的用户到这些你需要访问的库中
      

  3.   


    那这样的话,对我来说登录master就没有多大意义了,因为你只能看到,却不一定有访问的权限。
    那对我来说最好的就是,登录后能够看到当前登录用户所拥有权限的所有数据库,
    这样就可以去访问。简单说一下我的需求吧,我是实现一个web式的数据库管理工具
    登录数据库后,要显示出你当前用户能看到的所有数据库,然后选择点击某个库,
    打印出该库中的所有用户表。这个问题您说可以看到,但是要看版本,您
    能详细跟我说一下吗?或者给我个解决的建议码?如果有连接什么的就更好了,谢谢
      

  4.   

    http://blog.csdn.net/ynigeng/article/details/5076382
      

  5.   

    建议LZ系统的学习MSSQL的安全架构,
    如登录,用户,服务器角色,数据库角色, 相关的系统表sys.sysusers,sid的概念等等.
    所提这些问题就迎刃而解了..