Archive for June, 2008

DataSets and Calculated Columns

Ran into a performance issue in a .Net remoting situation. A Winforms app is calling an application server asking for data. A relatively large DataSet (>10,000 rows, <6 columns) being passed over the wire was causing a performance problem. The database and application servers processed it quickly. Examining the transfer with WireShark showed that the transfer wasn’t so bad either. There was a flurry of data passed, and then a bunch of waiting on the client-side, with the client CPU usage around 50% the entire duration of the wait. Turns out there is a calculated column in one of the data tables. The column is not calculated on the application server-side, so as not to pass a bunch of data across the wire that would be unnecessary. The calc happens on the client. That was the source of the slowdown and CPU usage. In the end the solution to the problem was not using the calculated column, we found a different solution to fix the business problem. I suppose you could perform the calculation in the SQL statement that was ultimately filling the DataSet. That might take longer to transfer, but won’t slow down the client app.

TFS Custom Work Items – Lessons Learned

  1. Work on a dummy TFS project that you can delete. Delete the project before you deploy for production.
  2. Not all the attributes for Work Item layout are documented.  
  3. A Work Item Type defined in more than one project is sort of shared between the two. The definition can be different, but the name is shared. So anything you want to change or remove in one has to be done in the other. See item 1.
  4. Work items are not easy to delete. It can only be done through the database. See the SQL statements for doing removing work items. I found a GUI tool for this, but ultimately it was executing the SQL statements.
  5. Work Item Type fields are not easy to modify. Essentially you have to delete it and re-add it. The basic steps are:
    1. Remove the field(s) from the Work Item Type XML definition (both field and in the layout)
    2. Re-import the Work Item Type XML so the definition in use no longer contains the field(s)
    3. Delete the fields using the TFS command line tools. This also deletes any data you had stored for existing work items using your custom type.
    4. Re-process the cube using the TFS web service
    5. Update the Work Item XML with the updates you need
    6. Re-import the Work Item Type XML


Of course, after-the-fact I found a good overview of the custom Work Item process.

Posted on:
Posted in TFS | Comments Off on TFS Custom Work Items – Lessons Learned