<?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>Grant Holliday's Blog</title><link>http://blogs.msdn.com/b/granth/</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.20496 (Build: 5.6.583.20496)</generator><item><title>TFS 2010: What Service Packs and Hotfixes Should I Install?</title><link>http://blogs.msdn.com/b/granth/archive/2012/01/03/tfs-2010-what-service-packs-and-hotfixes-should-i-install.aspx</link><pubDate>Tue, 03 Jan 2012 17:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10252641</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10252641</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10252641</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2012/01/03/tfs-2010-what-service-packs-and-hotfixes-should-i-install.aspx#comments</comments><description>&lt;p&gt;Team Foundation Server 2010 was released in April 2010. Since then, there have been a number of important Service Packs, Cumulative Updates and hotfixes that have been made available based upon internal usage at Microsoft and customer feedback via the support organisation. This blog post is an attempt at bringing together all the updates that are currently available.&lt;/p&gt;  &lt;h3&gt;Installation Guide&lt;/h3&gt;  &lt;p&gt;For a new install, you should always start with the latest version of the Installation Guide. The version on the web is newer than the version that's included on the DVD/ISO.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=24337"&gt;Team Foundation Server 2010 Installation Guide (TFSInstall-SP1-June2011.chm)&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Licensing Whitepaper&lt;/h3&gt;  &lt;p&gt;If you have questions about the licensing around Team Foundation Server, you should take a look at the following docs:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=13350"&gt;Visual Studio 2010 and MSDN Licensing White Paper (Aug 2011)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoftvolumelicensing.com/userights/Downloader.aspx?DocumentId=4878"&gt;Microsoft Product Use Rights (WW) (English) (January2012)&lt;/a&gt; (from &lt;a href="http://www.microsoftvolumelicensing.com/userights/DocumentSearch.aspx?Mode=3&amp;amp;DocumentTypeId=1"&gt;this Product Licensing page&lt;/a&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Application Tier&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=15070"&gt;Team Foundation Server 2010 RTM&lt;/a&gt; (ISO; 1,574 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Although this is a link to the trial edition ISO, it's the same bits that are used for the non-trial edition. The trial lasts for 90 days and you &lt;a href="http://msdn.microsoft.com/en-us/library/ms404852.aspx"&gt;Upgrade from the Trial Edition&lt;/a&gt; by entering your product key at any time. If you're having trouble getting your product key, &lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/05/07/extending-trials-of-tfs-2010.aspx"&gt;you can request a trial extension&lt;/a&gt; by following these instructions.&lt;/p&gt;  &lt;p&gt;The following updates must be installed in the correct order:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span style="text-decoration: underline"&gt;Recommended&lt;/span&gt;: &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=20506"&gt;Team Foundation Server 2010 SP1&lt;/a&gt; (477 MB) &lt;/li&gt;    &lt;li&gt;&lt;span style="text-decoration: underline"&gt;Recommended&lt;/span&gt;: &lt;a href="http://go.microsoft.com/fwlink/?LinkID=236945&amp;amp;clcid=0x409"&gt;Team Foundation Server 2010 SP1 Cumulative Update 2&lt;/a&gt; (23 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Database Tier&lt;/h3&gt;  &lt;p&gt;Team Foundation Server 2010 &lt;em&gt;requires&lt;/em&gt; SQL Server 2008 Service Pack 1 or later (TFS installation will block if you don't have it installed). If your IT department requires you to use SQL Server 2008 (rather than 2008 R2) it is recommended to install &lt;em&gt;at least &lt;/em&gt;SQL Server 2008 Service Pack 2, as it includes a number of important fixes that TFS benefits from. (See the &lt;a href="http://blogs.msdn.com/b/granth/archive/2009/11/06/vsts-pioneer-tfs2010-dogfood-server-statistics-october-2009.aspx"&gt;bottom of this post&lt;/a&gt; for more details if you're interested)&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27594"&gt;SQL Server 2008 Service Pack 3&lt;/a&gt; (372 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Although TFS 2010 shipped with SQL Server 2008, the R2 edition of SQL Server has been subsequently released. After an update to the Microsoft Product Use Rights document, you can now use SQL Server 2008 &lt;strong&gt;R2&lt;/strong&gt; with TFS 2010:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SQL SERVER TECHNOLOGY&lt;/p&gt;    &lt;p&gt;Visual Studio Team Foundation Server 2010 includes the right to use one instance of SQL Server 2008 Standard &lt;strong&gt;or SQL Server 2008 R2 Standard &lt;/strong&gt;in support of Team Foundation Server, as permitted in the Universal License Terms section for products that include SQL Server technology.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span style="text-decoration: underline"&gt;Recommended&lt;/span&gt;: &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26727"&gt;SQL Server 2008 R2 Service Pack 1&lt;/a&gt; (309 MB) &lt;/li&gt;    &lt;li&gt;&lt;span style="text-decoration: underline"&gt;Recommended&lt;/span&gt;: Cumulative Update 4 for SQL Server 2008 R2 SP1 (333 MB) (&lt;em&gt;&lt;a href="http://support.microsoft.com/kb/2622823"&gt;To address this issue with ghost record cleanup&lt;/a&gt;&lt;/em&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; There are Cumulative Updates that have been released after each of these Service Packs. The general recommendations from the SQL Server team are that you should a) &lt;strong&gt;Install the latest released Service Pack&lt;/strong&gt; for your version of SQL; b) Only install SQL Cumulative Updates &lt;strong&gt;when you encounter a specific issue that is addressed by that Cumulative Update&lt;/strong&gt;. Since there is a known issue which causes deleted Test Case Attachment records to persist as ghosted records, it is recommended to install the above cumulative update. The patch has not been ported to SQL 2008 pre-R2, so &lt;a href="http://geekswithblogs.net/terje/archive/2011/11/15/guide-to-reduce-tfs-database-growth-using-the-test-attachment.aspx"&gt;the workaround&lt;/a&gt; (as described by Terje) is to restart SQL server which restarts the stalled ghost cleanup process.&lt;/p&gt;  &lt;p&gt;If for some reason, you can’t run SQL Server 2008 SP3 or SQL Server 2008 R2 SP1, AND you are using SQL Enterprise Edition, you should take a look at this &lt;a href="http://support.microsoft.com/kb/2668489"&gt;KB on possible data corruption issues&lt;/a&gt; and recommended minimum patching levels.&lt;/p&gt;  &lt;h3&gt;Clients&lt;/h3&gt;  &lt;h4&gt;Visual Studio 2010&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=329"&gt;Visual Studio 2010 Team Explorer RTM&lt;/a&gt; (ISO; 304 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;(Note: If you have a license key for full version of Visual Studio 2010 Professional, the &lt;a title="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=2890" href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=2890"&gt;Visual Studio 2010 Professional Trial - Web Installer&lt;/a&gt; includes Team Explorer and it can be more convenient than downloading and &lt;a title="http://magiciso.com/tutorials/miso-magicdisc-overview.htm" href="http://magiciso.com/tutorials/miso-magicdisc-overview.htm"&gt;mounting the ISO file&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The following updates must be installed in the correct order:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span style="text-decoration: underline"&gt;Recommended&lt;/span&gt;: &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=23691"&gt;Visual Studio 2010 Team Explorer SP1&lt;/a&gt; (Web Installer). &lt;a title="http://go.microsoft.com/fwlink/?LinkId=210710" href="http://go.microsoft.com/fwlink/?LinkId=210710"&gt;ISO available here&lt;/a&gt; (1,480 MB). &lt;/li&gt;    &lt;li&gt;&lt;span style="text-decoration: underline"&gt;Recommended&lt;/span&gt;: &lt;a href="http://go.microsoft.com/fwlink/?LinkID=236945&amp;amp;clcid=0x409"&gt;Team Foundation Server 2010 SP1 Cumulative Update 2&lt;/a&gt; (23 MB) (details at &lt;a href="http://support.microsoft.com/kb/2643415"&gt;KB2643415&lt;/a&gt;, &lt;em&gt;it includes the previous &lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/10/19/multi-line-test-steps-available-in-microsoft-test-manager-among-other-things.aspx"&gt;TFS Compat GDR&lt;/a&gt;, support for the Team Foundation Service Preview, multi-line test steps editing, and other fixes)&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f"&gt;Team Foundation Server 2010 Power Tools&lt;/a&gt; (13 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The MSSCCI Provider allows non-Microsoft tools to connect to TFS:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/bce06506-be38-47a1-9f29-d3937d3d88d6"&gt;Visual Studio 2010 MSSCCI Provider (32-bit)&lt;/a&gt; (756 KB) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/69371e0f-738f-417d-bf2f-7bd2d08dc40b"&gt;Visual Studio 2010 MSSCCI Provider (64-bit)&lt;/a&gt; (760 KB) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Team Explorer Everywhere (TEE) is an Eclipse IDE/Java implementation of the TFS client:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span style="text-decoration: underline"&gt;Recommended&lt;/span&gt;: &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=25125"&gt;Visual Studio Team Explorer Everywhere 2010 with SP1&lt;/a&gt; (12 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Visual Studio 2008&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=16338"&gt;Visual Studio 2008 Team Explorer RTM&lt;/a&gt; (ISO; 387 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The following updates must be installed in the correct order:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=10986"&gt;Visual Studio 2008 SP1&lt;/a&gt; (Web Installer). &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=13276"&gt;ISO available here&lt;/a&gt; (831 MB) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=10834"&gt;Visual Studio 2008 Forward Compatibility Update for TFS2010&lt;/a&gt; (11 MB) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=15836"&gt;Team Foundation Server 2008 Power Tools&lt;/a&gt; (11 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Visual Studio 2005&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=7203"&gt;Visual Studio 2005 Team Explorer RTM&lt;/a&gt; (ISO; 247 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The following updates must be installed in the correct order:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=5553"&gt;Visual Studio 2005 SP1&lt;/a&gt; (432 MB) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=3263"&gt;Visual Studio 2005 Forward Compatibility Update for TFS2010&lt;/a&gt; (27 MB) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://archive.msdn.microsoft.com/KB946075/Release/ProjectReleases.aspx?ReleaseId=4028"&gt;Team Explorer 2005 Office Integration side-by-side fix&lt;/a&gt; (7 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Build Servers&lt;/h3&gt;  &lt;p&gt;A Team Build 2008 server cannot communicate with a Team Foundation Server 2010 server, as such all existing Team Build servers will need to be upgraded.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=15070"&gt;Team Foundation Server 2010 RTM&lt;/a&gt; (ISO; 1,574 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The following updates must be installed in the correct order:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span style="text-decoration: underline"&gt;Recommended&lt;/span&gt;: &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=20506"&gt;Team Foundation Server 2010 SP1&lt;/a&gt; (477 MB) &lt;/li&gt;    &lt;li&gt;&lt;span style="text-decoration: underline"&gt;Recommended&lt;/span&gt;: &lt;a href="http://go.microsoft.com/fwlink/?LinkID=236945&amp;amp;clcid=0x409"&gt;Team Foundation Server 2010 SP1 Cumulative Update 2&lt;/a&gt; (23 MB)&amp;#160; (details at &lt;a href="http://support.microsoft.com/kb/2643415"&gt;KB2643415&lt;/a&gt;, it includes the &lt;a href="http://support.microsoft.com/kb/2608743"&gt;hotfix that reduces test attachment data size&lt;/a&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you work in a cross-platform environment, you may also want to install the build extensions that allow you to execute Ant or Maven 2 builds and publish any JUnit test results back to TFS.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/2d7c8577-54b8-47ce-82a5-8649f579dcb6"&gt;Team Foundation Server Build Extensions Power Tool December 2011&lt;/a&gt; (344 KB) &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;SharePoint&lt;/h3&gt;  &lt;p&gt;For the latest recommended updates to SharePoint Server 2010 and Windows SharePoint Services 3.0, see the &lt;a href="http://technet.microsoft.com/en-us/office/ee748587.aspx"&gt;Office Update Center&lt;/a&gt;. You should at least have these:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;u&gt;Recommended&lt;/u&gt;: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0F56EBFB-183F-4F4D-9D41-DF1E5ACEB893"&gt;SharePoint Foundation 2010 SP1&lt;/a&gt; (43 MB) or &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B9FCDC42-EEA4-4C08-9169-A9A73E55B8D4"&gt;SharePoint Server 2010 SP1&lt;/a&gt; (387 MB)&lt;/li&gt;    &lt;li&gt;&lt;u&gt;Recommended&lt;/u&gt;: &lt;a href="http://support.microsoft.com/kb/2597058"&gt;December 2010 Cumulative Update for SharePoint Foundation 2010&lt;/a&gt; (Password-protected ZIP; 136 MB) or for &lt;a href="http://support.microsoft.com/kb/2597014"&gt;SharePoint Server 2010&lt;/a&gt; (Password-protected ZIP; 1.08 GB) &lt;em&gt;(since it includes the fix for &lt;/em&gt;&lt;a href="http://epmsource.com/2011/07/16/project-demo-imageexcel-services-problem-after-sp1-upgrade/"&gt;&lt;em&gt;this issue&lt;/em&gt;&lt;/a&gt;&lt;em&gt; which has impacted TFS Excel dashboards for some customers)&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://visualstudiogallery.msdn.microsoft.com/db469790-5e3e-42f3-906e-411a73795a1b" href="http://visualstudiogallery.msdn.microsoft.com/db469790-5e3e-42f3-906e-411a73795a1b"&gt;Microsoft Team Foundation Server 2010 MOSS Configuration Tool&lt;/a&gt; (2 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Feature Pack for Team Foundation Server and Project Server Integration&lt;/h3&gt;  &lt;p&gt;Only those machines that have the feature pack installed can participate in data synchronization between the two products. See the Configuration Quick Reference for installation pre-requisites and instructions.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://msdn.microsoft.com/en-us/subscriptions/securejson/GetDownloadRequest?brand=MSDN&amp;amp;fileId=45941"&gt;Feature Pack for Visual Studio Team Foundation Server and Project Server Integration&lt;/a&gt; (x64 version; 1 MB) (&lt;a href="https://msdn.microsoft.com/en-us/subscriptions/securejson/GetDownloadRequest?brand=MSDN&amp;amp;fileId=45846"&gt;x86 version also available&lt;/a&gt;; 1 MB) &lt;em&gt;(To access the feature pack, you must have an MSDN subscription for Visual Studio Ultimate.)&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Office Project Server 2007&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=8230"&gt;Office Project Server 2007 Service Pack 2&lt;/a&gt; (114 MB) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=216458"&gt;Office Project Server 2007 hotfix package: August 25, 2009&lt;/a&gt; (Password-protected ZIP; 10 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Office Project Server 2010&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span style="text-decoration: underline"&gt;Recommended&lt;/span&gt;: &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26636"&gt;Office Project Server 2010 Service Pack 1&lt;/a&gt; (406 MB) &lt;/li&gt;    &lt;li&gt;&lt;span style="text-decoration: underline"&gt;Recommended&lt;/span&gt;: &lt;a href="http://support.microsoft.com/kb/2536600"&gt;Office Project Server 2010 hotfix package: June 30, 2011&lt;/a&gt; (Password-protected ZIP; 977 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Process Templates&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/59ac03e3-df99-4776-be39-1917cbfc5d8e/"&gt;Microsoft Visual Studio Scrum 1.0&lt;/a&gt; (483 KB) &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Visual Studio 2010 Ultimate and Test Professional 2010&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f"&gt;Test Attachment Cleaner&lt;/a&gt; (13MB, &lt;em&gt;now included in the Team Foundation Server 2010 Power Tools. &lt;a href="http://visualstudiogallery.msdn.microsoft.com/3d37ce86-05f1-4165-957c-26aaa5ea1010/"&gt;Also available separately here&lt;/a&gt;&lt;/em&gt;)&amp;#160; – remove test diagnostic data to free up disk space on the server &lt;/li&gt;    &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/e79e4a0f-f670-47c2-9b8a-3b6f664bf4ae"&gt;Test Scribe&lt;/a&gt; (562 KB) – export Test Plans and Test Runs to Word documents. &lt;/li&gt;    &lt;li&gt;&lt;a href="https://msdn.microsoft.com/en-us/subscriptions/securedownloads/default.aspx?pv=18:370#FileId=44264"&gt;Visual Studio 2010 Feature Pack 2&lt;/a&gt; (2 MB) - expands testing support for Silverlight 4 and Firefox. Includes graphical Coded UI Test editor. &lt;em&gt;(To access the feature pack, you must have an MSDN subscription for Visual Studio Ultimate.)&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://msdn.microsoft.com/en-us/subscriptions/securedownloads/default.aspx?pv=18:370#FileId=43117"&gt;Visual Studio 2010 Visualization &amp;amp; Modelling Feature Pack&lt;/a&gt; (1 MB) &lt;/li&gt;    &lt;li&gt;&lt;a href="https://msdn.microsoft.com/en-us/subscriptions/securedownloads/default.aspx?pv=18:370#FileId=47183"&gt;Visual Studio 2010 Load Test Feature Pack&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=194188"&gt;Visual Studio 2010 Lab Management Feature Pack&lt;/a&gt; (17 MB) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hopefully you find this list of updates useful. If there is something that I’ve missed or you think should be on here, leave a comment or &lt;a href="http://blogs.msdn.com/b/granth/contact.aspx"&gt;send me an email&lt;/a&gt; and I'll do my best to include it.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;[Update 4 Jan 2012]&lt;/em&gt;&lt;/strong&gt;: Fixed SQL08 R2 SP1 link, added note about SQL CU's, added file types (e.g. ISO) and file sizes.     &lt;br /&gt;&lt;em&gt;&lt;strong&gt;[Update 9 Jan 2012]&lt;/strong&gt;&lt;/em&gt;: Added SQL08 R2 SP1 CU4 as recommended, since it addresses a ghost record cleanup issue. Added some other patches and feature packs.     &lt;br /&gt;&lt;strong&gt;&lt;em&gt;[Update 16 Jan 2012]&lt;/em&gt;&lt;/strong&gt;: Replaced TFS SP1 CU1, VS2010 SP1 TFS Compatibility GDR and Test attachment data hotfix with TFS SP1 CU2 link.     &lt;br /&gt;&lt;strong&gt;&lt;em&gt;[Update 29 Jan 2012]&lt;/em&gt;&lt;/strong&gt;: Updated link to Test Attachment Cleaner to point to the TFS 2010 Power Tools, since it’s now included there.     &lt;br /&gt;&lt;strong&gt;&lt;em&gt;[Update 31 Jan 2012]&lt;/em&gt;&lt;/strong&gt;: Fixed link to VS2010 SP1 ISO and ISO Mounting instructions.     &lt;br /&gt;&lt;strong&gt;&lt;em&gt;[Update 2 Feb 2012]&lt;/em&gt;&lt;/strong&gt;: Added link to corruption issues with SQL Enterprise editions. The previous SQL recommended patch levels include this patch, so they are unchanged. Added links to SharePoint service packs and cumulative updates.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10252641" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category></item><item><title>Team Build 2010: Associate Changesets and Work Items with a Dummy Build</title><link>http://blogs.msdn.com/b/granth/archive/2012/01/03/team-build-2010-associate-changesets-and-work-items-with-a-dummy-build.aspx</link><pubDate>Tue, 03 Jan 2012 13:11:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10252648</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10252648</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10252648</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2012/01/03/team-build-2010-associate-changesets-and-work-items-with-a-dummy-build.aspx#comments</comments><description>&lt;p&gt;Jason Prickett has a blog post called &lt;a href="http://blogs.msdn.com/b/jpricket/archive/2010/02/23/creating-fake-builds-in-tfs-build-2010.aspx"&gt;Creating Fake Builds in TFS Build 2010&lt;/a&gt;. It includes code for creating a dummy build service host, build controller, build definition and then a build result (&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuilddetail.aspx"&gt;IBuildDetail&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;One thing that isn’t shown is how to associate Changesets and Work Items to the build result. Fortunately its not that hard and you can use the following methods in the Team Build Object Model:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc340158.aspx"&gt;InformationNodeConverters.AddAssociatedChangesets (IBuildDetail, Changeset[])&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc339714.aspx"&gt;InformationNodeConverters.AddAssociatedWorkItems (IBuildDetail, WorkItem[])&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Once you’ve added the associations, you may need to save the InformationNode using &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuildinformationnode.save.aspx"&gt;IBuildInformationNode.Save()&lt;/a&gt;. However, some of them will save as part of the association. In my sample code below, I choose to save after making all the associations to minimize the number of round-trips to the server.&lt;/p&gt;  &lt;p&gt;The following sample code will go and find the specified Build Number then add an association for the specified changeset ID and all the work items that are associated to the changeset. &lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;/// &amp;lt;summary&amp;gt;
/// Finds the specified build number and adds changeset + work item associations
/// so that they appear in the build report.
/// &amp;lt;/summary&amp;gt;
private static void AssociateBuild(String collectionUri, String teamProject, String buildNumber, int changesetId)
{
  TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(collectionUri), new UICredentialsProvider());
  IBuildServer buildServer = (IBuildServer)tpc.GetService(typeof(IBuildServer));

  // Create a IBuildDefinitionSpec so that we can specify our build detail exactly and
  // avoid a potentially very expensive call to the server with QueryBuilds()
  IBuildDetailSpec spec = buildServer.CreateBuildDetailSpec(teamProject);
  spec.BuildNumber = buildNumber;
  spec.MaxBuildsPerDefinition = 1; // Redundant, but just for safety - we’re specifying the build number there should only be one
  IBuildDetail buildDetail = buildServer.QueryBuilds(spec).Builds[0];

  // Get the changeset that we want to associate
  Changeset changeset = tpc.GetService&amp;lt;VersionControlServer&amp;gt;().GetChangeset(changesetId);
  buildDetail.Information.AddAssociatedChangesets(new Changeset[] { changeset });
  buildDetail.Information.AddAssociatedWorkItems(changeset.WorkItems);
  buildDetail.Information.Save();
  buildDetail.Save();
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;By creating fake builds and associating changesets and work items, you’re closing the traceability loop within TFS. Build results act as a synchronization point and are an important metric in the data warehouse and reporting capabilities of TFS.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10252648" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Building+_2600_amp_3B00_+Releasing/">VSTS Building &amp;amp; Releasing</category></item><item><title>TFS: Empty Process Template</title><link>http://blogs.msdn.com/b/granth/archive/2012/01/03/tfs-empty-process-template.aspx</link><pubDate>Tue, 03 Jan 2012 11:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10252625</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10252625</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10252625</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2012/01/03/tfs-empty-process-template.aspx#comments</comments><description>&lt;p&gt;Over the last few years, I've occasionally had a need for an empty or minimal process template. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You are setting up a sync with the TFS Integration Tools and you want to do a "context sync" (i.e. let the tool copy the Work Item Types, Areas/Iterations, Global Lists from one server to another)&lt;/li&gt;
&lt;li&gt;You have a project for source control only and don't want any work item types&lt;/li&gt;
&lt;li&gt;You are testing changes to a Work Item Type and don't want to be bothered with field conflicts (e.g. if you're retrofitting a project to work with Microsoft Test Manager that was upgraded from TFS 2008 to TFS 2010)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Typically, my process is as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a new Team Project Collection on the server&lt;/li&gt;
&lt;li&gt;Don't create any Team Projects in the collection&lt;/li&gt;
&lt;li&gt;Download the MSF Agile Process Template&lt;/li&gt;
&lt;li&gt;Strip out everything that is not required (i.e. SharePoint, Reporting, Lab, Build, Work Item Types, Queries, etc)&lt;/li&gt;
&lt;li&gt;Rename it to the Empty Process Template&lt;/li&gt;
&lt;li&gt;Upload it to the TPC&lt;/li&gt;
&lt;li&gt;Create a new Team Project using the Empty Process Template&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I'm going to save you (and me) a bunch of time and let you &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-25-26-25/Empty-Process-Template.zip"&gt;download the Empty Process Template&lt;/a&gt; that I&amp;rsquo;ve already created.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A word of warning:&lt;/strong&gt; When using this process template, there are some problems that you can have in the future. Problems that I&amp;rsquo;ve come across:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No Build Process Templates. Since the &amp;lsquo;Build&amp;rsquo; parts are taken out of the process template, DefaultTemplate.xaml and UpgradeTemplate.xaml won&amp;rsquo;t get uploaded.&lt;/li&gt;
&lt;li&gt;Work Item Categories are empty. This means that you can&amp;rsquo;t use Microsoft Test Manager with the project until you add them in again.&lt;/li&gt;
&lt;li&gt;Lab Management won&amp;rsquo;t work with the team project.&lt;/li&gt;
&lt;li&gt;Other problems with permissions (build, work item query folders, Lab Management, etc) &amp;ndash; since many permissions are set during team project creation.&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10252625" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-25-26-25/Empty-Process-Template.zip" length="21875" type="application/zip" /><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category></item><item><title>IntelliTrace for Azure without Visual Studio</title><link>http://blogs.msdn.com/b/granth/archive/2011/02/20/intellitrace-for-azure-without-visual-studio.aspx</link><pubDate>Mon, 21 Feb 2011 04:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10132029</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10132029</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10132029</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2011/02/20/intellitrace-for-azure-without-visual-studio.aspx#comments</comments><description>&lt;p&gt;IntelliTrace is a very useful tool for diagnosing applications on the Windows Azure platform. It is especially invaluable for diagnosing problems that occur during the startup of your roles. You might have seen these sorts of problems when you do a deployment and it gets stuck in the &amp;quot;Starting role&amp;quot; state and continuously reboots.&lt;/p&gt;  &lt;h2&gt;Publishing via Visual Studio&lt;/h2&gt;  &lt;p&gt;If you are building and deploying your application using Visual Studio, then it's fairly straightforward to enable IntelliTrace. When you right-click your Cloud Service project and choose &lt;i&gt;Publish…&lt;/i&gt;, you're presented with a dialog where you can enable IntelliTrace.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/6712.clip_5F00_image002_5F00_220fcad3_2D00_2efa_2D00_4497_2D00_94bd_2D00_c33bac0cb3ac.jpg" width="450" height="271" /&gt;&lt;/p&gt;  &lt;p&gt;Under the covers, Visual Studio will build the service, create the package, include the IntelliTrace runtime and change the startup task to start IntelliTrace instead of the Azure runtime. Once the intermediate package is created, the tools then go ahead and upload the package and deploy it to Azure.&lt;/p&gt;  &lt;p&gt;For the official documentation see &lt;a href="http://msdn.microsoft.com/en-us/library/ff683671.aspx"&gt;Debugging a Deployed Hosted Service with IntelliTrace and Visual Studio&lt;/a&gt; on MSDN.&lt;/p&gt;  &lt;h1&gt;Retrieving IntelliTrace Logs via Visual Studio&lt;/h1&gt;  &lt;p&gt;Once your role is deployed and IntelliTrace is running, it's fairly straightforward to retrieve and view the logs in Visual Studio. In the &lt;i&gt;Server Explorer&lt;/i&gt; toolbar, open the Azure deployment, right-click a role instance and choose &lt;i&gt;View IntelliTrace Logs&lt;/i&gt; for that instance.&lt;/p&gt;  &lt;p&gt;Under the covers again, Visual Studio communicates with your role, restarts the IntelliTrace log file, downloads it to your machine and opens it. It's actually a little more complicated than that, which I'll cover later on.&lt;/p&gt;  &lt;h1&gt;Enabling IntelliTrace without Visual Studio&lt;/h1&gt;  &lt;p&gt;There are many cases where you may not want to build and deploy directly from Visual Studio. For example:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You have a build server that builds your Cloud Service project into a package. &lt;/li&gt;    &lt;li&gt;You have an operations team that does deployments to Azure and developers don't have direct access to the Azure portal or API. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Visual Studio supports creating a Cloud Service package without deploying it on the Publish dialog. However, when you select that option, it disables the option to enable IntelliTrace.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0042.clip_5F00_image004_5F00_7e1142f8_2D00_56ee_2D00_45f6_2D00_acfd_2D00_0ef2930ed83d.jpg" width="450" height="271" /&gt;&lt;/p&gt;  &lt;p&gt;With a small amount of digging in the &lt;i&gt;C:\Program Files (x86)\MSBuild\Microsoft\Cloud Service\1.0\Visual Studio 10.0\Microsoft.CloudService.targets &lt;/i&gt;file, it's easy enough to work out how to create an IntelliTrace enabled package without Visual Studio. At the top of the file, these properties are defined with default values:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;!-- IntelliTrace related properties that should be overriden externally to enable IntelliTrace. --&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;PropertyGroup&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160; &amp;lt;EnableIntelliTrace Condition=&amp;quot;'$(EnableIntelliTrace)' == ''&amp;quot;&amp;gt;false&amp;lt;/EnableIntelliTrace&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160; &amp;lt;IntelliTraceConnectionString Condition=&amp;quot;'$(IntelliTraceConnectionString)' == ''&amp;quot;&amp;gt;UseDevelopmentStorage=true&amp;lt;/IntelliTraceConnectionString&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;/PropertyGroup&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To enable the IntelliTrace collector in a role, all you need to do is set the EnableIntelliTrace property in MSBuild. For example, here's how to run the build from a command-line:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;msbuild WindowsAzureProject1.ccproj /p:EnableIntelliTrace=&lt;font style="background-color: #ffff00"&gt;true&lt;/font&gt;;      &lt;br /&gt;IntelliTraceConnectionString=&amp;quot;BaseEndpoint=core.windows.net;      &lt;br /&gt;Protocol=https;AccountName=&lt;font style="background-color: #ffff00"&gt;storageaccountname&lt;/font&gt;;AccountKey=&lt;font style="background-color: #ffff00"&gt;storagekey&lt;/font&gt;&amp;quot;      &lt;br /&gt;/t:&lt;font style="background-color: #ffff00"&gt;Publish&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Once the build completes, you are left with a Cloud Service Package file (*.cspkg) and a Cloud Service Configuration file (*.cscfg). These include the IntelliTrace runtime files, a remote-control agent (which is described in the next section) and a startup task.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/4274.clip_5F00_image006_5F00_42d74581_2D00_e3b3_2D00_4233_2D00_bd85_2D00_1a9da4aa91ae.jpg" width="223" height="139" /&gt;&lt;/p&gt;  &lt;p&gt;These package and configuration files can then be handed off to somebody to deploy via the Windows Azure Portal. The Windows Azure Service Management API can also be used from PowerShell or custom code to deploy. If an operations team is managing your Azure deployments, then this is exactly what you want.&lt;/p&gt;  &lt;h2&gt;How does Visual Studio retrieve logs? It uses IntelliTraceAgentHost.exe&lt;/h2&gt;  &lt;p&gt;If you look at the intermediate un-packaged (e.g. &lt;i&gt;\bin\Debug\WindowsAzureProject1.csx\roles\WorkerRole1\plugins\IntelliTrace&lt;/i&gt;), you'll see that along with the IntelliTrace runtime, there is an additional application: IntelliTraceAgentHost.exe.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/8461.clip_5F00_image008_5F00_439fdc58_2D00_6bac_2D00_4676_2D00_b2ce_2D00_8686b8374b1f.jpg" width="576" height="368" /&gt;&lt;/p&gt;  &lt;p&gt;If you look at the RoleModel.xml file (e.g. &lt;i&gt;\bin\Debug\WindowsAzureProject1.csx\roles\WorkerRole1\RoleModel.xml&lt;/i&gt;), you'll see that it's started as a foreground task along with the IntelliTrace startup task that starts the runtime.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;RoleModel xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; name=&amp;quot;WorkerRole1&amp;quot; version=&amp;quot;1.3.11122.0038&amp;quot; xmlns=&amp;quot;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160; &amp;lt;Startup&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Task commandLine=&amp;quot;&lt;font style="background-color: #ffff00"&gt;IntelliTraceStartupTask.exe&lt;/font&gt;&amp;quot; executionContext=&amp;quot;elevated&amp;quot; relativePath=&amp;quot;plugins\IntelliTrace&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Environment&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Variable name=&amp;quot;IntelliTraceConnectionString&amp;quot; value=&amp;quot;%@IntelliTraceConnectionString%&amp;quot; /&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Environment&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Task&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Task commandLine=&amp;quot;&lt;font style="background-color: #ffff00"&gt;IntelliTraceAgentHost.exe&lt;/font&gt;&amp;quot; executionContext=&amp;quot;elevated&amp;quot; taskType=&amp;quot;foreground&amp;quot; relativePath=&amp;quot;plugins\IntelliTrace&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Environment /&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Task&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160; &amp;lt;/Startup&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This agent is running all the time and is the mechanism by which Visual Studio interacts with the IntelliTrace runtime that is running on a role. It listens on an Azure Queue and responds when somebody in Visual Studio selects &lt;i&gt;View IntelliTrace Logs&lt;/i&gt;. The queue name is based upon a hash of the &lt;i&gt;deployment id&lt;/i&gt;, &lt;i&gt;role name&lt;/i&gt; and &lt;i&gt;instance id&lt;/i&gt; of the deployed application.&lt;/p&gt;  &lt;p&gt;Once the agent receives a command on the Queue (from somebody choosing &lt;i&gt;View IntelliTrace Logs&lt;/i&gt; from Visual Studio), it pushes status messages onto a client response queue. The message looks something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;IntelliTraceAgentRequest Id=&amp;quot;7e7d6413d22644b38e3986da24e0c84b&amp;quot; TargetProcessId=&amp;quot;0&amp;quot; ResponseQueueName=&amp;quot;itraceresp9e221eabf27044d4baccf1a8b7ccf765&amp;quot; /&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The stages of the request are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Pending &lt;/li&gt;    &lt;li&gt;CreatingSnapshot &lt;/li&gt;    &lt;li&gt;Uploading &lt;/li&gt;    &lt;li&gt;Completed &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Because the IntelliTrace runtime is running and writing to the log file, the file is in use and cannot be just copied off disk. It turns out that within IntelliTrace.exe there is a hidden option called &lt;i&gt;copy&lt;/i&gt;. When run with this option, IntelliTrace will stop logging to the current file and create a new one. This allows the old file to be read without restarting IntelliTrace and the application that is being traced.&lt;/p&gt;  &lt;p&gt;Once the snapshot file has been created, the agent then uploads it to blob storage in the &lt;i&gt;intellitrace &lt;/i&gt;container.&lt;/p&gt;  &lt;p&gt;When the upload is complete, the agent then pushes a message on the queue which informs Visual Studio where to retrieve the file from. The message looks something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;IntelliTraceAgentResponse RequestId=&amp;quot;7e7d6413d22644b38e3986da24e0c84b &amp;quot; Status=&amp;quot;Completed&amp;quot; PercentComplete=&amp;quot;100&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160; &amp;lt;Error&amp;gt;&amp;lt;/Error&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160; &amp;lt;Logs&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Log BlobName=&amp;quot;320af8081d0143e694c5d885ab544ea7&amp;quot; ProcessName=&amp;quot;WaIISHost&amp;quot; IsActive=&amp;quot;true&amp;quot; /&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Log BlobName=&amp;quot;b60c6aaeb2c445a7ab7b4fb7a99ea877&amp;quot; ProcessName=&amp;quot;w3wp&amp;quot; IsActive=&amp;quot;true&amp;quot; /&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160; &amp;lt;/Logs&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160; &amp;lt;Warnings /&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;/IntelliTraceAgentResponse&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Retrieving IntelliTrace Log Files without Visual Studio&lt;/h2&gt;  &lt;p&gt;Although the &lt;i&gt;View IntelliTrace Logs&lt;/i&gt; option in the &lt;i&gt;Server Explorer &lt;/i&gt;toolbox&lt;i&gt; &lt;/i&gt;works great, it requires you to have the API management certificate and storage account keys for your service. In the scenario where you have a separate operations team that deploys and runs your service, it's unlikely that developers will have access to these keys. It's also unlikely that an operations person will feel comfortable opening Visual Studio and using it to retrieve the logs.&lt;/p&gt;  &lt;p&gt;Fortunately, we can use the same API that Visual Studio uses and build our own application that triggers a snapshot and downloads the IntelliTrace file from blob storage.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download the source from the attachment at the end of this post. &lt;/li&gt;    &lt;li&gt;Unzip the source and open it in Visual Studio. &lt;/li&gt;    &lt;li&gt;For each project, add references to the following files      &lt;ul&gt;       &lt;li&gt;C:\Program Files (x86)\Windows Azure Tools\1.3\Visual Studio 10.0\Microsoft.Cct.IntelliTrace.Client.dll &lt;/li&gt;        &lt;li&gt;C:\Program Files (x86)\Windows Azure Tools\1.3\Visual Studio 10.0\Microsoft.Cct.IntelliTrace.Common.dll &lt;/li&gt;        &lt;li&gt;C:\Program Files\Windows Azure SDK\v1.3\ref\Microsoft.WindowsAzure.StorageClient.dll &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;For each project, modify app.config and configure the &lt;i&gt;StorageAccountConnectionString&lt;/i&gt;. &lt;/li&gt; &lt;/ol&gt;  &lt;h2&gt;IntelliTraceControl.exe&lt;/h2&gt;  &lt;p&gt;This console application determines the correct queue name and pushes a message on the queue to initiate an IntelliTrace log snapshot. Once the snapshot is uploaded to blob storage, it will return a GUID that represents the object in the blob container.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Usage: IntelliTraceControl.exe &amp;lt;deployment id&amp;gt; &amp;lt;role name&amp;gt; &amp;lt;instance id&amp;gt;&lt;/p&gt;    &lt;p&gt;Example: IntelliTraceControl.exe 300f08dca40d468bbb57488359aa3991 WebRole1 0&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;IntelliTraceDownload.exe&lt;/h2&gt;  &lt;p&gt;Using the GUID returned from the previous app, this app will connect to blob storage and download the *.iTrace file to your TEMP directory. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Usage: IntelliTraceDownload.exe &amp;lt;guid&amp;gt;&lt;/p&gt;    &lt;p&gt;Example: IntelliTraceDownload 84404febbde847348341c98b96e91a2b&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Once you have retrieved the file, you can open it in Visual Studio for diagnosing problems.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10132029" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-13-20-29/IntelliTraceControl_2D00_source.zip" length="17121" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/granth/archive/tags/Other/">Other</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/Azure/">Azure</category></item><item><title>TFS2010: Test Attachment Cleaner and why you should be using it</title><link>http://blogs.msdn.com/b/granth/archive/2011/02/12/tfs2010-test-attachment-cleaner-and-why-you-should-be-using-it.aspx</link><pubDate>Sun, 13 Feb 2011 01:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10128613</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10128613</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10128613</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2011/02/12/tfs2010-test-attachment-cleaner-and-why-you-should-be-using-it.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;[Update: 1 Nov 2011] There is an update available for TFS 2010 SP1 that prevents many of the large test attachments being stored in the database in the first place. You can download it from &lt;a title="http://support.microsoft.com/kb/2608743" href="http://support.microsoft.com/kb/2608743"&gt;KB2608743&lt;/a&gt; or read more about it on Annuthra's blog post: &lt;a title="http://blogs.msdn.com/b/anutthara/archive/2011/10/30/gsjgd.aspx" href="http://blogs.msdn.com/b/anutthara/archive/2011/10/30/gsjgd.aspx"&gt;Reduce the size of test data in VS 2010 by avoiding publishing deployment binaries into TFS&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The execution of a Test Run in Team Foundation Server 2010 (whether automated or manual) generates a bunch of diagnostic data, for example, IntelliTrace logs (.iTrace), Video log files, Test Result (.trx) and Code Coverage (.cov) files. This diagnostic data is critical in eliminating the &amp;ldquo;no repro&amp;rdquo; bug scenarios between the testers and developers.&lt;/p&gt;
&lt;p&gt;However, the downside of these rich diagnostic data captures is that the volume of the diagnostic data, over a period of time, can grow at a rapid pace. The Team Foundation Server administrator has little or no control over what data gets attached as part of Test Runs. There are no policy settings to limit the size of the data capture and there is no retention policy to determine how long to hold this data before initiating a cleanup.&lt;/p&gt;
&lt;p&gt;A few months ago, the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/3d37ce86-05f1-4165-957c-26aaa5ea1010/"&gt;Test Attachment Cleaner for Visual Studio Ultimate 2010 &amp;amp; Test Professional 2010&lt;/a&gt; power tool was released which addresses these shortcomings in a command-line tool.&lt;/p&gt;
&lt;p&gt;Over the last 18 months, the &lt;a href="http://blogs.msdn.com/b/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx"&gt;TFS 2010 Dogfood server that we call &amp;lsquo;Pioneer&amp;rsquo;&lt;/a&gt; has been slowly accumulating test attachments. Recently, the size of the attachments (680GB) eclipsed the size of version control content (563GB) and that Test Attachments older than 6 months represented over 400GB of storage.&lt;/p&gt;
&lt;p&gt;After downloading and installing the &lt;strong&gt;tcmpt.exe&lt;/strong&gt; tool, there are a five sample settings files in: C:\Program Files (x86)\Microsoft\Test Attachment Cleaner\SampleSettings&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Scenario#1:&lt;/strong&gt; Identify list of attachments taking up database space of more than 1 GB per attachment&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scenario#2:&lt;/strong&gt; View/Delete IntelliTrace log files over a size of 500 MB&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scenario#3:&lt;/strong&gt; View/Delete all Video log files with Test run creation date older than specific date with no active bugs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scenario#4:&lt;/strong&gt; View/Delete all TRX &amp;amp; COV log files for test runs that happened between 30 and 90 days in age &amp;amp; do not perform the Linked Bugs lookup query&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scenario#5:&lt;/strong&gt; View/Delete all custom/user attachments over size of 5 MB with no active or resolved bugs on test runs between 2 dates&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After checking with the test managers and users of the system, we got approval to remove the old content and we ended up creating our own settings file:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;lt;!-- View/Delete all attachments on test runs older than 6 months, that are not linked to active bugs --&amp;gt; &lt;br /&gt;&amp;lt;DeletionCriteria&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;TestRun&amp;gt; &lt;br /&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AgeInDays OlderThan="180" /&amp;gt;&lt;/strong&gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/TestRun&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;Attachment /&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;LinkedBugs&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Exclude state="Active" /&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/LinkedBugs&amp;gt; &lt;br /&gt;&amp;lt;/DeletionCriteria&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Then we ran the command-line tool with the following parameters:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TCMPT.exe attachmentCleanup /collection:http://localhost:8080/tfs/CollectionName /teamproject:TeamProjectName /settingsFile:OlderThan6Months.xml /mode:delete&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The following charts show the result after the tool ran for over 36 hours:&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/1541.image_5F00_7.png" width="452" height="356" /&gt;&amp;nbsp; &lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/1134.image_5F00_8.png" width="452" height="355" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Warning: &lt;/strong&gt;Running queries on the operational stores is not recommended and you should run them on a pre-production/backup server if possible. In this case, this particular query is read-only and returns very quickly, so the impact to the overall system is low. Also, since the schema is intentionally not documented or supported, there are no promises that it won't change for a future release (in fact, this table already has changed as part of &lt;/em&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/10/28/tfs-on-windows-azure-at-the-pdc.aspx"&gt;&lt;em&gt;making TFS work on Azure&lt;/em&gt;&lt;/a&gt;&lt;em&gt;).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To see the growth of your Test Case attachments over time, you can use the following SQL query on each of your collection databases:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;SELECT&amp;nbsp; &lt;br /&gt;&amp;nbsp; DATEADD(month,DATEDIFF(month,0,creationdate),0) as [Month], &lt;br /&gt;&amp;nbsp; SUM(CompressedLength) / 1024 / 1024 as AttachmentSizeMB &lt;br /&gt;FROM tbl_Attachment WITH (nolock) &lt;br /&gt;GROUP BY DATEADD(month,DATEDIFF(month,0,creationdate),0)&amp;nbsp; &lt;br /&gt;ORDER BY DATEADD(month,DATEDIFF(month,0,creationdate),0)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The result will be something like this:&lt;/p&gt;
&lt;table style="width: 149px;" border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="81"&gt;
&lt;p&gt;&lt;b&gt;Month&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="66" align="right"&gt;
&lt;p&gt;&lt;b&gt;Size (MB)&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="81"&gt;
&lt;p&gt;2/1/2010&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="66" align="right"&gt;
&lt;p&gt;1,790&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="81"&gt;
&lt;p&gt;3/1/2010&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="66" align="right"&gt;
&lt;p&gt;3,663&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="81"&gt;
&lt;p&gt;4/1/2010&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="66" align="right"&gt;
&lt;p&gt;5,193&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="81"&gt;
&lt;p&gt;5/1/2010&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="66" align="right"&gt;
&lt;p&gt;5,503&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="81"&gt;
&lt;p&gt;6/1/2010&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="66" align="right"&gt;
&lt;p&gt;4,701&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="81"&gt;
&lt;p&gt;7/1/2010&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="66" align="right"&gt;
&lt;p&gt;8,594&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="81"&gt;
&lt;p&gt;8/1/2010&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="66" align="right"&gt;
&lt;p&gt;11,313&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="81"&gt;
&lt;p&gt;9/1/2010&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="66" align="right"&gt;
&lt;p&gt;22,333&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="81"&gt;
&lt;p&gt;10/1/2010&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="66" align="right"&gt;
&lt;p&gt;18,597&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="81"&gt;
&lt;p&gt;11/1/2010&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="66" align="right"&gt;
&lt;p&gt;16,409&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="81"&gt;
&lt;p&gt;12/1/2010&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="66" align="right"&gt;
&lt;p&gt;20,720&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;To see the size of all the tables in your collection databases, you can use the following SQL query:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;-- Table rows and data sizes &lt;br /&gt;CREATE TABLE #t (&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [name] NVARCHAR(128),&amp;nbsp;&amp;nbsp;&amp;nbsp; [rows] CHAR(11),&amp;nbsp;&amp;nbsp;&amp;nbsp; reserved VARCHAR(18),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data VARCHAR(18),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; index_size VARCHAR(18),&amp;nbsp;&amp;nbsp;&amp;nbsp; unused VARCHAR(18)) &lt;br /&gt;GO&lt;/p&gt;
&lt;p&gt;INSERT #t &lt;br /&gt;EXEC [sys].[sp_MSforeachtable] 'EXEC sp_spaceused ''?''' &lt;br /&gt;GO&lt;/p&gt;
&lt;p&gt;SELECT &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; name as TableName, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rows, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ROUND(CAST(REPLACE(reserved, ' KB', '') as float) / 1024,2) as ReservedMB, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ROUND(CAST(REPLACE(data, ' KB', '') as float) / 1024,2) as DataMB, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ROUND(CAST(REPLACE(index_size, ' KB', '') as float) / 1024,2) as IndexMB, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ROUND(CAST(REPLACE(unused, ' KB', '') as float) / 1024,2) as UnusedMB &lt;br /&gt;FROM #t &lt;br /&gt;ORDER BY CAST(REPLACE(reserved, ' KB', '') as float) DESC &lt;br /&gt;GO&lt;/p&gt;
&lt;p&gt;DROP TABLE #t &lt;br /&gt;GO&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The result will be something like the following table. The names can be a little confusing (which is unlikely to change, since the schema isn&amp;rsquo;t documented/supported). I&amp;rsquo;ve added a column that gives a brief description of what the tables are used for.&lt;/p&gt;
&lt;table style="width: 599px;" border="1" cellspacing="1" cellpadding="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;&lt;strong&gt;TableName&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="166"&gt;
&lt;p&gt;&lt;strong&gt;Area&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="87" align="right"&gt;
&lt;p align="center"&gt;&lt;strong&gt;Rows&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="76" align="right"&gt;
&lt;p align="center"&gt;&lt;strong&gt;DataMB&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="82" align="right"&gt;
&lt;p align="center"&gt;&lt;strong&gt;IndexMB&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;tbl_Content&lt;/p&gt;
&lt;/td&gt;
&lt;td width="166"&gt;Version Control&lt;/td&gt;
&lt;td valign="top" width="87" align="right"&gt;
&lt;p&gt;6,954,871&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="77" align="right"&gt;
&lt;p&gt;573,861&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="83" align="right"&gt;
&lt;p&gt;12&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;tbl_AttachmentContent&lt;/p&gt;
&lt;/td&gt;
&lt;td width="166"&gt;Test Attachments&lt;/td&gt;
&lt;td valign="top" width="87" align="right"&gt;
&lt;p&gt;1,827,941&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="77" align="right"&gt;
&lt;p&gt;275,244&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="83" align="right"&gt;
&lt;p&gt;47&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;Attachments&lt;/p&gt;
&lt;/td&gt;
&lt;td width="166"&gt;Work Item Attachments&lt;/td&gt;
&lt;td valign="top" width="87" align="right"&gt;
&lt;p&gt;218,738&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="77" align="right"&gt;
&lt;p&gt;50,303&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="83" align="right"&gt;
&lt;p&gt;33&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;tbl_LocalVersion&lt;/p&gt;
&lt;/td&gt;
&lt;td width="166"&gt;Version Control&lt;/td&gt;
&lt;td valign="top" width="87" align="right"&gt;
&lt;p&gt;381,589,040&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="77" align="right"&gt;
&lt;p&gt;25,006&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="83" align="right"&gt;
&lt;p&gt;23,354&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;WorkItemLongTexts&lt;/p&gt;
&lt;/td&gt;
&lt;td width="166"&gt;Work Item Tracking&lt;/td&gt;
&lt;td valign="top" width="87" align="right"&gt;
&lt;p&gt;10,732,588&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="77" align="right"&gt;
&lt;p&gt;10,733&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="83" align="right"&gt;
&lt;p&gt;3,638&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;WorkItemsWere&lt;/p&gt;
&lt;/td&gt;
&lt;td width="166"&gt;Work Item Tracking&lt;/td&gt;
&lt;td valign="top" width="87" align="right"&gt;
&lt;p&gt;5,701,208&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="77" align="right"&gt;
&lt;p&gt;9,693&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="83" align="right"&gt;
&lt;p&gt;4,534&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;tbl_Version&lt;/p&gt;
&lt;/td&gt;
&lt;td width="166"&gt;Version Control&lt;/td&gt;
&lt;td valign="top" width="87" align="right"&gt;
&lt;p&gt;54,614,825&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="77" align="right"&gt;
&lt;p&gt;3,184&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="83" align="right"&gt;
&lt;p&gt;6,923&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;tbl_PropertyValue&lt;/p&gt;
&lt;/td&gt;
&lt;td width="166"&gt;Properties (Code Churn)&lt;/td&gt;
&lt;td valign="top" width="87" align="right"&gt;
&lt;p&gt;152,825,451&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="77" align="right"&gt;
&lt;p&gt;4,056&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="83" align="right"&gt;
&lt;p&gt;3,676&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="180"&gt;
&lt;p&gt;tbl_BuildInformationField&lt;/p&gt;
&lt;/td&gt;
&lt;td width="166"&gt;Team Build&lt;/td&gt;
&lt;td valign="top" width="87" align="right"&gt;
&lt;p&gt;41,565,170&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="78" align="right"&gt;
&lt;p&gt;5,930&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="84" align="right"&gt;
&lt;p&gt;186&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10128613" width="1" height="1"&gt;</description></item><item><title>TFS2010: Update Activity Logging Cleanup Interval</title><link>http://blogs.msdn.com/b/granth/archive/2010/11/11/tfs2010-update-activity-logging-cleanup-interval.aspx</link><pubDate>Fri, 12 Nov 2010 02:12:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10089900</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10089900</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10089900</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/11/11/tfs2010-update-activity-logging-cleanup-interval.aspx#comments</comments><description>&lt;p&gt;Every command that a user executes in TFS is logged to the database. This is very useful for investigating performance issues and other things. I’ve blogged before about &lt;a href="http://blogs.msdn.com/b/granth/archive/2009/01/23/analyzing-tfs-performance-with-tfsactivitylogging-and-custom-user-agents.aspx"&gt;how to query this table&lt;/a&gt; for TFS2008. Those same queries work for TFS2010 as well.&lt;/p&gt;  &lt;p&gt;By default, each night a job runs that deletes log entries older than 14 days. If you want to change that interval, you’ll need to update the cleanup job settings in each collection.&lt;/p&gt;  &lt;p&gt;Here’s a PowerShell script that will do this for you.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If you are not running it on the AT itself. You will need Team Explorer 2010 installed.&lt;/li&gt;    &lt;li&gt;You will need PowerShell installed &amp;amp; run: set-executionmode unrestricted&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You will need to update the highlighted values (server URL &amp;amp; retention period).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;$a = [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;#Update configuration URL as necessary      &lt;br /&gt;$configServer = new-object Microsoft.TeamFoundation.Client.TfsConfigurationServer &amp;quot;&lt;font style="background-color: #ffff00" color="#ff0000"&gt;&lt;strong&gt;http://localhost:8080/tfs/&lt;/strong&gt;&lt;/font&gt;&amp;quot;&lt;/p&gt;    &lt;p&gt;$collectionService = $configServer.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamProjectCollectionService])&lt;/p&gt;    &lt;p&gt;$collectionService.GetCollections() | %{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $collectionName = $_.Name       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $collectionId = $_.Id&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; trap [Microsoft.TeamFoundation.TeamFoundationServiceUnavailableException]      &lt;br /&gt;&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;#160;&amp;#160;&amp;#160;&amp;#160; write-warning (&amp;quot;Skipping project collection &amp;quot;+ $collectionName +&amp;quot; (&amp;quot;+ $collectionId +&amp;quot;): &amp;quot;+ $_.Exception.Message)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; continue       &lt;br /&gt;&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;#160; &amp;amp;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write-host       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write-host (&amp;quot;* Operating on project collection &amp;quot;+ $collectionName +&amp;quot; (&amp;quot;+ $collectionId +&amp;quot;).&amp;quot;)&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $projectCollection = $configServer.GetTeamProjectCollection($collectionId)      &lt;br /&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; # Check that we can access the team project collection.       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $projectCollection.Connect(&amp;quot;None&amp;quot;)       &lt;br /&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #Get the job service       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $jobService = $projectCollection.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamFoundationJobService])&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #Get the job for the current collection      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $job = $jobService.QueryJobs() | where { $_.Name -eq &amp;quot;Team Foundation Server Activity Logging Administration&amp;quot; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #Output the current setting      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Output &amp;quot;Current setting:&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $job.Data.SqlStatement.InnerXml&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #Update the current setting      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $job.Data.SqlStatement.InnerXml = &amp;quot;&amp;lt;string&amp;gt;EXEC prc_PruneCommands @maxAgeDays = &lt;font style="background-color: #ffff00" color="#ff0000"&gt;&lt;strong&gt;30&lt;/strong&gt;&lt;/font&gt;&amp;lt;/string&amp;gt;&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Output &amp;quot;New setting:&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $job.Data.SqlStatement.InnerXml&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Output &amp;quot;Saving job definition... &amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $jobService.UpdateJob($job)&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}       &lt;/p&gt;&lt;/blockquote&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10089900" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/Performance/">Performance</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/PowerShell/">PowerShell</category></item><item><title>Getting Started with TFS Hosting from DiscountASP.NET</title><link>http://blogs.msdn.com/b/granth/archive/2010/10/17/getting-started-with-tfs-hosting-from-discountasp-net.aspx</link><pubDate>Mon, 18 Oct 2010 01:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10077128</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10077128</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10077128</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/10/17/getting-started-with-tfs-hosting-from-discountasp-net.aspx#comments</comments><description>&lt;p&gt;With the &lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/10/04/a-new-generation-of-hosted-tfs.aspx"&gt;recent reorganization of SPLA prices&lt;/a&gt; for Team Foundation Server, there&amp;rsquo;s been some new offerings in the Hosted TFS space. I&amp;rsquo;ve blogged about &lt;a href="http://blogs.msdn.com/b/granth/archive/2010/07/16/hosted-team-foundation-server.aspx"&gt;other TFS hosting services&lt;/a&gt; in the past and there&amp;rsquo;s a list of the &lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/team-foundation-server/hosting"&gt;companies that provide TFS hosting services here&lt;/a&gt;. Now there&amp;rsquo;s a new player in the hosted Team Foundation Server market: &lt;a href="http://discountasp.net/tfs/"&gt;DiscountASP.NET&lt;/a&gt;, who are known for their existing ASP.NET web hosting services.&lt;/p&gt;
&lt;p&gt;Both &lt;a href="http://discountasp.net/tfs/tfs-hosting-features-pricing.aspx"&gt;DiscountASP.NET&lt;/a&gt; and &lt;a href="http://www.saasmadeeasy.com/home/team-foundation-server-2010/pricing/"&gt;SaaS Made Easy&lt;/a&gt; offer the &amp;ldquo;Basic&amp;rdquo; version of Team Foundation Server 2010 as a hosted service. It includes all Version Control and Work Item Tracking functionality along with Web Access. However, SharePoint, Reporting Services and Analysis Services integration is not included. Here are the two services compared:&lt;/p&gt;
&lt;table align="center" cellpadding="1" cellspacing="0" border="1" style="width: 400px;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;&lt;a href="http://discountasp.net/tfs/tfs-hosting-features-pricing.aspx"&gt;DiscountASP.NET&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;&lt;a href="http://www.saasmadeeasy.com/home/team-foundation-server-2010/pricing/"&gt;SaaS Made Easy&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;Project Collections&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;1&lt;/p&gt;
&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;1&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;Team Projects&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;Unlimited&lt;/p&gt;
&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;Unlimited&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;Disk Space&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;3GB&lt;/p&gt;
&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;&lt;strong&gt;5GB&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;Discounts for &amp;gt;10 Users&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;Yes&lt;/p&gt;
&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;Yes&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;Price / User / Month (USD)&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;$20&lt;/p&gt;
&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;&lt;strong&gt;$15&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;Setup Fee&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;$25&lt;/p&gt;
&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="center"&gt;&lt;strong&gt;$0&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For people that are happy with the value that TFS provides and want to use it without the hassle of setting up and running the server themselves, both of these are pretty compelling offers. To see how easy it was to get started and what the experience was like, I gave it a try myself.&lt;/p&gt;
&lt;h3&gt;Step 1: Signing Up&lt;/h3&gt;
&lt;p&gt;Either browse to &lt;a href="http://discountasp.net/"&gt;http://discountasp.net/&lt;/a&gt; and click through from the front page, or directly to &lt;a href="https://www.discountasp.net/tfs/signup/" title="https://www.discountasp.net/tfs/signup/"&gt;https://www.discountasp.net/tfs/signup/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/4336.image_5F00_70B32DEF.png"&gt;&lt;img height="401" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/1512.image_5F00_thumb_5F00_46838007.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then click &amp;lsquo;Next&amp;rsquo; and specify a name for your Team Project Collection along with how many users you want to start with. A Team Project Collection is just a container for Team Projects &amp;amp; it doesn&amp;rsquo;t really matter what you specify, as long as it&amp;rsquo;s a valid name and not already taken.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/6403.image_5F00_7E55C42A.png"&gt;&lt;img height="401" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/8546.image_5F00_thumb_5F00_75F1EED3.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then click &amp;lsquo;Next&amp;rsquo; and start filling out your billing details along with your credit card. The service will be automatically renewed each month and charged to the card that you specify here. So if you don&amp;rsquo;t need the service any more, make sure you cancel it before the end of the month.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/5238.image_5F00_099ED868.png"&gt;&lt;img height="402" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/3250.image_5F00_thumb_5F00_1AA3064B.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once you have filled out all the details and sent it off, you&amp;rsquo;ll get an email within minutes from &lt;a href="mailto:tfs.support@discountasp.net"&gt;tfs.support@discountasp.net&lt;/a&gt; with your activation confirmation and your control panel username.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/3582.image_5F00_39797A29.png"&gt;&lt;img height="484" width="448" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/8546.image_5F00_thumb_5F00_668E66F7.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Step 2: Creating A User&lt;/h3&gt;
&lt;p&gt;Now you&amp;rsquo;ll need to follow the steps in the &lt;a href="http://tfs.discountasp.net/KB/a847/getting-started.aspx"&gt;Getting Started KB article&lt;/a&gt; to create your first username &amp;amp; password that you can use to connect to the server.&lt;/p&gt;
&lt;p&gt;Browse to &lt;a href="https://mytfs.discountasp.net/users/manage.aspx" title="https://mytfs.discountasp.net/users/manage.aspx"&gt;https://mytfs.discountasp.net/users/manage.aspx&lt;/a&gt; and type in your control panel username (tfs_123456) along with the password you specified in the sign up form.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0435.image_5F00_30A971DD.png"&gt;&lt;img height="355" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/4130.image_5F00_thumb_5F00_5DBE5EAB.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you clicked the link above, you&amp;rsquo;ll be taken directly to the Manage Users screen. If not, you&amp;rsquo;ll have to select the link from the navigation bar on the left. Once you&amp;rsquo;re on this screen enter in a username and password (4-12 characters) and click &amp;lsquo;Add&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/4336.image_5F00_75E1C906.png"&gt;&lt;img height="484" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/3755.image_5F00_thumb_5F00_62C09C5A.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Before you can use this account, you&amp;rsquo;ll need to browse to the &lt;a href="https://mytfs.discountasp.net/projectcollection/groupmembership.aspx"&gt;Global Groups&lt;/a&gt; management screen and add the user to the Project Collection Administrators Group by clicking &amp;lsquo;View/Edit Members&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2502.image_5F00_1A92E07E.png"&gt;&lt;img height="421" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/7384.image_5F00_thumb_5F00_799F6DD6.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then select your user and click &amp;lsquo;Save&amp;rsquo;. The page doesn&amp;rsquo;t redirect anywhere, so it may appear like nothing happened. As long as a user is checked and you clicked Save, everything should be fine.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/5807.image_5F00_3890EE72.png"&gt;&lt;img height="421" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2260.image_5F00_thumb_5F00_69B02912.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Before you leave the control panel, you need to find out your Server Name and Server URL. Click the &lt;a href="https://mytfs.discountasp.net/account/accountinfo.aspx"&gt;Account Information&lt;/a&gt; link and copy the Server URL. It should be something like &lt;strong&gt;&lt;span style="font-size: small;"&gt;https://tfs01.discountasp.net/tfs&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/5238.image_5F00_3673EFA9.png"&gt;&lt;img height="484" width="595" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2502.image_5F00_thumb_5F00_75657044.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Step 3: Install Visual Studio 2010&lt;/h3&gt;
&lt;p&gt;Before you can start using your new collection, you need to create a Team Project in it. The only way to do this is with Visual Studio Team Explorer, which is the client for Team Foundation Server. The good news is that if you already have Visual Studio 2010 Professional (or higher) installed, you already have Team Explorer. If you are using Visual Studio Express, you will need to download and install Team Explorer or a different edition of Visual Studio.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t have Team Explorer already installed, you have three options for getting it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download and Install the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=FE4F9904-0480-4C9D-A264-02FEDD78AB38"&gt;Microsoft Visual Studio Team Explorer 2010 ISO&lt;/a&gt;. This is a free download but you can&amp;rsquo;t write any code with this edition of Visual Studio. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Download and Install the &lt;/strong&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=26bae65f-b0df-4081-ae6e-1d828993d4d0&amp;amp;displaylang=en"&gt;&lt;strong&gt;90-day trial of Visual Studio Professional&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Download and Install the &lt;/strong&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e2a1a098-995e-4468-816d-7fdbe0a64f38&amp;amp;displaylang=en"&gt;&lt;strong&gt;90-day trial of Visual Studio Ultimate&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you want to use Visual Studio and you don&amp;rsquo;t already have it installed, you should consider the last two options. They are fully-functional (time limited) versions and they have &lt;strong&gt;a great web-installer experience&lt;/strong&gt;. If you download the first option, you have to mess around with &lt;a href="http://www.magiciso.com/tutorials/miso-magicdisc-overview.htm"&gt;mounting an ISO file&lt;/a&gt; or burning it to a CD before you can install it. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Once you have Visual Studio installed, you should consider installing the &lt;/em&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=8406ef19-35a3-4c03-a145-08ba982f3cef&amp;amp;displaylang=en"&gt;&lt;em&gt;Lab Management GDR&lt;/em&gt;&lt;/a&gt;&lt;em&gt; which includes a rollup of fixes for issues in the client (as well as the server) that were found after 2010 shipped.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Step 4: Connect to TFS&lt;/h3&gt;
&lt;p&gt;Now that you have Visual Studio Team Explorer installed, you have a client that can connect to Team Foundation Server.&lt;/p&gt;
&lt;p&gt;Open Visual Studio from the Start Menu and then choose &amp;lsquo;Connect To Team Foundation Server&amp;rsquo; from the start page, or click the &amp;lsquo;Connect to Team Project&amp;rsquo; icon in the Team Explorer pane.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/7875.image_5F00_143BE423.png"&gt;&lt;img height="419" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/8546.image_5F00_thumb_5F00_40786B07.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the Connect to Team Project dialog, click &amp;lsquo;Servers&amp;hellip;&amp;rsquo;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0447.image_5F00_7EFDB8AD.png"&gt;&lt;img height="402" width="643" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/4667.image_5F00_thumb_5F00_178D55FE.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the Add/Remove Team Foundation Server dialog, click &amp;lsquo;Add&amp;hellip;&amp;rsquo;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/1512.image_5F00_022FA096.png"&gt;&lt;img height="419" width="657" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2514.image_5F00_thumb_5F00_5D9E1311.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Type or paste the Server URL that we copied earlier from your Account Information screen and click &amp;lsquo;OK&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0435.image_5F00_613C2DEE.png"&gt;&lt;img height="298" width="466" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/5810.image_5F00_thumb_5F00_00EB07B7.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you want to skip these steps or you want to pre-populate the server as part of a logon script or something, you run these two commands (after replacing the URL with your own server&amp;rsquo;s URL)&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;reg add HKCU\Software\Microsoft\VisualStudio\10.0\TeamFoundation\Instances\&lt;strong&gt;tfs01.discountasp.net&lt;/strong&gt; /v Uri /d &lt;strong&gt;https://tfs01.discountasp.net/tfs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;reg add HKCU\Software\Microsoft\VisualStudio\10.0\TeamFoundation\Instances\&lt;strong&gt;tfs01.discountasp.net&lt;/strong&gt; /v Type /t REG_DWORD /d 0&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After selecting the server, you will be prompted for your TFS username and password. This is not your control panel password &amp;ndash; it&amp;rsquo;s the user that you created in the control panel and added to the Project Collection Administrators group. Enter your credentials and click &amp;lsquo;OK&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/5635.image_5F00_4E873437.png"&gt;&lt;img height="329" width="443" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/8865.image_5F00_thumb_5F00_7C0853FA.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You should now see the server added to your list of servers. Click &amp;lsquo;Close&amp;rsquo;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/7875.image_5F00_1497F14B.png"&gt;&lt;img height="419" width="657" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/8867.image_5F00_thumb_5F00_46235EE0.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You should now see your Team Project Collection selected and no Team Projects available. Click &amp;lsquo;Connect&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2502.image_5F00_0CA04EE9.png"&gt;&lt;img height="402" width="643" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/1512.image_5F00_thumb_5F00_6C190F36.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Step 5: Upload the Visual Studio Scrum Process Template (Optional)&lt;/h2&gt;
&lt;p&gt;A process template defines the work item types, queries and groups that your team project will start with. All of these things can be changed after the project is created, but it&amp;rsquo;s good to start with a process template that is close to your needs.&lt;/p&gt;
&lt;p&gt;Your new Team Project Collection comes with the two built-in process templates:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;MSF for Agile Software Development v5.0&lt;/strong&gt; - This template allows you to organize and track the progress and health of a small- to medium-sized Agile project. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MSF for CMMI Process Improvement v5.0&lt;/strong&gt; - This template allows you to organize and track the progress and health of projects that require a framework for process improvement and an auditable record of decisions. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After Team Foundation Server 2010 shipped, the product team released a new process template called &amp;ldquo;Microsoft Visual Studio Scrum 1.0&amp;rdquo;. This process template includes the following work item types: Sprint, Product Backlog Item, Bug, Task, Impediment &amp;amp; Test Case. It also includes a number of reports like Sprint Burndown and Velocity, however since Reporting Services and the Analysis Services cube isn&amp;rsquo;t included in the &amp;ldquo;Basic&amp;rdquo; version of TFS, these reports aren&amp;rsquo;t available with this hosting package. If you want these features, you&amp;rsquo;ll need to move up from the &amp;ldquo;Basic&amp;rdquo; version.&lt;/p&gt;
&lt;p&gt;If you want to see the other process templates that are available, or download the Process Template Editor to build your own, you can go to the &lt;a href="http://msdn.microsoft.com/en-us/vstudio/aa718795.aspx"&gt;Process Templates and Tools page on MSDN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want to use the Scrum work item types, go to the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e"&gt;Visual Studio Scrum 1.0 download page&lt;/a&gt; and download the process template.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/3568.image_5F00_3295FF3F.png"&gt;&lt;img height="431" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/7701.image_5F00_thumb_5F00_01B347D4.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once you&amp;rsquo;ve downloaded the template, run the &lt;strong&gt;Microsoft_Visual_Studio_Scrum_1.0.msi&lt;/strong&gt; installer. Take note of the path that the process templates are going to be installed in.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0435.image_5F00_273CC535.png"&gt;&lt;img height="424" width="517" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2117.image_5F00_thumb_5F00_58C832CA.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once the installation is complete, go back to Visual Studio. Right-click the server and choose &amp;lsquo;Team Project Collection Settings&amp;rsquo; then &amp;lsquo;Process Template Manager&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/1031.image_5F00_3436A546.png"&gt;&lt;img height="419" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/4670.image_5F00_thumb_5F00_0570ECA4.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When the Process Template Manager dialog appears, click Upload.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/1524.image_5F00_765A0DC9.png"&gt;&lt;img height="418" width="585" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/6403.image_5F00_thumb_5F00_51C88045.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Browse to the location that you installed the process template to and click &amp;lsquo;Select Folder. For example: &lt;strong&gt;C:\Program Files (x86)\Microsoft\Microsoft Visual Studio Scrum 1.0\Process Template&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/4263.image_5F00_515C4D50.png"&gt;&lt;img height="426" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/4657.image_5F00_thumb_5F00_5BAD71B0.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The process template will then be uploaded to your Team Project Collection.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0458.image_5F00_4FAB817C.png"&gt;&lt;img height="418" width="585" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/6811.image_5F00_thumb_5F00_2F2441CA.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Step 6: Create a New Team Project&lt;/h3&gt;
&lt;p&gt;After this, you are then connected to TFS and you can create a new team project. To do this, open the Team Explorer window if it is not already visible. Right-click the server and choose &amp;lsquo;Create New Team Project&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0044.image_5F00_2798D25D.png"&gt;&lt;img height="419" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0451.image_5F00_thumb_5F00_46DB7930.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At this point, the New Team Project Wizard will appear and you can give your team project a name and click &amp;lsquo;Next&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/6327.image_5F00_1EC8CA11.png"&gt;&lt;img height="484" width="596" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/8877.image_5F00_thumb_5F00_173D5AA4.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the next screen of the wizard, you can choose the process template that you want to start with. After this, you can click &amp;lsquo;Finish&amp;rsquo; since there&amp;rsquo;s no more questions to answer in the &amp;ldquo;Basic&amp;rdquo; version of TFS. The team project will then be created on the server using the template you specified.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/8468.image_5F00_6B205DB2.png"&gt;&lt;img height="484" width="596" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/4263.image_5F00_thumb_5F00_6394EE45.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once the New Team Project wizard finishes, you will have a team project that you can use for Work Item Tracking and Version Control.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/7801.image_5F00_54EA4260.png"&gt;&lt;img height="419" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/1031.image_5F00_thumb_5F00_4DEA8FDB.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Step 7: Store the Username and Password&lt;/h3&gt;
&lt;p&gt;If you don&amp;rsquo;t want to be prompted every time you can save your username and password on your computer. To do this you have two options:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Control Panel &amp;gt; User Accounts and Family Safety &amp;gt; Credential Manager &amp;gt; Add a Windows credential &lt;/li&gt;
&lt;li&gt;Or, Click Start &amp;gt; Run &amp;gt; Type: &lt;strong&gt;RunDll32.exe keymgr.dll,KRShowKeyMgr&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/3000.image_5F00_6B7C6ADA.png"&gt;&lt;img height="328" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0066.image_5F00_thumb_5F00_7C8098BD.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then enter in your server name, username and password. Now when you open Visual Studio, use Web Access or the command line tools &amp;ndash; it will automatically sign you in with these credentials.&lt;/p&gt;
&lt;h3&gt;Step 8: Connecting to Team Web Access&lt;/h3&gt;
&lt;p&gt;This is not really a setup step, but you&amp;rsquo;ll want to know how to connect to Team Web Access so you can manage your work items with just a web browser. Simply browse to the Server URL (e.g. &lt;a href="https://tfs01.discountasp.net/tfs/" title="https://tfs01.discountasp.net/tfs/"&gt;https://tfs01.discountasp.net/tfs/&lt;/a&gt;), enter your username and password if prompted and then you&amp;rsquo;re connected.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/8880.image_5F00_3BDE4C4E.png"&gt;&lt;img height="468" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/7206.image_5F00_thumb_5F00_220A161F.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then you can create, view, edit and query bugs through the web access UI.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/7823.image_5F00_27E4B9B8.png"&gt;&lt;img height="406" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2110.image_5F00_thumb_5F00_06F14711.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Summary&lt;/h3&gt;
&lt;p&gt;Now that you&amp;rsquo;ve created a Team Project, you can use Visual Studio Team Explorer or any other TFS tool (like Microsoft Test Manager, Excel, Project or Outlook) to access your source code and work items.&lt;/p&gt;
&lt;p&gt;Through my very unscientific tests of clicking around and uploading/downloading source, the server (which is hosted in Los Angeles, CA) seems fast enough to work with. It&amp;rsquo;s great to see another TFS Hosting partner out there offering a great service at a reasonable price.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10077128" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Planning+_2600_amp_3B00_+Tracking/">VSTS Planning &amp;amp; Tracking</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Version+Control/">VSTS Version Control</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Developing/">VSTS Developing</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category></item><item><title>SharePoint 2010 Error: HTTP Error 400. The size of the request headers is too long</title><link>http://blogs.msdn.com/b/granth/archive/2010/08/13/sharepoint-2010-error-http-error-400-the-size-of-the-request-headers-is-too-long.aspx</link><pubDate>Sat, 14 Aug 2010 00:35:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10050062</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10050062</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10050062</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/08/13/sharepoint-2010-error-http-error-400-the-size-of-the-request-headers-is-too-long.aspx#comments</comments><description>&lt;p&gt;Recently I started seeing this error on our internal TFS SharePoint sites.&amp;#160; These sites use the Excel Dashboards and if I opened more than a few sites at a time, I would start getting the following popup error:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Unexpected callback response!     &lt;br /&gt;Error: 400 Bad Request&lt;/p&gt;    &lt;p&gt;Bad Request - Request Too Long     &lt;br /&gt;HTTP Error 400. The size of the request headers is too long.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It didn’t seem to matter which browser I used or whether I ran in Private Mode (to get a clean session each time) – the result was always the same error.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://support.microsoft.com/kb/920862/en-us" href="http://support.microsoft.com/kb/920862/en-us"&gt;http://support.microsoft.com/kb/920862/en-us&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Save this as a .reg file and run it.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Windows Registry Editor Version 5.00&lt;/p&gt;    &lt;p&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters]     &lt;br /&gt;&amp;quot;MaxFieldLength&amp;quot;=dword:0000fffe      &lt;br /&gt;&amp;quot;MaxRequestBytes&amp;quot;=dword:0007a120&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;After setting the settings, you will need to restart your server so that HTTP.sys can pickup the new parameters.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10050062" width="1" height="1"&gt;</description></item><item><title>Monitoring the TFS Data Warehouse - FAQ</title><link>http://blogs.msdn.com/b/granth/archive/2010/07/12/monitoring-the-tfs-data-warehouse-faq.aspx</link><pubDate>Tue, 13 Jul 2010 00:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10037419</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10037419</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10037419</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/07/12/monitoring-the-tfs-data-warehouse-faq.aspx#comments</comments><description>&lt;p&gt;This blog post describes how to interpret the &lt;a href="http://blogs.msdn.com/b/granth/archive/2010/07/12/administrative-report-pack-for-team-foundation-server-2010.aspx"&gt;Data Warehouse &amp;amp; Cube status reports included in the Administrative Report Pack for TFS2010&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="file:///C:/Users/granth/Desktop/AdminReportPack/#One"&gt;Should I expect some processing jobs to fail?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="file:///C:/Users/granth/Desktop/AdminReportPack/#Two"&gt;Why might most processing jobs fail?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="file:///C:/Users/granth/Desktop/AdminReportPack/#Three"&gt;Why might many Incremental jobs be upgraded to Full jobs?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="file:///C:/Users/granth/Desktop/AdminReportPack/#Four"&gt;Why might a processing job run for a very long time (~24 hours) before it fails?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="file:///C:/Users/granth/Desktop/AdminReportPack/#Five"&gt;How might I resolve a schema merge conflict to unblock a team project collection?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If these tips and the help topic for the error message do not answer your question, see the Microsoft Technical Forums for Visual Studio Team Foundation (&lt;a href="http://go.microsoft.com/fwlink/?LinkId=54490"&gt;http://go.microsoft.com/fwlink/?LinkId=54490&lt;/a&gt;). You can search these forums to find information about a variety of troubleshooting topics. In addition, the forums are monitored to provide quick responses to your questions.&lt;/p&gt;
&lt;h3&gt;&lt;a name="One"&gt;Should I expect some processing jobs to fail?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Yes. Some failures are part of typical processing. Three jobs require exclusive access to the same warehouse resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimize Databases (runs at 1:00 AM by default) &lt;/li&gt;
&lt;li&gt;Full Analysis Data Sync (runs at 2:00 AM by default) &lt;/li&gt;
&lt;li&gt;Incremental Analysis Data Sync (runs every two hours by default) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of these jobs can run in parallel with any other job on the list. If one job is already in progress when another job starts, the second job will fail quickly with error TF276000, as shown in the following illustration of the Cube Processing Details view of the Processing Times report:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/3581.clip_5F00_image001_5B00_3_5D00_.png"&gt;&lt;img height="197" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0602.clip_5F00_image001_5B00_3_5D005F00_thumb.png" alt="clip_image001[3]" border="0" title="clip_image001[3]" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The following illustration shows a sample of typical processing failures:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0285.clip_5F00_image002_5B00_3_5D00_.png"&gt;&lt;img height="403" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/3426.clip_5F00_image002_5B00_3_5D005F00_thumb.png" alt="clip_image002[3]" border="0" title="clip_image002[3]" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The previous illustration shows the results of the following events:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;An Incremental job was scheduled to run at 1:00 AM on June 25, 2010, but it failed because the Optimize Databases job had already started. &lt;/li&gt;
&lt;li&gt;An Incremental job was scheduled to run at 3:00 AM on the same morning and upgraded itself to Full Analysis Data Sync.&lt;/li&gt;
&lt;li&gt;An Incremental job was scheduled to run at 1:00 AM on the next morning, but it failed because the Optimize Databases job had already started.&lt;/li&gt;
&lt;li&gt;A Full Analysis Data Sync job started at 2:00 AM on June 26, 2010, and ran for one hour and 48 minutes. That job caused the Incremental job that was scheduled to run at 3:00 AM on the same morning to fail.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;&lt;a name="Two"&gt;Why might most Cube processing jobs fail?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The Cube processing job requires exclusive access to some of the warehouse resources that data synchronization jobs use. The Cube processing job will wait for the release of the resources (normally for an hour) before it gives up. If a data synchronization job does not release the resource in time, the Cube processing job will fail with the following error:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;ERROR: TF221033: Job failed to acquire a lock using lock mode Exclusive, resource DataSync: [ServerInstance].[TfsWarehouse] and timeout 3600.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The following illustration shows failures that occur if the Cube processing job cannot access one or more of the warehouse resources that it requires:&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2043.clip_5F00_image003_5B00_3_5D00_.png"&gt;&lt;img height="388" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/5078.clip_5F00_image003_5B00_3_5D005F00_thumb.png" alt="clip_image003[3]" border="0" title="clip_image003[3]" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To troubleshoot this issue, you must determine which Warehouse Data Sync job is preventing the Cube processing job from accessing the resource or resources that it needs. This report pack does not provide an easy way to determine which Warehouse Data Sync job is causing the problem, but you can determine that information by examining the Warehouse Job Status view. As the following illustration shows, the warehouse data for the problematic job will be much older than the warehouse data for other jobs for the same team project collection:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2844.clip_5F00_image005_5B00_3_5D00_.jpg"&gt;&lt;img height="128" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2437.clip_5F00_image005_5B00_3_5D005F00_thumb.jpg" alt="clip_image005[3]" border="0" title="clip_image005[3]" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To troubleshoot issues with individual Warehouse Data Sync jobs, first unblock the overall Warehouse Sync process by disabling the offending job to allow re rest of the process proceed, and attempt to solve the issue with the individual job afterwards.&lt;/p&gt;
&lt;h3&gt;&lt;a name="Three"&gt;Why might many Incremental jobs be upgraded to Full jobs?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;According to the process for synchronizing the warehouse, the cube should be processed incrementally throughout the day, and then a full synchronization should occur every day at 2:00 AM. Full synchronization jobs usually run longer and consume more system resources than Incremental jobs. However, the system will try to correct itself if an Incremental job failed. In that situation, the next Incremental job will be upgraded to a full synchronization. If multiple Incremental jobs are upgraded to Full, as the following illustration shows, you might first determine whether your network connectivity is reliable. You should inspect the error that the failing job returned and then address the issue.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2746.clip_5F00_image006_5B00_3_5D00_.png"&gt;&lt;img height="404" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2450.clip_5F00_image006_5B00_3_5D005F00_thumb.png" alt="clip_image006[3]" border="0" title="clip_image006[3]" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="Four"&gt;Why might a processing job run for a long time (~24 hours) before it fails?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If your network loses connectivity, the server-side execution of the Analysis processing job might finish but fail to report the job completion to the processing component for Team Foundation Server. Because of the same network failures, the resource lock might be released, but the Job Agent might not update the job&amp;rsquo;s state. The following illustration shows that a Full processing job started on June 24, 2010, at 2:00 AM and ran for more than 24 hours. Because it released the processing lock, the Incremental job was running in parallel with it. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/7723.clip_5F00_image007_5B00_3_5D00_.png"&gt;&lt;img height="484" width="632" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/1781.clip_5F00_image007_5B00_3_5D005F00_thumb.png" alt="clip_image007[3]" border="0" title="clip_image007[3]" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The following illustration shows the worst case of the same problem. The Incremental job has run for more than nine hours, which means that no other jobs are scheduled and the cube is at least nine hours out of date. To mitigate this issue, you should use the &lt;a href="http://msdn.microsoft.com/en-us/library/ff458305.aspx"&gt;AnalysisServicesProcessingTimeout setting&lt;/a&gt; for processing the cube for Team Foundation Server. This MSDN article describes how to &lt;a href="http://msdn.microsoft.com/en-us/library/ms244694.aspx"&gt;Change a Process Control Setting for the Data Warehouse or Analysis Services Cube&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/6560.clip_5F00_image008_5B00_3_5D00_.png"&gt;&lt;img height="375" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/3513.clip_5F00_image008_5B00_3_5D005F00_thumb.png" alt="clip_image008[3]" border="0" title="clip_image008[3]" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/8712.clip_5F00_image009_5B00_3_5D00_.png"&gt;&lt;img height="77" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0211.clip_5F00_image009_5B00_3_5D005F00_thumb.png" alt="clip_image009[3]" border="0" title="clip_image009[3]" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name="Five"&gt;How might I resolve a schema-merge conflict to unblock a team project collection?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;When a Team Project Collection gets blocked due to schema merge conflicts, the Warehouse Job Status table will show the conflict with a link to the sub report that displays details about the blocked fields. If you click the link that appears under the schema conflict error, a different report appears and shows the fields that are currently active and blocked for the blocked team project collection. See illustration below. For additional help on resolving the schema merge conflicts see &lt;a href="http://msdn.microsoft.com/en-us/library/ee921480.aspx"&gt;Resolving Schema Conflicts That Are Occurring in the Data Warehouse&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/8306.clip_5F00_image010_5B00_3_5D00_.png"&gt;&lt;img height="484" width="601" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0211.clip_5F00_image010_5B00_3_5D005F00_thumb.png" alt="clip_image010[3]" border="0" title="clip_image010[3]" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/4428.clip_5F00_image011_5B00_3_5D00_.png"&gt;&lt;img height="216" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2867.clip_5F00_image011_5B00_3_5D005F00_thumb.png" alt="clip_image011[3]" border="0" title="clip_image011[3]" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10037419" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS+at+Microsoft/">TFS at Microsoft</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/Performance/">Performance</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category></item><item><title>Administrative Report Pack for Team Foundation Server 2010</title><link>http://blogs.msdn.com/b/granth/archive/2010/07/12/administrative-report-pack-for-team-foundation-server-2010.aspx</link><pubDate>Tue, 13 Jul 2010 00:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10037413</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>12</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10037413</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10037413</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/07/12/administrative-report-pack-for-team-foundation-server-2010.aspx#comments</comments><description>&lt;p&gt;One of the key components of TFS is the &lt;a href="http://msdn.microsoft.com/en-us/library/ms244687.aspx"&gt;Data Warehouse, which is made up of a relational database and an Analysis Services cube&lt;/a&gt;.&amp;nbsp; In general, people don&amp;rsquo;t have a problem with the performance or operation of our Data Warehouse.&amp;nbsp; However there were two classes of problems that you&amp;rsquo;re likely to run into as your servers grow larger:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Processing Time &amp;ndash; As the number of reportable fields increases, the number of dimensions that Analysis Services has to process also increases.&amp;nbsp; This increases the time it takes to process the cube and therefore the latency of the data is higher. &lt;/li&gt;
&lt;li&gt;Schema Conflicts &amp;ndash; In the simple case, when there are two fields in different collections (e.g. Priority) with the same name but a different type (e.g. String vs. Integer) this results in a schema conflict.&amp;nbsp; That project collection is then blocked from processing warehouse updates and the data in the warehouse &amp;amp; cube becomes stale. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Internally at Microsoft we started noticing some problems after we upgraded TFS2008 servers and consolidated them onto larger TFS2010 servers as new Team Project Collections (TPCs). There is a constraint (or feature, depending how you look at it) in the system that you can only have a single data warehouse per instance of TFS2010.&amp;nbsp; This feature enables you to do cross-project reporting for gathering data across all the projects in all collections on that server.&amp;nbsp; The downside of this though, is that when a field&amp;rsquo;s reporting settings change in one team project in one collection on a server, it can impact the data warehouse experience for everybody else on that server.&lt;/p&gt;
&lt;p&gt;The good news is that through our dogfooding efforts on the &lt;a href="http://blogs.msdn.com/b/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx"&gt;Pioneer server&lt;/a&gt;, we found some issues early enough and made changes to the product before it shipped to avoid some other issues. While we were investigating and fixing these issues, we developed some reports that visualize the information that TFS stores about the health of the data warehouse to track our improvements.&amp;nbsp; Now we&amp;rsquo;re sharing those reports with you.&lt;/p&gt;
&lt;p&gt;Please download them (below), install them, send us any feedback (comments on this blog are fine) and we&amp;rsquo;ll work on including them in the next official Power Tools.&lt;/p&gt;
&lt;h3&gt;&lt;/h3&gt;
&lt;p&gt;These reports are useful to TFS administrators, operations/support teams, project administrators &amp;amp; end-users.&amp;nbsp; The reports in this pack display the following kinds of information: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Recent processing times &lt;/li&gt;
&lt;li&gt;Current status (whether the cube is processing now and, if not, when it is scheduled to process next) &lt;/li&gt;
&lt;li&gt;Schema conflicts &lt;/li&gt;
&lt;li&gt;Most recent time that each adapter successfully ran &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Interpreting the reports&lt;/h3&gt;
&lt;p&gt;In the download, there is a FAQ document which includes screenshots of what different reports mean and common questions. The contents of the FAQ are also available at &lt;a href="http://blogs.msdn.com/b/granth/archive/2010/07/12/monitoring-the-tfs-data-warehouse-faq.aspx"&gt;Monitoring the TFS Data Warehouse &amp;ndash; FAQ&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Requirements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;SQL Server Reporting Services 2008 or 2008 R2 &lt;/li&gt;
&lt;li&gt;A shared datasource to which you connect the report, as the installation instructions describe how to configure. &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Download: &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17/1348.AdminReportPack.zip" title="AdminReportPack.zip"&gt;AdminReportPack.zip&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Download and install this report pack to the Team Foundation Server Reporting Services Instance to monitor warehouse and cube processing status.&lt;/p&gt;
&lt;p&gt;For information about how to install this report pack, see &lt;span style="text-decoration: underline;"&gt;Installing Admin Report Pack for TFS.docx&lt;/span&gt; that is included in the download.&lt;/p&gt;
&lt;p&gt;The pack includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Admin Report Pack for TFS FAQ.docx &lt;/li&gt;
&lt;li&gt;Installing Admin Report Pack for TFS.docx &lt;/li&gt;
&lt;li&gt;Reports\Cube Status.rdl &lt;/li&gt;
&lt;li&gt;Reports\Blocked Fields.rdl &lt;/li&gt;
&lt;li&gt;Reports\Reportable Fields.rdl &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&amp;rsquo;s an overview of how the reports look and what questions you can answer with them.&lt;/p&gt;
&lt;h4&gt;Cube Status&lt;/h4&gt;
&lt;p&gt;Use this report when you want to answer the following questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How long is cube processing taking? &lt;/li&gt;
&lt;li&gt;How much time elapses between processing jobs? &lt;/li&gt;
&lt;li&gt;How often do the processing jobs run? &lt;/li&gt;
&lt;li&gt;Do errors occur with when the cube is processed? &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Process Times:&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/7180.image_5F00_2.png"&gt;&lt;img height="284" width="551" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0552.image_5F00_thumb.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;h4&gt;Current Processing Status &lt;/h4&gt;
&lt;p&gt;This table tells you whether the warehouse is currently being processed or when it will be processed next.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/7002.image_5F00_4.png"&gt;&lt;img height="50" width="631" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/4375.image_5F00_thumb_5F00_1.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Next Run Time is in local time, and Run time is the duration of the job that is currently running. &lt;/p&gt;
&lt;h4&gt;Warehouse Job Status &lt;/h4&gt;
&lt;p&gt;This table lists all team project collections and all Data Adapter Jobs and displays how long ago the Warehouse and Cube data were updated. &lt;del cite="mailto:Anne%20Taussig" datetime="2010-07-01T16:28"&gt;&lt;/del&gt;In addition, the table will show the schema conflicts and other Data Adapter errors that caused data to be out of date:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/6825.image_5F00_6.png"&gt;&lt;img height="250" width="631" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/7002.image_5F00_thumb_5F00_2.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h4&gt;Showing Schema Merge Conflicts on the Warehouse Job Status View&lt;/h4&gt;
&lt;p&gt;If a conflict occurs when two schemas merge, the table will show the conflict with a link to the sub&lt;del cite="mailto:Anne%20Taussig" datetime="2010-06-28T15:16"&gt; &lt;/del&gt;report that displays details about the blocked fields.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/8004.image_5F00_8.png"&gt;&lt;img height="466" width="659" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/2630.image_5F00_thumb_5F00_3.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you click the link that appears under the schema conflict error, a different report appears and shows the fields that are currently active and blocked for the blocked team project collection.&lt;/p&gt;
&lt;h4&gt;Blocked Field Changes&lt;/h4&gt;
&lt;p&gt;The following table shows blocked fields that have conflicts over all team project collections.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/1638.image_5F00_10.png"&gt;&lt;img height="273" width="921" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/5355.image_5F00_thumb_5F00_4.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Blocked fields appear before the fields with which they are conflicting. The conflicting areas appear in &lt;b&gt;bold&lt;/b&gt;.&lt;/p&gt;
&lt;h4&gt;Queued Field Changes&lt;/h4&gt;
&lt;p&gt;The following table shows field changes that are queued behind the blocked changes in the previous illustration.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/1157.image_5F00_12.png"&gt;&lt;img height="240" width="927" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/6740.image_5F00_thumb_5F00_5.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After you resolve the blocked changes, the queued changes will then be applied to the warehouse.&lt;/p&gt;
&lt;h4&gt;Reportable Fields&lt;/h4&gt;
&lt;p&gt;This report shows all reportable fields in the deployment of Team Foundation Server. Administrators of team projects should review this report before they add a reportable field or change the properties of an existing field. The report helps prevent potential schema-merge conflicts. It lists fields across all collections, including any fields that are blocked. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/4380.image_5F00_14.png"&gt;&lt;img height="89" width="947" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/8510.image_5F00_thumb_5F00_6.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Found 2 fields that match &amp;lsquo;Found In&amp;rsquo;&lt;/p&gt;
&lt;h4&gt;Cube Processing Status &lt;/h4&gt;
&lt;p&gt;This report shows list of recently completed Cube processing jobs. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0488.image_5F00_16.png"&gt;&lt;img height="113" width="633" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/3618.image_5F00_thumb_5F00_7.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I hope that you find these reports useful. Please comment on this post if you have questions or other feedback.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10037413" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS+at+Microsoft/">TFS at Microsoft</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/Performance/">Performance</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/Pioneer+Dogfood/">Pioneer Dogfood</category></item><item><title>How to: Copy very large files across a slow or unreliable network</title><link>http://blogs.msdn.com/b/granth/archive/2010/05/10/how-to-copy-very-large-files-across-a-slow-or-unreliable-network.aspx</link><pubDate>Mon, 10 May 2010 07:38:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10010058</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10010058</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10010058</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/05/10/how-to-copy-very-large-files-across-a-slow-or-unreliable-network.aspx#comments</comments><description>&lt;p&gt;To prepare for the DevDiv TFS2010 upgrade we had to copy 8TB of SQL backups about 100 miles across a WAN link so that we could restore it on our test system.&amp;#160; The link speed was reasonably good and the latency fairly low (5ms), but when you’re dealing with files this big then the odds are against you and using &lt;a href="http://en.wikipedia.org/wiki/Sneakernet"&gt;sneakernet&lt;/a&gt; can be a good option. In our case it wasn’t an option and we had to find the next best solution.&amp;#160; In the end we were able to copy all 8TB over 7 days without having to resume or restart once.&lt;/p&gt;  &lt;p&gt;The 8TB backups were spanned across 32 files of 250GB each which makes them a little easier to deal with.&amp;#160; The first problem that you’ll encounter when using a normal Windows file copy, XCopy, RoboCopy or TeraCopy to copy these large files is that your available memory on the source server will start to drop and eventually run out. The next problem you’ll encounter is the connection will break for some reason and you’ll have to restart or resume the transfer.&lt;/p&gt;  &lt;p&gt;Fortunately the EPS Windows Server Performance Team have a blog post on the issue and a great recommendation: &lt;a href="http://blogs.technet.com/askperf/archive/2007/05/08/slow-large-file-copy-issues.aspx"&gt;Ask the Performance Team : Slow Large File Copy Issues&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The problem lies in the way in which the copy is performed - specifically &lt;strong&gt;Buffered vs. Unbuffered Input/Output (I/O)&lt;/strong&gt;. &lt;/p&gt;    &lt;p&gt;Buffered I/O describes the process by which the file system will buffer reads and writes to and from the disk in the file system cache.&amp;#160; Buffered I/O is intended to speed up future reads and writes to the same file but it has an associated overhead cost.&amp;#160; It is effective for speeding up access to files that may change periodically or get accessed frequently.&amp;#160; There are two buffered I/O functions commonly used in Windows Applications such as Explorer, Copy, Robocopy or XCopy:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-gb/library/aa363851.aspx"&gt;CopyFile()&lt;/a&gt; - Copies an existing file to a new file &lt;/li&gt;      &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-gb/library/aa363852.aspx"&gt;CopyFileEx()&lt;/a&gt; - This also copies an existing file to a new file, but it can also call a specified callback function each time a portion of the copy operation is completed, thus notifying the application of its progress via the callback function.&amp;#160; Additionally, CopyFileEx can be canceled during the copy operation. &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;So looking at the definition of buffered I/O above, we can see where the perceived performance problems lie - in the file system cache overhead.&amp;#160; Unbuffered I/O (or a raw file copy) is preferred when attempting to copy a large file from one location to another when we do not intend to access the source file after the copy is complete.&amp;#160; &lt;strong&gt;This will avoid the file system cache overhead and prevent the file system cache from being effectively flushed by the large file data&lt;/strong&gt;.&amp;#160; Many applications accomplish this by calling CreateFile() to create an empty destination file, then using the ReadFile() and WriteFile() functions to transfer the data.&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa363858.aspx"&gt;CreateFile()&lt;/a&gt; - The CreateFile function creates or opens a file, file stream, directory, physical disk, volume, console buffer, tape drive, communications resource, mailslot, or named pipe. The function returns a handle that can be used to access an object. &lt;/li&gt;      &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa365467.aspx"&gt;ReadFile()&lt;/a&gt; - The ReadFile function reads data from a file, and starts at the position that the file pointer indicates. You can use this function for both synchronous and asynchronous operations. &lt;/li&gt;      &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa365747.aspx"&gt;WriteFile()&lt;/a&gt; - The WriteFile function writes data to a file at the position specified by the file pointer. This function is designed for both synchronous and asynchronous operation. &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Which Tool? ESEUTIL&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Yes, the tool has some limitations – but in my experience it’s well worth the time investment to get running. See &lt;a href="http://technet.microsoft.com/en-us/library/aa996409(EXCHG.80).aspx"&gt;How to Run Eseutil /Y (Copy File)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To get the utility, you need access to an Exchange server or to install Exchange in Administrator-only mode. When you install Exchange in Administrator-only mode, the appropriate binaries are copied to your computer and you can then copy these three files off and use them on another computer: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;ese.dll      &lt;br /&gt;eseutil.exe       &lt;br /&gt;exchmem.dll&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It does not accept wildcard characters (such as *.* to copy all files), so you must have to specify a file name and copy one file at a time. Or use a command like: FOR %f IN (d:\backups\*.BAK) DO ESEUTIL /Y &amp;quot;%f&amp;quot; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;COPY FILE:        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DESCRIPTION:&amp;#160; Copies a database or log file.         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SYNTAX:&amp;#160; D:\BIN\ESEUTIL /y &amp;lt;source file&amp;gt; [options]         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; PARAMETERS:&amp;#160; &amp;lt;source file&amp;gt; - name of file to copy         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OPTIONS:&amp;#160; zero or more of the following switches, separated by a space:         &lt;br /&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; /d&amp;lt;file&amp;gt; - destination file (default: copy source file to         &lt;br /&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;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; current directory)         &lt;br /&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; /o&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - suppress logo         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NOTES:&amp;#160; 1) If performed on arbitrary files, this operation may fail         &lt;br /&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;&amp;#160;&amp;#160;&amp;#160; at the end of the file if its size is not sector-aligned.&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;D:\&amp;gt;d:\bin\eseutil /y c:\Backups\Backup1.bak /d \\destination\c$\Backups\Backup1.bak &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;Extensible Storage Engine Utilities for Microsoft(R) Exchange Server        &lt;br /&gt;Version 08.01         &lt;br /&gt;Copyright (C) Microsoft Corporation. All Rights Reserved. &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;Initiating COPY FILE mode...        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Source File: c:\Backups\Backup1.bak         &lt;br /&gt;Destination File: \\destination\c$\Backups\Backup1.bak &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&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;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Copy Progress (% complete) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&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; 10&amp;#160;&amp;#160; 20&amp;#160;&amp;#160; 30&amp;#160;&amp;#160; 40&amp;#160;&amp;#160; 50&amp;#160;&amp;#160; 60&amp;#160;&amp;#160; 70&amp;#160;&amp;#160; 80&amp;#160;&amp;#160; 90&amp;#160; 100        &lt;br /&gt;&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;#160;&amp;#160;&amp;#160; ................................................... &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;Operation completed successfully in 7.67 seconds.&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Other Tools&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you read the &lt;a href="http://blogs.technet.com/askperf/archive/2007/05/08/slow-large-file-copy-issues.aspx#comments"&gt;comments&lt;/a&gt; of the performance team’s blog post, you’ll see that XCopy has a /J option in Windows 7 and Windows 2008 R2 that does unbuffered I/O. However that’s not an option when you haven’t upgraded to R2 yet.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;/J&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Copies using unbuffered I/O. Recommended for very large files.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Which Direction?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Through trial and error, we determined that it was much more reliable to run eseutil.exe on the SOURCE server and push the files to the remote share.&amp;#160; This seemed to absorb any network blips and required no manual interruption over the 7 days it took us to copy the files.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Verifying hashes&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The third problem you want to avoid is getting the files copied and then finding out that they match in size but the contents are corrupt.&amp;#160; You can check for this by generating hashes on both the source and target systems and comparing them after the copy.&lt;/p&gt;  &lt;p&gt;You can &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=B3C93558-31B7-47E2-A663-7365C1686C08&amp;amp;displaylang=en"&gt;download the Microsoft File Checksum Integrity Verifier fciv.exe tool from Microsoft Downloads&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Then run it like this on each system:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;fciv.exe C:\Backups -type *.bak -r -wp -xml hashes.xml&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10010058" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS+at+Microsoft/">TFS at Microsoft</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/Performance/">Performance</category></item><item><title>TFS2010 Upgrade: Compatibility of tools</title><link>http://blogs.msdn.com/b/granth/archive/2010/05/09/tfs2010-upgrade-compatibility-of-tools.aspx</link><pubDate>Mon, 10 May 2010 06:31:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10010035</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10010035</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10010035</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/05/09/tfs2010-upgrade-compatibility-of-tools.aspx#comments</comments><description>&lt;p&gt;When you upgrade from Team Foundation Server 2008 to 2010, one of the things you need to check is the compatibility of the tools that people rely on and use the server with. Without careful preparation this can have a significant impact on your user's experience after the server is upgraded.&lt;/p&gt;  &lt;p&gt;As an example, when we upgraded the DevDiv TFS server which is home to more than 3,500 users - there were ~200 unique tools that were using the server which all had to be assessed for compatibility. We started by prioritizing them into four buckets:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;P0 - Can't upgrade the server unless these are proven to work &lt;/li&gt;    &lt;li&gt;P1 - These should work within 1 week of the server being upgraded &lt;/li&gt;    &lt;li&gt;P2 - There should be an owner identified and a plan in place for these to be made compatible &lt;/li&gt;    &lt;li&gt;P3 - All other tools that aren't used very much or have been orphaned &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To help the tool owners check compatibility, we had a cloned and upgraded server available that they could work against. They also had the option of installing &lt;a href="http://blogs.msdn.com/bharry/archive/2009/10/01/tfs-2010-for-sourcesafe-users.aspx"&gt;TFS Basic&lt;/a&gt; in about 15 minutes by themselves and testing on their own workstation.&lt;/p&gt;  &lt;p&gt;Perhaps the most difficult part of it all was identifying who actually owned the tools! Once we identified the owners, there was a weekly barrage of nag-mail to make sure they were ready. Here's an example of one of the status reports:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;P0 Tools – 11 out of the 15 P0 tools have been tested and made compatible with TFS2010 and the other 4 are on track.&lt;/p&gt;    &lt;p&gt;P1 &amp;amp; P2 Tools – Good progress has been made with the P1 tools with almost half of them signed off. The other half have no owners or are not used by many people.&lt;/p&gt;   &lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/20eb9d185788_14672/clip_image001%5B4%5D_1.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image001[4]" border="0" alt="clip_image001[4]" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/20eb9d185788_14672/clip_image001%5B4%5D_thumb_1.jpg" width="455" height="177" /&gt;&lt;/a&gt;&lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Identifying tools&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The easiest way to identify tools that might be impacted is to look at the tbl_Command table in the TfsActivityLogging database.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SELECT UserAgent, SUM(ExecutionCount) as ExecutionCount&lt;/p&gt;    &lt;p&gt;FROM [TfsActivityLogging].[dbo].[tbl_Command]&lt;/p&gt;    &lt;p&gt;GROUP BY UserAgent&lt;/p&gt;    &lt;p&gt;ORDER BY SUM(ExecutionCount) DESC&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This will show you all the unique user agents that have accessed the server in the last 14 days ordered by the total number of commands. You can ignore w3wp.exe[*], devenv.exe, msbuild.exe, tf.exe, tfpt.exe, WINPROJ.exe, Excel.Exe, BuildNotifications.exe &amp;amp; vstesthost.exe - since they will all get upgraded along with the server &amp;amp; client installs.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Changes&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The following table is a list of the common changes that will be required for your tools to be compatible with TFS2010:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;Change&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td&gt;         &lt;p&gt;&lt;strong&gt;Workaround / Recommendation&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;Incompatible client versions&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;If you are using the VS2008 object model, &lt;a href="http://blogs.msdn.com/granth/archive/2009/12/07/tfs2010-older-clients-not-able-to-connect.aspx"&gt;the server rejects requests&lt;/a&gt; from clients that don't have the &amp;quot;Forward Compatibility GDR&amp;quot; installed.&lt;/p&gt;       &lt;/td&gt;        &lt;td&gt;         &lt;p&gt;At the very least, you need to install VS2008 SP1 + the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=CF13EA45-D17B-4EDC-8E6C-6C5B208EC54D&amp;amp;displaylang=en"&gt;Forward Compatibility GDR&lt;/a&gt; on any clients that connect to TFS.&lt;/p&gt;          &lt;p&gt;&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;See this blog post for more details on supported forward and backwards compatibility.&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;&lt;strong&gt;Recommendation&lt;/strong&gt;:&lt;/p&gt;          &lt;p&gt;You should upgrade and recompile your tools to use the VS2010 object model for full compatibility.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;Virtual Directory&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;TFS2010 introduces a &amp;quot;/tfs/&amp;quot; virtual directory prefix in the default install. It is possible to install TFS at the root &amp;quot;/&amp;quot;, or any other prefix.&lt;/p&gt;          &lt;ul&gt;           &lt;li&gt;Default TFS2008 URL: &lt;a href="http://server:8080/"&gt;http://server:8080/&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;Default TFS2010 URL: &lt;a href="http://server:8080/tfs/"&gt;http://server:8080/tfs/&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;Optional TFS2010 URL: &lt;a href="http://server:8080/"&gt;http://server:8080/&lt;/a&gt; or &lt;a href="http://server:8080/anything/"&gt;http://server:8080/anything/&lt;/a&gt; &lt;/li&gt;         &lt;/ul&gt;       &lt;/td&gt;        &lt;td&gt;         &lt;p&gt;When you install or upgrade the server, it is possible to install at the root &amp;quot;/&amp;quot;. This configuration along with setting a default collection will allow tools with hard-coded server addresses to seamlessly continue to connect to the existing server.&lt;/p&gt;          &lt;p&gt;&lt;strong&gt;Recommendation&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;Tools should not make assumptions about the structure of a server URL or hard-code the server URL. They should allow users to specify an arbitrary URL through a configuration setting.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;Collection URL&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;TFS2010 introduces a new concept called &amp;quot;Team Project Collections&amp;quot; (TPC). To facilitate this, there is an extra identifier in the URL.&lt;/p&gt;          &lt;ul&gt;           &lt;li&gt;TFS2008 URLs: &lt;a href="http://vstfdevdiv:8080/"&gt;http://server:8080/&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;TFS2010 URLs: &lt;a href="http://vstfdevdiv:8080/CollectionName/"&gt;http://server:8080/tfs/CollectionName&lt;/a&gt; (default), or &lt;a href="http://server:8080/CollectionName"&gt;http://server:8080/CollectionName&lt;/a&gt;, &lt;a href="http://server:8080/CollectionName"&gt;http://server:8080/CollectionName&lt;/a&gt; or &lt;a href="http://server:8080/anything/CollectionName"&gt;http://server:8080/anything/CollectionName&lt;/a&gt; (depending on the virtual directory configuration above) &lt;/li&gt;         &lt;/ul&gt;       &lt;/td&gt;        &lt;td&gt;         &lt;p&gt;TFS2010 has a &amp;quot;Default Collection&amp;quot; setting which is stored in the TFS instance registry (/Configuration/DefaultCollection/). This is the collection that clients will get when they don't specify a collection.&lt;/p&gt;          &lt;p&gt;When you upgrade a TFS2008 server to TFS2010, the default collection is set to the TPC containing projects from the upgraded server. When you use &amp;quot;tfsconfig import&amp;quot; to upgrade additional TFS2008 databases, the default collection is not changed.&lt;/p&gt;          &lt;p&gt;&lt;strong&gt;Recommendation&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;Tools should specify an explicit TPC to avoid unintended consequences if the &amp;quot;Default Collection&amp;quot; of an instance changes.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;Object Model changes&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;In the VS2008 object model:&lt;/p&gt;          &lt;ul&gt;           &lt;li&gt;TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer(&amp;quot;&lt;a href="http://vstfdevdiv:8080"&gt;http://server:8080&lt;/a&gt;&amp;quot;) &lt;/li&gt;         &lt;/ul&gt;          &lt;p&gt;In the VS2010 object model:&lt;/p&gt;          &lt;ul&gt;           &lt;li&gt;TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(&amp;quot;http://server:8080/tfs/CollectionName&amp;quot;)); &lt;/li&gt;         &lt;/ul&gt;       &lt;/td&gt;        &lt;td&gt;         &lt;p&gt;The VS2010 object model has many compatibility changes and bug fixes (e.g. improved memory usage).&lt;/p&gt;          &lt;p&gt;&lt;strong&gt;Recommendation&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;You should recompile your tool against the VS2010 object model and add support for choosing &amp;amp; specifying a TPC name.&lt;/p&gt;          &lt;p&gt;&lt;a href="http://blogs.msdn.com/taylaf/archive/2010/02/23/introducing-the-tfsconnection-tfsconfigurationserver-and-tfsteamprojectcollection-classes.aspx"&gt;See Taylor's blog on the TfsConnection, TfsConfigurationServer and TfsTeamProjectCollection classes that replace the old TeamFoundationServer class&lt;/a&gt;.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;strong&gt;Web Service changes&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;Most of the Web Services that TFS provides are not a documented or supported interface - however some tools still do use them.&lt;/p&gt;          &lt;p&gt;The one that gets used fairly often is the Administration.asmx service with the QueryServerRequests() method that tells you which commands are currently executing on the server.&lt;/p&gt;          &lt;ul&gt;           &lt;li&gt;TFS2008 URL: &lt;a href="http://server:8080/VersionControl/v1.0/Administration.asmx"&gt;http://server:8080/VersionControl/v1.0/Administration.asmx&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;TFS2010 URL: &lt;a href="http://vstfdevdiv:8080/TeamFoundation/Administration/v3.0/AdministrationService.asmx"&gt;http://server:8080/tfs/TeamFoundation/Administration/v3.0/AdministrationService.asmx&lt;/a&gt; &lt;/li&gt;         &lt;/ul&gt;       &lt;/td&gt;        &lt;td&gt;         &lt;p&gt;&lt;strong&gt;Recommendation&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;You should always use the supported object model or data warehouse &amp;amp; cube if it provides the information you need. See my blog post on &lt;a href="http://blogs.msdn.com/granth/archive/2010/05/09/tfs2010-how-to-query-work-items-using-sql-on-the-relational-warehouse.aspx"&gt;How to query Work Items using SQL on the Relational Warehouse&lt;/a&gt;.&lt;/p&gt;          &lt;p&gt;If you cannot use the object model, you will need to use the new URLs and regenerate your proxy classes.&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=10010035" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS+at+Microsoft/">TFS at Microsoft</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category></item><item><title>TFS2010: How to query Work Items using SQL on the Relational Warehouse</title><link>http://blogs.msdn.com/b/granth/archive/2010/05/09/tfs2010-how-to-query-work-items-using-sql-on-the-relational-warehouse.aspx</link><pubDate>Mon, 10 May 2010 05:42:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10010024</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10010024</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10010024</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/05/09/tfs2010-how-to-query-work-items-using-sql-on-the-relational-warehouse.aspx#comments</comments><description>&lt;p&gt;In John Socha-Leialoha's blog post on &lt;a href="http://blogs.socha.com/2009/05/upgrading-visual-studio-team-foundation.html"&gt;Upgrading Team Foundation Server 2008 Reports to 2010, Part I&lt;/a&gt;, there is a hidden gem:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;For the first time, &lt;strong&gt;writing reports against the warehouse using SQL is officially supported&lt;/strong&gt;. As a rule of thumb, you’ll generally want to use the cube for historical reports, or reports that require a lot of slicing and dicing using parameters of aggregate data. The cube is really good at this sort of work. The warehouse, on the other hand, allows you to create reports that pull loosely related data together in ways not possible with the cube.&lt;/p&gt;    &lt;p&gt;The views that begin with “v” and end with “Overlay” are used for processing the cube, and as such aren’t really meant for use in your reports.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The relational warehouse is a reasonable store to work against, since the warehouse adapters that sync data from the operational store run every 5-minutes and keep the data fresh. You should NEVER write reports directly against the WorkItem* tables in the collection database, since this is an operational store and is 100% unsupported and can cause performance problems for normal usage. The limitation of TFS2008 still exists that fields of the &lt;strong&gt;Html&lt;/strong&gt; type are not pushed into the warehouse and for those you’ll have to &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163443.aspx"&gt;use the Work Item Tracking object model&lt;/a&gt; to query and retrieve them.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Permissions&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Before you can use these queries, you’ll need to be a member of the TfsWarehouseDataReader role in the Tfs_Warehouse database. Remember that the warehouse contains data from all projects on a server, so anybody who has access to query the warehouse can see this regardless of their permissions within TFS. The best way to give people access is to create an Active Directory group that contains all the users that should have access to query the relational warehouse, then add that group to the role with the following script:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;USE [Tfs_Warehouse]      &lt;br /&gt;GO &lt;/p&gt;    &lt;p&gt;CREATE USER [DOMAIN\TfsWarehouseDataReadersGroup] FOR LOGIN [DOMAIN\TfsWarehouseDataReadersGroup] WITH DEFAULT_SCHEMA=[dbo]      &lt;br /&gt;GO &lt;/p&gt;    &lt;p&gt;EXEC sp_addrolemember N'&lt;strong&gt;TfsWarehouseDataReader&lt;/strong&gt;', N'DOMAIN\TfsWarehouseDataReadersGroup'       &lt;br /&gt;GO &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can also use this group to give people access to query the OLAP cube in Analysis Services. See &lt;a title="http://msdn.microsoft.com/en-us/library/bb737953.aspx" href="http://msdn.microsoft.com/en-us/library/bb737953.aspx"&gt;Grant Access to the Databases of the Data Warehouse for Visual Studio ALM&lt;/a&gt; for more information.&lt;/p&gt;  &lt;p&gt;There are 9 views that you can query and write reports against with some level of assurance that they will work the next time that the server is upgraded:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;CurrentWorkItemView &lt;/li&gt;    &lt;li&gt;WorkItemHistoryView &lt;/li&gt;    &lt;li&gt;BuildChangesetView &lt;/li&gt;    &lt;li&gt;BuildCoverageView &lt;/li&gt;    &lt;li&gt;BuildDetailsView &lt;/li&gt;    &lt;li&gt;BuildProjectView &lt;/li&gt;    &lt;li&gt;CodeChurnView &lt;/li&gt;    &lt;li&gt;RunCoverageView &lt;/li&gt;    &lt;li&gt;TestResultView &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now that TFS2010 has multiple project collections sharing the same relational warehouse and OLAP cube, there are a two things to consider when writing queries against the views:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Filter on &lt;strong&gt;Project GUID&lt;/strong&gt; - since a project's name is not necessarily unique across multiple collections on the same server. &lt;/li&gt;    &lt;li&gt;Make sure your joins use &lt;strong&gt;unique keys&lt;/strong&gt;. For example, work item IDs are no longer unique within the warehouse &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here’s an example Work Item Query (WIQL):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SELECT [System.Id], [Microsoft.VSTS.Common.StackRank], [Microsoft.VSTS.Common.Priority], [Microsoft.VSTS.Common.Severity], [System.State], [System.Title]&lt;/p&gt;    &lt;p&gt;FROM WorkItems&lt;/p&gt;    &lt;p&gt;WHERE [System.TeamProject] = 'DemoAgile' &lt;/p&gt;    &lt;p&gt;AND&amp;#160; [System.AssignedTo] = 'Grant Holliday' &lt;/p&gt;    &lt;p&gt;AND&amp;#160; [System.WorkItemType] = 'Bug' &lt;/p&gt;    &lt;p&gt;AND&amp;#160; [System.State] &amp;lt;&amp;gt; 'Closed'&lt;/p&gt;    &lt;p&gt;ORDER BY [System.State], [Microsoft.VSTS.Common.StackRank], [Microsoft.VSTS.Common.Priority], [Microsoft.VSTS.Common.Severity], [System.Id]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And here’s an equivalent query of the same data from the relational warehouse:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SELECT [System_Id], [Microsoft_VSTS_Common_StackRank], [Microsoft_VSTS_Common_Priority], [Microsoft_VSTS_Common_Severity], [System_State], [System_Title] &lt;/p&gt;    &lt;p&gt;FROM CurrentWorkItemView &lt;/p&gt;    &lt;p&gt;WHERE [ProjectNodeGUID] = 'a6fc4213-94c0-4361-87bf-9520e07eb096' &lt;/p&gt;    &lt;p&gt;AND [System_AssignedTo] = 'Grant Holliday' &lt;/p&gt;    &lt;p&gt;AND&amp;#160; [System_WorkItemType] = 'Bug' &lt;/p&gt;    &lt;p&gt;AND&amp;#160; [System_State] &amp;lt;&amp;gt; 'Closed' &lt;/p&gt;    &lt;p&gt;ORDER BY [System_State], [Microsoft_VSTS_Common_StackRank], [Microsoft_VSTS_Common_Priority], [Microsoft_VSTS_Common_Severity], [System_Id]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Some queries will be much faster using the WIT Object Model, but at least this gets you started with the relational warehouse.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10010024" width="1" height="1"&gt;</description></item><item><title>TFS2010: How to enable compression for SOAP traffic</title><link>http://blogs.msdn.com/b/granth/archive/2010/05/09/tfs2010-how-to-enable-compression-for-soap-traffic.aspx</link><pubDate>Mon, 10 May 2010 04:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10010015</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10010015</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10010015</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/05/09/tfs2010-how-to-enable-compression-for-soap-traffic.aspx#comments</comments><description>&lt;P&gt;When we upgraded our internal servers to TFS2010, some of our remote users noticed that HTTP compression was used for some traffic, but not all. HTTP compression was enabled for file downloads from source control and for web access pages but we weren’t compressing the SOAP responses to clients for Work Item Tracking and other API commands.&amp;nbsp; This only applies when installing TFS2010 on Windows 2008, Windows 2008 R2 and Windows 7 - it will be enabled by default in a future release.&lt;/P&gt;
&lt;P&gt;To make this change for yourself, logon to your application tier, open a command prompt as administrator, paste the following commands:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;%windir%\system32\inetsrv\appcmd set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/soap%u002bxml; charset=UTF-8',enabled='True']" /commit:apphost &lt;BR&gt;%windir%\system32\inetsrv\appcmd recycle apppool /apppool.name:"Microsoft Team Foundation Server Application Pool"&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Some investigation revealed that the IIS “Dynamic Compression” feature is getting installed and enabled correctly but we’re missing the MIME type for the SOAP requests.&amp;nbsp; Here’s an example from the installation log file:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;[Info&amp;nbsp;&amp;nbsp; @01:11:43.140] IIS7 Feature value: CompressionBinaries=1 &lt;/P&gt;
&lt;P&gt;[Info&amp;nbsp;&amp;nbsp; @01:11:43.140] IIS7 Feature value: HttpCompressionDynamic=1 &lt;/P&gt;
&lt;P&gt;[Info&amp;nbsp;&amp;nbsp; @01:11:43.140] IIS7 Feature value: HttpCompressionStatic=1 &lt;/P&gt;
&lt;P&gt;[Info&amp;nbsp;&amp;nbsp; @01:22:21.295] Configuring dynamic compression on IIS7 &lt;/P&gt;
&lt;P&gt;[Info&amp;nbsp;&amp;nbsp; @01:22:21.295] Process starting: fileName=C:\Windows\system32\inetsrv\appcmd.exe arguments=set config -section:urlCompression /doDynamicCompression:true &lt;/P&gt;
&lt;P&gt;[Info&amp;nbsp;&amp;nbsp; @01:22:21.999] Process finished: fileName=C:\Windows\system32\inetsrv\appcmd.exe arguments=set config -section:urlCompression /doDynamicCompression:true exitCode=0 in 701 ms &lt;/P&gt;
&lt;P&gt;[Info&amp;nbsp;&amp;nbsp; @01:22:21.999] Applied configuration changes to section "system.webServer/urlCompression" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The easiest way to verify that compression is correctly enabled is to look at a network trace using a tool like &lt;A href="http://go.microsoft.com/fwlink/?LinkID=103158&amp;amp;clcid=0x409" mce_href="http://go.microsoft.com/fwlink/?LinkID=103158&amp;amp;clcid=0x409"&gt;Network Monitor (NetMon)&lt;/A&gt;. Fiddler doesn’t work with the default configuration of Visual Studio, because it is set to “&lt;A href="http://blogs.msdn.com/granth/archive/2009/05/20/visual-studio-team-system-2010-team-foundation-server-beta-1-installation-problems.aspx" mce_href="http://blogs.msdn.com/granth/archive/2009/05/20/visual-studio-team-system-2010-team-foundation-server-beta-1-installation-problems.aspx"&gt;BypassProxyOnLocal&lt;/A&gt;”. &lt;/P&gt;
&lt;P&gt;Here’s what the NetMon trace looks like without compression. Notice that the HTTPPayloadLine is in cleartext.&lt;/P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010HowtoenablecompressionofSOAPtraff_12D42/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010HowtoenablecompressionofSOAPtraff_12D42/image_6.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px 20px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010HowtoenablecompressionofSOAPtraff_12D42/image_thumb_2.png" width=504 height=113 mce_src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010HowtoenablecompressionofSOAPtraff_12D42/image_thumb_2.png"&gt;&lt;/A&gt; 
&lt;P&gt;And here’s what it looks like after compression is enabled – the payload is GZip compressed.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010HowtoenablecompressionofSOAPtraff_12D42/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010HowtoenablecompressionofSOAPtraff_12D42/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px 20px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010HowtoenablecompressionofSOAPtraff_12D42/image_thumb_1.png" width=504 height=118 mce_src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010HowtoenablecompressionofSOAPtraff_12D42/image_thumb_1.png"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10010015" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS+at+Microsoft/">TFS at Microsoft</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/Performance/">Performance</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/Pioneer+Dogfood/">Pioneer Dogfood</category></item><item><title>TFS2010: Large &amp; Resumable Check-in Support</title><link>http://blogs.msdn.com/b/granth/archive/2010/05/09/tfs2010-large-resumable-check-in-support.aspx</link><pubDate>Sun, 09 May 2010 19:10:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10009915</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=10009915</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=10009915</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/05/09/tfs2010-large-resumable-check-in-support.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The DevDiv mainline contains over 200GB of content and more than 1.8 million files. Any version control operations that had to deal with this amount of content would occasionally run into two problems:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;If the number of pending changes is more than ~300,000, then the client might not be able to process all this data in the ListView and hit an OutOfMemoryException &lt;/li&gt;    &lt;li&gt;If it took longer than 60 minutes to upload all of the content and commit the check-in in the database, then it would hit the 60 minute timeout and rollback &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Workarounds&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;People could sometimes work around the issue by using “tf checkin /noprompt” which would cut the client memory usage enough to allow it to complete.&amp;#160; We also have an undocumented switch “tf checkin /all” which allows you to check-in all pending changes in a workspace without having to load all the pending changes.&amp;#160; This switch has a limitation that it does not work with “edits” and “adds” and should only be used for branches (there is also a “&lt;a href="http://msdn.microsoft.com/en-us/library/d73s8b27.aspx"&gt;tf branch /checkin&lt;/a&gt;” option which does the branch &amp;amp; check-in in one step). Another workaround was to break the check-in up into multiple check-ins, however this was less than ideal.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;New in TFS2010&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;We made an enhancement in Team Foundation Server 2010 to support very large check-ins by changing the client and server to page pending changes to and from the server.&amp;#160; It includes three core changes:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Add paging capability for querying pending changes &lt;/li&gt;    &lt;li&gt;Change the list view in the Pending Changes dialog to a virtual list view and utilize the paging capability to populate the list on demand &lt;/li&gt;    &lt;li&gt;Add the ability to ‘enqueue’ pending changes for a check-in on the server &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The default page size is 150,000, which means that if you try and check-in more than this, then your pending changes are written to a temporary table in batches of 150k.&amp;#160; This means that every batch has a full 60 minutes to upload before hitting the client-side timeout.&amp;#160; Once the client reaches the last page of pending changes, then it sends an extra flag which tells the server to commit the changes.&amp;#160; Since the server has all the data in a temporary table, it’s able to quickly move it into the real content table and avoid the 60 minute timeout.&lt;/p&gt;  &lt;p&gt;If you cancel your check-in command before it’s complete, you can also run it again and it will reuse the pending changes that are in the temporary table.&amp;#160; This temporary table of pending changes is cleaned up every 24 hours by a job so that the paged changes don’t accumulate sit in the database if they never get checked in.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Proof&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Yesterday I was able to check-in and add of 1.8 million items (200GB of content) with a single action without restarting or running out of memory.&amp;#160; It took about 7 hours to upload all the content and then another 25 minutes to perform the final commit in the database.&amp;#160; The end result is a single changeset which is exactly the result I was after.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10009915" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS+at+Microsoft/">TFS at Microsoft</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Developing/">VSTS Developing</category></item><item><title>TFS2010: DevDiv TFS Server Upgraded</title><link>http://blogs.msdn.com/b/granth/archive/2010/04/15/tfs2010-devdiv-tfs-server-upgraded.aspx</link><pubDate>Fri, 16 Apr 2010 05:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9997039</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=9997039</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=9997039</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/04/15/tfs2010-devdiv-tfs-server-upgraded.aspx#comments</comments><description>&lt;p&gt;Back in April, the week before the VS2010 worldwide launch we successfully upgraded the server to TFS2010 RTM.&amp;nbsp; Because this is such a large server and almost 4,000 people in the division depend on it for their day-to-day work, it took a couple of months of planning, testing and dry-runs to get done.&amp;nbsp;Since then, we've also upgraded our proxy servers to Windows 2008 R2 + TFS2010, upgraded our SQL server to Windows 2008 R2 + SQL Server 2008 R2, moved to a new set of hardware and upgraded+consolidated a couple of other servers to this server.&amp;nbsp; A busy year so far!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010DevDiv_CEE7/image_2.png"&gt;&lt;img height="361" width="640" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010DevDiv_CEE7/image_thumb.png" alt="DevDiv TFS2010 Server Topology" border="0" title="DevDiv TFS2010 Server Topology" style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This server has had an interesting history which makes this upgrade particularly important.&amp;nbsp; The server originally started as the dogfood server for the TFS team in December 2004, you can see this from the very first checkin:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="font-family: Courier New;"&gt;C:\&amp;gt;tf history /collection:&lt;/span&gt;&lt;a href="http://vstfdevdiv:8080"&gt;&lt;span style="font-family: Courier New;"&gt;http://vstfdevdiv:8080&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Courier New;"&gt; $/ /version:C1 /format:detailed /noprompt /stopafter:1 &lt;br /&gt;-------------------------------------------------------------------------------------------------------- &lt;br /&gt;Changeset: 1 &lt;br /&gt;User: CD193 &lt;br /&gt;Date: &lt;strong&gt;&lt;span style="color: #ff0000;"&gt;Friday, December 10, 2004 10:04:32 AM&lt;/span&gt;&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New;"&gt;Comment: &lt;br /&gt;&amp;nbsp; Initial creation of the repository &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New;"&gt;Items: &lt;br /&gt;&amp;nbsp; add $/&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;A brief history&lt;/h3&gt;
&lt;p&gt;Since that first checkin, it has been constantly patched and upgraded ahead of each release (CTPs, Betas, SPs, etc).&amp;nbsp; Then in early 2008 the whole division on-boarded to the server and it became the single source &amp;amp; bug repository for the division. During this on-boarding period there were lots and lots of patches made so they server could scale to the unique demands of the division.&amp;nbsp; These patches were all rolled into the product and shipped as part of &lt;a href="http://blogs.msdn.com/bharry/archive/2008/04/28/team-foundation-server-2008-sp1.aspx"&gt;TFS2008 SP1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Then in mid-2008 we started to have some big growing pains as the number of users and the demands of the server increased. There was a lot of pressure from up the chain and across the division to fix things and make it better. This ultimately lead to what we referred to internally as &amp;ldquo;the schema change&amp;rdquo; and you can read more about the impacts of it in Matt&amp;rsquo;s &lt;a href="http://blogs.msdn.com/mitrik/archive/2009/05/28/changing-to-slot-mode-in-tfs-2010-version-control.aspx"&gt;change to slot mode in TFS2010&lt;/a&gt; blog post.&lt;/p&gt;
&lt;p&gt;The improvement that this change brought is pretty clear from the following chart which shows Command Time vs. Command Count &amp;ndash; up until the patch was deployed, performance for large operations (Gets, Merges, Branches of millions of files) was pretty bad.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/0753.image_5F00_2.png"&gt;&lt;img height="441" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/4073.image_5F00_thumb.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;However, getting the schema upgrade deployed was not smooth sailing or a silver bullet to our problems. The chart below shows our availability over the last 2 years.&amp;nbsp; As you can see, we were not in a good shape towards the end of 2008.&amp;nbsp; The schema upgrade involved adding a new non-NULL column to a 5 billion row table. Our initial attempt performed this in a single transaction and took many hours.&amp;nbsp; After running for ~48 hours, our SQL cluster failed over to the passive node which caused the transaction to start rolling back.&amp;nbsp; This is when we discovered that rollback is single-threaded and lower priority, so we had to wait almost 4 days for the transaction to rollback before we could bring the server back online. That was not a good week &lt;img src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/1830.wlEmoticon_2D00_sadsmile_5F00_2.png" alt="Sad smile" class="wlEmoticon wlEmoticon-sadsmile" style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" /&gt; and we learnt many lessons from that upgrade.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/7026.image_5F00_4.png"&gt;&lt;img height="413" width="644" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-06-17-metablogapi/5554.image_5F00_thumb_5F00_1.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once that upgrade was complete and the TFS problems were fixed, it was like a spotlight came on and exposed some problems in our underlying infrastructure (cluster failovers, poor disk performance, network failures, hardware failures).&amp;nbsp; Over the next six months, we had a team of people dedicated (from both the product group &amp;amp; operations side) to getting to the bottom of all the issues and a focus to get the division stable again.&lt;/p&gt;
&lt;p&gt;The end result is that by us dogfooding our own product, we&amp;rsquo;ve changed how we approach upgrades and made them more robust which makes it a much better experience for everybody.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the latest DevDiv TFS Statistics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Team Projects: 72 &lt;/li&gt;
&lt;li&gt;Files: 981,754,813 &lt;/li&gt;
&lt;li&gt;Uncompressed File Sizes: 20,317,315 &lt;/li&gt;
&lt;li&gt;Checkins: 1,912,072 &lt;/li&gt;
&lt;li&gt;Shelvesets: 244,324 &lt;/li&gt;
&lt;li&gt;Merge History: 2,342,520,807 &lt;/li&gt;
&lt;li&gt;Workspaces: 38,625 &lt;/li&gt;
&lt;li&gt;Local Copies: 4,251,932,059 &lt;/li&gt;
&lt;li&gt;Users with Assigned Work Items: 5,121 &lt;/li&gt;
&lt;li&gt;Total Work Items: 897,787 &lt;/li&gt;
&lt;li&gt;Areas &amp;amp; Iterations: 11,835 &lt;/li&gt;
&lt;li&gt;Work Item Versions: 8,540,808 &lt;/li&gt;
&lt;li&gt;Work Item Attachments: 472,487 &lt;/li&gt;
&lt;li&gt;Work Item Queries: 93,572 &lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9997039" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS+at+Microsoft/">TFS at Microsoft</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category></item><item><title>TFS2010: Create a new Team Project Collection from Powershell and C#</title><link>http://blogs.msdn.com/b/granth/archive/2010/02/27/tfs2010-create-a-new-team-project-collection-from-powershell.aspx</link><pubDate>Sat, 27 Feb 2010 18:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9970370</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=9970370</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=9970370</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/02/27/tfs2010-create-a-new-team-project-collection-from-powershell.aspx#comments</comments><description>&lt;p&gt;Team Foundation Server 2010 has the great new Administration Console, however one of the shortcomings of it is that you have to run it on the TFS Application Tier itself. The team wants to have a tool that allows remote server administration, however it required more time than we had for this release. Now because I hate logging on to servers, I&amp;rsquo;ve started seeking out ways to do common tasks remotely.&lt;/p&gt;
&lt;p&gt;Fortunately, the product was architected in a way that you can almost do everything in the admin console via web services and the TFS client &amp;amp; server APIs. &lt;/p&gt;
&lt;p&gt;To &lt;a href="http://msdn.microsoft.com/en-us/library/dd273726(VS.100).aspx"&gt;Create a Team Project Collection&lt;/a&gt;, the normal way is to logon to the server, open the admin console and click through the UI.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010CreateanewTeamProjectCollectionfr_9801/image_2.png"&gt;&lt;img height="303" width="504" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010CreateanewTeamProjectCollectionfr_9801/image_thumb.png" alt="Create TPC UI" border="0" title="Create TPC UI" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Using Powershell&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Fortunately, I found a script from &lt;a href="http://blogs.msdn.com/chrisid/"&gt;Chris Sidi&lt;/a&gt; and all I had to do was &lt;a href="http://blogs.msdn.com/granth/archive/2009/12/07/tfs2010-object-model-api-changes-after-beta-2.aspx"&gt;make it compatible with the changes that we introduced after Beta2&lt;/a&gt;. All you have to do is start Windows PowerShell on your local workstation, replace the highlighted values and run the following script. You can also run this on the server itself, however you will need to start PowerShell using &amp;ldquo;Run as Administrator&amp;rdquo;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;# Load client OM assembly.
[Reflection.Assembly]::Load("Microsoft.TeamFoundation.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");

$instanceBaseUrl = "&lt;span style="color: #ff0000;"&gt;http://tfsserver:8080/tfs/&lt;/span&gt;";
$tfsServer = new-object Microsoft.TeamFoundation.Client.TfsConfigurationServer $instanceBaseUrl;

$tpcSvc = $tfsServer.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamProjectCollectionService]);
$job = $tpcSvc.QueueCreateCollection(
    "&lt;span style="color: #ff0000;"&gt;MyCollection&lt;/span&gt;",      # collection name.
    "",                  # description.
    $false,              # don't make this the default collection.
    "~/&lt;span style="color: #ff0000;"&gt;MyCollection&lt;/span&gt;/",   # virtual directory.
    "Started",           # State after creation.
    $null,               # no tokens.
    "Server=&lt;span style="color: #ff0000;"&gt;SQLSERVER&lt;/span&gt;;Integrated Security=SSPI;",       # The SQL instance to create the collection on. Specify SERVER\INSTANCE if not using default instance
    $null,               # null because the collection database doesn't already exist.
    $null)               # null because the collection database doesn't already exist.

