Solution:TF10216: Team Foundation services 服务暂时不可用

装完TFS2008后以为一切正常,通过客户端访问后发觉一个奇怪的现象。
只有Adminitrator才能登陆,别的用户不管是加到本机管理员组也好,加到TFS管理员组也好,死活就是无法登陆。
在网上找呀找呀。。。
TFS加用户先得加到License Group里。这样才能正常使用.

注:默认情况下TFS2008是5用户版本。 

因为所有的用户必须加入到 Team Foundation Licensed Users 组内才能连接上 TFS; 所以只要手工修改数据库,就可以破解 5 用户限制了。我们以 TFSGuest4 帐户做测试 .
具体操作如下:
 
我们先以 Team Foundation Server 管理员的帐户连接 Team Foundation Server; 然后我们为 Team Foundation Licensed Users 组添加用户 ; 如果超过 5 个用户会提示如下显示 :


 

Solution:TF10216: Team Foundation services 服务暂时不可用_第1张图片
要破解达到最在用户数的限制(5),我们就手工修改数据库吧:
1.       先把TFSGuest4这个帐户的分配一下权限,例如分配给[Project]\Contributors如下:


 

Solution:TF10216: Team Foundation services 服务暂时不可用_第2张图片
2.       选择”属性”进入如下窗口:


 

Solution:TF10216: Team Foundation services 服务暂时不可用_第3张图片
3.       选择”Windows用户或组(W)”;点”添加”;再选择”TFSGuest4”帐户;操作后如下:


 

Solution:TF10216: Team Foundation services 服务暂时不可用_第4张图片
4.       点确定;
5.     然后打开SQL SERVER 2005; 使用 SQL Management Studio 连接到你的数据库服务器 ; 找到 ”TfsIntegration” 数据库下的 ”tbl_security_identity_cache”
 
Solution:TF10216: Team Foundation services 服务暂时不可用_第5张图片
 
6.     选择右键 打开表 ”; SQL 语句直接找到它的 SID; 直接用SQL脚本处理下
  SELECT sid FROM tbl_security_identity_cache
where  display_name =N 'TFSGuest4' and deleted=0
注意 : 中文的用户名在之前加 N . 即: where [display_name]=N' 张三 ';
     Deleted 字段 : 是否已经删除 ;0 表示 : 未删除 ;1 表示 : 已删除
执行后如下 :
 
Solution:TF10216: Team Foundation services 服务暂时不可用_第6张图片
7.     然后再用 SQL 语句查询出 Team Foundation Licensed Users 组的 SID;
SELECT sid FROM tbl_security_identity_cache WHERE (display_name = N'Team Foundation Licensed Users') AND (deleted = 0)


 

Solution:TF10216: Team Foundation services 服务暂时不可用_第7张图片
8.     然后打开 tbl_security_membership_cache ; 如下 :


 

Solution:TF10216: Team Foundation services 服务暂时不可用_第8张图片
9.     打开后 ; 在最后一行 container” 字段中加入 7中查出的SID; member 字段中加入 6出的SID;
10.  再在 tbl_gss_group_membership 表中也加入 ;” parent_group_sid 字段中加入 7中查出的SID,member_sid 字段中加入 6查出的SID;last_update 字段定个时间 ; 9 有点相同操作 :
: 6-11 步骤 ; 可以用一个 SQL 脚本添加用户到 Team Foundation Licensed Users 组处理 :
declare  @container  varchar( 100 ), @member  varchar( 100 ) SELECT  @container = [sid]       
   FROM  [TfsIntegration] . [dbo] . [tbl_security_identity_cache]
where  [display_name] =N 'Team Foundation Licensed Users' and deleted=0
SELECT  @member = [sid]       
   FROM  [TfsIntegration] . [dbo] . [tbl_security_identity_cache]
where  [display_name] =N 'TFSGuest4' and deleted=0


 

Insert  [TfsIntegration] . [dbo] . [tbl_security_membership_cache]
[container] , [member]
s ( @container , @member )
Insert [TfsIntegration].[dbo].[tbl_gss_group_membership]
( [parent_group_sid] , [member_sid] , [last_update] )
s ( @container , @member , getdate ())
将上面的代码用查询分析器执行一下就可以了 ;( 只需要执行一次 )


 

如果一不小心删除了所有 “Team Foundation Licensed Users” 组中的用户 ; 就无法登录 TFS , 也可以用上面脚本的方法 ; 改一下帐户名就 OK ;

你可能感兴趣的:(service)