But it works on my PC!

The random thoughts of Richard Fennell on technology and software development

TF53010 error and no TFS Warehouse updates after a SQL migrate

We recently moved our central SQL server to new SAN hardware and at the same time upgraded from SQL2005 to SQL2008. Once this was done we noticed that our TFS Reports were running against old Warehouse data.

Checking the TFS Application Tier event log we saw:

TF53010: The following error has occurred in a Team Foundation component or extension:
Date (UTC): 21/10/2009 10:27:25
Machine: TFSAT
Application Domain: /LM/W3SVC/287244640/Root/Warehouse-2-129005451884971104
Assembly: Microsoft.TeamFoundation.Warehouse, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v2.0.50727
Process Details:
Process Name: w3wp
Process Id: 2716
Thread Id: 2848

Detailed Message: Cube processing runtime error: \r\nMicrosoft.TeamFoundation.Warehouse.WarehouseException: The following database is not accessible in the Analysis Server: TfsWarehouse at Microsoft.TeamFoundation.Warehouse.OlapCreator.ProcessOlapNoTransaction(Boolean  schemaUpdated, UpdateStatusStore updateStatus, Server server, SqlTransaction transaction)
   at Microsoft.TeamFoundation.Warehouse.OlapCreator.ProcessOlap(Boolean schemaUpdated, UpdateStatusStore updateStatus)
   at Microsoft.TeamFoundation.Warehouse.AdapterScheduler.RunCubeProcess()

The problem was missing rights on the new 2008 Analysis Service instance. The quick fix was to give the MYDOMAIN\TFSSERVICE account administrator rights on the instance (SQL Management Studio, Connect to Analysis Service Instance, right click on instance, properties, security, add the user). Once this was done I could force a reprocess and all was OK

Visual Studio 2010 Beta 2 release and a new licensing model

About 2 hours ago Visual Studio 2010 Beta 2 was released to MSDN subscribers, the usual wait for the download now start!

Also the revised SKU and licensing model for 2010 was made public by Brian Harry. This is meant to be simplification, but still remains fairly complex with the usually questions over ‘is that in this SKU or that?’

The key point for me is that the cost of entry for TFS is going to drop significantly, as the TFS server and a client CAL is included in the MSDN subscriptions with the VS Pro, Premium and Ultimate SKUs. Should break down a few barriers

Access Services in SharePoint 2010 or: How I Learned to Stop Worrying and Love Access 2010

So what I have I been doing of late? The blog has been a bit quiet. Well I have been having a good look at Access Services in SharePoint 2010. This has been an interesting experience, as I am not historically what you might call an avid Access developer.

Like most .NET developers I had looked as Access as more of a file format than an application, something from the past. Something that I might use for a small data store, maybe in a web application hosted on a cheaper ISP that does not provide ‘a real’ SQL DB, or where an XML data files don’t seem right, often because I just can’t be bothered to work out the XPATH. When using Access as a data format it seems easier to get at my data using basic hand crafted SQL commands or maybe at most via a OLEDB Data Adaptor/DataSet. All very old old school. Thinking about Access in this way just seems an easy way out, playing it safe with the knowledge I have. I don’t for a second propose that this a good idea, you should not be looking at using any technology just because it is there and you already know it. There are obvious downsides, using Access in this manner meant that from the ADO.NET developer side I could not:

But equally, by treating Access as just a data format I was not able to make use of it as the Rapid Development tool it is. I was too hung up in the unpleasant idea of an MDB sitting of a server being poor at locking and saturating the network with unwanted traffic. I was not even considering Access as a front end to a MS-SQL solution, and it is not as if that is new technology, it has been around for ages. I was just sitting happily with my prejudices.

I don’t think this position is that rare for .NET developers these days. Access seems just looked down upon as something old in the Office pack that is best ignored, no good would come of using it in a business environment.

So enters Office 2010 and SharePoint 2010 Access Services, for me this changes the game. For those who don’t know this technology, you can create an Access database locally on your PC then publish it to SharePoint. Tables become SharePoint lists, macros become workflows and forms well become forms. Access becomes a RAD tool to create data driven SharePoint sites.

So how has this new technology been working for me? Well I can’t say I have grown to love the Access client, but I think that is mostly down to that fact that I am still not thinking right for it. Access is all about data binding, you don’t have to think about what form fields need to be copied to which DB columns, the wizards make a really good attempt to design forms for you based on the relationship of the tables in your DB and this just all seem unnatural to me. I think this is because I am usually working with design patterns to reduces the linkage between forms and data to a minimum e.g. the MVC pattern, and so consider this good practice; automated data binding seems seems wrong. So in Access I keep wanting to build things from first principles, but this is just not sensible. Better to let the tool get you close and then you add the polish, put away any thoughts of implementing design patterns as you would in a language such as C# or VB.NET.

I think this is the key to the degree of irritation I feel with the product, if you have got used to architecting from the ground up, especially in a Test Driven Development style, you have to turn everything on it head. It feels like you are cheating, not doing the job properly.

But wait! look at the benefits. A while ago I was involved in a project to provide a resource management data driven web site that was hosted within SharePoint. It contained the usual things, data entry forms, links to SQL and reports. It took a couple of weeks to build. I think I could write the same system in Access with SharePoint 2010 in an afternoon, and would be happy to have a client’s business analyst sit next to me while I did it, in a pair programming style, to design the forms, report layouts and columns as I went along. For the smaller scale data driven site Access Services is a great tool, but obviously it is not perfect. I do keep hitting points where I think ‘if I were in C# I could just do that’ but then I remember ‘yes but it would take would have taken me three days to get here not an hour’. Most project don’t need that last 10-20% you can only reach on .NET custom code, the client with be far happier with 80% done quickly and flexibly rather than 95% done a lot later. Also we have to factor in my relative lack of experience with Access as a RAD tool, reducing the productivity that could potentially be achieved by a more experienced Access developer.

