本人在 SQL Server 2005中用如下语句创建了一个SQL Server 认证登录用户:create login nst
with password='123'
然后利用这个新建的登录名nst登录SQL系统没问题,而且可以访问系统的数据库,但就是怎么也访问不到用户自己建立的数据库,后来我把语句修改了下,重新加上默认访问的数据库:alter login nst
with default_database=new
(用户已经建立的数据库)这样重新登录还是访问不了用户自己建立的数据库,
我就纳闷了:在默认情况下,每个数据库创建的时候就包含一个guest用户的,这样可以在不为SQL Server 认证登录用户创建或关联一个数据库用户的情况下就可以访问有guest用户的数据库,我也查看了我自己建立的数据库里都有guest这个用户名存在,为什么我新建的登录名却不能默认用guest用户去访问这些自己建立的数据库呢?请各位指点下,谢谢了

解决方案 »

  1.   


    create login qq with password='qq',check_policy=off
    --无法访问AdventureWorks数据库alter login qq with default_database=AdventureWorks
    --这时其实是无法登录的,因为qq在AdventureWorks没有对应用户use AdventureWorks
    create user qq for login qq
    ---虽然登录了,却没有权限,因此需要进行授权use AdventureWorks
    exec sp_addrolemember 'db_owner','qq'
    --现在就可以正常使用了。
      

  2.   

    Sorry 默认如果你建立一个登陆账户(非管理员),默认访问MASTER数据库,对于其他数据库时不能进行读写工作的,也就是说你访问会有问题,所以你需要给权限给这个用户USE [master]
    GO--建立登陆用户
    CREATE LOGIN [saa] WITH PASSWORD=N'saa', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
    GO  --- 对用户给予某个数据库读写权限
    USE [size]
    GO
    CREATE USER [saa] FOR LOGIN [saa]  在数据库中创建这个用户
    GO
    USE [size]
    GO
    EXEC sp_addrolemember N'db_datareader', N'saa'  -- 赋予只读权限
    GO
    USE [size]
    GO
    EXEC sp_addrolemember N'db_datawriter', N'saa' -- 赋予写权限
    GO
      

  3.   


    那个默认建库的时候就有的guest用户还有什么用?不是可以默认利用guest用户访问数据库吗?
      

  4.   

    怎么新建一个用户并赋予角色后是可以使用的并关联给登录用户,这个我是知道,就是不知道“默认建库的时候就有的guest用户的,不是可以不用建用户名而直接默认利用guest用户访问数据库吗??”
      

  5.   

    你仅仅是可以访问但对里面的数据 是不能读取和写入的,GUEST 其实对用户没有任何意义
      

  6.   

    请教下,如何启动guest用户?
      

  7.   


    这个我知道,我只想知道为什么不能用gues访问而已啦,原来是没有开启,现在不知道怎么开启,请指教,呵呵