SQL 服务使用localSystem帐户,如何安装TFS 2005 SP1?
如果在TFS2005部署中,数据层服务器上SQL 服务运行在localsystem帐户下,而不是一个域用户帐户,那么TFS2005 SP1安装可能会遇到下面的问题:
症状:
=============
l TFS2005 SP1安装程序中途消失,没有任何错误信息出现;
l SP1没有成功安装。且安装程序消失之后,客户端无法访问TFS服务;
l SP1安装日志中可以看到如下内容(采自英文版)
08/29/07 17:06:22 DDSet_Status: Commandline: "C:\Program Files\Microsoft Visual Studio 2005 Team Foundation Server\TF Setup\TFSQuiesce.exe" /n:"Quiesce ATDT"
……
Blocking service account from accessing database TFSActivityLogging
Could not obtain information about Windows NT group/user 'KF\tfsservice', error code 0x5.
……
Workflow 'Quiesce ATDT' failed! ExitCode = 9000.
……
Action ended 17:06:50: InstallFinalize. Return value 3.
----------------------------------------------------
--- Failure on trying to access TFSActivityLogging database
已有的规避方法:
================
KB948778 提供了规避问题的方法:配置SQL服务使用一个域管理员身份帐户运行。
但是有些用户可能出于安全管理策略的限制,需要避免使用如此敏感的帐户。其实,SQL服务使用LocalSystem帐户的情况下,只要做一些权限上的检查和配置,依然可以成功安装TFS2005 SP1。这里是分享我的经验。
问题根源:
=================
从日志中我们可以了解到安装失败发生在操作数据库的过程中,因此我们收集了SQL Server Profiler日志(这是什么?)。日志显示错误发生在针对TFSWorkItemTracking数据库执行一条指令时:
alter login [domain\TFS_Service_Account] disable
错误: 无法获取关于Windows NT 组/用户 “domain\account”的信息,错误号0x5 (0x5 代表访问被拒-作者)
SQL Server, Active Directory和TFS技术支持工程师协作弄清了整个错误发生过程:
1. ”Alter login”语句比较特殊。执行这条语句的时候,SQL Server不是使用执行setup的交互式登陆用户身份,而是使用SQL服务帐户LocalSystem;
2. SQL在执行语句的时候,需要查询域控制器上保存的用户组成员数据。使用数据库服务器LocalSystem帐户执行的查询在域控制器上看来是来自该计算机帐户;
3. 在一个2003活动目录中,默认的安全策略认为所有可识别用户(包括数据层服务器帐户)属于“pre-windows 2000 compatible access”组。这个组的成员可以访问所有的AD对象数据。但是在我的客户的域中,由于安全方面的考虑它们修改了默认安全设置。数据层服务器帐户不再是“pre-windows 2000 compatible access”组成员,因此也不再被允许访问所需的AD组成员信息。
解决方案:
===============
在域控制器上运行下面的命令恢复默认AD组成员关系:
net localgroup "pre-windows 2000 compatible access" "nt authority\authenticated users” /add
net localgroup “Pre-Windows 2000 Compatible Access” Domain\DTBoxName$ /Add
之后我们就可以在SQL服务使用LocalSystem帐户的情况下成功安装TFS2005SP1了。
结论是,安装TFS2005SP1并不一定需要SQL服务运行于域管理员身份下。只要服务帐户可以查询所需域对象信息就OK。
Comments
- Anonymous
April 06, 2009
PingBack from http://blogs.msdn.com/emmamou/archive/2009/04/07/install-tfs-2005-sp1-with-sql-service-running-under-localsystem-account.aspx