Team Foundation Dual Server Installation Headaches

Finally I was able to complete the installation of Team Foundation Server (TFS) successfully. I definitely ran into some major headaches along the way.

Firstly, you cannot install TFS on a Domain Controller (DC). This might be a semi-acknowledged limitation but I had no idea of this prior to my first attempt at installation. Working at a small business we only have 2 servers, 1 being the DC. I’m lucky that I was able to have the other server to install it on in the first place and didn’t have to use my local machine.

Since Sql Server was installed on the DC as it’s the more powerful server this requires me to do a dual server setup (Sql Server on one machine and TFS application tier on another.) This isn’t even possible to do using the DVD image or media setup on it’s own. You will need to modify files on the install disk, more on that later.

Another fact I was unaware of is TFS cannot be installed with Sql Server 2008 out of box. The installation needs to have TFS Sp1 slip streamed into the the setup files. I find it rather daunting that I needed to research these options so far in depth to just complete an installation.

First extra steps that need to be done to configure your Sql Server 2008 machine to support TFS.

Change the Sql Server Reporting Services (SSRS) service from using the local system account to a domain account. This account must be configured with the privileges to log on locally, I named the account TFSREPORTS. After creating this account in the active directory you need to configure the rights on it. The easiest way is with the command prompt (start < run < “cmd” ) while still on the server.

NTRIGHTS -u TFSREPORTS +r SeInteractiveLogonRight

While your creating account information you should also create a domain account for TFS to use for it’s service interaction, this requires the Log On as a Service right. I named mined TFSSERVICE. To assign that logon right with NTRIGHTS.

NTRIGHTS -u TFSSERVICE +r SeServiceLogonRight

Now that you have these accounts created you need to either install Sql Server and Reporting Services and when you get to the SSRS configuration the install to designate the TFSREPORTS account to be the account to use. If you already have installed Sql Server + SSRS contrary to the install instructions with TFS you can not just change the account Sql Server Reporting Services using in the services.msc you actually need to use the “Reporting Services Configuration Manager.” By default there is a start menu entry for it under Start < Programs < Microsoft SQL Server 2008 \ Configuration Tools. Open the tool and connect to the server (most likely localhost, unless you’re doing it remotely) under the Service Account tree menu item check Use Another Account supply the account you created in DOMAIN\AccountName form along with the password you created for the account.

Following these steps either updating or your current install or installing new, now it’s time to update Sql Server 2008 to SP1 if it hasn’t already been done so before continuing on to the TFS installation.

At this point you need to dump the files from the TFS dvd image or media onto your hard drive. You will need to slipstream the TFS Sp1 release into your copy of regular TFS. This is included in the TFS documentation or you can view it online How to: Integrate the Installation of Team Foundation Server and Service Pack 1 on devCatharis.

Now you need to modify InstallMedia\AT\msiproperty.ini you need to configure the VSTF_RS_SERVER, VSTF_RS_REPORTS_URI, VSTF_RS_REPORTSERVER_URI. For detail information for setting these values you can view Reporting Services Flexibility (Orcas RTM Only) by Microsoft MVP Sudhir Hasbe.

Now after all of these steps, you SHOULD be ready to install TFS as a dual server installation with Sql Server 2008 on a separate machine and have it complete successfully!

Does anyone else find this basically unacceptable to have to go through this long of a process to just INSTALL your copy of TFS? It sure ruined a few of my days.

BloggingContext.ApplicationInstance.CompleteRequest();