# Monday, February 05, 2007

OK, I need your help... I'm giving a talk at the next SQL Community meeting about SQL Server development in an ISV. In particular the challenge of creating databases that can be installed many times and have to be supported, patched and upgraded. In contrast, enterprise SQL development is relatively straightforward as there is one master schema and code - the live server. All you need to do is ensure you sync with the master before making any changes.

What I would like is any experiences, hindsight, methods and processes you have related to this. Either leave a comment or e-mail me directly using the link at the top of the site. Some of the things I want to cover are:

  • Development, source control and build
  • Visual Studio Team Edition for Database Professionals
  • Installations
  • Patching, fixes and upgrades
  • Analysis Services, Integration Services, Reporting Services
  • End user schema/cube customisation
  • Performance tuning

If I get enough input I'll post the talk online.

 

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Monday, February 05, 2007 11:32:44 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Monday, January 15, 2007

Those that know me know I like football (soccer) and support Manchester United. They are on fantastic form this season at the top of the league but I've noticed that whenever I watch a game they drop points. It's starting to make me a little superstitious.

I usually record the matches on Sky+ for later viewing but I wonder if my superstition can still affect the game after it's been played? In some respects this is similar to the thought experiment that Schrödinger put forward. The chance of United dropping points in a game is low but still non-zero so, for any particular game recorded, there is a chance that they could lose or draw. Whilst the game exists unwatched on the Sky+, the outcome is indeterminate and technically exists in all states (win, lose and draw). Only by watching the match is the outcome forced into one of those states.

Would you rather guarantee your team won the league at the expense of never watching a game or would you prefer a little entertainment over the winter months?

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Monday, January 15, 2007 3:22:21 PM (GMT Standard Time, UTC+00:00)  #    Comments [5] Trackback
# Friday, January 12, 2007

This week I gave a one hour Introduction to MSF for a customer who is thinking about using the process along with Visual Studio Team System. Since none of the content is confidential I though I'd share the slides.

It's actually quite hard to pack everything in. I was aiming for 45 minutes plus questions but given the amount of ground to cover I had to settle for a full hour. I've still left out a lot, for example work streams and internal checkpoints but the book mentioned near the end covers everything else.

I've exported the slides to PDF because the original is about 15MB. The quality isn't as good but it's only 4MB. [download]

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Friday, January 12, 2007 4:01:47 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Thursday, January 04, 2007

It seems that when you leave App Dev Consulting where I work for a DPE sales role they still let you write code so here is a shameless plug for a useful little tool that Neil Kidd wrote...

It is an addin to IE to allow testers to easily raise bugs to TFS that include all the information the dev will need to reproduce the error.

It automatically attaches:

  • A screenshot
  • HTML source of the page and any frames and IFrames
  • Any style sheets referenced by the page
  • Any script files referenced by the page
  • Details about the user's machine and browser (OS version, browser version, screen size, ...)

I’ve blogged about it on:

http://blogs.msdn.com/ukvsts/archive/2007/01/02/automatically-raise-bugs-from-ie.aspx

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Thursday, January 04, 2007 11:21:21 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Tuesday, December 12, 2006

