返回首页


{S0}一点点我现在一直在调查一个奇怪发生在Team Foundation Server。用户添加到Active Directory组没有被过滤到Team Foundation服务器组缓存。意味着我们已经向用户直接添加到Team Foundation Server,为了给他们的权限。虽然这是不理想,但它并没有真正的不便,我们那么多,但我们现在正在努力简化我们的安全,并需要固定。 2010年7月27日的解决方案 - ??克雷格哈利谈到几个TFS和Active Directory和他们想出了一个临时解决方案的产品开发团队家伙。
虽然我们没有一个核心员工的高营业额,我们采取了很多开发商工作经验,现在我们有三个家伙在根项目集合管理员时,我们已经有一个Active Directory组在添加这个水平。
{S1}
图:这些都是工作经验,并在AD组,但不显示广告组中的SSW2000 \ TFS服务器的开发
快照SSW2000 \开发组(TFS服务器上的记录)
{S2}
{S3}
{S4}的
图:TFS不显示这些家伙,即使他们在公元
现在,不要误会我,为什么所有的开发项目征收管理开始!它比在TFS 2008时,他们都服务器管理,但我们尚未解决的安全模型,我们需要更新。我们有超过170个团队项目,我还没有时间去,并把它们添加英寸是所有我知道我可以建立一个该工具,但我尚未有时间。
看的第一件事是"事件日志",但你可以看到有相当的条目很多,其中超过13000,因此应用一个过滤器,只是TFS的事件是一个好主意。
{五}
图:检查事件日志中常见的错误
你可以看到每小时的"TFS服务??错误,而事实上他们再次发生,每24小时。如果您检查3071错误,你会看到核心错误TF53010"的Team Foundation Server的身份同步作业超时造成的??
源TFS服务的事件ID 3071的描述无法找到。无论是引发此事件是不是安装在本地计算机上或安装的组件损坏。 ,您可以安装或修复在本地计算机上的组件。
如果另一台计算机上的事件,显示的信息必须与事件保存。
下面的信息与事件包括:
TF53010:Team Foundation组件或扩展中发生以下错误:
日期(UTC):2010年7月7日1点38分49秒
机:BASALISK
应用领域:TfsJobAgent.exe
大会:Microsoft.TeamFoundation.Framework.Server,版本= 10.0.0.0,文化=中性公钥= b03f5f7f11d50a3a; V2.0.50727
服务主机:fba54aae - 87d6 - 47bf - a192 - 0e58693b9ade(团队基础)
进程信息:
进程名:TFSJobAgent
进程ID:7976
主题编号:9136
帐户名:NT AUTHORITY \ NETWORK SERVICE
详细信息:Team Foundation Server的身份同步作业已超时。请重新启动该作业服务。
消息资源是存在,但消息没有在字符串/消息表
从TFS服务器的事件日志条目
接下来的事情你要寻找的是作业定义。是否配置正确的话。要做到这一点,你需要你的TFS服务器上运行一些SQL。请记住,你宽松的支持,如果你没有MSFT支持援助对数据进行更改。请注意,我不这样做单独,克雷格哈里先生MSFT,我就这一个回。
你可能会得到以下SQL Server返回的单个条目。 & #160; jobId的: 544DD581 - F72A - 45A9 - 8DE0 - 8CD3A5F29DFE  60; 作业名称: Team Foundation Server的周期身份同步  0; ExtensionName: 60; Microsoft.TeamFoundation.JobService.Extensions.Core.IdentitySyncJobExtension   ; &# 160; 数据: 空 &# 160;   ; EnabledState: 0  ; &# 160; 标志:   ;0 &# 160; LastExecutionTime:  0; 空
图:从SQL返回AD同步作业的作业定义
看起来我行,据我所知,这是正常的LastExecution为NULL。
接下来要检查作业运行的历史。{C}
你会希望不要和我一样的结果: & #160; HistoryId: & #160; 519100   ; JobSource: FBA54AAE - 87D6 - 47BF - A192 - 0E58693B9ADE  0; jobId的:  0; 544DD581 - F72A - 45A9 - 8DE0 - 8CD3A5F29DFE   ; &# 160; QueueTime: 2010-04-21 01:00:00.000 开始时间:  0; 2010-04-21 01:00:00.597  60; 结束时间: 2010-07-02 16:34:13.653  0; 的agentId: 5D5939AB - 4F76 - 4BDC - A518 - FC09EC352152 & #160;  0; 结果: 7  60; ResultMessage: & #160;空 QueuedReasons:  0; 1 QueueFlags:   ; 0
图:从作业历史记录表的数据显示了一些有趣的事情
由于以上的TFS工作代理超时错误消息标志着作为"无效?工作?与上述7。
所以,我们如何找出我们可以做的尝试并找出问题所在。时间,让内置跟踪功能,看看到底是怎么回事,发生错误的。
工作代理是位于在"C:??\ PROGRAM FILES \微软的Team Foundation Server 2010 \应用层\ TFSJobAgent,你需要编辑的"TfsJobAgent.exe.config文件,以使跟踪??。这个文件是存储在一个位置,需要管理员权限的文件夹,所以在管理员模式启动记事本,并跟踪部分和注释的Listners。


