How to change the work item maximum attachment size?

by Xavier Dilip Kumar 14. February 2014 08:16

Explanation:

By default, The maximum WI attachments size is set to 4 MB but the attachment size can be increased up to 2GB

Solution:

  1. Log on to the application-tier server for TFS.

  2. open the URL: http://localhost:8080/tfs/<Collection Name>/WorkItemTracking/v1.0/ConfigurationSettingsService.asmx?op=SetMaxAttachmentSize

  3. Enter the size in bytes, and then choose Invoke. For 9.5 MB, enter  10000000.

    SetMaxAttachmentSize, ConfigurationSettingsService

Solution:

INSERT INTO [<Collection DB Name>].[dbo].[tbl_RegistryItems] VALUES (1,'#\Service\WorkItemTracking\Settings\','MaxAttachmentSize\',10000000);

Tags:

TFS 2010 | TFS 2012 | TFS 2013

Restore TFS SQL Server Enterprise edition databases to SQL Server standard edition.

by Xavier Dilip Kumar 4. December 2013 12:07

Exception:

Database 'Tfs_DefaultCollection' cannot be started because some of the database functionality is not available in the current edition of SQL Server.

 

TFS Collection Databases :-

 

Database 'Tfs_DefaultCollection' cannot be started in this edition of SQL Server because part or all of object <tables> is enabled with data compression or vardecimal storage format. Data compression and vardecimal storage format are only supported on SQL Server Enterprise Edition.

 

Explanation:

 

TFS will enable and use the following Enterprise Edition features.

 

Online index operations

Page compression

Table and index partitioning

Larger read - ahead buffering & Cube perspectives 

 

Data compression and vardecimal storage format will cause problems when moving to different versions of SQL editions. Data compression and vardecimal storage format are enabled on the Tfs_Configuration and Tfs_<Collection> databases by default. Data compression and vardecimal storage format are only supported on SQL Server Enterprise Edition. Hence the databases backed up from Enterprise Editions cannot be restored on other Editions.

 

Solution 1: 

The solution is to remove the objects which have compression on the TFS databases.

 

  • Detach the Collection from TFS through TFS Administration console.
  • Executed the following query on Tfs_<Collection> databases deployed on Enterprise Edition to identify the tables with Data compression and vardecimal storage format enabled.

 

SELECT SCHEMA_NAME(sys.objects.schema_id) AS [SchemaName] ,OBJECT_NAME(sys.objects.object_id) AS [ObjectName] ,[rows] ,[data_compression_desc] ,[index_id] as [IndexID_on_Table] 

FROM sys.partitions INNER JOIN sys.objects ON sys.partitions.object_id = sys.objects.object_id WHERE data_compression > 0 

AND SCHEMA_NAME(sys.objects.schema_id) <> 'SYS' ORDER BY SchemaName, ObjectName;

 

SELECT OBJECTPROPERTY(OBJECT_ID('<table name(s) from above command output>'),'TableHasVarDecimalStorageFormat'

 

Following are the Tfs_<Collection> database tables enabled with Data compression and vardecimal storage format.

 

CodeSense.tbl_AggregateMap

CodeSense.tbl_AggregatorInputQueue

dbo.LinkTreesLatest

dbo.tbl_AuthorizationObject

dbo.tbl_Branch

dbo.tbl_BranchMapping

dbo.tbl_LocalVersion

dbo.tbl_nodes

dbo.tbl_PendingChange

dbo.tbl_PendingChangeRecursive

dbo.tbl_PendingMerge

dbo.tbl_PendingRollback

dbo.tbl_PropertyValue

dbo.tbl_RegistryItems

dbo.tbl_SecurityAccessControlEntry

dbo.tbl_Version

dbo.tbl_WorkingFolder

dbo.tbl_WorkingFolderHistory

dbo.tbl_WorkspaceMapping

 

 

  • Execute the following SQL command to disable the compression on the Tfs_<Collection> database table listed above one by one

 

ALTER INDEX ALL ON '<table name(s) from above command output>' REBUILD WITH (DATA_COMPRESSION = None);

 

ALTER INDEX ALL ON CodeSense.tbl_AggregateMap REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON CodeSense.tbl_AggregatorInputQueue REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.LinkTreesLatest REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_AuthorizationObject REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_Branch REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_BranchMapping REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_LocalVersion REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_nodes REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_PendingChange REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_PendingChangeRecursive REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_PendingMerge REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_PendingRollback REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_PropertyValue REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_RegistryItems REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_SecurityAccessControlEntry REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_Version REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_WorkingFolder REBUILD WITH (DATA_COMPRESSION = None);

ALTER INDEX ALL ON dbo.tbl_WorkingFolderHistory REBUILD WITH (DATA_COMPRESSION = None);

 

ALTER INDEX ALL ON dbo.tbl_WorkspaceMapping REBUILD WITH (DATA_COMPRESSION = None);

 

  • Backup the Tfs_<Collection> database on SQL Server Enterprise Edition and restored it to SQL Server other Editions (both Express and Standard Editions)
  • Attach the Tfs_<Collection> to the TFS instance deployed on SQL Server other Editions (Express and Standard Editions)

Solution 2:

  • Detach the Collection from TFS through TFS Administration console.
  • Executed the following stored procedure on Tfs_<Collection> databases deployed on Enterprise Edition to disable the compression on the relevant tables.

EXEC [dbo].[prc_EnablePrefixCompression] @online = 1, @disable = 1

  • Backup the Tfs_<Collection> database on SQL Server Enterprise Edition and restored it to SQL Server other Editions (both Express and Standard Editions)
  • Attach the Tfs_<Collection> to the TFS instance deployed on SQL Server other Editions (Express and Standard Editions)

Tags: ,

SQL Server | TFS 2010 | TFS 2012

SharePoint Client-Side Object Model ClientContext.Load method cannot be loaded.

by Xavier Dilip Kumar 11. September 2013 11:59

Exception:

'Microsoft.SharePoint.Client.ClientContext' does not contain a definition for 'Load' and no extension method 'Load' accepting a first argument of type 'Microsoft.SharePoint.Client.ClientContext' could be found (are you missing a using directive or an assembly reference)

Explantion:

I got the above exception while using 'Microsoft.SharePoint.Client.ClientContext' load method in my share point web part project. Adding Microsoft.SharePoint.Client.Runtime.dll to project assembly references resolved the errors. The reason for the load method error is as follows

  • ClientContext inherits from ClientRuntimeContext
  • ClientContext is defined in Microsoft.SharePoint.Client.dll
  • ClientRuntimeContext is defined in Microsoft.SharePoint.Client.Runtime.dll
  • ClientRuntimeContext defines the Load method

Soultion:

Add Microsoft.SharePoint.Client.Runtime.dll along with Microsoft.SharePoint.Client.dll to project assembly references.

Tags:

SharePoint Development | TFS | SharePoint

Exception calling "QueryActiveRequests" with "2" argument(s): "Value cannot be null.

by Xavier Dilip Kumar 29. August 2013 09:55

Exception:

Exception calling "QueryActiveRequests" with "2" argument(s): "Value cannot be null.
Parameter name: second"
At C:\Builds\Service.ps1:2 char:30
+ $tfsadmin.QueryActiveRequests <<<< ($null, "False") | %{ $_.ActiveRequests } | ft StartTime,UserName,MethodName,RemoteComputer
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Explanation:

The following powershell script to monitor the TFS active requests work on TFS 2010 but fails with the above exception on TFS 2012.

$tfsadmin = New-WebServiceProxy –UseDefaultCredential -URI http://tfs:8080/tfs/TeamFoundation/administration/v3.0/AdministrationService.asmx?WSDL
$tfsadmin.QueryActiveRequests($null, "False") | %{ $_.ActiveRequests } | ft StartTime,UserName,MethodName,RemoteComputer

While accessing TFS 2012 server, the QueryActiveRequests web method fails to accept null value as an argument.

Workaround:

The workaround is to pass the TFS 2012 HostId as first parameter instead of $null

Following are the step to find the TFS host id

1. Open Microsoft SQL Server Management Studio

2. Connect to TFS 2012 data tier

3. Execute the below query

USE [Tfs_Configuration]
SELECT [HostId], [Name] FROM [Tfs_Configuration].[dbo].[tbl_ServiceHost] where [Name] = 'TEAM FOUNDATION'

Result
-------

HostId                                                       Name
AAAAAAAA-96A2-4BA8-A74C-11422B123456 TEAM FOUNDATION

4. Replace $null with the HostId

$tfsadmin = New-WebServiceProxy –UseDefaultCredential -URI http://tfs:8080/tfs/TeamFoundation/administration/v3.0/AdministrationService.asmx?WSDL
$tfsadmin.QueryActiveRequests("AAAAAAAA-96A2-4BA8-A74C-11422B123456","False") | %{ $_.ActiveRequests } | sort StartTime | ft StartTime,UserName,MethodName,RemoteComputer

 

Tags: ,

TFS | TFS 2012

Installing Visual Studio 2012 and then installing Visual Studio 2010 causes unreliable results for Office Integration add-ins

by Xavier Dilip Kumar 1. July 2013 11:10

Explanation

If you install Visual Studio 2012 and then install Visual Studio 2010, and then you open Office to use an Office Integration add-in, Office displays two Team ribbons. Both ribbons are unreliable and may cause worksheets to become corrupted.

Workaround

Disable the Visual Studio 2010 version of the add-in, as follows:

  1. On the menu bar in Office, choose File, Options.
  2. In the Options dialog box, select Add-Ins.
  3. In the Manage box, select COM Add-ins and then choose the Go button.
  4. In the list of add-ins, clear the check box for the Visual Studio 2010 version of the add-in and then choose the OK button. (To determine the version of an add-in, select it and then read its location at the bottom of the Options dialog box. The location for a Visual Studio 2010 add-in is "Microsoft Visual Studio 10.0".)

Tags:

General

Roll Back a checkin in TFS

by Xavier Dilip Kumar 26. June 2013 12:26

Solution

TFS rollback is a client side component which is available in TFS 2010 power tools install. http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

1) Through UI

Right click on the source folder
Select View History menu
 

 Select rollback entire changeset menu 

 Check-in the pending rollback changes 

2) Through Command line :
 