$collection = $tpcSvc.WaitForCollectionServicingToComplete($job)&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Execution of the last line will block until the collection is completed. If the collection cannot be completed for any reason, you&amp;rsquo;ll receive an exception:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Exception calling "WaitForCollectionServicingToComplete" with "1" argument(s): "The collection servicing job did not succeed."&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If this is the case, then you&amp;rsquo;ll have to open up the admin console and look through the &amp;ldquo;Logs&amp;rdquo; node to see why it failed.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;C# code to do the same&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Add references to: Microsoft.TeamFoundation.Client.dll and Microsoft.TeamFoundation.Common.dll&lt;/p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.Client;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.Framework.Client;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.Framework.Common;

&lt;span class="kwrd"&gt;namespace&lt;/span&gt; CreateTPC
{
    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program
    {
        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)
        {
            &lt;span class="kwrd"&gt;string&lt;/span&gt; serverUrl = &lt;span class="str"&gt;"&lt;span style="color: #ff0000;"&gt;http://myserver:8080/tfs&lt;/span&gt;"&lt;/span&gt;;
            &lt;span class="kwrd"&gt;string&lt;/span&gt; collectionName = &lt;span class="str"&gt;"&lt;span style="color: #ff0000;"&gt;MyCollection&lt;/span&gt;"&lt;/span&gt;;
            &lt;span class="kwrd"&gt;string&lt;/span&gt; sqlConnectionString = &lt;span class="str"&gt;"&lt;span style="color: #ff0000;"&gt;Data Source=MYSQLSERVER;Integrated Security=True;&lt;/span&gt;"&lt;/span&gt;;

            TfsConfigurationServer tfs = &lt;span class="kwrd"&gt;new&lt;/span&gt; TfsConfigurationServer(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(serverUrl));
            ITeamProjectCollectionService tpcService = tfs.GetService&amp;lt;ITeamProjectCollectionService&amp;gt;();

            Dictionary&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; servicingTokens = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;();
            servicingTokens.Add(&lt;span class="str"&gt;"SharePointAction"&lt;/span&gt;, &lt;span class="str"&gt;"None"&lt;/span&gt;); &lt;span class="rem"&gt;// don't configure sharepoint&lt;/span&gt;
            servicingTokens.Add(&lt;span class="str"&gt;"ReportingAction"&lt;/span&gt;, &lt;span class="str"&gt;"None"&lt;/span&gt;); &lt;span class="rem"&gt;// don't configure reporting services&lt;/span&gt;

            ServicingJobDetail tpcJob = tpcService.QueueCreateCollection(
                collectionName, &lt;span class="rem"&gt;// Collection name&lt;/span&gt;
                &lt;span class="str"&gt;""&lt;/span&gt;, &lt;span class="rem"&gt;// description&lt;/span&gt;
                &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="rem"&gt;// IsDefaultCollection&lt;/span&gt;
                &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"~/{0}/"&lt;/span&gt;, collectionName), &lt;span class="rem"&gt;// virtual directory&lt;/span&gt;
                TeamFoundationServiceHostStatus.Started, &lt;span class="rem"&gt;// initial state&lt;/span&gt;
                servicingTokens, &lt;span class="rem"&gt;// servicing tokens&lt;/span&gt;
                sqlConnectionString, &lt;span class="rem"&gt;// connection string&lt;/span&gt;
                &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="rem"&gt;// default connection string&lt;/span&gt;
                &lt;span class="kwrd"&gt;null&lt;/span&gt;  &lt;span class="rem"&gt;// database category connection strings&lt;/span&gt;
                );

            TeamProjectCollection tpc = tpcService.WaitForCollectionServicingToComplete(tpcJob);
        }
    }
}
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/!--&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9970370" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/PowerShell/">PowerShell</category></item><item><title>TFS2010: Warehouse and Job Service Administrator Reports</title><link>http://blogs.msdn.com/b/granth/archive/2010/02/07/tfs2010-warehouse-and-job-status-reports.aspx</link><pubDate>Sun, 07 Feb 2010 15:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9959406</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=9959406</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=9959406</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/02/07/tfs2010-warehouse-and-job-status-reports.aspx#comments</comments><description>&lt;h4&gt;&lt;/h4&gt;
&lt;p&gt;The new TFS Administration Console will show you very basic information about warehouse &amp;amp; cube processing. However, it doesn&amp;rsquo;t show you anything about the queued &amp;amp; executing jobs.&amp;nbsp; These are both gaps that I hope we address in the shipping product in the future. In the meantime for any real warehouse or job status information you have to hit the web services. Since the web services don&amp;rsquo;t allow you to invoke them using a web browser from a remote computer, you&amp;rsquo;re forced to logon locally to the server and run them from there.&lt;/p&gt;
&lt;p&gt;The smarter option is to download yourself a copy of &lt;a href="http://www.codeplex.com/WebserviceStudio"&gt;WebServiceStudio&lt;/a&gt;, which allows you to invoke web methods with complex parameters from your remote workstation. No more logging onto servers!&lt;/p&gt;
&lt;p&gt;Here are the WSDL EndPoint&amp;rsquo;s that you&amp;rsquo;ll need. Copy them in, change the server name, select &amp;lsquo;Get&amp;rsquo;, select a method from the tree, select &amp;lsquo;Invoke&amp;rsquo;, (ignore the exception dialog if you get one the first time), select &amp;lsquo;Invoke&amp;rsquo; again and there you have it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Warehouse Control Service - &lt;a href="http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx" title="http://vstspioneer:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx"&gt;http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Job Service - &lt;a href="http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/JobService.asmx" title="http://vstspioneer:8080/tfs/TeamFoundation/Administration/v3.0/JobService.asmx"&gt;http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/JobService.asmx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp; &lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010WarehouseandJobStatusReports_662F/image_14.png"&gt;&lt;img height="388" width="504" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010WarehouseandJobStatusReports_662F/image_thumb_8.png" alt="image" border="0" title="image" style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Now, the problem with either reading the XML from the web browser (argh! my eyes!), or using WebServiceStudio is that there&amp;rsquo;s lots of nested information which makes it difficult to find out what&amp;rsquo;s going on. Fortunately with a fairly simple report and the &lt;a href="http://msdn.microsoft.com/en-us/library/aa964129(SQL.90).aspx"&gt;XML Data Source that SQL Reporting Services provides&lt;/a&gt;, we can make it much, much nicer. &lt;/p&gt;
&lt;h4&gt;Introducing the first two TFS2010 Administration Reports &lt;/h4&gt;
&lt;p&gt;As I run the &lt;a href="http://blogs.msdn.com/granth/archive/2009/08/27/vsts-pioneer-tfs2010-dogfood-server.aspx"&gt;Pioneer dogfood TFS server&lt;/a&gt; day-to-day, I notice opportunities for tools to help make TFS administrator&amp;rsquo;s lives easier. Here&amp;rsquo;s the first two reports to give you a better insight as to what is happening on your server and allow you to investigate problems without having to mess around with web services.&lt;/p&gt;
&lt;h4&gt;Download &amp;amp; Setup&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Open a browser an browse to your SQL Reporting Services root site. For example: &lt;a href="http://tfsserver/Reports/"&gt;http://tfsserver/Reports/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Create a new folder and name it &amp;lsquo;Status&amp;rsquo;&lt;/li&gt;
&lt;li&gt;Create two new shared data sources with the following properties:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name: TfsWarehouseControllerDS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Connection string: &lt;a href="http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx" title="http://vstspioneer:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx"&gt;http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx&lt;/a&gt; (remember to replace with your own server name)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Name: TfsJobServiceDS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Connection string: &lt;a href="http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/JobService.asmx" title="http://vstspioneer:8080/tfs/TeamFoundation/Administration/v3.0/JobService.asmx"&gt;http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/JobService.asmx&lt;/a&gt; (remember to replace with your own server name)&lt;/li&gt;
&lt;li&gt;[X] Hide in list view&lt;/li&gt;
&lt;li&gt;[X] Enable this data source&lt;/li&gt;
&lt;li&gt;Data Source Type: XML&lt;/li&gt;
&lt;li&gt;Connect using: Credentials stored securely in the report server&lt;/li&gt;
&lt;li&gt;[X] Use as Windows credentials when connecting to the data source&lt;/li&gt;
&lt;li&gt;(If you choose &amp;ldquo;Windows integrated security&amp;rdquo;, then only TFS administrators will be able to access the report. This may or may not be what you want. Your choice)&lt;/li&gt;
&lt;li&gt;Apply the changes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Download the ZIP attachment &lt;strong&gt;from the bottom of this post&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Extract the contents to a temporary folder on your workstation&lt;/li&gt;
&lt;li&gt;Select &amp;lsquo;Upload File&amp;rsquo; from the reporting services manager&lt;/li&gt;
&lt;li&gt;Browse to the temporary folder where you extracted the reports, select &amp;lsquo;OK&amp;rsquo;.&lt;/li&gt;
&lt;li&gt;Repeat for the other report&lt;/li&gt;
&lt;li&gt;Try it out!&lt;/li&gt;
&lt;li&gt;Get somebody else to try it out and make sure permissions are set correctly. &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;/h3&gt;
&lt;h4&gt;Warehouse Status Report&lt;/h4&gt;
&lt;p&gt;The first part of the report shows you the overall status, similar to the &amp;lsquo;Reporting&amp;rsquo; tab in the Team Foundation Administration Console. This is a quick an easy way to find out if an Incremental or Full processing is in progress.&amp;nbsp; It will also show you any errors (like warehouse schema conflicts) in the &amp;lsquo;Last Run&amp;rsquo; column.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010WarehouseandJobStatusReports_662F/image_8.png"&gt;&lt;img height="205" width="504" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010WarehouseandJobStatusReports_662F/image_thumb_3.png" alt="Warehouse Status Report - Processing status" border="0" title="Warehouse Status Report - Processing status" style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The second part of this report is useful after an upgrade or when the warehouse needs to be rebuilt manually.&amp;nbsp; It shows you each of the data adapter sync jobs for each collection and their current status. During normal operation, these will run very quickly as data changes in the operational stores, so you&amp;rsquo;ll probably always see them as &amp;ldquo;Idle&amp;rdquo;. It will also show you any errors from previous job executions in the &amp;lsquo;Last Run&amp;rsquo; column.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010WarehouseandJobStatusReports_662F/image_10.png"&gt;&lt;img height="296" width="504" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010WarehouseandJobStatusReports_662F/image_thumb_4.png" alt="Warehouse Status Report - Data Adapter Jobs" border="0" title="Warehouse Status Report - Data Adapter Jobs" style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h4&gt;Job Status Report&lt;/h4&gt;
&lt;p&gt;The first part of this report shows you the job definitions for the instance and the interval they&amp;rsquo;re set to run on. This is useful for checking to see if a job has somehow been disabled or changed.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010WarehouseandJobStatusReports_662F/image_2.png"&gt;&lt;img height="198" width="504" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010WarehouseandJobStatusReports_662F/image_thumb.png" alt="Job Status Report - Job Definitions" border="0" title="Job Status Report - Job Definitions" style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The second part of this report shows you the job history. Let me explain each of the fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Job ID&lt;/strong&gt; &amp;ndash; Every job in the system has a unique id. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Job Agent ID&lt;/strong&gt; &amp;ndash; Every AT/Job Agent has a unique id.&amp;nbsp; This field is useful if you have multiple application tiers and you want to know which one the job executed on so that you can investigate the event log or performance counters. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Result&lt;/strong&gt; &amp;ndash; This is an integer that represents the result of the job. 0 = Succeeded, 1 = PartiallySucceeded, 2 = Failed, 3 = Stopped, 4 = Killed, 5 = Blocked, 6 = ExtensionNotFound, 7 = Inactive, 8 = Disabled &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Queued Reason&lt;/strong&gt; &amp;ndash; This is an integer that represents the way a job was scheduled. 0 = No reason to execute the job, 1 = Job has a schedule, 2 = Queued manually, 4 = Queued manually while already in progress, 8 = Queued due to previous result (Blocked, Inactive) &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Start Time&lt;/strong&gt; &amp;ndash; The local time that the job started executing on a job agent &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;End Time&lt;/strong&gt; &amp;ndash; The local time that the job finished executing on a job agent &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duration&lt;/strong&gt; &amp;ndash; The number of minutes that the job was executing for &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Result Message&lt;/strong&gt; &amp;ndash; Jobs are able to log a status message when they finish executing. Most jobs don&amp;rsquo;t,&amp;nbsp; since they execute very often and there&amp;rsquo;s no need to log anything if the job succeeded. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010WarehouseandJobStatusReports_662F/image_4.png"&gt;&lt;img height="222" width="504" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010WarehouseandJobStatusReports_662F/image_thumb_1.png" alt="Job Status Report - Job History" border="0" title="Job Status Report - Job History" style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a few little visual styles that I added to allow you to glance the report and find problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hover over a job result message to see the full text &lt;/li&gt;
&lt;li&gt;Job results that failed have their error printed in red &lt;/li&gt;
&lt;li&gt;Jobs that took longer than 30 minutes have their duration in red &lt;/li&gt;
&lt;li&gt;Jobs that took longer than 10 minutes have their duration in orange &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h5&gt;&lt;strong&gt;Filters&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;There is a lot of noise when dealing with jobs, so I added some parameters to help you filter out the noise.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010WarehouseandJobStatusReports_662F/image_6.png"&gt;&lt;img height="31" width="503" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010WarehouseandJobStatusReports_662F/image_thumb_2.png" alt="image" border="0" title="image" style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unscheduled jobs&lt;/strong&gt; - are jobs that have a definition, but no schedule set. Examples: &amp;ldquo;Create Team Project Collection&amp;rdquo;, &amp;ldquo;Delete Team Project Collection&amp;rdquo;, &amp;ldquo;Service Team Project Collection&amp;rdquo;, &amp;ldquo;Provision Attach Team Project collection&amp;rdquo; and &amp;ldquo;Team Foundation Server On Demand Identity Synchronization&amp;rdquo;. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Successful jobs&lt;/strong&gt; - are jobs that have a job result of &amp;lsquo;0&amp;rsquo; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you find these useful, leave me a comment or &lt;a href="http://blogs.msdn.com/granth/contact.aspx"&gt;drop me an email&lt;/a&gt;. I&amp;rsquo;d love suggestions for them or for any new TFS2010 Administrator reports.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9959406" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-95-94-06/TFS2010AdministratorReports.zip" length="12896" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/Performance/">Performance</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/Pioneer+Dogfood/">Pioneer Dogfood</category></item><item><title>TFS2010: Invoking TFS web services using PowerShell</title><link>http://blogs.msdn.com/b/granth/archive/2010/01/12/tfs2010-invoking-tfs-web-services-using-powershell.aspx</link><pubDate>Tue, 12 Jan 2010 19:00:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9947259</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=9947259</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=9947259</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2010/01/12/tfs2010-invoking-tfs-web-services-using-powershell.aspx#comments</comments><description>&lt;p&gt;In this blog post, I’m going to show you how to invoke the Visual Studio 2010 Team Foundation Web Services remotely using Windows PowerShell 2.0.&lt;/p&gt;  &lt;p&gt;There are some TFS administrative functions that can only be performed remotely using the TFS ASMX web services. Over time, there will be powertools and functionality in the command line tools and TFS Administration Console&amp;#160; that allows you to access these. In the meantime though, we have to create our own scripts and utilities for doing this.&lt;/p&gt;  &lt;p&gt;PowerShell 2.0 is installed by default in Windows 7 and Windows Server 2008 R2. It includes a new cmdlet called “&lt;a href="http://technet.microsoft.com/en-us/library/dd315258.aspx"&gt;New-WebServiceProxy&lt;/a&gt;”. Using this cmdlet, we can create an in-memory web service proxy for the TFS web services and use it to invoke some useful web methods.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Viewing currently executing requests&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1. Open Powershell 2.0 from the Start menu. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010InvokingTFSwebservicesusingPowerS_97BF/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010InvokingTFSwebservicesusingPowerS_97BF/image_thumb_2.png" width="500" height="129" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2. Create the web service proxy by copying this command and replacing your server name in the URL.&amp;#160; The UseDefaultCredentials is required so that we are authenticated to the web service.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;$tfsadmin = New-WebServiceProxy –UseDefaultCredential -URI &lt;a href="http://tfsserver:8080/tfs/TeamFoundation/administration/v3.0/AdministrationService.asmx?WSDL"&gt;http://tfsserver:8080/tfs/TeamFoundation/administration/v3.0/AdministrationService.asmx?WSDL&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010InvokingTFSwebservicesusingPowerS_97BF/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010InvokingTFSwebservicesusingPowerS_97BF/image_thumb_4.png" width="500" height="93" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. Invoke the &lt;strong&gt;QueryActiveRequests&lt;/strong&gt; web method, expand the &lt;strong&gt;ActiveRequests&lt;/strong&gt; property for each item returned and then format some of the properties (User, Method, etc) as a table (ft).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;$tfsadmin.QueryActiveRequests($null, &amp;quot;False&amp;quot;) | %{ $_.ActiveRequests } | ft StartTime,UserName,MethodName,RemoteComputer&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010InvokingTFSwebservicesusingPowerS_97BF/image_14.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/granth/WindowsLiveWriter/TFS2010InvokingTFSwebservicesusingPowerS_97BF/image_thumb_6.png" width="500" height="93" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;This is a very simple example which should be enough to get you started. Some of the other Administration web services you might want to explore are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://vstspioneer:8080/tfs/TeamFoundation/Administration/v3.0/JobService.asmx" href="http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/JobService.asmx"&gt;http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/JobService.asmx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="http://vstspioneer:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx" href="http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx"&gt;http://tfsserver:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Where possible, you should use the Microsoft.TeamFoundation object model since that is the officially supported API. &lt;a href="http://blogs.msdn.com/granth/archive/2009/10/28/tfs2010-diagnosing-email-and-soap-subscription-failures.aspx"&gt;An example for modifying the TFS registry is included in this post&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9947259" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/PowerShell/">PowerShell</category></item><item><title>TFS2010: What happens to subscriptions after an upgrade?</title><link>http://blogs.msdn.com/b/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>Grant Holliday - GrantH</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=9935530</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=9935530</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2009/12/10/tfs2010-what-happens-to-subscriptions-after-an-upgrade.aspx#comments</comments><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/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category></item><item><title>TFS2010: Object Model API changes after Beta 2</title><link>http://blogs.msdn.com/b/granth/archive/2009/12/07/tfs2010-object-model-api-changes-after-beta-2.aspx</link><pubDate>Tue, 08 Dec 2009 07:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9933926</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=9933926</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=9933926</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2009/12/07/tfs2010-object-model-api-changes-after-beta-2.aspx#comments</comments><description>&lt;P&gt;&lt;STRONG&gt;Update: &lt;/STRONG&gt;You should read this post in conjunction with Taylor's blog post: &lt;A href="http://blogs.msdn.com/taylaf/archive/2010/02/23/introducing-the-tfsconnection-tfsconfigurationserver-and-tfsteamprojectcollection-classes.aspx" mce_href="http://blogs.msdn.com/taylaf/archive/2010/02/23/introducing-the-tfsconnection-tfsconfigurationserver-and-tfsteamprojectcollection-classes.aspx"&gt;Introducing the TfsConnection, TfsConfigurationServer and TfsTeamProjectCollection Classes&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&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;nbsp; 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" mce_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;nbsp; 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;nbsp; 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" mce_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;nbsp; Because of that feedback we decided to make some changes to these objects to make them more intuitive.&amp;nbsp; 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;nbsp; 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;nbsp; If the collection url is passed in this is essentially a no-op.&amp;nbsp; &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;nbsp; 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;nbsp; 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;nbsp; 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/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category></item><item><title>TFS2010: Older clients not able to connect</title><link>http://blogs.msdn.com/b/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>Grant Holliday - GrantH</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=9933922</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=9933922</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2009/12/07/tfs2010-older-clients-not-able-to-connect.aspx#comments</comments><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/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category></item><item><title>Multi-threaded robocopy for faster copies</title><link>http://blogs.msdn.com/b/granth/archive/2009/12/07/multi-threaded-robocopy-for-faster-copies.aspx</link><pubDate>Tue, 08 Dec 2009 06:27:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9933915</guid><dc:creator>Grant Holliday - GrantH</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=9933915</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=9933915</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2009/12/07/multi-threaded-robocopy-for-faster-copies.aspx#comments</comments><description>&lt;p&gt;Windows 7 and Windows Server 2008 R2 include an updated version of &lt;a href="http://en.wikipedia.org/wiki/Robocopy"&gt;Robocopy&lt;/a&gt; that includes a multi-threaded copy feature.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;/MT&lt;/strong&gt;[:n] :: Do multi-threaded copies with n threads (default 8).&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I’ve been using this for a while now and I’ve been seeing excellent results. Be careful with who you share a switch with though – I managed to saturate my 100Mbit switch so badly that my fellow switch neighbors started getting timeouts. My favorite usage is:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;robocopy &lt;a href="file://\\server\share\folder"&gt;\\server\share\folder&lt;/a&gt; C:\Temp\folder /S /MT /Z&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This copies the contents of the remote folder, with 8 threads in restartable mode – great for when you’re on a slow or unreliable link.&amp;#160; Also note that the progress monitors don’t seem accurate in multi-threaded mode. It starts copying 8 files at once, but only shows you the progress of 1 of them.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9933915" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/granth/archive/tags/Other/">Other</category></item><item><title>TFS2010: Troubleshooting SharePoint Dashboards data source problems</title><link>http://blogs.msdn.com/b/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>Grant Holliday - GrantH</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=9932232</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=9932232</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2009/12/03/tfs2010-troubleshooting-sharepoint-dashboards-data-source-problems.aspx#comments</comments><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/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category></item><item><title>VSTS Pioneer TFS2010: SQL Backups</title><link>http://blogs.msdn.com/b/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>Grant Holliday - GrantH</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/rsscomments.aspx?WeblogPostID=9922284</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/granth/commentapi.aspx?WeblogPostID=9922284</wfw:comment><comments>http://blogs.msdn.com/b/granth/archive/2009/11/13/vsts-pioneer-tfs2010-sql-backups.aspx#comments</comments><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&amp;rsquo;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&amp;rsquo;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 &amp;lsquo;Tfs_Configuration&amp;rsquo; 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.&lt;/p&gt;
&lt;table style="width: 635px;" border="1" cellspacing="0" cellpadding="0"&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;Then we have our IT group&amp;rsquo;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 &amp;ndash; 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/b/granth/archive/tags/TFS/">TFS</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/TFS+at+Microsoft/">TFS at Microsoft</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VS2010/">VS2010</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/VSTS+Administering/">VSTS Administering</category><category domain="http://blogs.msdn.com/b/granth/archive/tags/Pioneer+Dogfood/">Pioneer Dogfood</category></item></channel></rss>
