<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Will Lennon</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/wlennon/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/wlennon/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 05:37:01 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Recreating the TFVC Team Project Folder</title>
      <link>https://docs.microsoft.com/archive/blogs/wlennon/recreating-the-tfvc-team-project-folder</link>
      <pubDate>Mon, 12 Dec 2016 19:44:30 GMT</pubDate>
      <dc:creator><![CDATA[Will Lennon - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wlennon/?p=285</guid>
      <description><![CDATA[TF.exe makes it easy to destroy a TFVC team project folder, but if you do it's not as easy to...]]></description>
      <content:encoded><![CDATA[TF.exe makes it easy to destroy a TFVC team project folder, but if you do it's not as easy to recreate it.

You can destroy all TFVC data in a team project by running  <strong>tf.exe destroy $/&lt;projectName&gt;</strong>

Then if you try to navigate TFVC in a web browser, you'll see an error like this:

<strong>TFS.WebApi.Exception: The items requested either do not exist on the server at the specified versions, or you do not have permission to access them.</strong>

If you decide you want to add back the team project folder, you cannot use tf.exe to do it.  There is no cmdline equivalent to recreate that team project folder.  If you try tf.exe add &lt;projectName&gt; you'll see an error like this:

<strong>TF10169: Unsupported pending change attempted on team project folder $/projectName.  Use the Project Creation Wizard in Team Explorer to create a project or the Team Project deletion tool to delete one.</strong>

That error message isn't helpful when you already have a team project with this name and only the TFVC project folder is missing.

To fix this, you'll need to use the TFS client OM.  Here is a Powershell script that will recreate the team project folder.  You will need to run this on a machine that has Visual Studio installed. The running user must also have administrator permissions to your TFS collection.

Note that this script will recreate the project folder, but it will not recreate the build and lab templates that are created when a project is created but were destroyed when they ran TF destroy. If you want those templates, you can copy them from any existing project.

You will need to update the $accountName and $projectName variables below. If you install Visual Studio in a non-default path, you’ll also need to update the $path and $path2 variables.  $accountName could be a VSTS account URL or an on-premises TFS Collection URL.

$accountName = "<a href="https://%3caccountname%3e.visualstudio.com/">https://&lt;accountName&gt;.visualstudio.com</a>"

$projectName = "&lt;projectName&gt;"

$path = "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer"

$path2="C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PrivateAssemblies"

Add-Type -Path "$path\Microsoft.TeamFoundation.Client.dll"

Add-Type -Path "$path\Microsoft.TeamFoundation.VersionControl.Client.dll"

Add-Type -Path "$path\Microsoft.TeamFoundation.VersionControl.Common.dll"

Add-Type -Path "$path2\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"

Add-Type -Path "$path\Microsoft.VisualStudio.Services.Client.dll"

$tpc = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($accountName)

$vc = $tpc.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer])

$options = New-Object Microsoft.TeamFoundation.VersionControl.Client.TeamProjectFolderOptions($projectName)

$vc.CreateTeamProjectFolder($options)

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Fix for TFS 2015 Upgrade error The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.tbl_Workspace_Dataspace' and the index name 'IX_tbl_OwnerId_WorkspaceName_WorkspaceVersion_Type'</title>
      <link>https://docs.microsoft.com/archive/blogs/wlennon/fix-for-tfs-2015-upgrade-error-the-create-unique-index-statement-terminated-because-a-duplicate-key-was-found-for-the-object-name-dbo-tbl_workspace_dataspace-and-the-index-name-ix_tbl_ownerid_wo</link>
      <pubDate>Thu, 28 Jul 2016 13:58:53 GMT</pubDate>
      <dc:creator><![CDATA[Will Lennon - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wlennon/?p=255</guid>
      <description><![CDATA[If you are upgrading to TFS 2015 there is a very tiny chance you might hit this...]]></description>
      <content:encoded><![CDATA[If you are upgrading to TFS 2015 there is a very tiny chance you might hit this error:

[19:40:39.780]   System.Data.SqlClient.SqlException (0x80131904): The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.tbl_Workspace_Dataspace' and the index name 'IX_tbl_OwnerId_WorkspaceName_WorkspaceVersion_Type'. The duplicate key value is (1, &lt;GUID&gt;, &lt;WorkspaceName&gt;, 1, 0).

[19:40:39.780]   Rebuilding index: IX_tbl_OwnerId_WorkspaceName_WorkspaceVersion_Type

[19:40:39.780]   ALTER INDEX [IX_tbl_OwnerId_WorkspaceName_WorkspaceVersion_Type] ON [dbo].[tbl_Workspace_Dataspace] REBUILD WITH(ONLINE=OFF, MAXDOP=0)

The workaround is to run the follow SQL Script on the TFS Collection database that failed to upgrade and then restart the upgrade job.
<div>DECLARE @fallbackTfId AS UNIQUEIDENTIFIER
DECLARE @fallbackId AS INT</div>
<div></div>
<div>SELECT  TOP(1)
@fallbackTfId = vcim.TeamFoundationId,
@fallbackId = vcim.IdentityId
FROM    tbl_VCIdentityMap vcim
WHERE   PartitionId = 1
ORDER BY vcim.IdentityId ASC</div>
<div></div>
<div>UPDATE  wd
SET     WorkspaceName = SUBSTRING(wd.WorkspaceName, 1, 54) + '_TF' + SUBSTRING(CONVERT(NVARCHAR(36), NEWID()), 1, 7)
FROM    tbl_Workspace_Dataspace wd
JOIN    tbl_Workspace w
ON      w.PartitionId = wd.PartitionId
AND w.WorkspaceId = wd.WorkspaceId
AND w.OwnerId &lt;&gt; @fallbackId
WHERE   wd.PartitionId = 1
AND wd.OwnerId = @fallbackTfId
AND wd.WorkspaceName = w.WorkspaceName</div>
<div></div>
<div>...</div>
<div>Then restart the job by opening the TFS Administration Console, select the Team Project Collection tab, select the collection that is Offline, select the Status tab, select the ApplyPatch activity, and then click Rerun Job.</div>
<div></div>
<div>This issue has been fixed in TFS 2016 RTM.</div>
&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Fix for error in upd_online_VersionControlDev11CTP3_CodeChurn.sql</title>
      <link>https://docs.microsoft.com/archive/blogs/wlennon/235</link>
      <pubDate>Wed, 08 Jun 2016 19:08:36 GMT</pubDate>
      <dc:creator><![CDATA[Will Lennon - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wlennon/?p=235</guid>
      <description><![CDATA[If you upgrade your TFS 2010 server to TFS 2015.2 and have Reporting Services enabled, you may...]]></description>
      <content:encoded><![CDATA[If you upgrade your TFS 2010 server to TFS 2015.2 and have Reporting Services enabled, you may discover the following error in your event log after the upgrade:

<strong>TF400797: Job extension had an unhandled error: Microsoft.TeamFoundation.Framework.Server.SqlScriptException: 1 error(s) occurred while executing upd_online_VersionControlDev11CTP3_CodeChurn.sql script. Failed batch starts on line: 1. Error: 206, Level: 16, State: 2, Batch Line: 0, Script Line: 0 Message: Operand type clash: varchar is incompatible with typ_KeyValuePairStringTableNullable</strong>

This bug only affects users who upgrade from TFS 2010 directly to TFS 2015.2, 2015.2.1 (and maybe 2015.1).  It is is fixed in TFS 2015.3.

To workaround the issue, run this SQL script against your TFS Collection database that is reporting the issue.

DECLARE @partitionId INT = 1
DECLARE @registryUpdates typ_KeyValuePairStringTableNullable
INSERT  @registryUpdates ([Key], Value)
SELECT  '#\Configuration\VersionControl\CodeChurn\InUpgrade\', NULL
EXEC prc_UpdateRegistry @partitionId, @registryUpdates
DROP TABLE tbl_UpgradeCodeChurn

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>What are my Version Control permissions on Visual Studio Online?</title>
      <link>https://docs.microsoft.com/archive/blogs/wlennon/what-are-my-version-control-permissions-on-visual-studio-online</link>
      <pubDate>Mon, 21 Sep 2015 10:29:00 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wlennon/2015/09/21/what-are-my-version-control-permissions-on-visual-studio-online/</guid>
      <description><![CDATA[I want to shed some light on how to figure out what your Version Control permissions are in your...]]></description>
      <content:encoded><![CDATA[<p>I want to shed some light on how to figure out what your Version Control permissions are in your Visual Studio Online account.&nbsp;&nbsp;</p>
<p>Some customers have sent us questions like "I can create a team project, but when I try to check-in a file to that project, I get a permission denied error.&nbsp; Why is that?"</p>
<p>&nbsp;</p>
<p>Specifically you might see a message like:</p>
<p>TF14098: Access denied: User &lt;you&gt; needs AdminProjectRights permission(s) for &lt;project&gt;.</p>
<p>or</p>
<p><span style="color: #222222;">&nbsp;</span><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   ">TF14098: Access Denied: User &lt;you&gt; needs Checkin permission (s) for $/&lt;projectname&gt;/&lt;folder&gt;/&lt;filename&gt;</span></p>
<p><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   ">&nbsp;</span></p>
<p><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   ">Unfortunately, as of September 2015, the&nbsp;web experience in visualstudio.com does not allow you&nbsp;to self-diagnose why you don't have the permissions you think you should have.&nbsp; So to do this, you'll need the help of a Project Administrator.</span></p>
<p><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   ">Below is a walk through of how a project administrator can figure out why a team member does not have Check-in permissions for their team project.&nbsp; This post applies for both TFVC and Git, although the screenshots below show TFVC.</span></p>
<p><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   "><br /></span><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   ">As a project administrator, navigate to your project's Version Control security page.&nbsp; To do that, navigate to your Visual Studio Online project like this:</span></p>
<p><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   ">ie: <strong>https://&lt;youraccount&gt;.visualstudio.com/DefaultCollection/&lt;project&gt;</strong></span></p>
<p>Click the gear icon in the top right corner to get to the administration site, and from there click the Version Control tab.&nbsp; You'll see something like this:</p>
<p>&nbsp;</p>
<p><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   "><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/91/21/1665.WillSecurity1.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-91-21/1665.WillSecurity1.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/91/21/1665.WillSecurity1.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-91-21/1665.WillSecurity1.PNG" alt="" border="0" /></a></span></p>
<p><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   ">The problem with this page is it only tells you the default permissions for the various user groups for this project.&nbsp; For example you can see what permissions you get by being a member of the Build Administrators group or the Readers group.&nbsp; However these are just the default values and it does not mean that every member of that group has those permissions.&nbsp; If you are a member of multiple groups, and one group grants you permission, but another group denies you that permission, then your overall permission will be Denied.&nbsp; Since project administrators can add you to multiple groups and customize each group, they can quickly create quite a mess regarding individual permissions.</span></p>
<p><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   ">What we want, which is missing from Visual Studio Online today, is a way to see what the overall permissions for an individual user are.&nbsp; Here's how to do that.<br /></span></p>
<p><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   ">Click the <strong>Add...</strong> button and select <strong>Add User</strong>.&nbsp; That will pop-up a window like below.&nbsp;&nbsp;Enter the name of the user in question to add the user&nbsp;to the team&nbsp;project directly, and click <strong>Save Changes</strong>.</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/91/21/1031.AddMaya.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-91-21/1031.AddMaya.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/91/21/1031.AddMaya.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-91-21/1031.AddMaya.PNG" alt="" border="0" /></a></p>
<p>Now the user will show up individually under the Users section as shown below.&nbsp; Select that user in the center column.&nbsp; When you do that,&nbsp;the permissions on the right will be the specific permissions for that user.&nbsp;&nbsp;That's what we need to see!&nbsp;From there you can see in this example that the Check-in permission is set to <strong>Inherited Deny</strong>.&nbsp;&nbsp; Hover your mouse over the Deny setting and you'll see a <strong>Why?</strong> link appear.&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/91/21/6355.WillSecurity2.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-91-21/6355.WillSecurity2.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/91/21/6355.WillSecurity2.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-91-21/6355.WillSecurity2.PNG" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   ">Click on <strong>Why</strong>? to see the root cause of the Deny.&nbsp; In this contrived example I see this:</span></p>
<p><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   "><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/91/21/5635.WillSecurityTrace.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-91-21/5635.WillSecurityTrace.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/91/21/5635.WillSecurityTrace.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-91-21/5635.WillSecurityTrace.PNG" alt="" border="0" /></a></span></p>
<p>This tells me that the Deny permission was inherited from the Readers group.&nbsp; So the fix in this case would be to either remove the Deny permission from the Readers group, or remove this user from the Readers group.&nbsp; Either solution will work and the end result is the user will inherit the Allowed permission by virtue of belonging to the Contributors group.&nbsp; In this contrived example, the right fix is to remove the Deny permission from the Readers group; set it back to Not Set.</p>
<p>&nbsp;I hope that helps!</p>
<p>&nbsp;</p>
<p>P.S.&nbsp; I saw another interesting case of this that was caused by the user referencing&nbsp;the wrong project.&nbsp; This was further complicated by the recent Rename Project feature.&nbsp; The customer&nbsp;had two projects with similar names, only different by a space.&nbsp; They had a project named 'FooBar' and wanted to deprecate it.&nbsp; So they renamed it to 'FooBar - Old'&nbsp;and explicitly denied check-in permissions for all users.&nbsp; Then they created a new project named 'Foo Bar' (with a space).&nbsp;&nbsp;&nbsp;The fact the new project name had a&nbsp;space was evidently accidental and not well communicated.&nbsp; So users continued to use their existing workspaces that referenced 'FooBar.'&nbsp; That&nbsp;project name technically didn't exist anymore, but we in Visual Studio Online made a big effort to support backward compatibility.&nbsp; So users with old workspaces that referenced 'FooBar' were internally redirected to the new name of the old project 'FooBar - Old' and these users were getting the permission denied error.&nbsp; The fix was to update their workspace to refer to the new project 'Foo Bar' (with a space) or rename the new project to be the name of the old project (without a space), reusing the 'FooBar' name.</p>
<p>So check the project name carefully!</p>
<p>&nbsp;</p>
<p><span title="&quot;TF14098: Access Denied: User Luis Henrique needs Checkin permission(s) for $/SmsSender/Trunk/SmsServiceSolution/SmsServiceSolution.sln.&quot;   "><br /></span></p>]]></content:encoded>
    </item>
    <item>
      <title>TFS 2012 Update 4 fails in WorkItemTrackingToDev11M55.sql on SQL Server 2008 R2 RTM</title>
      <link>https://docs.microsoft.com/archive/blogs/wlennon/tfs-2012-update-4-fails-in-workitemtrackingtodev11m55-sql-on-sql-server-2008-r2-rtm</link>
      <pubDate>Wed, 27 Nov 2013 11:05:00 GMT</pubDate>
      <dc:creator><![CDATA[Will Lennon - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wlennon/2013/11/27/tfs-2012-update-4-fails-in-workitemtrackingtodev11m55-sql-on-sql-server-2008-r2-rtm/</guid>
      <description><![CDATA[If you are upgrading or installing TFS 2012 Update 4, you must use SQL Server 2008 R2 SP1 or...]]></description>
      <content:encoded><![CDATA[<p>If you are upgrading or installing TFS 2012 Update 4, you must use SQL Server 2008 R2 SP1 or newer.</p>
<p>If you try to use SQL 2008 R2 RTM you will hit this error:</p>
<p><strong>[Error] TF400744: An error occurred while executing the following script: WorkItemTrackingToDev11M55.sql. Failed batch starts on the line 9. Statement line: 42. Script line: 50. Error: 102 Incorrect syntax near '('.</strong></p>
<p>After upgrading your SQL Server to 2008 R2 SP1 or newer, you can restart your TFS upgrade by opening the TFS Administration Console. &nbsp;Navigate to the Team Project Collections node. &nbsp;Select each collection, go to the Status tab at the bottom of the page, and select the failed job. &nbsp;A Retry Job link will appear on the right. &nbsp;Click that to restart the job. &nbsp;Repeat for all failed collections.</p>
<p>&nbsp;You can download SQL 2008 R2 SP1 here:&nbsp;<a title="https://www.microsoft.com/en-us/download/details.aspx?id=26727" href="https://www.microsoft.com/en-us/download/details.aspx?id=26727">https://www.microsoft.com/en-us/download/details.aspx?id=26727</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>TFS 2013 RC Scheduled Backups fail with Could not find stored procedure 'prc_SetTransactionMark'</title>
      <link>https://docs.microsoft.com/archive/blogs/wlennon/tfs-2013-rc-scheduled-backups-fail-with-could-not-find-stored-procedure-prc_settransactionmark</link>
      <pubDate>Fri, 06 Sep 2013 10:15:57 GMT</pubDate>
      <dc:creator><![CDATA[Will Lennon - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wlennon/2013/09/06/tfs-2013-rc-scheduled-backups-fail-with-could-not-find-stored-procedure-prc_settransactionmark/</guid>
      <description><![CDATA[There is a bug in the TFS 2013 RC Scheduled Backups when TFS is configured to use Reporting...]]></description>
      <content:encoded><![CDATA[<p>There is a bug in the TFS 2013 RC Scheduled Backups when TFS is configured to use Reporting Services.&nbsp; The backup jobs will fail when trying to synchronize backups across the TFS databases.&nbsp; The issue manifests with this error message when the backup jobs run:</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: small;">[8/26/2013 1:04:31</span><br /><span style="font-family: courier new,courier; font-size: small;">PM] [Info] Marking TFS databases</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: small;">[8/26/2013 1:04:31</span><br /><span style="font-family: courier new,courier; font-size: small;">PM] [Info] Executing on Tfs_Warehouse: EXEC prc_SetTransactionMark TfsMarkTfpt</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: small;">[8/26/2013 1:04:31</span><br /><span style="font-family: courier new,courier; font-size: small;">PM] [Error]</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: small;">Exception Message:</span><br /><span style="font-family: courier new,courier; font-size: small;"><span style="background-color: #ffff00;">TF30040: The database is not correctly configured</span>. Contact your Team Foundation</span><br /><span style="font-family: courier new,courier; font-size: small;">Server administrator. (type DatabaseConfigurationException)</span></p>
<p style="padding-left: 30px;">....&nbsp;</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: small;">Exception Message:</span><br /><span style="font-family: courier new,courier; font-size: small;"><span style="background-color: #ffff00;">Could not find stored procedure 'prc_SetTransactionMark'</span>. (type SqlException)</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: small;">[Info&nbsp;&nbsp; @13:04:44.102] Node returned: Error</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier; font-size: small;">[Error&nbsp; @13:04:44.102] [8/26/2013 1:04:11 PM] [Info]</span><br /><span style="font-family: courier new,courier; font-size: small;">Requested Backup Job: Full</span></p>
<p>This bug has been fixed in TFS 2013 RTM.&nbsp; For RC users you can fix it now by running this SQL script against your Tfs_Warehouse database.&nbsp;</p>
<p><span style="font-family: courier new,courier; font-size: small;">USE [Tfs_Warehouse]</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">IF</span><br /><span style="font-family: courier new,courier; font-size: small;">OBJECT_ID('dbo.prc_SetTransactionMark', 'P') IS NOT NULL DROP PROCEDURE</span><br /><span style="font-family: courier new,courier; font-size: small;">dbo.prc_SetTransactionMark;</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">GO</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">IF</span><br /><span style="font-family: courier new,courier; font-size: small;">OBJECT_ID('dbo.tbl_TransactionMark', 'U') IS NULL</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">CREATE TABLE</span><br /><span style="font-family: courier new,courier; font-size: small;">tbl_TransactionMark (</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">&nbsp;&nbsp;&nbsp; LogMark TINYINT CONSTRAINT</span><br /><span style="font-family: courier new,courier; font-size: small;">PK_tbl_TransactionMark PRIMARY KEY CLUSTERED</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">)</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">GO</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">CREATE PROCEDURE</span><br /><span style="font-family: courier new,courier; font-size: small;">prc_SetTransactionMark</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">&nbsp;&nbsp;&nbsp; @name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br /><span style="font-family: courier new,courier; font-size: small;">NVARCHAR (128)</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">AS</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">SET NOCOUNT ON</span></p>
<p>&nbsp;</p>
<p><span style="font-family: courier new,courier; font-size: small;">BEGIN TRANSACTION</span><br /><span style="font-family: courier new,courier; font-size: small;">@name WITH MARK</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">DELETE FROM</span><br /><span style="font-family: courier new,courier; font-size: small;">tbl_TransactionMark WHERE LogMark = 1</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">INSERT INTO</span><br /><span style="font-family: courier new,courier; font-size: small;">tbl_TransactionMark (LogMark) VALUES (1)</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">COMMIT TRANSACTION</span></p>
<p><span style="font-family: courier new,courier; font-size: small;">GO</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>TFS 2012 Scheduled Backups Wizard fails with 'Permissions at the server scope can only be granted when the current database is master'</title>
      <link>https://docs.microsoft.com/archive/blogs/wlennon/tfs-2012-scheduled-backups-wizard-fails-with-permissions-at-the-server-scope-can-only-be-granted-when-the-current-database-is-master</link>
      <pubDate>Mon, 03 Jun 2013 08:52:20 GMT</pubDate>
      <dc:creator><![CDATA[Will Lennon - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wlennon/2013/06/03/tfs-2012-scheduled-backups-wizard-fails-with-permissions-at-the-server-scope-can-only-be-granted-when-the-current-database-is-master/</guid>
      <description><![CDATA[A customer reported an issue today he encountered while trying to configure the TFS 2012 Scheduled...]]></description>
      <content:encoded><![CDATA[<p>A customer reported an issue today he encountered while trying to configure the TFS 2012 Scheduled Backups Wizard.&nbsp; During the validation checks he hit this error:</p>
<p><span style="background-color: #ffff00;">Permissions at the server scope can only be granted when the current database is master</span></p>
<p>This is a bug in the Scheduled Backups wizard in TFS 2012 (QU2 and QU3).&nbsp;&nbsp; The workaround is to set the default database for the running user's SQL Login to be 'master'.</p>
<p>I'll get this fixed in the next version, but in the meantime you can workaround this issue by setting the default database back to 'master' by running this SQL query on the server(s) hosting the TFS databases.&nbsp; Make sure to change the domain\username value to the account that is running the wizard.</p>
<p>USE [master]<br />ALTER LOGIN [domain\username]<br />WITH DEFAULT_DATABASE = [master]</p>
<p><br /><br />&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Uninstalling .NET 4.0 Beta2 causes IISRESET to fail</title>
      <link>https://docs.microsoft.com/archive/blogs/wlennon/uninstalling-net-4-0-beta2-causes-iisreset-to-fail</link>
      <pubDate>Fri, 26 Feb 2010 19:01:00 GMT</pubDate>
      <dc:creator><![CDATA[Will Lennon - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wlennon/2010/02/26/uninstalling-net-4-0-beta2-causes-iisreset-to-fail/</guid>
      <description><![CDATA[If you are upgrading from TFS 2010 Beta2 and upgrade inplace to TFS 2010 RC or RTM, you may notice...]]></description>
      <content:encoded><![CDATA[<P>If you are upgrading from TFS 2010 Beta2 and upgrade inplace to TFS 2010 RC or RTM, you may notice after upgrade&nbsp;a warning that IISRESET failed.&nbsp; The warning instructs you to run it manually.&nbsp; Running it manually results in the same error:</P>
<P><SPAN style="FONT-SIZE: 11pt"><FONT color=#1f497d face=Calibri>The system cannot find the file specified. (2147942402, 80070002)</FONT></SPAN></P>
<P>IISRESET failing is not a problem for TFS, but nevertheless you may want to address this.&nbsp; To fix it,&nbsp;open Add / Remove Programs (appwiz.cpl) and run Repair on the .NET 4.0 Client component.&nbsp; This requires a reboot.</P>
<P><SPAN style="FONT-SIZE: 11pt"><FONT color=#1f497d face=Calibri></FONT></SPAN>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Upgrading TFS 2010 and hit error TF246062: Two or more databases are in conflict</title>
      <link>https://docs.microsoft.com/archive/blogs/wlennon/upgrading-tfs-2010-and-hit-error-tf246062-two-or-more-databases-are-in-conflict</link>
      <pubDate>Mon, 15 Feb 2010 09:10:00 GMT</pubDate>
      <dc:creator><![CDATA[Will Lennon - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wlennon/2010/02/15/upgrading-tfs-2010-and-hit-error-tf246062-two-or-more-databases-are-in-conflict/</guid>
      <description><![CDATA[If you are using TFS2010&nbsp;Beta2 or RC and used different formats to identify your SQL Database...]]></description>
      <content:encoded><![CDATA[<P>If you are using TFS2010&nbsp;Beta2 or RC and used different formats to identify your SQL Database instances ie (localhost, ., servername, servername.company.com, IP address) when creating your project collection databases, you may hit one of the following errors during the readiness checks of the TFS 2010 RTM Upgrade Wizard.&nbsp; </P>
<P><SPAN lang=EN>TF246062: Two or more databases are in conflict because they are each designated as the owners of the following schema: Framework. The schema is for the host with the following name and ID: CollectionName, 4bace481-2439-49c8-b017-77ee3da4ce29. The databases with this conflict are: Data Source=SQLInstance1;Initial Catalog=Tfs_CollectionName;Integrated Security=True, Data Source=SQLInstance2;Initial Catalog=Tfs_CollectionName;Integrated Security=True. You must specify one and only one database owner for the schema in the searchable SQL Server instances for this deployment of Team Foundation Server.</P>
<P><SPAN>TF246064: No database could be found for the following host: MyCollection. The host has the following ID: 4bace481-2439-49c8-b017-77ee3da4ce29. To fix this problem, use the TFSConfig RemapDBs command-line tool and make sure that you specify the SQL Server instance that contains this database..</SPAN>&nbsp;</P>
<P></SPAN>Some examples scenarios that would cause this issue:</P>
<P>1.&nbsp;You&nbsp;used the FQDN of your SQL instance when installing Beta2, but in the RTM upgrade wizard you used the simple machine name.&nbsp; In this case another easy workaround is to use the FQDN again in the upgrade wizard.</P>
<P>2. You used the machine name of the local machine when installing Beta2, and later created a new team project collection using the SQL identifier "localhost"</P>
<P>The workaround to both errors is to run 'RemapDbs' to use a consistent naming convention for your SQL databases.</P>
<P>C:\program files\Microsoft Team Foundation Server 2010\tools\tfsconfig remapdbs /sqlinstances:MyServer,MyOtherServer /databaseName:MyServer;Tfs_Configuration<SPAN lang=EN>&nbsp;/AnalysisInstance:AnalysisServerName</SPAN></P>
<P><SPAN lang=EN></SPAN>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Moving TFS 2010 Collections during Upgrade to RTM</title>
      <link>https://docs.microsoft.com/archive/blogs/wlennon/moving-tfs-2010-collections-during-upgrade-to-rtm</link>
      <pubDate>Fri, 05 Feb 2010 15:37:00 GMT</pubDate>
      <dc:creator><![CDATA[Will Lennon - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/wlennon/2010/02/05/moving-tfs-2010-collections-during-upgrade-to-rtm/</guid>
      <description><![CDATA[(Note: Please download the latest Installation Guide&nbsp;for Team Foundation&nbsp;and read the...]]></description>
      <content:encoded><![CDATA[<P><SPAN style="FONT-SIZE: 11pt"><FONT color=#1f497d face=Calibri>(Note: Please download the latest </FONT><A href="https://go.microsoft.com/fwlink/?LinkId=127730" mce_href="https://go.microsoft.com/fwlink/?LinkId=127730"><FONT face=Calibri>Installation Guide&nbsp;for Team Foundation</FONT></A><FONT color=#1f497d face=Calibri>&nbsp;and read the Upgrade sections for details on types of upgrades and steps to perform an upgrade to TFS 2010)</FONT></SPAN></P>
<P><SPAN style="FONT-SIZE: 11pt"></SPAN>TFS 2010 provides a lot of flexibility in how you manage your collections.&nbsp; You can have multiple collections and easily move them from one SQL instance to another.&nbsp; One common scenario is to load balance your system by spreading your collections across multiple data tiers.&nbsp; You can do this before, during, or after upgrade to RTM.&nbsp; If you move a collection as part of your upgrade, you must run the RemapDBs command before the upgrade.&nbsp; The steps to follow are:</P>
<P>1. Backup DBs.</P>
<P>2. Uninstall TFS Beta 2 / Install TFS RTM</P>
<P>3. Move your collection database (backup/restore from SQL) to the new data tier</P>
<P>4. On TFS Application tier, run 'tfsconfig.exe remapdbs' and specify all your data tiers.&nbsp; For example:&nbsp; </P>
<P>tfsconfig remapdbs /sqlinstances:server1,server2\instancename /databasename:datatier1;Tfs_Configuration /analysisinstance:server3</P>
<P>5. Run the TFS&nbsp;Upgrade Wizard.</P>
<P>Note that if you move all your TFS databases to a new single data tier, you don't need to run RemapDBs.&nbsp; TFS is smart enough to figure it out.&nbsp; If you move one or a few database, you must run it.&nbsp; Just to be safe I recommend you run RemapDBs anytime you move a TFS database.&nbsp; There's no harm in running it.</P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
  </channel>
</rss>