因为所有的用户必须加入到 Team Foundation Licensed Users 组内才能连接上 TFS; 所以只要手工修改数据库,就可以破解 5 用户限制了。我们以 TFSGuest4 帐户做测试 . 具体操作如下: 我们先以 Team Foundation Server 管理员的帐户连接 Team Foundation Server; 然后我们为 Team Foundation Licensed Users 组添加用户 ; 如果超过 5 个用户会提示如下显示 :
![](https://p-blog.csdn.net/images/p_blog_csdn_net/xiaotao2004/333ca56684f04a92b895fa9a28d7fc4e.jpg)
要破解达到最在用户数的限制(5),我们就手工修改数据库吧:
1. 先把TFSGuest4这个帐户的分配一下权限,例如分配给[Project]\Contributors如下:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/xiaotao2004/e6aeb913f11844a9a91ee2671fd56b7b.jpg)
2. 选择”属性”进入如下窗口:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/xiaotao2004/c03499010a9142028f6761d30d9790d9.jpg)
3. 选择”Windows用户或组(W)”;点”添加”;再选择”TFSGuest4”帐户;操作后如下:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/xiaotao2004/415b5e01c6a0455f8be345c8ab8916d4.jpg)
4. 点确定;
5. 然后打开SQL SERVER 2005; 使用 SQL Management Studio 连接到你的数据库服务器 ; 找到 ”TfsIntegration” 数据库下的 ”tbl_security_identity_cache” 表
![](https://p-blog.csdn.net/images/p_blog_csdn_net/xiaotao2004/0288e3ccbe4947be814e2569d1f6c492.jpg)
6. 选择右键 ” 打开表 ”; 用 SQL 语句直接找到它的 SID; 或
SELECT sid FROM tbl_security_identity_cache
![](https://p-blog.csdn.net/images/p_blog_csdn_net/xiaotao2004/9728dcc4d3074179bc36f608aa929c3d.gif)
注意 : 中文的用户名在之前加 N . 即: where [display_name]=N' 张三 ';
Deleted 字段 : 是否已经删除 ;0 表示 : 未删除 ;1 表示 : 已删除
执行后如下 :
![](https://p-blog.csdn.net/images/p_blog_csdn_net/xiaotao2004/7196e71d932f4e6a998c0ae2b6cdf1e3.jpg)
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)
![](https://p-blog.csdn.net/images/p_blog_csdn_net/xiaotao2004/12704f08602640a78a0d8603c59752b6.jpg)
8. 然后打开 ” tbl_security_membership_cache ” 表 ; 如下 :
![](https://p-blog.csdn.net/images/p_blog_csdn_net/xiaotao2004/2ef7a3c87d16405787221230cf7b59ff.jpg)
9. 打开后 ; 在最后一行 ” container” 字段中加入 ; 在 ” member ” 字段中加入 ;
10. 再在 ” tbl_gss_group_membership ” 表中也加入 ;” parent_group_sid ” 字段中加入 , “ member_sid ” 字段中加入 ; “ last_update ” 字段定个时间 ; 跟 9 有点相同操作 :
注 : 6-11 步骤 ; 可以用一个 SQL 脚本添加用户到 Team Foundation Licensed Users 组处理 :
declare @container varchar( 100 ), @member varchar( 100 )
SELECT @container = [sid]
![](https://p-blog.csdn.net/images/p_blog_csdn_net/xiaotao2004/76d5a2e65caa473d8675a8278ec50d1a.gif)
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]
![](https://p-blog.csdn.net/images/p_blog_csdn_net/xiaotao2004/a6cec634c1d44f2ebecc2658a0582552.gif)
![](https://p-blog.csdn.net/images/p_blog_csdn_net/xiaotao2004/fca98bcc94a14bf7b9300f89e6869514.gif)
Insert [TfsIntegration].[dbo].[tbl_gss_group_membership]
( [parent_group_sid] , [member_sid] , [last_update] )
s ( @container , @member , getdate ())
将上面的代码用查询分析器执行一下就可以了 ;( 只需要执行一次 )
如果一不小心删除了所有 “Team Foundation Licensed Users” 组中的用户 ; 就无法登录 TFS 了 , 也可以用上面脚本的方法 ; 改一下帐户名就 OK 了 ;