The answer should be obvious but I pointed out to a customer today - use a development process and tools to help your good staff work better, not to stop bad staff doing worse. If you do the later then you run the risk of implementing a rigid system that gets in the way of people and is ultimately self defeating. You need to manage your bad staff (out of the company) and not provide tooling for them. Some signs you might be doing the wrong thing are absolutes in your process definition e.g. no code can be checked in unless code coverage is at 90% [OK, I'll remove my error handling then!].

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Tuesday, December 12, 2006 5:42:31 PM (GMT Standard Time, UTC+00:00)  #    Comments [1] Trackback
# Thursday, November 09, 2006

It's been a while since I last blogged for real and you may have noticed the recent entries looking more like a link blog if you subscribe to the feed. This is down to a feature of FeedBurner that allows me to splice my del.icio.us links with these blog entries. The occasional Flickr image will get spliced in too.

So, back to subcube queries... I've been doing some Analysis Services 2005 performance work for a customer. Eventually I want to talk about some sort of a performance process for AS2005 but right now Chris Webb has a pretty good reference on designing effective aggregations. This is just a quick description of what the 11100101010,1010001000000 means in SQL Server Profiler.

Since SQL Profiler now supports Analysis Services you can monitor queries as they execute to find the poorly performing ones. Chances are you will see a Progress Report event similar to Started reading data from the 'XXX' partition closely followed by a Query Subcube event with TextData looking like a string of ones and zeros for example:
'00001000000000000,10111100000011111100,10'
The progress report tells you that data was read directly from the partition and no aggregation was used.

If you turn on the Query Subcube Verbose event then a more complete description is printed but quite often you will receive traces with just the subcube strings as the verbose event is hidden from the default set of options.

The subcube string tells you which dimensions and attributes are involved. Each group of digits, separated by a comma, denotes a dimension and each digit denotes an attribute within that dimension. The digit is '1' if that attribute is part of the subcube and '0' otherwise. Some things to note:

  • These are cube dimensions so the same dimension, e.g. Date, can be represented many times as a role playing dimension, e.g. Ship Date
  • The order is defined by the actual order of dimensions and attributes in the measure group, not alphabetical or any other sort order.

Since the order of dimensions and attributes is not immediately obvious, it's better to write some code to print them out in the correct order. The following prints all the dimensions and attributes of the supplied measure group object in order:

private static void PrintMeasureGroupDimensions(MeasureGroup mg) {
  for (int j = 0; j < mg.Dimensions.Count; ++j) {
    CubeDimension dim = mg.Dimensions[j].CubeDimension;
    Console.WriteLine("DIM:\t{0} ({1})", dim.Name, dim.Attributes.Count);

    for (int k = 0; k < dim.Attributes.Count; ++k) {
      CubeAttribute attr = dim.Attributes[k];
      Console.WriteLine("ATT:\t\t{0}", attr.Attribute.Name);
    }
  }
}

I've attached a piece of sample code that compiles into a console application to either print the entire set of dimensions for a measure group or, if you pass a subcube string, will just print those involved in the query. Execute with no args or '/h' to get some help.

Program.cs.txt (9.39 KB)

Edit: corrected some grammar and reformatted the code.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Thursday, November 09, 2006 5:18:23 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Friday, October 20, 2006

Time to clean up all the shortcuts to interesting web pages sitting around on my desktop... In no particular order:

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Friday, October 20, 2006 3:23:20 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] Trackback
# Thursday, October 19, 2006

You must have seen it by now but in case you haven't Internet Explorer 7  for Windows XP/2003 has been released. You can download it right away or wait for the Windows Update coming soon.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Thursday, October 19, 2006 11:45:14 AM (GMT Daylight Time, UTC+01:00)  #    Comments [5] Trackback
# Monday, October 16, 2006

I celebrated my 35th birthday at the weekend with dinner at  The Club Bar & Dining in London. Interesting place but I expect we may see it appear in the next series of Ramsay's Kitchen Nightmares. We waited forever to get our food; items we ordered were "out" when the meal arrived and had to be swapped for other choices; the food was cold and we were even told that the chef had burned the potato gratin which had to be swapped for fries. Our complaints, alas, fell on deaf ears and we didn't even get one of the many bottles of wine (which was the only item available for most of the meal) knocked off the bill. The music volume was such that you could hardly talk to the person next to you. The place has only been open for a couple of months so I hope they get things sorted or it could be a short life for them.

Despite the above, it was really nice to see everyone and I had a really great time. Thank you too for the gifts.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Monday, October 16, 2006 8:56:34 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] Trackback
# Monday, October 09, 2006

It's not immediately obvious but after spending half an hour trying to get my laptop to display Aero Glass instead of the opaque Aero theme I finally discovered that Glass is automatically turned off whilst using the Power Saver power plan. If you got to "Window Color and Appearance" and the "Enable Transparency" checkbox won't stay selected, check your current power plan.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Monday, October 09, 2006 9:13:37 AM (GMT Daylight Time, UTC+01:00)  #    Comments [2] Trackback
# Friday, October 06, 2006

Trackbacks are disabled whilst I figure out a way to stop the !***!!! spammers.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Friday, October 06, 2006 12:00:58 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0] Trackback
# Monday, October 02, 2006

Abamar BeachClaire and I have just returned from two weeks in Sardinia at the Mark Warner Abamar resort. It's been a while since I have had a summer holiday abroad and this was a welcome break from work. We had a fantastic beach, sailing, windsurfing and I learned to scuba dive too. For those that wanted there was tennis, water polo, aerobics and spa facilities.

More on the scuba in a later post but in the meantime I have uploaded all the pictures to Flickr.

The hotel was full board and the food was excellent but we did manage to leave the resort a couple of times to visit the local area. Pula is quite a small town with not much around. However, Cagliari (the capital city) is much larger. The bars up in the old city are great for a sundowner.

If you like a beach holiday with plenty of optional activity then this is a great holiday to have. Also, if you are single then this looks to be a great place to meet people as there were quite a few who had come on their own.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Monday, October 02, 2006 11:06:36 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] Trackback