Eric's Blog

有需求才有进步

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

注:默认情况下TFS2008是5用户版本。
(转)解除Team Foundation Server 5个用户的限制
 

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


 

要破解达到最在用户数的限制(5),我们就手工修改数据库吧:
1.       先把TFSGuest4这个帐户的分配一下权限,例如分配给[Project]\Contributors如下:


 

2.       选择”属性”进入如下窗口:


 

3.       选择”Windows用户或组(W)”;点”添加”;再选择”TFSGuest4”帐户;操作后如下:


 

4.       点确定;
5.     然后打开SQL SERVER 2005;使用SQL Management Studio连接到你的数据库服务器;找到”TfsIntegration”数据库下的”tbl_security_identity_cache”
 
 
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表示:已删除
执行后如下:
 
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)


 

8.     然后打开 tbl_security_membership_cache;如下:


 

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;
posted on 2008-04-21 16:08  Eric.Chai  阅读(1485)  评论(0编辑  收藏  举报