Actually the bulk of the time I have spent has been on looking at how you can extend Access Service to reach that last 20% of functionality, and it not that hard. The key to remember is that the Access Services are just built on standard SharePoint objects. Ok there is a new service running to render the pages, but underneath there are just SharePoint lists and workflow, and where these exist there are events that you can programmatically handle. I have found that by trapping events such as ItemAdd() for the Access created SharePoint lists there is no real limit to what you can achieve via the SharePoint Object Model. And this development process is made even easier by the new Visual Studio 2010 templates for SharePoint features. If nothing else the fact that all the templates create a WSP for deployment as standard makes for far more robust feature development.

There is one major difference between a standard SharePoint site and one created by Access, and it is that SharePoint Designer cannot open the Access site. I thought this would be an issue when I first heard about the limitation, but it turn out not to be. Anything you might have wanted to do in SharePoint Designer you can do quicker and easier in Access for this type of data driven site. Ok the range of things you can do is more limited, but again you get that 80% you need with much less pain.

So how has my experience with Access 2010 been? Exasperating, frustrating but undeniably productive. I am not sure it is the right product for an ISV style company who want to roll out single solution to many client sites (but it could be used for this if needed via the SharePoint site template gallery); but for a smaller data driven site (with or without custom extensions) written within an IT department it is a very strong contender. Taking Access in many ways back to it roots.

So if you need small data driven sites I would suggest you put aside your prejudices and have a look at the beta program for Office/SharePoint 2010, I think you will be surprised.

I'm off to Ireland this week

I am off to present in Ireland this week in a double header with another of Black Marble's test team, Robert Hancock. We will be appearing at the Microsoft Ireland Visual Studio Academy. Our subject is Improved efficiency throughout the test cycle. As registration is still open I guess there are still spaces, so if it is of interest to you why not sign up (and who is not interested in testing?)

So while many of our staff are off living it up in Las Vegas for the SharePoint conference, Robert and myself have been busy building a demo rich session for the Dublin event that touchs on a whole host of different testing tools and techniques. So we hope to see you there for what should be a very interesting session.

Local events reminder

Wednesday this week is the next Agile Yorkshire meeting, there are 2 presentations and a discussion planned:

  • Agile War Stories: A Project Managers Perspective. Ian Carroll
  • User Story Estimation: Alan Williams
  • An open discussion about Lean and Kanban in software development.

As usual the meeting is  at The Victoria Hotel, Leeds from 6:30 onwards for a 7:00 start. See www.agileyorkshire.org for more details.

On Tuesday next week there is the West Yorkshire BCS meeting on ‘The World of Ubuntu and Open Source’ by Matthew Barker of Canonical Ltd. As usual the venue is the The Met, King Street, Leeds, LS1 2HQ

TF252005 Error when creating new collections on TFS 2010 Beta1

This week I tried to add a new project collection to our TFS 2010 Beta1 test system. All seemed to be going OK, the settings verified without issue but I got the error TF252005 when it tried to create the associated SharePoint site (on the WSS 3.0 instance on the TFS application tier).

Now unlike TFS 2008 this was not a blocking problem. On 2008 if any team project step failed, such as the team WSS site creation, then the team project was rolled back. It is a really nice feature of 2010 that if there is an error it does try to do as much as it can. So in my case, I ended up with TFS collection with no associated SharePoint site collections, not what I wanted but usable.

The detail of the error I got are shown below:

[10/6/2009 9:35:57 PM][Warning] TF252005: Configuration of SharePoint Products and Technologies failed with the following error: Server was unable to process request. ---> User cannot be found.. Failed to create a path to the SharePoint site. Your account might not have the required permissions to create a sub-site on this server.
[10/6/2009 9:35:57 PM] Servicing step Configure SharePoint Settings passed, with warnings. (ServicingOperation: Install; Step group: Install.TfsSharePoint)
[10/6/2009 9:35:57 PM] Executing servicing step Create Test Management Database. (ServicingOperation: Install; Step group: Install.TfsTestManagement)

So the question was ‘what user could it not find?’

Upon further investigation I found that I could not give users rights on any of the previously created SharePoint sites on this WSS instance. The SharePoint People Picker said it could not find users or groups for the domain user accounts I entered. Also I noticed that if I entered the central admin it said that all my site administrators’ accounts were invalid (all underlined red in the configuration form). Basically it seemed my WSS instance could not find the domain controller.

I next checked that the Reporting Services instance on the same box, this had no problems resolving accounts, so I knew it was specifically a SharePoint issue.

So an investigation of SharePoint settings started. In the end it was Rik who found the root cause, and it was obvious with hindsight, the authentication provider was unset. Once this was set to Windows for all the zones everything leapt back into life.

The question remains how this setting could have become unset. We did have a domain controller hardware failure last week but I cannot see why this should cause this issue. Anyway at least it is fixed now.

TFS for the small team

Over the weekend Brian Harry posted on this blog about a new ‘Basic’ edition of TFS. This is aimed squarely small team currently using Visual SourceSafe. It will provide version control with work item tracking and can be run on SQLExpress. The key difference for the ‘Standard ‘ edition is that it will not have SharePoint or Reporting Services integration. For far fuller details check the blog post.

I think this is going to be a really interesting addition to TFS. This announcement answers a question I was repeated asked at our TFS2010 event last week, ‘we are a small team with VSS, I want something simple to move us forward, what should I use? TFS seems a bit complex and expensive’ So for me it is well timed and well placed within the marketplace.