tf rollback /changeset:changesetfrom~changesetto [itemspec] [/recursive]
[/lock:none|checkin|checkout] [/version:versionspec]
[/keepmergehistory] [/noprompt] [/login:username,[password]]

tf rollback /toversion:versionspec itemspec [/recursive]
[/lock:none|checkin|checkout] [/version:versionspec]
[/keepmergehistory] [/noprompt] [/login:username,[password]]

Note :If you are attempting to rollback changes for another user, make sure you get latest on the files you are attempting to rollback; otherwise you will see the error: "No changes to roll back."

 

Tags: ,

TFS | TFS 2010

C# Code to get the Work Item URL

by Xavier Dilip Kumar 18. June 2013 16:48

var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfsURL + "/" + collectionName));
var myService = projectCollection.GetService<TswaClientHyperlinkService>();
string wiURL = myService.GetWorkItemEditorUrl(workItem.Id).ToString();

Tags: , ,

TFS

TF262600: This SharePoint site was created using a site definition that requires data from Team Foundation Server. However, the site is not currently associated with data for a team project

by Xavier Dilip Kumar 4. February 2013 14:55

Errors:

TF262600: This SharePoint site was created using a site definition that requires data from Team Foundation Server. However, the site is not currently associated with data for a team project. To ensure that this site functions correctly, you must configure a team project to refer data for that project to this site. For more information, see this topic on the Microsoft Web site: How to: Add a Team Project Portal.

