如果你在服务器角色中没有看到public,那么很可能是因为你没有安装sql server的最新补丁包(sql server 2005 sp2)的问题。

解决方案 »

  1.   

    来源:http://www.cnblogs.com/chenxizhang/archive/2008/07/29/1255459.html
      

  2.   

    执行select @@version就可以看到当前的版本,也会显示SP到哪个版本的
      

  3.   

    Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)   Oct 14 2005 00:33:37   Copyright (c) 1988-2005 Microsoft Corporation  Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)   --这是我的数据库版本问题是:我在远程用SMSS登录的时候是可以看到public 但在服务器上用SSMS登录的时候就看不到?
      

  4.   

    按照你的描述,应该是你的SSMS和服务器的SSMS组件之间的差异。SSMS只是一个客户端,用图形化界面来操作而已。服务器如果可以的话,试试修复一下SSMS,不是重装,是修复,而且是SSMS而已
      

  5.   


    你运行一下这个看看,有没有:
    select *
    from  sys.server_principals p
    where name = 'public'
      

  6.   

    --楼主高人,真是这么回事,用脚本查就要以查到public 这个角色,但在可视化视图上就不行。
    Microsoft SQL Server Management Studio 9.00.1399.00  --这是服务器上ssms版本
    Microsoft SQL Server Management Studio 10.0.1600.22 ((SQL_PreRelease).080709-1414 ) --这是我机器上的ssms版本
      

  7.   

    你能远程看的话证明肯定存在,只是SSMS没显示
      

  8.   

    经过对两个ssms在查看服务器角色所产生的脚本对比
    SELECT
    'Server[@Name=' + quotename(CAST(serverproperty(N'Servername') AS sysname),'''') + ']' + '/Role[@Name=' + quotename(r.name,'''') + ']' AS [Urn],
    r.name AS [Name]
    FROM
    sys.server_principals r
    WHERE
    (
    r.type ='R'
    )
    ORDER BY
    [Name] ASC
    SELECT
    r.name AS [Name],
    'Server[@Name=' + quotename(CAST(serverproperty(N'Servername') AS sysname),'''') + ']' + '/Role[@Name=' + quotename(r.name,'''') + ']' AS [Urn]
    FROM
    sys.server_principals r
    WHERE
    (
    r.type ='R' and r.name != N'public'
    )
    ORDER BY
    [Name] ASC发现在一个版本上限制了显示public 角色。所以在可视化视图上看不到,真不知道微软为什么这么做,用意是什么呢????????
      

  9.   

    难道9.0的哪个SSMS版本中当时还没有决定把这个角色开放出来,从10.0才开放?还是说有人做过什么手脚?不过这个可能性极低
      

  10.   

    不能有人动手脚应该是版本的事,我查了好几个9.0的ssms都有这个问题,好的,解决就好,结贴