<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>granth's blog : VSTS Administering</title><link>http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx</link><description>Tags: VSTS Administering</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>TFS2010: What happens to subscriptions after an upgrade?</title><link>http://blogs.msdn.com/granth/archive/2009/12/10/tfs2010-what-happens-to-subscriptions-after-an-upgrade.aspx</link><pubDate>Fri, 11 Dec 2009 05:48:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9935530</guid><dc:creator>grantholliday</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/granth/comments/9935530.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9935530</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9935530</wfw:comment><description>&lt;p&gt;Both TFS2008 and TFS2010 allow users to create subscriptions to events. These can be Work Item events, CheckIn events and others. They are created via the ‘Project Alerts’ option in Team Explorer or Web Access, or the ‘Alerts’ feature in the Team Foundation Power Tools.&amp;#160; An administrator can also run bissubscribe.exe on the Application Tier to setup web service/SOAP subscriptions.&lt;/p&gt;  &lt;p&gt;A few people have asked me what happens to subscriptions when a server is upgraded from TFS2008 to TFS2010, so here’s how it works:&lt;/p&gt;  &lt;h5&gt;Upgrade from TFS2008 and Attaching a Team Project Collection to an existing instance&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Subscriptions &amp;amp; alerts that users have configured get preserved as-is      &lt;ul&gt;       &lt;li&gt;The only difference is that we’ll now store the subscriber by the internal TF identity GUID instead of the SID. This is transparent to the user. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;For any subscription with a subscriber who is in the service accounts group, we replace the subscriber with the service group (e.g. ‘DOMAIN\tfsservice’ turns into ‘[CollectionFoo]\Service Accounts Group’) &lt;/li&gt;    &lt;li&gt;We remove SOAP subscriptions which have endpoints that end in &lt;b&gt;“/VersionControl/v1.0/Integration.asmx&lt;/b&gt;” or &lt;b&gt;“/WorkItemTracking/v1.0/SyncEventsListener.asmx&lt;/b&gt;” or &lt;b&gt;“/Warehouse/v1.0/warehousecontroller.asmx&lt;/b&gt;”. These are internal subscriptions used in previous versions to keep areas, iterations and identities in sync. &lt;/li&gt;    &lt;li&gt;During TFS2008 upgrade or when you attach a new Team Project Collection (TPC) we replace the url prefix of SOAP subscription which ends in “&lt;b&gt;/WorkItemTracking/v1.0/Integration.asmx&lt;/b&gt;” with a token that gets filled in at runtime with the&amp;#160; actual public url to the TPC &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;TPC Move&lt;/h5&gt;  &lt;p&gt;This is the scenario that you detach a TPC from one instance and attach it to another instance&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Subscriptions &amp;amp; alerts that users have configured get preserved as-is.&amp;#160; They are stored in the collection’s database, so they move with the collection. &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;TPC Split&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Subscriptions &amp;amp; alerts that users have configured get copied to the split collection. &lt;/li&gt;    &lt;li&gt;When you split a TPC, you will want to make sure you clean out the subscriptions or at least warn users that they may receive duplicate alerts. &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9935530" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category></item><item><title>TFS2010: Object Model API changes after Beta 2</title><link>http://blogs.msdn.com/granth/archive/2009/12/07/tfs2010-object-model-api-changes-after-beta-2.aspx</link><pubDate>Tue, 08 Dec 2009 07:41:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9933926</guid><dc:creator>grantholliday</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/granth/comments/9933926.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9933926</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9933926</wfw:comment><description>&lt;p&gt;Based on feedback that we received both internally and externally we decided to make a rather significant change to the TFS client object model.&amp;#160; This change centers around the TeamFoundationServer, TeamFoundationApplicationInstance and TeamFoundationServerBase classes and their supporting factories.&lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;h3&gt;The History&lt;/h3&gt;  &lt;p&gt;First some background. In Orcas and Whidbey the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.client.teamfoundationserver.aspx"&gt;TeamFoundationServer&lt;/a&gt; object was used as the starting point for working with the Team Foundation client object model.&amp;#160; In TFS 2010 we now have Team Project Collections and the Team Foundation Configuration Server and unfortunately the TeamFoundationServer object is no longer specific enough to describe the end point that you are working with. &lt;/p&gt;  &lt;p&gt;To combat this originally we decided to repurpose the TeamFoundationServer class for talking to Team Project Collections and introduce a sibling class called TeamFoundationApplicationInstance for talking to what was at the time called the Application Instance and has since been renamed to the Configuration Server.&amp;#160; We also introduced a base class called TeamFoundationServerBase to contain all of the shared code between the TeamFoundationServer and TeamFoundationApplicationInstance classes.&lt;/p&gt;  &lt;p&gt;Martin Woodward describes this old model in his first &lt;a href="http://www.woodwardweb.com/vsts/tfs_2010_api_by.html"&gt;TFS 2010 API By Example&lt;/a&gt; post.&lt;/p&gt;  &lt;h3&gt;The Changes&lt;/h3&gt;  &lt;p&gt;Since we made that original change, we have gotten feedback both internally and more recently externally that these objects were very confusing.&amp;#160; Because of that feedback we decided to make some changes to these objects to make them more intuitive.&amp;#160; The main changes that were made are as follows:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Renamed the TeamFoundationServerBase class to TfsConnection.&lt;/li&gt;    &lt;li&gt;Renamed the TeamFoundationApplicationInstance class to TfsConfigurationServer.&lt;/li&gt;    &lt;li&gt;Introduced the TfsTeamProjectCollection class to replace the TeamFoundationServer class.&lt;/li&gt;    &lt;li&gt;Obsoleted the TeamFoundationServer class.&lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;The Impact&lt;/h3&gt;  &lt;p&gt;If you have started writing tools that use the TFS 2010 Beta 2 object model, you should anticipate these changes in our final release and allow yourself time to make the changes and test them.&lt;/p&gt;  &lt;p&gt;Here are some of the things that have changed throughout this refactoring and some things that you should look for and validate if you are reviewing these changes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The TeamFoundationServer class had many constructor overloads, several that took strings and several that took URIs. We have been wanting to get rid of the string overloads (that allowed you to pass a server name or a server url) as part of this effort so the new TfsTeamProjectCollection class does not have string constructor overloads.&amp;#160; Instead you need to create this object with a URI just like you have to do with the TfsConfigurationServer object. There is a static helper on the TfsTeamProjectCollection class called GetFullyQualifiedUriForName that will return you the collection URI given a string that either contains the collection name or the collection url.&amp;#160; If the collection url is passed in this is essentially a no-op.&amp;#160; &lt;/li&gt;    &lt;li&gt;Any public property or method on a public class that either returned a TeamFoundationServer object or took it in as a parameter was deprecated. Along with this, a mirroring property or method was added that simply replaced the TeamFoundationServer type with the TfsTeamProjectCollection type.&amp;#160; If there was any doubt as to whether or not that property or method had shipped in Orcas or Whidbey we made the assumption that it had shipped and deprecated it instead of removing it. If we knew that it had been added in the TFS 2010 time frame, we simply removed the property or method that exposed the TeamFoundationServer class. &lt;/li&gt;    &lt;li&gt;With the above refactoring of properties and methods we tended to only rename the property or method name if it was exposed to the public and very wrong.&amp;#160; I.e. if we saw GetTeamFoundationServer(), we renamed it to GetTeamProjectCollection(). &lt;/li&gt;    &lt;li&gt;The TfsTeamProjectCollection class does have an internal property that exposes a related instance of the TeamFoundationServer class. The TeamFoundationServer object also exposes a TfsTeamProjectCollection instance.&amp;#160; These properties are used to support public methods or functions that need a TeamFoundationServer in a backward compatibility scenario. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you have an addin or tool built against the Beta2 object model and you don’t have the Beta2 assemblies installed, then you’ll get something like the following error:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Team Foundation Error&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Could not load type 'Microsoft.TeamFoundation.Client.&lt;strong&gt;TeamFoundationServerBase&lt;/strong&gt;' from assembly 'Microsoft.TeamFoundation.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.&lt;/p&gt;    &lt;p&gt;System.TypeLoadException: Could not load type 'Microsoft.TeamFoundation.Client.&lt;strong&gt;TeamFoundationServerBase&lt;/strong&gt;' from assembly 'Microsoft.TeamFoundation.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To fix this, you’ll need to contact the addin/tool owner to get them to release a compatible version with the changes mentioned in this post.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9933926" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category></item><item><title>TFS2010: Older clients not able to connect</title><link>http://blogs.msdn.com/granth/archive/2009/12/07/tfs2010-older-clients-not-able-to-connect.aspx</link><pubDate>Tue, 08 Dec 2009 07:08:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9933922</guid><dc:creator>grantholliday</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/granth/comments/9933922.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9933922</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9933922</wfw:comment><description>&lt;p&gt;When the &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=cf13ea45-d17b-4edc-8e6c-6c5b208ec54d"&gt;Forward Compatibility GDR for Visual Studio 2008&lt;/a&gt; shipped, a change was made to the Team Foundation Server 2010 code that blocks incompatible clients. That means that after TFS2010 beta2, clients that don’t have a forward-compatible patch installed, won’t be able to connect.&amp;#160; &lt;/p&gt;  &lt;p&gt;For more information on what features will &amp;amp; won’t be available, see the &lt;a href="http://blogs.msdn.com/teams_wit_tools/archive/2009/10/19/compatibility-matrix-for-2010-beta-2-team-foundation-server-to-team-explorer-2008-and-2005.aspx"&gt;TFS2010 Compatibility Matrix&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;When a client connects to TFS, the UserAgent is checked against a list in the TFS registry and if it matches any of these, an error message specific to that client is returned to the user. For example:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Team Foundation services are not available from the server.&lt;/p&gt;    &lt;p&gt;Technical information (for administrator):&lt;/p&gt;    &lt;p&gt;&amp;#160; TF253022: You must update your client with the Forward Compatibility Update in order to connect to the Team Foundation Server that you selected. To obtain this update, go to the Microsoft Web site: &lt;a href="http://go.microsoft.com/fwlink/?LinkId=16648"&gt;http://go.microsoft.com/fwlink/?LinkId=16648&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The list of UserAgent’s that is checked is defined in the \Configuration\Application\DisabledUserAgents path in the TFS registry of the instance:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Team Foundation (*.exe, 8.0.50727.&amp;lt;4406) – Visual Studio 2005 without the forward-compat GDR (&lt;a href="http://blogs.msdn.com/bharry/archive/2009/10/19/tfs-2010-compatibility-with-older-clients.aspx"&gt;available closer to launch&lt;/a&gt;)      &lt;br /&gt;Team Foundation (*.exe, 9.0.21022.*) – Visual Studio 2008 RTM      &lt;br /&gt;Team Foundation (*.exe, 9.0.30729.&amp;lt;4172) – Visual Studio 2008 SP1 without the forward-compat GDR      &lt;br /&gt;Team Foundation (VSSConverter.exe, 8.*)      &lt;br /&gt;Team Foundation (VSSConverter.exe, 9.*)      &lt;br /&gt;Teamprise 1.*      &lt;br /&gt;Teamprise 2.*      &lt;br /&gt;Teamprise*/3.&amp;lt;3* – &lt;a href="http://teamprise.com/products/download/"&gt;Teamprise 3.3&lt;/a&gt; introduced &lt;a href="http://download.cdn.teamprise.com/cs/3.3.0.11578R/release-notes/release-notes.html"&gt;basic support for TFS2010&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Of course, if you know &lt;a href="http://blogs.msdn.com/granth/archive/2009/10/28/tfs2010-diagnosing-email-and-soap-subscription-failures.aspx"&gt;how to change the TFS registry&lt;/a&gt;, you can remove these bans. However, I wouldn’t recommend doing that, because using incompatible clients against the server can cause some strange things to happen.&amp;#160; You’re much better off just patching the clients.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9933922" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category></item><item><title>TFS2010: Troubleshooting SharePoint Dashboards data source problems</title><link>http://blogs.msdn.com/granth/archive/2009/12/03/tfs2010-troubleshooting-sharepoint-dashboards-data-source-problems.aspx</link><pubDate>Thu, 03 Dec 2009 22:13:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9932232</guid><dc:creator>grantholliday</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/granth/comments/9932232.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9932232</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9932232</wfw:comment><description>&lt;p&gt;In the TFS 2010 release, if you have the Enterprise features of Microsoft Office SharePoint Server (MOSS) configured (i.e. Single Sign-On and Excel Services), then you can make TFS Excel Reports available to your users via a web site.&amp;#160; This is very compelling since Excel makes PivotTables and PivotCharts easy to use and for users viewing the rendered charts via the web it is painless user experience.&lt;/p&gt;  &lt;p&gt;For more information see the &lt;a href="http://msdn.microsoft.com/en-us/library/dd997876(VS.100).aspx"&gt;Excel Reports topic on MSDN&lt;/a&gt;. Here is an example of a working SharePoint Dashboard&lt;/p&gt;  &lt;p&gt;&lt;img src="http://blogs.msdn.com/blogfiles/aaronbjork/WindowsLiveWriter/HowdoesMSFAgile4.2comparetoMSFAgile5.0_62AD/Quality1.png" /&gt;&lt;/p&gt;  &lt;p&gt;However, there are a lot of moving parts required to get all this working. TFS 2010, SQL Analysis Services, MOSS (Single Sign-On Service, Excel Calculation Services).&amp;#160; The purpose of this article is &lt;strong&gt;not&lt;/strong&gt; to describe how to get it working, but where to look when it stops working.&amp;#160; If you are starting from scratch, then you should refer to the “Checklist: Multiple-Server Installation” topic in the &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=2d531219-2c39-4c69-88ef-f5ae6ac18c9f"&gt;TFSInstall.chm guide for TFS 2010&lt;/a&gt; and the &lt;strong&gt;Configure &lt;a href="http://msdn.microsoft.com/en-us/library/ee462863(VS.100).aspx"&gt;Settings for Dashboard Compatibility&lt;/a&gt;&lt;/strong&gt; topic on MSDN. I’ve been through those steps more times than I can remember and my feedback went into it to help you be successful where I stumbled.&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Error: Unable to retrieve external data&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;In my experience, this is the most common error:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Unable to retrieve external data for the following connections:     &lt;br /&gt;TfsOlapReport      &lt;br /&gt;The data sources may be unreachable, may not be responding, or may have denied you access.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It can mean a few different things:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Excel Services cannot connect to Analysis Services or SQL because of a connectivity issue&amp;#160; (or it’s trying to connect to the wrong server)&lt;/li&gt;    &lt;li&gt;The credentials returned from the SSO service are incorrect or they don’t have the right permission to connect to Analysis Services / SQL&lt;/li&gt;    &lt;li&gt;The user browsing the website is not not a member of the group that the SSO credentials are allowed to be used by&lt;/li&gt;    &lt;li&gt;The SSO service can’t retrieve the credentials from it’s store&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The first thing to do is to check the connection.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Open one of the Excel reports from the Excel Reports document library in Excel (the desktop application) &lt;/li&gt;    &lt;li&gt;Click on the &lt;strong&gt;Data&lt;/strong&gt; tab in the ribbon &lt;/li&gt;    &lt;li&gt;Click on the &lt;strong&gt;Connections&lt;/strong&gt; button to display the &lt;strong&gt;Workbook Connections&lt;/strong&gt; dialog box &lt;/li&gt;    &lt;li&gt;Click on the &lt;strong&gt;TfsOlapReport&lt;/strong&gt; data connection &lt;/li&gt;    &lt;li&gt;Click on the &lt;strong&gt;Properties...&lt;/strong&gt; button &lt;/li&gt;    &lt;li&gt;Click on the &lt;strong&gt;Definition&lt;/strong&gt; tab of this dialog box&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010TroubleshootingSharePointDashboar_BDB4/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010TroubleshootingSharePointDashboar_BDB4/image_thumb_2.png" width="159" height="122" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010TroubleshootingSharePointDashboar_BDB4/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010TroubleshootingSharePointDashboar_BDB4/image_thumb_3.png" width="203" height="244" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;This should show a connection string like the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Provider=MSOLAP.3;Integrated Security=SSPI;Persist Security Info=True;User ID=&amp;quot;&amp;quot;;Initial Catalog=Tfs_Analysis;Data Source=ASSERVER;Location=ASSERVER;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If the connection string is incorrect, then you need to open the Team Foundation Administration Tool on your Application Tier and configure the reporting settings correctly.&lt;/p&gt;  &lt;p&gt;The next thing to check is the Single Sign-On configuration.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Click on the &lt;strong&gt;Authentication Settings...&lt;/strong&gt; button&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The SSS radio button should be selected and an SSS ID specified&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010TroubleshootingSharePointDashboar_BDB4/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010TroubleshootingSharePointDashboar_BDB4/image_thumb_4.png" width="244" height="231" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If an SSS ID (sometimes incorrectly referred to as an SSO ID) is not specified, then you need to open the Team Foundation Administration Tool on your MOSS server and configure an SSS ID.&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Troubleshooting data source problems&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;The best place to start looking is the combined SharePoint and Excel Calculation Services trace logfiles.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Logon to the server where MOSS is installed&lt;/li&gt;    &lt;li&gt;Open a command prompt as administrator&lt;/li&gt;    &lt;li&gt;Type: explorer &lt;strong&gt;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\LOGS&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Open the workbook in a web browser – you should receive the error “Unable to retrieve external data” error message&lt;/li&gt;    &lt;li&gt;At the command prompt type: &lt;strong&gt;net stop sptrace &amp;amp;&amp;amp; net start sptrace&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Select ‘&lt;strong&gt;Update &amp;gt; Refresh all data connections&lt;/strong&gt;’ in the excel workbook (below)&lt;/li&gt;    &lt;li&gt;Type: &lt;strong&gt;net stop sptrace &amp;amp;&amp;amp; net start sptrace&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Then if you sort the files in the LOGS directory by Newest to Oldest, the second most recent one should have the Excel Services &amp;amp; SSO tracing in it.&amp;#160; That usually has a stacktrace or error message indicating where the failure is. You can also use &lt;a href="http://ulsviewer.codeplex.com/"&gt;ULSViewer&lt;/a&gt; to look at the log files, however I find Notepad is adequate.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010TroubleshootingSharePointDashboar_BDB4/clip_image002_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010TroubleshootingSharePointDashboar_BDB4/clip_image002_thumb.jpg" width="412" height="294" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here’s an example of a successful workbook refresh.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Excel Services Web Front End&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 6k38&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ExcelServerProxy.ExecuteWebMethod: sending request of type OpenWorkbook, to server=http://mossserver:56737/SharedServices1/ExcelCalculationServer/ExcelService.asmx, session=(null), state id=0&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;Excel Calculation Services&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 766u&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ExcelService.LogRequest: starting request of type OpenWorkbook&amp;#160; &lt;/p&gt;    &lt;p&gt;Excel Services Session&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 5pbu&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionManager.BeginRequest: There are 1 active users&amp;#160; &lt;/p&gt;    &lt;p&gt;Excel Services Session&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1sxs&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionManager.BeginRequest: Created Session id=23.485TDKRh5qu7zU3Ghay5tQ590.5.en-US5.en-US73.+0480#0000-11-00-01T02:00:00:0000#+0000#0000-03-00-02T02:00:00:0000#-0060, caller=fe80::982:6438:527c:31f1%11&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;RPC request to ncalrpc_AuthenticateClientBinding()&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt; RPC request to s_GetCredentials&amp;#160;&amp;#160; &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;RPC request to GetCredentials()&lt;/strong&gt;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Cached entry is stale, so will not return credentials&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;CSsoResourceManager succeeded in getting the connection string&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Provider=SQLOLEDB;Extended Properties='Server=SQLSERVER;Database=SSO;Trusted_Connection=yes;App=Windows SharePoint Services;Timeout=15';&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;User is a member of the group.&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Destroying CCommandEx&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Destroying CSessionEx&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;CSsoResourceManager succeeded in getting the connection string&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Provider=SQLOLEDB;Extended Properties='Server=SQLSERVER;Database=SSO;Trusted_Connection=yes;App=Windows SharePoint Services;Timeout=15';&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RPC request to ncalrpc_AuthenticateClientBinding()&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RPC request to s_GetApplication&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RPC request to GetApplication()&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CSsoResourceManager succeeded in getting the connection string&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Provider=SQLOLEDB;Extended Properties='Server=SQLSERVER;Database=SSO;Trusted_Connection=yes;App=Windows SharePoint Services;Timeout=15';&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Destroying CCommandEx&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Destroying CSessionEx&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CSsoResourceManager succeeded in getting the connection string&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Provider=SQLOLEDB;Extended Properties='Server=SQLSERVER;Database=SSO;Trusted_Connection=yes;App=Windows SharePoint Services;Timeout=15';&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RPC request to s_GetApplicationFields&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RPC request to GetApplicationsFields()&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CSsoResourceManager succeeded in getting the connection string&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Provider=SQLOLEDB;Extended Properties='Server=SQLSERVER;Database=SSO;Trusted_Connection=yes;App=Windows SharePoint Services;Timeout=15';&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CSsoResourceManager succeeded in getting the connection string&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Provider=SQLOLEDB;Extended Properties='Server=SQLSERVER;Database=SSO;Trusted_Connection=yes;App=Windows SharePoint Services;Timeout=15';&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Destroying CCommandEx&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;SSO&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Destroying CSessionEx&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;Excel Services External Data&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 13l9&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ExternalSource.GetExternalKeyAndStateAndMarkUsed: Key exists in cache - waiting for it to be created, sessionId=23.485TDKRh5qu7zU3Ghay5tQ590.5.en-US5.en-US73.+0480#0000-11-00-01T02:00:00:0000#+0000#0000-03-00-02T02:00:00:0000#-0060, externalsource=TfsOlapReport, key=[ts: 12/03/2009 13:04:14.192943, [serviceaccount, en-US, en-US, +0480#0000-11-00-01T02:00:00:0000#+0000#0000-03-00-02T02:00:00:0000#-0060, [Oledb, Stored, TFS, False, ], ()] BaseWB: &amp;quot;&lt;a href="http://mossserver/sites/COLLECTION/Project/Reports/Bug%20Progress.xlsx"&gt;http://mossserver/sites/COLLECTION/Project/Reports/Bug Progress.xlsx&lt;/a&gt;&amp;quot; [0x409] [11/06/2009 19:14:04.000000] [BaseWB ID: 2]]&amp;#160; 00000412-f5f3-0da1-0000-000050f7b00b&lt;/p&gt;    &lt;p&gt;Excel Services External Data&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 13la&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ExternalSource.GetExternalKeyAndStateAndMarkUsed: Key exists in cache - wait was successful, sessionId=23.485TDKRh5qu7zU3Ghay5tQ590.5.en-US5.en-US73.+0480#0000-11-00-01T02:00:00:0000#+0000#0000-03-00-02T02:00:00:0000#-0060, externalsource=TfsOlapReport, key=[ts: 12/03/2009 13:04:14.192943, [serviceaccount, en-US, en-US, +0480#0000-11-00-01T02:00:00:0000#+0000#0000-03-00-02T02:00:00:0000#-0060, [Oledb, Stored, TFS, False, ], ()] BaseWB: &amp;quot;&lt;a href="http://mossserver/sites/COLLECTION/Project/Reports/Bug%20Progress.xlsx"&gt;http://mossserver/sites/COLLECTION/Project/Reports/Bug Progress.xlsx&lt;/a&gt;&amp;quot; [0x409] [11/06/2009 19:14:04.000000] [BaseWB ID: 2]]&amp;#160; 00000412-f5f3-0da1-0000-000050f7b00b&lt;/p&gt;    &lt;p&gt;Excel Calculation Services&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2m5e&amp;#160;&amp;#160; Information&amp;#160;&amp;#160; &lt;strong&gt;Session opened with workbook&lt;/strong&gt; &lt;a href="http://mossserver/sites/COLLECTION/PROJECT/Reports/Bug"&gt;http://mossserver/sites/COLLECTION/PROJECT/Reports/Bug&lt;/a&gt; Progress.xlsx. [Session: 23.485TDKRh5qu7zU3Ghay5tQ590.5.en-US5.en-US73.+0480#0000-11-00-01T02:00:00:0000#+0000#0000-03-00-02T02:00:00:0000#-0060 User: REDMOND\granth]&amp;#160;&amp;#160;&amp;#160; 00000412-f5f3-0da1-0000-000050f7b00b&lt;/p&gt;    &lt;p&gt;Excel Calculation Services&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 5cag&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ExcelService.PostProcessRequest: &lt;strong&gt;finished request of type OpenWorkbook&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160; 00000412-f5f3-0da1-0000-000050f7b00b&lt;/p&gt;    &lt;p&gt;Excel Services Web Front End&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 6k39&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ExcelServerProxy.ExecuteWebMethod: &lt;strong&gt;request of type OpenWorkbook succeeded&lt;/strong&gt;, from server=http://mossserver:56737/SharedServices1/ExcelCalculationServer/ExcelService.asmx, session=23.485TDKRh5qu7zU3Ghay5tQ590.5.en-US5.en-US73.+0480#0000-11-00-01T02:00:00:0000#+0000#0000-03-00-02T02:00:00:0000#-0060, new state id=1&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;Excel Services Web Front End&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 6k30&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ExcelServerProxy.SetReachable: server: &lt;a href="http://mossserver:56737/SharedServices1/ExcelCalculationServer/ExcelService.asmx"&gt;http://mossserver:56737/SharedServices1/ExcelCalculationServer/ExcelService.asmx&lt;/a&gt;. &lt;/p&gt;    &lt;p&gt;Excel Web Access&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 5cbj&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InternalEwr.RenderWebPart: &lt;strong&gt;Finished rendering internal EWR&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;And here’s the sorts of messages you’ll get if the workbook cannot be refreshed.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The workbook 'http://mossserver/sites/COLLECTION/PROJECT/Reports/Bug Progress2.xlsx' &lt;strong&gt;attempted to access external data using the unsupported provider&lt;/strong&gt; 'Provider=MSOLAP.4;Integrated Security=SSPI;Persist Security Info=True;User ID=&amp;quot;&amp;quot;;Initial Catalog=Tfs_Analysis;Data Source=ASSERVER;Location=ASSERVER;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error'. [Session: 23.3897Bz4UV5Lllg0FPFLZm8k90.5.en-US5.en-US73.+0480#0000-11-00-01T02:00:00:0000#+0000#0000-03-00-02T02:00:00:0000#-0060 User: DOMAIN\user]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00000301-f5f3-0da1-0000-000050f7b00b&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Refresh failed&lt;/strong&gt; for 'TfsOlapReport' in the workbook 'http://mossserver/sites/COLLECTION/PROJECT/Reports/Bug Progress2.xlsx'. [Session: 23.3897Bz4UV5Lllg0FPFLZm8k90.5.en-US5.en-US73.+0480#0000-11-00-01T02:00:00:0000#+0000#0000-03-00-02T02:00:00:0000#-0060 User: DOMAIN\user]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;ExternalSource.ValidateConnection: &lt;strong&gt;Unable to get a connection: Microsoft.Office.Excel.Server.CalculationServer.Interop.ConnectionException&lt;/strong&gt;: Exception of type 'Microsoft.Office.Excel.Server.CalculationServer.Interop.ConnectionException' was thrown.&amp;#160;&amp;#160;&amp;#160;&amp;#160; at Microsoft.Office.Excel.Server.CalculationServer.ConnectionManager.GetConnection(ConnectionRequest connectionRequest, ExtendedConnectionInfo extendedConnInfo, Credentials credentials, Int64 privateConnectionId, Boolean auditConnection)&amp;#160;&amp;#160;&amp;#160;&amp;#160; at Microsoft.Office.Excel.Server.CalculationServer.ExternalSource.TryGetValidatedConnection(Request request, Credentials credentials, ExtendedConnectionInfo extendedConnectionInfo, Boolean shouldReportFailure, Boolean auditConnection, Connection&amp;amp; connectionOut). sessionId=23.3897Bz4UV5Lllg0FPFLZm8k90.5.en...&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00000301-f5f3-0da1-0000-000050f7b00b&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Hopefully this is enough to lead you in the right direction, but for further help you should try the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Run the &lt;a href="http://blogs.msdn.com/lszomoru/archive/2009/11/17/team-foundation-server-2010-beta-2-best-practices-analyzer.aspx"&gt;Team Foundation Server 2010 Best Practices Analyzer (BPA) tool&lt;/a&gt; that’s included in the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/0e69a28f-020c-488b-80b3-f4c89a20621d"&gt;Team Foundation Server Power Tools&lt;/a&gt;. It’s purpose is to help you find &amp;amp; fix configuration problems.&lt;/li&gt;    &lt;li&gt;Ask a question on the &lt;a href="http://social.msdn.microsoft.com:80/Forums/en-US/tfsreporting/threads"&gt;Team Foundation Server - Reporting &amp;amp; Warehouse&lt;/a&gt; forums&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9932232" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category></item><item><title>VSTS Pioneer TFS2010: SQL Backups</title><link>http://blogs.msdn.com/granth/archive/2009/11/13/vsts-pioneer-tfs2010-sql-backups.aspx</link><pubDate>Fri, 13 Nov 2009 22:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9922284</guid><dc:creator>grantholliday</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/granth/comments/9922284.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9922284</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9922284</wfw:comment><description>&lt;P&gt;&lt;I&gt;(&lt;A href="http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx" mce_href="http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx"&gt;See this summary on the VSTS Pioneer dogfood server&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/granth/archive/tags/Pioneer+Dogfood/default.aspx" mce_href="http://blogs.msdn.com/granth/archive/tags/Pioneer+Dogfood/default.aspx"&gt;all the other posts&lt;/A&gt;.)&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;Having an adequate backup strategy for your Visual Studio 2010 Team Foundation Server is a very important part of any deployment. I’ll share with you how we are running backups on our Pioneer Dogfood TFS2010 server, but you should refer to the MSDN guidance on &lt;A href="http://msdn.microsoft.com/en-us/library/ms253070(VS.100).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms253070(VS.100).aspx"&gt;How to: Back Up Team Foundation Server&lt;/A&gt; for definitive guidance.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;To prevent accidental corruption of data, you must synchronize all backups of databases that Team Foundation Server uses, which include databases for SQL Server and SharePoint Products, &lt;STRONG&gt;to the same time stamp&lt;/STRONG&gt;. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;In the fine print a lot of people (myself included) don’t realize that you must restore all databases to the same point in time otherwise you may not have a functioning system. The stumbling block that we ran into on a recent upgrade dry-run was that the ‘Tfs_Configuration’ database was restored to a point in time that was 3 hours earlier than one of our collection databases.&amp;nbsp; This caused identity information in the collection database to be out of sync with the configuration database and caused the cloned system to be unusable.&lt;/P&gt;
&lt;P&gt;The reason this happened is because it takes us ~3 hours to backup our collection database, so the timeline went something like this:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;12:00 Backup Tfs_Configuration (1 minute)&lt;/LI&gt;
&lt;LI&gt;12:01 Backup Tfs_VSTSDF collection (3 hours)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The additional step we were missing in our dry-run steps was to restore the transaction logs for all the databases to a common point in time (a time after the collection database had finished backing up). See &lt;A href="http://msdn.microsoft.com/en-us/library/ms190244.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms190244.aspx"&gt;Restoring a database to a point within a backup&lt;/A&gt; and &lt;A href="http://msdn.microsoft.com/en-us/library/ms187495.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms187495.aspx"&gt;Performing a Complete Database Restore (Full Recovery model)&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Our backup process&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;SQL backups are performed using stored procedures from Ola Hallengren. See &lt;A href="http://ola.hallengren.com/" mce_href="http://ola.hallengren.com/"&gt;SQL Server 2005 and 2008 - Backup, Integrity Check and Index Optimization&lt;/A&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://ola.hallengren.com/scripts/MaintenanceSolution.sql" mce_href="http://ola.hallengren.com/scripts/MaintenanceSolution.sql"&gt;Download scripts&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://ola.hallengren.com/Documentation.html" mce_href="http://ola.hallengren.com/Documentation.html"&gt;Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://ola.hallengren.com/Documentation.html#Faq" mce_href="http://ola.hallengren.com/Documentation.html#Faq"&gt;Frequently Asked Questions&lt;/A&gt;.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Essentially a stored procedure is called with a number of parameters from a SQL Agent Job which performs the backups.&lt;/P&gt;
&lt;P&gt;The reason these scripts are used instead of standard SQL Maintenance Plans, is because they give us a more flexible and robust backup solution.&amp;nbsp; For instance, the backup job log is written &lt;STRONG&gt;as the job executes&lt;/STRONG&gt; &amp;amp; we have the flexibility to exclude certain databases while &lt;STRONG&gt;automatically including all new databases &lt;/STRONG&gt;created on the server. See &lt;A href="http://ola.hallengren.com/MaintenancePlans.html" mce_href="http://ola.hallengren.com/MaintenancePlans.html"&gt;Comparison between SQL Maintenance Plans and Ola's Backup scripts&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE border=1 cellSpacing=0 cellPadding=0 width=635&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=136&gt;
&lt;P&gt;&lt;B&gt;Job Name&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=169&gt;
&lt;P&gt;&lt;B&gt;Location&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=97&gt;
&lt;P&gt;&lt;B&gt;Schedule&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=80&gt;
&lt;P&gt;&lt;B&gt;Retention&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=151&gt;
&lt;P&gt;&lt;B&gt;Databases&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=139&gt;
&lt;P&gt;DatabaseBackup - Weekly FULL&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=172&gt;
&lt;P&gt;E:\MSSQL\Backup\Full&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=99&gt;
&lt;P&gt;Occurs every week on Wednesday at 12:00:00 AM &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=82&gt;
&lt;P&gt;Delete files older than 144 Hours (6 days) &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=152&gt;
&lt;P&gt;SYSTEM_DATABASES, USER_DATABASES&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=139&gt;
&lt;P&gt;DatabaseBackup - Nightly DIFF&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=172&gt;
&lt;P&gt;E:\MSSQL\Backup\Diff &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=100&gt;
&lt;P&gt;Occurs every week on Monday, Wednesday, Thursday, Friday, Saturday, Sunday at 10:00:00 PM&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=83&gt;
&lt;P&gt;Delete files older than 23 hours &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=153&gt;
&lt;P&gt;SYSTEM_DATABASES, USER_DATABASES&lt;/P&gt;
&lt;P&gt;* Automatically does a FULL backup if a DIFF cannot be performed.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=138&gt;
&lt;P&gt;DatabaseBackup - 15min LOG&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=172&gt;
&lt;P&gt;F:\MSSQL\Backup\Log &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=100&gt;
&lt;P&gt;Occurs every day every 15 minute(s) between 12:00:00 AM and 11:59:59 PM. &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=84&gt;
&lt;P&gt;Delete files older than 24 hours&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=154&gt;
&lt;P&gt;SYSTEM_DATABASES, USER_DATABASES &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;Then we have our IT group’s tape backup process come along every night and backup the SQL backup files to tape for on-site and off-site retention.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Backup Job Alerts&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Email alerts are sent to a monitoring email list when each SQL backup job completes (regardless of success or failure).&amp;nbsp; This is done using the SQL Mail functionality.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Compression&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Additionally, if you are running SQL Server 2008 Enterprise Edition – you have SQL Backup Compression available to you. This can greatly reduce the size of your backups and the amount of I/O required, therefore decreasing the time it takes to perform backups &amp;amp; restores.&amp;nbsp; The tradeoff is of course, additional CPU usage.&amp;nbsp; See the following SQLCAT &lt;A href="http://sqlcat.com/technicalnotes/archive/2008/04/21/tuning-the-performance-of-backup-compression-in-sql-server-2008.aspx" mce_href="http://sqlcat.com/technicalnotes/archive/2008/04/21/tuning-the-performance-of-backup-compression-in-sql-server-2008.aspx"&gt;Tuning the Performance of Backup Compression in SQL Server 2008&lt;/A&gt; article for more information on this.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9922284" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/TFS+at+Microsoft/default.aspx">TFS at Microsoft</category><category domain="http://blogs.msdn.com/granth/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category><category domain="http://blogs.msdn.com/granth/archive/tags/Pioneer+Dogfood/default.aspx">Pioneer Dogfood</category></item><item><title>VSTS Pioneer TFS2010 Dogfood Server: Statistics October 2009</title><link>http://blogs.msdn.com/granth/archive/2009/11/06/vsts-pioneer-tfs2010-dogfood-server-statistics-october-2009.aspx</link><pubDate>Fri, 06 Nov 2009 09:21:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9918469</guid><dc:creator>grantholliday</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/granth/comments/9918469.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9918469</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9918469</wfw:comment><description>&lt;p&gt;&lt;i&gt;(&lt;a href="http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx"&gt;See this summary on the VSTS Pioneer dogfood server&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/granth/archive/tags/Pioneer+Dogfood/default.aspx"&gt;all the other posts&lt;/a&gt;.)&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;As with the last few months, October was another busy month for dogfooding TFS. Since the Pioneer server has been such a success for Work Item Tracking and Source Control, we’ve really ramped up our efforts to dogfood every single feature as much as we can. The benefits of having everything online really lets us make sure our end-to-end integration is working as well as feel the pain before we share it with our customers. The most notable changes this month are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Each of the different business units within VSTS have setup their own SharePoint MOSS Dashboards with bug trends, etc. &lt;/li&gt;    &lt;li&gt;We’re now using Team Build 2010 with Gated Checkin on our part of the tree (we still have to follow the divisional processes of custom nightly build scripts at this stage) &lt;/li&gt;    &lt;li&gt;We enabled Test Case Management features and are now dogfooding the Test Case Management (TCM) features for our major test passes &lt;/li&gt;    &lt;li&gt;We setup and enabled the Lab Management functionality on our server and we’re starting to dogfood that across the organization as well &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Here’s the latest stats:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Recent Users: 915 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Version Control&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Version Control Users: 622 &lt;/li&gt;    &lt;li&gt;Files: 11,053,314 &lt;/li&gt;    &lt;li&gt;Compressed File Sizes: 284,480 &lt;/li&gt;    &lt;li&gt;Uncompressed File Sizes: 870,228 &lt;/li&gt;    &lt;li&gt;Checkins: 29,275 &lt;/li&gt;    &lt;li&gt;Shelvesets: 7,249 &lt;/li&gt;    &lt;li&gt;Merge History: 10,897,164 &lt;/li&gt;    &lt;li&gt;Pending Changes: 13,344 &lt;/li&gt;    &lt;li&gt;Workspaces: 1,607 &lt;/li&gt;    &lt;li&gt;Local Copies: 382,464,960 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Work Item Tracking&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Users with Assigned Work Items: 2,607 &lt;/li&gt;    &lt;li&gt;Total Work Items: 284,813 &lt;/li&gt;    &lt;li&gt;Areas and Iterations: 2,910 &lt;/li&gt;    &lt;li&gt;Work Item Versions: 2,892,664 &lt;/li&gt;    &lt;li&gt;Work Item Attachments: 115,501 &lt;/li&gt;    &lt;li&gt;Work Item Queries: 5,728 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Commands (last 2 weeks in October)&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Work Item opens:&amp;#160; 154,788 &lt;/li&gt;    &lt;li&gt;Work Item queries: 120,537 &lt;/li&gt;    &lt;li&gt;Work Item updates: 40,242 &lt;/li&gt;    &lt;li&gt;Checkins: 2,630 &lt;/li&gt;    &lt;li&gt;Uploads: 10,440 &lt;/li&gt;    &lt;li&gt;Shelves: 4,553 &lt;/li&gt;    &lt;li&gt;Downloads: 251,032 &lt;/li&gt;    &lt;li&gt;Gets: 41,615 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;DevDiv TFS Server&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;On top of enabling all these new scenarios on the Pioneer server, we also managed to get the main DevDiv TFS server upgraded from SQL 2005 to SQL 2008. This was the first step to getting the server to TFS2010. I can’t say it was all smooth sailing, but it looks like we’re through the worst of it now (man, what a fortnight…).&amp;#160; The good news is that all of the extra performance optimizations we had to make to cope with our dataset sizes also made it into TFS2010 product.&lt;/p&gt;  &lt;p&gt;Although no install guide will tell you, I highly recommend you put on &lt;a href="http://support.microsoft.com/kb/973602"&gt;SQL 2008 SP1 CU4&lt;/a&gt; if you’re running a large, busy TFS2008 or TFS2010 server – in the processes of testing the upgrade and after the actual upgrade to SQL 2008, we hit these bugs which the SQL team quickly reacted and fixed for us:&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/967178/"&gt;KB967178&lt;/a&gt; - When you restore a SQL Server 2005 backup file in SQL Server 2008, the operation takes much longer than when you restore the same backup file in SQL Server 2005&amp;#160; (fixed in SQL08 SP1 CU1) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/970823/"&gt;KB970823&lt;/a&gt; - CPU cost increases suspiciously when the number of threads working on the same index increases (fixed in &lt;a href="http://support.microsoft.com/kb/971491/"&gt;SQL08 SP1 CU3&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/970133/"&gt;KB970133&lt;/a&gt; - Backup Log hangs when using compressed backups and the destination drive runs out of disk space. SQL Restart is required (fixed in &lt;a href="http://support.microsoft.com/kb/973602/"&gt;SQL2008 SP1 CU4&lt;/a&gt;)&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now, onto the next Pioneer upgrade.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9918469" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/TFS+at+Microsoft/default.aspx">TFS at Microsoft</category><category domain="http://blogs.msdn.com/granth/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/granth/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category><category domain="http://blogs.msdn.com/granth/archive/tags/Pioneer+Dogfood/default.aspx">Pioneer Dogfood</category></item><item><title>TFS2010: Diagnosing Email and SOAP subscription failures</title><link>http://blogs.msdn.com/granth/archive/2009/10/28/tfs2010-diagnosing-email-and-soap-subscription-failures.aspx</link><pubDate>Thu, 29 Oct 2009 01:33:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9914455</guid><dc:creator>grantholliday</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/granth/comments/9914455.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9914455</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9914455</wfw:comment><description>&lt;p&gt;Sometimes emails alerts such as &amp;quot;Work Item Changed&amp;quot; will fail to send.&amp;#160; Sometimes SOAP (web service) subscriptions will not be called correctly.&lt;/p&gt;  &lt;p&gt;To diagnose these, you can look in the tbl_JobHistory table in the Tfs_Configuration database.&lt;/p&gt;  &lt;p&gt;If you run this SQL command, it will retrieve the last 10 failed notification jobs:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SELECT TOP 10 DATEADD(hour, -7, StartTime) as StartTimePDT, Result, ResultMessage &lt;/p&gt;    &lt;p&gt;FROM [Tfs_Configuration].[dbo].[tbl_JobHistory]&lt;/p&gt;    &lt;p&gt;WHERE JobId = 'A4804DCF-4BB6-4109-B61C-E59C2E8A9FF7' AND &lt;strong&gt;Result &lt;/strong&gt;&lt;strong&gt;&amp;lt;&amp;gt;&lt;/strong&gt;&lt;strong&gt; 0 &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;ORDER BY StartTime DESC&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The JobId GUID is the well-known GUID for the “Team Foundation Server Event Processing” job with the namespace: “Microsoft.TeamFoundation.JobService.Extensions.Core.NotificationJobExtension”&lt;/p&gt;  &lt;p&gt;The DATEADD() function converts the date from UTC to local Pacific time.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ResultMessage:&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;There were errors or warnings during notification delivery.&amp;#160;&amp;#160;&amp;#160; 0/4 emails delivered.&amp;#160; 0/6 soap notifications delivered.&amp;#160;&amp;#160; 1 errors.&amp;#160; 0 warnings.&amp;#160;&amp;#160;&amp;#160; Set /Service/Integration/Settings/NotificationJobLogLevel in the TF registry to 2 to see errors and warnings.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To get detailed information about why the job failed, you will need to set a flag in the TFS registry. This is different from the windows registry and probably warrants a blog post on it’s own.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Changing NotificationJobLogLevel setting in the TFS registry using PowerShell&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you have VS2010 &amp;amp; PowerShell installed on your local machine and you have the appropriate permissions on the server, then you can run these steps from there. Otherwise, you will need to logon to a machine that does, or an AT.&amp;#160; If you logon to the AT, you will need to run PowerShell as an Administrator.&lt;/p&gt;  &lt;p&gt;To change the registry setting, replace the server url &amp;amp; collection name and follow these steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open PowerShell &lt;/li&gt;    &lt;li&gt;Run the following commands: &lt;/li&gt; &lt;/ol&gt;  &lt;blockquote&gt;   &lt;p&gt;# Load client OM assembly.      &lt;br /&gt;[Reflection.Assembly]::Load(&amp;quot;Microsoft.TeamFoundation.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot;);&lt;/p&gt;    &lt;p&gt;$collectionBaseUrl = &amp;quot;&lt;a href="http://YOURTFSSERVER:8080/tfs/YOURCOLLECTION/"&gt;http://YOURTFSSERVER:8080/tfs/YOURCOLLECTION/&lt;/a&gt;&amp;quot;;&lt;/p&gt;    &lt;p&gt;$tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($collectionBaseUrl);      &lt;br /&gt;$collectionHive = $tfs.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamFoundationRegistry]);&lt;/p&gt;    &lt;p&gt;# Set the setting in the collection hive.      &lt;br /&gt;$collectionHive.SetValue(&amp;quot;/Service/Integration/Settings/NotificationJobLogLevel&amp;quot;, &amp;quot;&lt;strong&gt;2&lt;/strong&gt;&amp;quot;);&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It’s a good idea to set this back to “0” once you’re done with it, to avoid filling up the job history logs unnecessarily.&lt;/p&gt;  &lt;p&gt;Once you have set this setting, the next time the job runs and fails, it will log more detailed information including the exception and stack trace. For example:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;There were errors or warnings during notification delivery.&amp;#160;&amp;#160;&amp;#160; 0/0 emails delivered.&amp;#160; 0/3 soap notifications delivered.&amp;#160;&amp;#160; 3 errors.&amp;#160; 0 warnings.&amp;#160;&amp;#160;&amp;#160; -------------------------------&amp;#160; Notification not delivered.&amp;#160;&amp;#160;&amp;#160; Notification: WorkItemChangedEvent (DeliveryType: Soap; Address: &lt;a href="http://eventsserver/EventHandler.svc"&gt;http://eventsserver/EventHandler.svc&lt;/a&gt;)&amp;#160;&amp;#160;&amp;#160; Exception: Microsoft.TeamFoundation.TeamFoundationServiceUnavailableException: Team Foundation services are not available from server &lt;a href="http://eventsserver/EventHandler.svc"&gt;http://eventsserver/EventHandler.svc&lt;/a&gt;.&amp;#160; Technical information (for administrator):&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;HTTP code 415: Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'.&lt;/strong&gt; ---&amp;gt; System.Net.WebException: The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'..&amp;#160;&amp;#160;&amp;#160;&amp;#160; at System.Net.HttpWebRequest.GetResponse()&amp;#160;&amp;#160;&amp;#160;&amp;#160; at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.AsyncWebRequest.ExecRequest(Object obj)&amp;#160;&amp;#160;&amp;#160;&amp;#160; --- End of inner exception stack trace ---&amp;#160;&amp;#160;&amp;#160;&amp;#160; at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ProcessHttpResponse(HttpWebResponse response, Stream responseStream, WebException webException, XmlReader&amp;amp; xmlResponseReader)&amp;#160;&amp;#160;&amp;#160;&amp;#160; at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ExecWebServiceRequest(HttpWebRequest request, XmlWriter requestXml, String methodName, HttpWebResponse&amp;amp; response)&amp;#160;&amp;#160;&amp;#160;&amp;#160; at Microsoft.TeamFoundation.JobService.Extensions.Core.TeamFoundationNotificationClient.Notify(String eventXml, String tfsIdentityXml, Subscription subscription)&amp;#160;&amp;#160;&amp;#160;&amp;#160; at Microsoft.TeamFoundation.JobService.Extensions.Core.NotificationJobExtension.SendSoapNotification(TeamFoundationRequestContext requestContext, TeamFoundationNotification notification, TeamFoundationIdentityService identityService)&amp;#160; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This &lt;a href="http://social.msdn.microsoft.com/forums/en-US/wcf/thread/f29cd9c8-3c89-43d2-92ae-d2a270ab86b9/"&gt;particular error message&lt;/a&gt; indicates that the client was expecting a SOAP 1.1 message, and the server sent it a SOAP 1.2 message.&lt;/p&gt;  &lt;p&gt;If your email alerts are failing to send, then you’ll get an SMTP error back that shows you where to start looking.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9914455" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/TFS+at+Microsoft/default.aspx">TFS at Microsoft</category><category domain="http://blogs.msdn.com/granth/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category></item><item><title>VSTS Pioneer TFS2010 Dogfood Server: Upgrading</title><link>http://blogs.msdn.com/granth/archive/2009/10/19/vsts-pioneer-tfs2010-dogfood-server-upgrading.aspx</link><pubDate>Mon, 19 Oct 2009 08:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9908975</guid><dc:creator>grantholliday</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/granth/comments/9908975.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9908975</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9908975</wfw:comment><description>&lt;p&gt;&lt;i&gt;(&lt;a href="http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx"&gt;See this summary on the VSTS Pioneer dogfood server&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/granth/archive/tags/Pioneer+Dogfood/default.aspx"&gt;all the other posts&lt;/a&gt;.)&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;One of the major goals of the Pioneer Team Foundation Server is to upgrade it to early builds so that we can get some “bake time” with them and feel confident with what we’re releasing to customers.&amp;#160; Since we spun up the server, we’ve done two successful upgrades and we’re already planning the next one:&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;July 1st – Initial installation of Beta 1 build &lt;/li&gt;    &lt;li&gt;August 29 – Upgrade to 8/22 build from the VSTS branch &lt;/li&gt;    &lt;li&gt;September 17 – Upgrade to 9/17 build from the Beta 2 branch&amp;#160; (yes, the build dropped at 5PM and we used it to upgrade at 6PM) &lt;/li&gt;    &lt;li&gt;November – Upgrade to a post-Beta2 build &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The process of testing the upgrades on a copy of our database is just as important as running the upgrade itself. With our interesting &lt;a href="http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server-hardware-topology.aspx"&gt;dogfood topology&lt;/a&gt; of a dedicated SQL server, NLB/multiple application tiers, a dedicated MOSS server, virtual machines and use of virtual DNS names, we find some interesting bugs that we’re able to fix before things are locked down for shipping.&lt;/p&gt;  &lt;p&gt;There’s no whitepaper on “How to Dogfood” at Microsoft, so our process for deploying perpetual upgrades is something that just kind of happened. Here’s basically what we do:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/VSTSPioneerTFS2010DogfoodServerUpgrading_6912/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Dogfood Upgrade process" border="0" alt="Dogfood Upgrade process" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/VSTSPioneerTFS2010DogfoodServerUpgrading_6912/image_thumb_1.png" width="640" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Depending on where we are in the cycle and the amount of churn in the code base, we might add another iteration or skip one. What’s most interesting about this process, is that it’s driven by the end date.&amp;#160; Based on the product schedule, we know when our windows of opportunity are for upgrading and we work back from then.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tips for upgrading&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here are some tips to consider when planning your own upgrades:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Hardware&lt;/strong&gt; – Get your production &amp;amp; pre-production servers in place early. Getting new hardware or re-configuring existing hardware usually has a long lead time.&amp;#160; Make sure that you’ve also got enough storage space. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Start fresh&lt;/strong&gt; – If at all possible, give yourself the best chance at success by starting with a fresh box. Sure, plenty of products support in-place upgrades &amp;amp; clean uninstalls – but in my experience, flattening the box and starting fresh lays a good foundation for the future. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Backups &lt;/strong&gt;– Organize a copy of your production backups that you can test the upgrade with. Not only does it give you peace of mind that your backups work, it also helps you line up the DBA’s for when it’s time to do the real upgrade. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Start with the latest OS &lt;/strong&gt;– If you start with Windows 2008 R2 now, it’s one less OS upgrade (and downtime) you’ll have to do in the future. It also means you’ll be on 64-bit, which is a very good thing. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Virtualization&lt;/strong&gt; – We run our 3x Application Tiers as virtual machines with no problems whatsoever. This is great for when we’re installing pre-beta copies of the .NET framework that don’t have clean uninstalls yet.&amp;#160; In our last upgrade we just turned off the old application tiers and spun up three fresh ones.&amp;#160; You can treat AT’s as throwaways in a TFS2010 NLB topology, since there is no state stored on them. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Dry-Runs&lt;/strong&gt; – Run through your plan and make sure everything is going to work. Review it with others and get their feedback. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Have a test plan&lt;/strong&gt; – Once you’ve done the upgrade, you need to be sure that everything is back online and working as expected. Checkin, Checkout, Open work item, Save work item, Web Access, Sharepoint, Reports, Cube, Alerts, Monitoring, Builds, etc. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Do pre-requisites ahead of time&lt;/strong&gt; – For example, to install SQL2008 you need to have .NET3.5 and Windows Installer 4.5 both installed first and both of these require a reboot.&amp;#160; If you plan to do one on the first weekend and the other on the second weekend, it means that you don’t waste time during your more important SQL upgrade waiting for reboots. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Do one thing at a time – &lt;/strong&gt;This is an extension of the last point. Let’s say you’re moving from a single-server TFS2008 SP1 on SQL2005 and Windows 2003 to a dual-server TFS2010 on SQL2008 SP1 and Windows 2008 R2.&amp;#160; If it were me, I’d take it in steps: upgrade SQL, make sure everything still works, move to dual-server, check again, upgrade to TFS2010.&amp;#160; The more steps you try and bundle together, the higher your risk of failure. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Upgrade logistics&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I’ve been involved with at least 5 major upgrades this year and here are some things I’ve learnt from running them:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Book a conference room &lt;/strong&gt;      &lt;ul&gt;       &lt;li&gt;This is the single most valuable thing you can do. Try and get anybody who is actually doing any steps in the upgrade (DBA&amp;lt; IT, Helpdesk, etc) to come to the room. &lt;/li&gt;        &lt;li&gt;Have a spare computer or project your own desktop on the screen. This is useful for synchronizing with others in the room, running ‘ping –t’ when a server reboots and doing “group debugging” sessions when problems happen. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Setup a “party line” conference call&lt;/strong&gt;. Invite anybody who wants to “listen in” to join. Invite your manager. &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;It’s also useful for anybody who you might need help from to have these details. If things go south, you don’t waste time trying to setup a conference call – it’s already there. &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;Setup a live meeting / desktop sharing session&lt;/strong&gt;. Invite anybody who wants to be a “fly on the wall” to join.       &lt;ul&gt;       &lt;li&gt;Sure, you can log a bug that says “when I clicked on X on screen Y, setup blew up” and people might believe you. But if you’re sharing your desktop and other people see it happen, then you have some people to back you up. &lt;/li&gt;        &lt;li&gt;(I’ve been meaning to do a screen recording of our upgrades, but various technology problems have prevented it each time – I think it would be useful for reviewing and improving the process for next time) &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Setup an “on call / escalation” list&lt;/strong&gt;. Find out who you need to call if you have problems with one of your dependent systems. The last thing you want to be doing is sitting on hold to a L1 helpdesk if your server doesn’t reboot cleanly or something. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Send at least 3 notifications&lt;/strong&gt; to users of the downtime       &lt;ul&gt;       &lt;li&gt;1st Notice – Give as much notice as possible so people can plan milestones around the date.&amp;#160; Even if it’s not set in stone yet, people would rather know about it and have it cancelled than to find out at the last minute. &lt;/li&gt;        &lt;li&gt;2nd Notice – 7 days or on the Monday before a weekend upgrade is good for this. &lt;/li&gt;        &lt;li&gt;3rd Notice – On the day of the upgrade (or 24 hours before if it’s a weekend), send another one. &lt;/li&gt;        &lt;li&gt;Guidelines: Make sure you describe what the impact to users is, any actions they need to take and where they can go to get future status updates and support. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Provide regular status &lt;/strong&gt;to stakeholders.&amp;#160; Start an email thread and trickle through progress as it happens.&amp;#160; By keeping them informed, you buy their trust and their support when things don’t go as planned. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Planning your own upgrade&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Brian Keller has a great post on how to &lt;a href="http://blogs.msdn.com/briankel/archive/2009/10/02/get-ready-to-go-live-with-team-foundation-server-2010-beta-2.aspx "&gt;Get ready to “go live” with Team Foundation Server 2010 beta 2!&lt;/a&gt; He includes two useful documents:&lt;/p&gt;  &lt;li&gt;&lt;a href="http://cid-8c96cc4d0756cacb.skydrive.live.com/self.aspx/Public/Blog%20Attachments/Team%20Foundation%20Server%202010%20Beta%202%20Rollout.pptx"&gt;Overview presentation&lt;/a&gt; (.PPTX) &lt;/li&gt;  &lt;li&gt;&lt;a href="http://cid-8c96cc4d0756cacb.skydrive.live.com/self.aspx/Public/Blog%20Attachments/Team%20Foundation%20Server%202010%20Beta%202%20Rollout%20Guide.docx"&gt;Detailed checklist&lt;/a&gt; (.DOCX)     &lt;p&gt;I’m also going to share with you a copy of the generic deployment plan template that I’ve been using for the Pioneer upgrades.&lt;/p&gt; &lt;/li&gt;  &lt;li&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/granth/attachment/9908975.ashx"&gt;Deployment Plan Template&lt;/a&gt;(.XLSX)&lt;/p&gt;    &lt;p&gt;&lt;a href="http://blogs.msdn.com/granth/attachment/9908975.ashx"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Deployment Plan Template screenshot" border="0" alt="Deployment Plan Template screenshot" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/VSTSPioneerTFS2010DogfoodServerUpgrading_6912/image_5.png" width="524" height="380" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Planning, testing and upgrading to these new releases has been a fun experience and it’s a bonus when everything goes smoothly. It’s great to see our experiences influence the product and make it the best release yet.&lt;/p&gt; &lt;/li&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9908975" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/granth/attachment/9908975.ashx" length="18156" type="application/octet-stream" /><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Planning+_2600_amp_3B00_+Tracking/default.aspx">VSTS Planning &amp;amp; Tracking</category><category domain="http://blogs.msdn.com/granth/archive/tags/TFS+at+Microsoft/default.aspx">TFS at Microsoft</category><category domain="http://blogs.msdn.com/granth/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category><category domain="http://blogs.msdn.com/granth/archive/tags/Pioneer+Dogfood/default.aspx">Pioneer Dogfood</category></item><item><title>VSTS Pioneer TFS2010 Dogfood Server: Statistics September 2009</title><link>http://blogs.msdn.com/granth/archive/2009/10/19/vsts-pioneer-tfs2010-dogfood-server-statistics-september-2009.aspx</link><pubDate>Mon, 19 Oct 2009 07:13:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9908942</guid><dc:creator>grantholliday</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/granth/comments/9908942.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9908942</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9908942</wfw:comment><description>&lt;p&gt;&lt;i&gt;(&lt;a href="http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx"&gt;See this summary on the VSTS Pioneer dogfood server&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/granth/archive/tags/Pioneer+Dogfood/default.aspx"&gt;all the other posts&lt;/a&gt;.)&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;September was a busy month for dogfooding TFS – all of the VSTS team were completely moved across and on 9/17 we upgraded to an almost final TFS2010 Beta 2 build. Here are the numbers from the end of September:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Recent Users: 887 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Version Control&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Files &amp;amp; Folders: 10,722,118 &lt;/li&gt;    &lt;li&gt;Compressed File Sizes (MB): 263,350 &lt;/li&gt;    &lt;li&gt;Uncompressed File Sizes (MB): 773,731 &lt;/li&gt;    &lt;li&gt;Checkins: 23,369 &lt;/li&gt;    &lt;li&gt;Pending Changes: 55,697 &lt;/li&gt;    &lt;li&gt;Local Copies: 303,331,190 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Work Item Tracking&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It looks like I don’t have the work item tracking stats for September – I’ll have them next month.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Commands (last 2 weeks in September)&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Work Item opens:&amp;#160; 113,128 &lt;/li&gt;    &lt;li&gt;Work Item queries: 101,203 &lt;/li&gt;    &lt;li&gt;Work Item updates: 23,653 &lt;/li&gt;    &lt;li&gt;Checkins: 1,855 &lt;/li&gt;    &lt;li&gt;Uploads: 6.622 &lt;/li&gt;    &lt;li&gt;Shelves: 2,402 &lt;/li&gt;    &lt;li&gt;Downloads: 216,452 &lt;/li&gt;    &lt;li&gt;Gets: 30,201 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Table sizes&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;One of the interesting metrics that I’m also tracking is how our tables and indexes are growing on the disks. Here’s the top 10 for this month:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="0" width="450"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td width="133"&gt;&lt;strong&gt;Table&lt;/strong&gt;&lt;/td&gt;        &lt;td width="80"&gt;&lt;strong&gt;Rows&lt;/strong&gt;&lt;/td&gt;        &lt;td width="70"&gt;&lt;strong&gt;Reserved (MB)&lt;/strong&gt;&lt;/td&gt;        &lt;td width="57"&gt;&lt;strong&gt;Data (MB)&lt;/strong&gt;&lt;/td&gt;        &lt;td width="51"&gt;&lt;strong&gt;Index (MB)&lt;/strong&gt;&lt;/td&gt;        &lt;td width="57"&gt;&lt;strong&gt;Unused (MB)&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="133"&gt;         &lt;p align="left"&gt;tbl_Content&lt;/p&gt;       &lt;/td&gt;        &lt;td width="80"&gt;         &lt;p align="right"&gt;5,915,547&lt;/p&gt;       &lt;/td&gt;        &lt;td width="70"&gt;         &lt;p align="right"&gt;277,260&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;275,129&lt;/p&gt;       &lt;/td&gt;        &lt;td width="51"&gt;         &lt;p align="right"&gt;4&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;2,127&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="133"&gt;         &lt;p align="left"&gt;tbl_LocalVersion&lt;/p&gt;       &lt;/td&gt;        &lt;td width="80"&gt;         &lt;p align="right"&gt;303,331,190&lt;/p&gt;       &lt;/td&gt;        &lt;td width="70"&gt;         &lt;p align="right"&gt;81,562&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;44,789&lt;/p&gt;       &lt;/td&gt;        &lt;td width="51"&gt;         &lt;p align="right"&gt;36,574&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;199&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="133"&gt;         &lt;p align="left"&gt;Attachments&lt;/p&gt;       &lt;/td&gt;        &lt;td width="80"&gt;         &lt;p align="right"&gt;63,783&lt;/p&gt;       &lt;/td&gt;        &lt;td width="70"&gt;         &lt;p align="right"&gt;11,928&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;11,908&lt;/p&gt;       &lt;/td&gt;        &lt;td width="51"&gt;         &lt;p align="right"&gt;13&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;7&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="133"&gt;         &lt;p align="left"&gt;tbl_Version&lt;/p&gt;       &lt;/td&gt;        &lt;td width="80"&gt;         &lt;p align="right"&gt;12,129,564&lt;/p&gt;       &lt;/td&gt;        &lt;td width="70"&gt;         &lt;p align="right"&gt;3,418&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;1,031&lt;/p&gt;       &lt;/td&gt;        &lt;td width="51"&gt;         &lt;p align="right"&gt;2,369&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;17&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="133"&gt;         &lt;p align="left"&gt;WorkItemLongTexts&lt;/p&gt;       &lt;/td&gt;        &lt;td width="80"&gt;         &lt;p align="right"&gt;2,728,618&lt;/p&gt;       &lt;/td&gt;        &lt;td width="70"&gt;         &lt;p align="right"&gt;3,314&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;2,533&lt;/p&gt;       &lt;/td&gt;        &lt;td width="51"&gt;         &lt;p align="right"&gt;777&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;5&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="133"&gt;         &lt;p align="left"&gt;tbl_VersionedItem&lt;/p&gt;       &lt;/td&gt;        &lt;td width="80"&gt;         &lt;p align="right"&gt;15,754,176&lt;/p&gt;       &lt;/td&gt;        &lt;td width="70"&gt;         &lt;p align="right"&gt;2,983&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;1,598&lt;/p&gt;       &lt;/td&gt;        &lt;td width="51"&gt;         &lt;p align="right"&gt;1,382&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;3&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="133"&gt;         &lt;p align="left"&gt;WorkItemsWere&lt;/p&gt;       &lt;/td&gt;        &lt;td width="80"&gt;         &lt;p align="right"&gt;1,239,831&lt;/p&gt;       &lt;/td&gt;        &lt;td width="70"&gt;         &lt;p align="right"&gt;2,482&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;1,617&lt;/p&gt;       &lt;/td&gt;        &lt;td width="51"&gt;         &lt;p align="right"&gt;863&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;2&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="133"&gt;         &lt;p align="left"&gt;tbl_PropertyValue&lt;/p&gt;       &lt;/td&gt;        &lt;td width="80"&gt;         &lt;p align="right"&gt;33,293,914&lt;/p&gt;       &lt;/td&gt;        &lt;td width="70"&gt;         &lt;p align="right"&gt;1,320&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;523&lt;/p&gt;       &lt;/td&gt;        &lt;td width="51"&gt;         &lt;p align="right"&gt;793&lt;/p&gt;       &lt;/td&gt;        &lt;td width="57"&gt;         &lt;p align="right"&gt;4&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="133"&gt;         &lt;p align="left"&gt;tbl_File&lt;/p&gt;       &lt;/td&gt;        &lt;td width="81"&gt;         &lt;p align="right"&gt;5,717,981&lt;/p&gt;       &lt;/td&gt;        &lt;td width="71"&gt;         &lt;p align="right"&gt;722&lt;/p&gt;       &lt;/td&gt;        &lt;td width="61"&gt;         &lt;p align="right"&gt;442&lt;/p&gt;       &lt;/td&gt;        &lt;td width="60"&gt;         &lt;p align="right"&gt;266&lt;/p&gt;       &lt;/td&gt;        &lt;td width="76"&gt;         &lt;p align="right"&gt;14&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9908942" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Planning+_2600_amp_3B00_+Tracking/default.aspx">VSTS Planning &amp;amp; Tracking</category><category domain="http://blogs.msdn.com/granth/archive/tags/TFS+at+Microsoft/default.aspx">TFS at Microsoft</category><category domain="http://blogs.msdn.com/granth/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Version+Control/default.aspx">VSTS Version Control</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category><category domain="http://blogs.msdn.com/granth/archive/tags/Pioneer+Dogfood/default.aspx">Pioneer Dogfood</category></item><item><title>TFS2010: Installing pre-requisites from the command line</title><link>http://blogs.msdn.com/granth/archive/2009/10/18/tfs2010-installing-pre-requisites-from-the-command-line.aspx</link><pubDate>Mon, 19 Oct 2009 06:31:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9908929</guid><dc:creator>grantholliday</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/granth/comments/9908929.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9908929</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9908929</wfw:comment><description>&lt;p&gt;On the Team Foundation Server team, there is a new build of the server every night that comes out of our build lab. These vary in quality throughout the development cycle and the QA teams look at them and rate them as “Self Test”, “Self Test (with workarounds)”, or “Self Toast”.&amp;#160; The QA &amp;amp; dev guys have lots of fancy automation for deploying nightly builds and testing them out, but I like to stay away from that stuff and use the builds as if I were a real customer. Once a build is declared “Self Test”, I’ll grab a copy and spin it up in a VM to see what’s changed.&lt;/p&gt;  &lt;p&gt;The two preparation things I’ve done that have really sped up my installation turnaround times are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a sysprep’d Windows Server 2008 R2 VHD&lt;/li&gt;    &lt;li&gt;Create a SQL2008 SP1 slipstreamed installation point&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Once I had those in place, I then just used these two long command lines below to install SQL &amp;amp; IIS. Of course, none of this is necessary for a “TFS Basic” install, since the installer will drop down IIS &amp;amp; SQL Express for you.&amp;#160; See &lt;a href="http://blogs.msdn.com/bharry/archive/2009/10/01/tfs-2010-for-sourcesafe-users.aspx"&gt;Brian’s blog on TFS 2010 for SourceSafe Users for more details&lt;/a&gt; on that.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Creating a sysprep’d Win2008 R2 VHD&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Creating a sysprep’d VM is easy. Create a new VM and install a fresh copy of Windows 2008 R2. If you have a domain, join it to the domain and add yourself to the local administrators group (this will be retained after you sysprep &amp;amp; rejoin to the domain again).&amp;#160; I don’t usually add the IIS role at this point, since I use these VHD’s for other things. Once you’re happy with it, run the following command:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;C:\Windows\System32\Sysprep\Sysprep.exe /oobe /generalize /shutdown&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Then take a copy of the VHD and name it something like ‘Win2008R2Sysprepped.vhd’.&amp;#160; Whenever you need a fresh machine, just copy this VHD to a new file and away you go.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Creating a SQL2008 SP1 slipstreamed installation point&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Follow the instructions for &lt;a href="http://blogs.msdn.com/petersad/archive/2009/02/25/sql-server-2008-creating-a-merged-slisptream-drop.aspx"&gt;creating a slipstreamed drop on the SQL Server Setup team’s blog&lt;/a&gt;. Two things to note when doing this:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Paths matter – it’s best to pick a folder name and stick with it whenever you use it. e.g. C:\SQL2008SP1\&lt;/li&gt;    &lt;li&gt;You DO have to download the ia64 &amp;amp; x86 SP1 packages &amp;amp; slipstream them as well, otherwise your setup.exe will fail&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Once you’ve created the installation point, save it away somewhere – it’s really useful and it saves so much time by not having to do an RTM install followed by a SP1 install.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Installing TFS pre-requisites from the command line&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Boot into your fresh 2008 R2 VM&lt;/li&gt;    &lt;li&gt;Give it a new name, join it to the domain, apply any updates, reboot, etc&lt;/li&gt;    &lt;li&gt;Install SQL2008 SP1 from your installation point:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Open a command prompt as administrator&lt;/li&gt;      &lt;li&gt;Type: pushd &lt;a href="file://\\fileserver\SQL2008SP1"&gt;\\fileserver\SQL2008SP1&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Type the following command:&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;Setup.exe /q /ACTION=Install /FEATURES=SQL,FullText,AS,RS,Tools /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT=&amp;quot;NT Authority\Network Service&amp;quot; /RSSVCACCOUNT=&amp;quot;NT Authority\Network Service&amp;quot; /ASSVCACCOUNT=&amp;quot;NT Authority\Network Service&amp;quot; /AGTSVCACCOUNT=&amp;quot;NT Authority\Network Service&amp;quot; /SQLSVCStartuptype=2 /RSSVCStartupType=2 /ASSVCSTARTUPTYPE=2 /AGTSVCSTARTUPTYPE=2 /BROWSERSVCStartupType=2 /SQLSYSADMINACCOUNTS=&amp;quot;Builtin\Administrators&amp;quot; /ASSYSADMINACCOUNTS=&amp;quot;Builtin\Administrators&amp;quot; /SQMREPORTING=1 /ERRORREPORTING=1 /INDICATEPROGRESS&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Install required IIS components:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Open a command prompt as administrator&lt;/li&gt;      &lt;li&gt;Type the following command:&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;ServerManagerCmd -install WAS WAS-Process-Model WAS-NET-Environment WAS-Config-APIs Web-Server Web-WebServer Web-Common-Http Web-Static-Content Web-Default-Doc Web-Dir-Browsing Web-Http-Errors Web-Http-Redirect Web-App-Dev Web-Asp-Net Web-Net-Ext Web-ISAPI-Ext Web-ISAPI-Filter Web-Health Web-Http-Logging Web-Request-Monitor Web-Security Web-Windows-Auth Web-Filtering Web-Performance Web-Stat-Compression Web-Mgmt-Tools Web-Mgmt-Console Web-Mgmt-Compat Web-Metabase Web-WMI Web-Lgcy-Scripting Web-Lgcy-Mgmt-Console&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;At this point, you’re now ready to run setup.exe from the TFS media. You have a fully configured SQL server and the requires IIS pre-requisites installed.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Other useful SQL 2008 setup.exe command lines&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;For a TFS “Application Tier Only” install, IIS is one pre-requisite and the “SQL Client Tools Connectivity” is the other one.&amp;#160; This is required so that the TFS Job Agent can talk to Analysis Services and tell it to process the warehouse.&amp;#160; Here’s how to install just the client tools:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;setup.exe /ACTION=Install /FEATURES=&lt;strong&gt;Conn&lt;/strong&gt; /ERRORREPORTING=1 /INDICATEPROGRESS /SQMREPORTING /Q&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you just want to install SQL Server Management Studio on your developer machine:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;setup.exe /ACTION=Install /FEATURES=ADV_SSMS /ERRORREPORTING=1 /INDICATEPROGRESS /SQMREPORTING /Q&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;For more information, see &lt;a href="http://msdn.microsoft.com/en-us/library/ms144259.aspx"&gt;How to: Install SQL Server 2008 from the Command Prompt&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/ms144259.aspx#Feature"&gt;available features&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9908929" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/TFS+at+Microsoft/default.aspx">TFS at Microsoft</category><category domain="http://blogs.msdn.com/granth/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category></item><item><title>Scripting Team Project Creation in TFS2010</title><link>http://blogs.msdn.com/granth/archive/2009/09/25/scripting-team-project-creation-in-tfs2010.aspx</link><pubDate>Sat, 26 Sep 2009 00:17:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9899712</guid><dc:creator>grantholliday</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/granth/comments/9899712.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9899712</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9899712</wfw:comment><description>&lt;p&gt;In TFS2008 SP1 and the subsequent &lt;a href="http://go.microsoft.com/?linkid=9635516"&gt;power tools release&lt;/a&gt; it was possible to create a team project from the command line. You can read Will-Peter’s detailed blog post on &lt;a href="http://dotnet.org.za/willy/archive/2008/08/21/vsts-tfs2008-service-pack-1-nugget-5-creating-a-team-project-from-the-command-line.aspx"&gt;Creating a Team Project from the command line in TFS2008&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In TFS2010, it’s still not as good as we would like (it’s still client-based rather than server-based). But there’s one important difference – the feature has been rolled into the product and is no longer a power tool.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How to create a team project from the command line in TFS2010:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Create an XML file with the following contents and save it somewhere (e.g. C:\temp\pcw.xml). Substitute the highlighted as appropriate:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;     &lt;br /&gt;&amp;lt;Project xmlns=&amp;quot;ProjectCreationSettingsFileSchema.xsd&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;TFSName&amp;gt;&lt;font color="#ff0000"&gt;http://tfsserver:8080/tfs/DefaultCollection&lt;/font&gt;&amp;lt;/TFSName&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;LogFolder&amp;gt;&lt;font color="#ff0000"&gt;c:\temp&lt;/font&gt;&amp;lt;/LogFolder&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ProjectName&amp;gt;&lt;font color="#ff0000"&gt;TestAgile2&lt;/font&gt;&amp;lt;/ProjectName&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ProjectSiteEnabled&amp;gt;&lt;font color="#ff0000"&gt;true&lt;/font&gt;&amp;lt;/ProjectSiteEnabled&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ProjectSiteTitle&amp;gt;&lt;font color="#ff0000"&gt;TestAgile2&lt;/font&gt;&amp;lt;/ProjectSiteTitle&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ProjectSiteDescription&amp;gt;&lt;font color="#ff0000"&gt;TestAgile2 &lt;/font&gt;project created from command line&amp;lt;/ProjectSiteDescription&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SccCreateType&amp;gt;New&amp;lt;/SccCreateType&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SccBranchFromPath&amp;gt;&amp;lt;/SccBranchFromPath&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ProcessTemplateName&amp;gt;&lt;font color="#ff0000"&gt;MSF for Agile Software Development v5.0&lt;/font&gt;&amp;lt;/ProcessTemplateName&amp;gt;      &lt;br /&gt;&amp;lt;/Project&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Once you have created the file, you need to prepare Visual Studio to be automated and trigger the automation from the command line.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open Visual Studio 2010&lt;/li&gt;    &lt;li&gt;Go to View &amp;gt; Team Explorer and make sure that the Team Explorer tab is active&lt;/li&gt;    &lt;li&gt;Close Visual Studio 2010&lt;/li&gt;    &lt;li&gt;Open a command prompt&lt;/li&gt;    &lt;li&gt;Type: CD /D %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE&lt;/li&gt;    &lt;li&gt;Type: &lt;strong&gt;devenv /command &amp;quot;File.BatchNewTeamProject &lt;font color="#ff0000"&gt;C:\temp\pcw.xml&amp;quot;&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;At this point, Visual Studio will open and the Team Explorer tab will show “Connecting to server\collection…”.&amp;#160; In the background it’s actually creating the team project. You can verify this by looking for a txt file with the name of your project in the path you specified for LogFolder. (e.g. c:\temp\TestAgile2.txt)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/ScriptingTeamProjectCreationinTFS2010_C908/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Team Explorer connecting to server" border="0" alt="Team Explorer connecting to server" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/ScriptingTeamProjectCreationinTFS2010_C908/image_thumb.png" width="286" height="101" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once the project has been created, you can select ‘Add existing team project’ and select it from the dialog.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/ScriptingTeamProjectCreationinTFS2010_C908/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Connect to Team Project dialog" border="0" alt="Connect to Team Project dialog" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/ScriptingTeamProjectCreationinTFS2010_C908/image_thumb_1.png" width="264" height="121" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you want to create a fully-automated project provisioning system there are a few other things that you’ll need to do on top of creating the team project. Some of these things are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Add users to TFS groups (Project Administrators, Contributors, Readers)&lt;/li&gt;    &lt;li&gt;Add permissions in sharepoint&lt;/li&gt;    &lt;li&gt;Add permissions in reporting services&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9899712" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/TFS+at+Microsoft/default.aspx">TFS at Microsoft</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category></item><item><title>VSTS Pioneer TFS2010 Dogfood Server: Statistics August 2009</title><link>http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server-statistics-august-2009.aspx</link><pubDate>Thu, 27 Aug 2009 21:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9887468</guid><dc:creator>grantholliday</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/granth/comments/9887468.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9887468</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9887468</wfw:comment><description>&lt;P&gt;&lt;I&gt;(This blog post is part of a series of posts on the new &lt;A href="http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx" mce_href="http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx"&gt;VSTS Pioneer TFS dogfood server&lt;/A&gt;.)&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;Everybody loves statistics, so here are the statistics for the first month on the VSTS Pioneer server.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Recent Users: 415&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Work Item Tracking&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Users with Assigned Work Items: 2,454&lt;/LI&gt;
&lt;LI&gt;Work Items: 111,319&lt;/LI&gt;
&lt;LI&gt;Areas &amp;amp; Iterations: 2,811&lt;/LI&gt;
&lt;LI&gt;Work Item Versions: 1,056,416&lt;/LI&gt;
&lt;LI&gt;Work Item Attachments: 50,833&lt;/LI&gt;
&lt;LI&gt;Work Item Queries: 2,965&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Version Control&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Files &amp;amp; Folders: 8,561,565&lt;/LI&gt;
&lt;LI&gt;Compressed File Sizes (MB): 325,080&lt;/LI&gt;
&lt;LI&gt;Uncompressed File Sizes (MB): 856,859&lt;/LI&gt;
&lt;LI&gt;Checkins: 18,867&lt;/LI&gt;
&lt;LI&gt;Shelvesets: 1,982&lt;/LI&gt;
&lt;LI&gt;Merge History: 1,789,333&lt;/LI&gt;
&lt;LI&gt;Pending Changes: 48,155&lt;/LI&gt;
&lt;LI&gt;Workspaces: 727&lt;/LI&gt;
&lt;LI&gt;Local Copies: 184,231,208&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;These statistics are captured by using the TFS Best Practices Analyzer and a custom configuration file. The configuration tells the BPA tool to run a series of &lt;A href="http://blogs.msdn.com/bharry/archive/2007/12/02/tfs-statistics-update.aspx" mce_href="http://blogs.msdn.com/bharry/archive/2007/12/02/tfs-statistics-update.aspx"&gt;SQL queries&lt;/A&gt; and dump the results to an XML file. I have then created an XSLT that transforms the results into a more user-friendly HTML file. The BPA tool is then scheduled to run every night and generate a fresh set of statistics. I’m working with the TFS BPA team to get this configuration built into the next version of the BPA tool – I don’t have an ETA on when that will ship, but stay tuned.&lt;/P&gt;
&lt;P&gt;This month I’ve also pulled the last 30 days of PerfMon counters to see how our hardware choices are holding up. If you’d like to setup something like this for yourself, have a look at my &lt;A href="http://blogs.msdn.com/granth/archive/2008/09/23/relogging-perfmon-binary-log-files-to-sql.aspx" mce_href="http://blogs.msdn.com/granth/archive/2008/09/23/relogging-perfmon-binary-log-files-to-sql.aspx"&gt;previous&lt;/A&gt; &lt;A href="http://blogs.msdn.com/granth/archive/2008/11/07/querying-perfmon-data-from-sql.aspx" mce_href="http://blogs.msdn.com/granth/archive/2008/11/07/querying-perfmon-data-from-sql.aspx"&gt;posts&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Disk Performance&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Things are looking OK on the IO front. 95% of the time we’re pushing 45MB/sec (Read) and 33MB/sec (Write) or less to and from our storage. The response time is &amp;lt;40ms which is nothing to worry about for the configuration we have.&lt;/P&gt;
&lt;P&gt;
&lt;TABLE border=1 cellSpacing=0 cellPadding=0 width=549&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=bottom width=167&gt;
&lt;P&gt;&lt;STRONG&gt;LogicalDisk(_Total)&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=118&gt;
&lt;P&gt;&lt;B&gt;50th Percentile &lt;/B&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=135&gt;
&lt;P&gt;&lt;B&gt;95th Percentile &lt;/B&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=128&gt;
&lt;P&gt;&lt;B&gt;99th Percentile &lt;/B&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=bottom width=167&gt;
&lt;P&gt;Avg. Disk sec/Read&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=118&gt;
&lt;P align=right&gt;0.004 &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=135&gt;
&lt;P align=right&gt;0.039 &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=128&gt;
&lt;P align=right&gt;0.371 &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=bottom width=167&gt;
&lt;P&gt;Avg. Disk sec/Write&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=118&gt;
&lt;P align=right&gt;0.003 &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=135&gt;
&lt;P align=right&gt;0.023 &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=128&gt;
&lt;P align=right&gt;0.063 &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=bottom width=167&gt;
&lt;P&gt;Disk Read Bytes/sec&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=118&gt;
&lt;P align=right&gt;2,142,548 &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=135&gt;
&lt;P align=right&gt;44,926,021 &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=128&gt;
&lt;P align=right&gt;94,273,782 &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=bottom width=167&gt;
&lt;P&gt;Disk Write Bytes/sec&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=118&gt;
&lt;P align=right&gt;1,908,518 &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=135&gt;
&lt;P align=right&gt;33,029,252 &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=128&gt;
&lt;P align=right&gt;70,802,346 &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=bottom width=167&gt;
&lt;P&gt;Avg. Disk Bytes/Transfer&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=118&gt;
&lt;P align=right&gt;42,867 &lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=135&gt;
&lt;P align=right&gt;133,887&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=bottom width=128&gt;
&lt;P align=right&gt;436,920 &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Memory&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;The memory usage on our SQL server has remained completely constant. This is because SQL is set to use a fixed amount and Analysis Services &amp;amp; Reporting Services share the rest.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;CPU Performance&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;(Avg: 32%). &lt;/EM&gt;The majority of this usage is SQL Server, with a small portion going to Analysis Services &amp;amp; Reporting Services. It’s nice to see that we still have plenty of capacity left for the usage to grow.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/VSTSPioneerTFS2010DogfoodServerStatistic_CEFF/clip_image001_2.png" mce_href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/VSTSPioneerTFS2010DogfoodServerStatistic_CEFF/clip_image001_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image001 border=0 alt=clip_image001 src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/VSTSPioneerTFS2010DogfoodServerStatistic_CEFF/clip_image001_thumb.png" width=550 height=336 mce_src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/VSTSPioneerTFS2010DogfoodServerStatistic_CEFF/clip_image001_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;That’s all for statistics, stay tuned for more next month.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9887468" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/TFS+at+Microsoft/default.aspx">TFS at Microsoft</category><category domain="http://blogs.msdn.com/granth/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/granth/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Version+Control/default.aspx">VSTS Version Control</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Developing/default.aspx">VSTS Developing</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category><category domain="http://blogs.msdn.com/granth/archive/tags/Pioneer+Dogfood/default.aspx">Pioneer Dogfood</category></item><item><title>VSTS Pioneer TFS2010 Dogfood Server – Hardware &amp; Topology</title><link>http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server-hardware-topology.aspx</link><pubDate>Thu, 27 Aug 2009 18:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9887201</guid><dc:creator>grantholliday</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/granth/comments/9887201.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9887201</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9887201</wfw:comment><description>&lt;P&gt;&lt;I&gt;(This blog post is part of a series of posts on the new &lt;A href="http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx" mce_href="http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx"&gt;VSTS Pioneer TFS dogfood server&lt;/A&gt;.)&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;I&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;While running the main TFS server for ~3,500 users in Developer Division we got a pretty good idea of the hardware required to support our enormous number of files, local versions &amp;amp; branches. &lt;/P&gt;
&lt;P&gt;We knew that:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;our SQL Server load patterns were very IO intensive&lt;/LI&gt;
&lt;LI&gt;our SQL Server load patterns were very CPU intensive&lt;/LI&gt;
&lt;LI&gt;our disk usage will grow by about 300% per year&lt;/LI&gt;
&lt;LI&gt;the number of operations the server performs will increase&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;Servers&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;We wanted to purchase and setup hardware that was flexible enough and designed to scale as our needs do. For this reason we settled on two identical servers that are part of the Microsoft IT recommended systems for our needs:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://h10010.www1.hp.com/wwpc/us/en/en/WF06a/15351-15351-3328412-241644-3328422-3454575.html" mce_href="http://h10010.www1.hp.com/wwpc/us/en/en/WF06a/15351-15351-3328412-241644-3328422-3454575.html"&gt;HP ProLiant DL580G5&lt;/A&gt; (room to add two more processors &amp;amp; upgradeable to 256GB RAM)&lt;/LI&gt;
&lt;LI&gt;Windows 2008 x64 SP2&lt;/LI&gt;
&lt;LI&gt;2x 6-core Intel Xeon X7460 2.66Ghz processors&lt;/LI&gt;
&lt;LI&gt;32GB RAM&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.qlogic.com/Products/SAN_products_FCHBA_QLE2460.aspx" mce_href="http://www.qlogic.com/Products/SAN_products_FCHBA_QLE2460.aspx"&gt;QLogic QLE2460 4Gbps Fiber Channel Host Bus Adapter&lt;/A&gt; (SAN connection)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/joe_chang/archive/2008/08/19/recommended-server-systems-2008-q3.aspx" mce_href="http://sqlblog.com/blogs/joe_chang/archive/2008/08/19/recommended-server-systems-2008-q3.aspx"&gt;According to Joe Chang&lt;/A&gt; who studies SQL Server performance, the “The X7460 (Dunnington) is a clear winner at 4-way for the high-call volume apps.” The 6-core CPUs also offer a pretty significant performance boost over the older quad-core CPUs:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;“On TPC-C, the 7460 six core generated a 34% edge over the quad core AMD and 56% advantage over the quad core X3750”, and&lt;/LI&gt;
&lt;LI&gt;“On TPC-E, the six core showed a 49% edge over the older quad core”&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;Virtual Machines&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;We are running 5 virtual machines at the moment with almost identical configurations. Since we’ll be constantly upgrading things like the .NET CLR that often don’t support build-to-build upgrades or clean uninstall, running the application tiers as VM’s makes perfect sense. It also improves our rollback story if we have a failed upgrade. (More about upgrade in a future post). 
&lt;TABLE border=1 cellSpacing=0 cellPadding=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=129&gt;
&lt;P&gt;&lt;B&gt;VM&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=279&gt;
&lt;P&gt;&lt;B&gt;Purpose&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=289&gt;
&lt;P&gt;&lt;B&gt;Configuration&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=129&gt;
&lt;P&gt;AT01, AT02, AT03&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=279&gt;
&lt;P&gt;TFS Application Tier&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=289&gt;
&lt;P&gt;Windows Server 2008 R2&lt;/P&gt;
&lt;P&gt;4 Virtual processors&lt;/P&gt;
&lt;P&gt;4GB RAM&lt;/P&gt;
&lt;P&gt;2 Virtual NICs&lt;/P&gt;
&lt;P&gt;1 VHD for C$&lt;/P&gt;
&lt;P&gt;1 VHD for version control cache&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=129&gt;
&lt;P&gt;MIRROR&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=279&gt;
&lt;P&gt;TFS-TFS Connector tool runs here&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=289&gt;
&lt;P&gt;Windows Server 2008 RTM&lt;/P&gt;
&lt;P&gt;4 Virtual processors&lt;/P&gt;
&lt;P&gt;4GB RAM&lt;/P&gt;
&lt;P&gt;1 Virtual NIC&lt;/P&gt;
&lt;P&gt;1 VHD for C$&lt;/P&gt;
&lt;P&gt;1 VHD for version control temporary workspace&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=129&gt;
&lt;P&gt;MOSS&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=279&gt;
&lt;P&gt;Microsoft Office SharePoint 2007 SP2 (Complete install)&lt;/P&gt;
&lt;P&gt;Web Front End, Excel Services, Search Services &amp;amp; Shared Services Provider&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=289&gt;
&lt;P&gt;Windows Server 2008 R2&lt;/P&gt;
&lt;P&gt;4 Virtual processors&lt;/P&gt;
&lt;P&gt;4GB RAM&lt;/P&gt;
&lt;P&gt;1 Virtual NIC&lt;/P&gt;
&lt;P&gt;1 VHD for C$&lt;/P&gt;
&lt;P&gt;Databases reside on physical SQL server&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Storage&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Since these servers are hosted by the DevDiv IT guys, we went with their recommendation for storage. They already have a massive storage infrastructure for build &amp;amp; drop servers built on &lt;A href="http://www.xiotech.com/" mce_href="http://www.xiotech.com/"&gt;Xiotech&lt;/A&gt; technology, so it was easy for them to add additional &lt;A href="http://www.xiotech.com/Products-and-Services_ISE.aspx" mce_href="http://www.xiotech.com/Products-and-Services_ISE.aspx"&gt;ISE units&lt;/A&gt; to meet our size &amp;amp; performance requirements. In the end we ended up with the following configuration:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;5TB of “Balanced” storage&lt;/LI&gt;
&lt;LI&gt;5TB of “Performance” storage&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The &lt;A href="http://sqlcat.com/top10lists/archive/2007/11/21/storage-top-10-best-practices.aspx" mce_href="http://sqlcat.com/top10lists/archive/2007/11/21/storage-top-10-best-practices.aspx"&gt;SQL Customer Advisory Team’s – Storage Top 10 Best Practices&lt;/A&gt; is a great resource when planning your own TFS deployment. In particular we specifically considered the following:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Isolate log from data at the physical disk level (e.g. O$ drive is on separate spindles)&lt;/LI&gt;
&lt;LI&gt;Consider configuration of TEMPDB database (e.g. T$ drive is on separate spindles)&lt;/LI&gt;
&lt;LI&gt;Make sure to give thought to the growth strategy up front (e.g. We can add additional ISE units at any time and grow any drive without having to migrate data)&lt;/LI&gt;
&lt;LI&gt;Lining up the number of data files with CPU’s has scalability advantages for allocation intensive workloads. (e.g. we have 12 datafiles for TempDB because we have 12 CPU cores)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Here’s how the virtual disks (LUNs) are configured on the server:&lt;/P&gt;
&lt;P&gt;&lt;B&gt;SERVER1 (SQL, SSRS, SSAS)&lt;/B&gt; 
&lt;TABLE border=1 cellSpacing=0 cellPadding=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=64&gt;
&lt;P&gt;&lt;B&gt;Drive&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=268&gt;
&lt;P&gt;&lt;B&gt;Purpose&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=98&gt;
&lt;P&gt;&lt;B&gt;Storage Type&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=79&gt;
&lt;P&gt;&lt;B&gt;Size (Gb)&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=64&gt;
&lt;P&gt;E$&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=268&gt;
&lt;P&gt;SQL backup dump drive&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=98&gt;
&lt;P&gt;Balanced&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=79&gt;
&lt;P&gt;2741&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=64&gt;
&lt;P&gt;G$&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=268&gt;
&lt;P&gt;LocalVersion filegroup&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=98&gt;
&lt;P&gt;Performance&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=79&gt;
&lt;P&gt;1673&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=64&gt;
&lt;P&gt;I$&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=268&gt;
&lt;P&gt;OLAP data&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=98&gt;
&lt;P&gt;Balanced&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=79&gt;
&lt;P&gt;25&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=64&gt;
&lt;P&gt;J$&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=268&gt;
&lt;P&gt;All database data&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=98&gt;
&lt;P&gt;Performance&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=79&gt;
&lt;P&gt;1833&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=64&gt;
&lt;P&gt;K$&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=268&gt;
&lt;P&gt;Version filegroup&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=98&gt;
&lt;P&gt;Performance&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=79&gt;
&lt;P&gt;971&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=64&gt;
&lt;P&gt;O$&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=268&gt;
&lt;P&gt;Transaction Logs&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=98&gt;
&lt;P&gt;Balanced&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=79&gt;
&lt;P&gt;1500&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=64&gt;
&lt;P&gt;T$&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=268&gt;
&lt;P&gt;TempDB&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=98&gt;
&lt;P&gt;Performance&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=79&gt;
&lt;P&gt;500&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;SERVER2 (Hyper-V Host)&lt;/B&gt; 
&lt;TABLE border=1 cellSpacing=0 cellPadding=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=64&gt;
&lt;P&gt;&lt;B&gt;Drive&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=102&gt;
&lt;P&gt;&lt;B&gt;Purpose&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=75&gt;
&lt;P&gt;&lt;B&gt;Type&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=79&gt;
&lt;P&gt;&lt;B&gt;Size (Gb)&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=64&gt;
&lt;P&gt;E$&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=102&gt;
&lt;P&gt;Hyper-V VM's&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=75&gt;
&lt;P&gt;Balanced&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=79&gt;
&lt;P&gt;743&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;What’s cool about the Xiotech stuff is that it’s like Lego blocks – as you need more storage or more performance, you just buy more blocks and plug them in. What’s even cooler about it, is that you can control the SAN using web services – the build lab uses the &lt;A href="http://code.msdn.microsoft.com/sanman" mce_href="http://code.msdn.microsoft.com/sanman"&gt;SANMan&lt;/A&gt; tool they built to move virtual disks between build servers and automate the provisioning of disk space.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Topology&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;At just over 400 users, we probably don’t need three AT machines in a NLB configuration. However, NLB is an important new feature of TFS2010 and it’s a scenario that we need to dogfood for ourselves. &lt;/P&gt;
&lt;P&gt;Here’s some quick facts about our topology:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;We have a couple of “friendly name” DNS records for the NLB cluster IP, Reporting Services &amp;amp; Analysis Services – this allows us to change the underlying infrastructure without users having to connect to a new addresses.&lt;/LI&gt;
&lt;LI&gt;We’re running Windows 2008 R2 RTM on our VM’s &amp;amp; soon on our physical servers&lt;/LI&gt;
&lt;LI&gt;A single VM was created, then sysprep’d and copied. This means that we can spin up a new VM in a very short time period. (Copy VHD, Add to Hyper-V, Start, Join Domain, Apply Updates, Done.)&lt;/LI&gt;
&lt;LI&gt;SERVER2 is running an SMTP server that relays mail on behalf of each of the other servers. At Microsoft, the corporate mail servers will only accept mail from authenticated users that have mailboxes. By running the SMTP server as an authenticated user, it allows us to run the application tiers as Network Service. This means when we have to change a password to a service account, it doesn’t cause a TFS service interruption – just a brief SMTP interruption.&lt;/LI&gt;
&lt;LI&gt;Since all the SQL services are running on the same box, they don’t need to be run as a domain accounts either – no service interruption &amp;amp; less places that need a password changed when it expires.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;A href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/VSTSPioneerTFS2010DogfoodServerHardwareT_9F35/clip_image001_2.png" mce_href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/VSTSPioneerTFS2010DogfoodServerHardwareT_9F35/clip_image001_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image001 border=0 alt=clip_image001 src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/VSTSPioneerTFS2010DogfoodServerHardwareT_9F35/clip_image001_thumb.png" width=501 height=384 mce_src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/VSTSPioneerTFS2010DogfoodServerHardwareT_9F35/clip_image001_thumb.png"&gt;&lt;/A&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;That’s it for hardware and topology, next post is on performance and Dogfood statistics.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9887201" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Planning+_2600_amp_3B00_+Tracking/default.aspx">VSTS Planning &amp;amp; Tracking</category><category domain="http://blogs.msdn.com/granth/archive/tags/TFS+at+Microsoft/default.aspx">TFS at Microsoft</category><category domain="http://blogs.msdn.com/granth/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category><category domain="http://blogs.msdn.com/granth/archive/tags/Pioneer+Dogfood/default.aspx">Pioneer Dogfood</category></item><item><title>Permissions required for Team Build Retention Policy in TFS2008</title><link>http://blogs.msdn.com/granth/archive/2009/06/25/permissions-required-for-team-build-retention-policy-in-tfs2008.aspx</link><pubDate>Thu, 25 Jun 2009 23:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9804475</guid><dc:creator>grantholliday</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/granth/comments/9804475.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9804475</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9804475</wfw:comment><description>&lt;P&gt;I got a question from one of our internal email lists today:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Our TFS build service is owned by a generic build account – domain\tfsbuild.&amp;nbsp; We have retention policy set up to retain a fixed set of builds.&amp;nbsp; The old builds were deleted when viewed via Team Explorer.&amp;nbsp; However, on the drop server, the builds are not deleted.&amp;nbsp; Apparently there’s an access issue when TFS attempted to delete the old builds.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Someone told me that the TFS service account will need admin rights. Is this true?&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/aaronhallberg/" mce_href="http://blogs.msdn.com/aaronhallberg/"&gt;Aaron&lt;/A&gt; from the Team Build team did a good job of explaining what was happening:&lt;/P&gt;
&lt;P&gt;When TFS deletes build drops it first tries to have the build agent do the deletion, and then falls back to the AT.&amp;nbsp; Ideally, then, both the build service account and the AT service account would have full control to the root of the drop location.&amp;nbsp; This does &lt;I&gt;not&lt;/I&gt; mean that these accounts need to be administrators on the box, however – that should not be a requirement.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;There should be errors in the event log on the AT whenever TFS &lt;STRONG&gt;tries&lt;/STRONG&gt; to fully delete a drop – these should include the error that caused the deletion to fail.&amp;nbsp; You might have to get your friendly TFS administrator to have a look on the server and see if they find any such errors for the builds whose drops didn’t get deleted.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Another is that the drop locations were in use when they got deleted – this is fairly common, typically resulting in everything on the drop but the handful of files that were in use getting deleted, along with whatever folder structure got preserved as a result.&amp;nbsp; You might have a look at your undeleted drops to see if &lt;I&gt;everything&lt;/I&gt; is there, or just a few files. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9804475" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Building+_2600_amp_3B00_+Releasing/default.aspx">VSTS Building &amp;amp; Releasing</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category></item><item><title>TFS Adoption at Microsoft – May 2009</title><link>http://blogs.msdn.com/granth/archive/2009/06/23/tfs-adoption-at-microsoft-may-2009.aspx</link><pubDate>Wed, 24 Jun 2009 01:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9800598</guid><dc:creator>grantholliday</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/granth/comments/9800598.aspx</comments><wfw:commentRss>http://blogs.msdn.com/granth/commentrss.aspx?PostID=9800598</wfw:commentRss><wfw:comment>http://blogs.msdn.com/granth/rsscomments.aspx?PostID=9800598</wfw:comment><description>&lt;P&gt;As promised last week in my &lt;A href="http://blogs.msdn.com/granth/archive/2009/06/23/radiotfs-podcast-on-dogfooding-tfs.aspx" mce_href="http://blogs.msdn.com/granth/archive/2009/06/23/radiotfs-podcast-on-dogfooding-tfs.aspx"&gt;Dogfooding TFS show on the RadioTFS podcast&lt;/A&gt;, here is the latest on &lt;A href="http://blogs.msdn.com/granth/archive/tags/TFS+at+Microsoft/default.aspx" mce_href="http://blogs.msdn.com/granth/archive/tags/TFS+at+Microsoft/default.aspx"&gt;TFS within Microsoft&lt;/A&gt; that &lt;A href="http://blogs.msdn.com/granth/archive/2008/09/05/tfs-adoption-at-microsoft.aspx" mce_href="http://blogs.msdn.com/granth/archive/2008/09/05/tfs-adoption-at-microsoft.aspx"&gt;myself&lt;/A&gt; and Brian &lt;A href="http://blogs.msdn.com/bharry/archive/2009/01/16/microsoft-tfs-adoption-update.aspx" mce_href="http://blogs.msdn.com/bharry/archive/2009/01/16/microsoft-tfs-adoption-update.aspx"&gt;have posted about in the past&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;May had the all-time peak in the total number of unique active users with 15,613. In addition, the total number of source code files stored surpassed 60 million. The total number of projects continues to increase and will end the fiscal year over 3,500, growing by over 1,300 in the last year.&amp;nbsp; MSIT RXD continues to lead the way using a TFS2010 pre-beta1 build with an average of 100 active users per week.&lt;/P&gt;
&lt;P&gt;Summary of growth indicators for the month: 
&lt;TABLE border=1 cellSpacing=0 cellPadding=0 width=500&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=177&gt;
&lt;P&gt;&lt;B&gt;May 2009&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=155&gt;
&lt;P&gt;&lt;B&gt;Growth&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=166&gt;
&lt;P&gt;&lt;B&gt;Totals&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=177&gt;
&lt;P&gt;&lt;B&gt;Unique Active Users&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=155&gt;
&lt;P&gt;+29&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=166&gt;
&lt;P&gt;15,613&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=177&gt;
&lt;P&gt;&lt;B&gt;Total Active Users&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=155&gt;
&lt;P&gt;+24&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=166&gt;
&lt;P&gt;17,680&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=177&gt;
&lt;P&gt;&lt;B&gt;Projects&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=155&gt;
&lt;P&gt;+98&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=166&gt;
&lt;P&gt;3,434&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=177&gt;
&lt;P&gt;&lt;B&gt;Work Items&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=155&gt;
&lt;P&gt;+170,436&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=166&gt;
&lt;P&gt;3,934,238&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=177&gt;
&lt;P&gt;&lt;B&gt;Source Code Files&lt;/B&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=178&gt;
&lt;P&gt;+1,760,516&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=214&gt;
&lt;P&gt;60,253,062&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;We call the internal TFS at Microsoft the “TFS Service Offering”. All the servers are setup and maintained by our partners in Microsoft IT.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;Active Users - Service Offering:&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;A href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image002_2.gif" mce_href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image002_2.gif"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="Active Users - Service Offering" border=0 alt="Active Users - Service Offering" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image002_thumb.gif" width=580 height=341 mce_src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image002_thumb.gif"&gt;&lt;/A&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;Projects &amp;amp; Unique Active Users Across Service Offering:&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;The number of team projects was up by 98 this month. Added to the chart this month are labels for the releases since January 2007 to give some perspective on growth and when versions were released.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image004_2.gif" mce_href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image004_2.gif"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image004 border=0 alt=clip_image004 src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image004_thumb.gif" width=580 height=409 mce_src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image004_thumb.gif"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image006_2.gif" mce_href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image006_2.gif"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image006 border=0 alt=clip_image006 src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image006_thumb.gif" width=580 height=348 mce_src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image006_thumb.gif"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;U&gt;Team Builds:&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Combined data from across the Service Offering. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image012_2.gif" mce_href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image012_2.gif"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image012 border=0 alt=clip_image012 src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image012_thumb.gif" width=580 height=334 mce_src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFSAdoptionatMicrosoftMay2009_FEF8/clip_image012_thumb.gif"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9800598" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/granth/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/granth/archive/tags/TFS+at+Microsoft/default.aspx">TFS at Microsoft</category><category domain="http://blogs.msdn.com/granth/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/granth/archive/tags/VSTS+Administering/default.aspx">VSTS Administering</category></item></channel></rss>