This site doesn't have a default Team Project. You can explicitly select a specific Team Project.
This web part is not configured properly. Click here to configure web part in tool pane.

Explanation

This issue was caused by missing permissions for the [TEAM FOUNDATION]\SharePoint Web Application Services group to the team project. I get into the issue whenever I detach and attach the same collection (side by side) to different TFS App tiers for testing/R&D

Soultion

1) Add and grant READ permission for [TEAM FOUNDATION]\SharePoint Web Application Services group to the affected team projects.

2) use tfsredirect.aspx to refresh the cache

http://SharePointServer/sites/CollectionName/TeamProjectName/
_layouts/TfsRedirect.aspx?tf:type=webaccess&tf:test=1&tf:clearcache=1

Note : This page should not return any errors and the value for TeamFoundation.Temp.LastRefreshDate should include the current date.

3) Repair the connections between TFS and SP

  • Open the Team Foundation Server Administration Console
  • Expand the Application Tier in question (the one hosting the Team Project Collection and Team Project with the problem)
  • Highlight the SharePoint Web Applications node.
  • In the SharePoint Web Applications list, highlight the appropriate connection and then click "Repair Connection"

Tags:

TFS | SharePoint

TF10152: The item $/ must remain locked because its file type prevents multiple check-outs.

by Xavier Dilip Kumar 24. January 2013 10:34

Explanation

Any time a pending change is made to an item, the file types list is checked to see if the extension requires automatic locking at checkout. The idea behind automatic locking is that some file types (images, for example) are hard to merge, and that it may be beneficial to keep two people from working on the same item at the same time.

Workaround

The list of file extensions is configurable through the Team Explorer by right-clicking the root (server) node and selecting Team Foundation Server Settings → Source Control File Types.

 

 

 

To disable automatic locking by file type, you can find the file extension you're interested in, click Edit... and check the box for "Enable file merging and multiple checkout."

Tags: ,

TFS | TFS 2010

About the author

My name is Xavier Dilip Kumar Jayaraj and I am a Software Configuration Management Engineer with a background in application development, Build & packaging using Install Shield.

Profile in LinkedIn

  

Quotes I Like

"Failure will never overtake me if my determination to succeed is strong enough."  - Dr. APJ. Abdul Kalam

"Always be yourself, express yourself, have faith in yourself, do not go out and look for a successful personality and duplicate it." - Bruce Lee

"Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important." - Bill Gates

"Innovation distinguishes between a leader and a follower." - Steve Jobs

Disclaimer

The information provided here is based on my expreriences, troubleshooting and online/offline findings. It can be used as is on your own risk without any warranties and I impose no rights.

Month List