<trace autoflush="false" indentsize="4">

  <!--To enable tracing to file, simply uncomment listeners section and set trace switch(es) below.

      Directory specified for TextWriterTraceListener output must exist, and job agent service account must have write permissions. -->

  <!--<listeners>

    <add name="myListener" 

      type="System.Diagnostics.TextWriterTraceListener" 

      initializeData="C:\temp\jobagent.log" />

    <remove name="Default" />

  </listeners>-->

</trace>

你可以看到上线4条和第9条,有标准的XML / HTML注释,你只需要删除"initializeData属性设置一个位置,你可以写信给这通常是吗?"C: \ TEMP??
一旦你有一件事做。一般是破碎的痕迹进行分类,我们希望启用详细的跟踪至少在"一般?? "API吗??"身份验证??开关。

<switches>

  <!--  Trace Switches

        Each of the trace switches should be set to a value between 0 and 4, inclusive.

          0: No trace output

          1-4: Increasing levels of trace output; see Systems.Diagnostics.TraceLevel-->

  <add name="API" value="0" />

  <add name="Authentication" value="0" />

  <add name="Authorization" value="0" />

  <add name="Database" value="0" />

  <add name="General" value="0" />

  <add name="traceLevel" value="0" />

</switches> 

设置"值吗??属性4"详细??这些交换机和保存文件。
后检查日志主席哈利送我一点点的代码在服务器上运行??无伤大雅其简洁,但它有助于隔离问题。

using System;

using System.Collections.Generic;

using System.DirectoryServices;

using System.Linq;

using System.Text;



namespace ReadLocal

{

    class Program

    {

        static void Main(string[] args)

        {

            using (DirectoryEntry de = new DirectoryEntry())

            {

                de.Path = string.Concat("WinNT://./Administrators");

                Console.WriteLine(de.SchemaClassName);

                de.Path = string.Concat("WinNT://BUILTIN/Administrators");

                Console.WriteLine(de.SchemaClassName);

            }

        }

    }

}

这段代码已经运行了近一个小时的TFS服务器上没有回国的迹象。代码是试图解决针对本地计算机帐户,以便不调用Active Directory和使事情更快一点。我很惊讶,克雷格是能够诊断这种过度的IM(代码以及通过IM)和所有信贷应在他的方向发送。
这是一个边缘的情况下,我们的域和TFS产品团队Active Directory中的人说话,看它是否是域设置的更改或所需要的一个修补程序代码的问题。
克雷格谈到有关家伙和它的接缝,虽然他们将固定的代码,并发布了修补程序,有一个问题的解决。
如果删除"BUILTIN \ Administrators的??从组"的Team Foundation管理员??组代码采用了不同的道路,并没有遇到挂起。
{S6}
图:打开"??Team Foundation Server的管理控制台|应用层|组成员| [团队基础] \ Team Foundation的管理员,并删除"BUILTIN \ Administrators的组??。
我然后重新启动"的Team Foundation Server作业代理??服务,几分钟后,解决了上述问题本身正确。
Technorati标记:

回答

评论会员:dssnider123 时间:2012/01/26
优秀针对一个恼人的问题。感谢
评论会员:! 时间:2012/01/26