Thursday, September 30, 2010

Be Thorough When Making Schema Changes

This morning we made some changes to the database.  We realized that as part of a re-factor we needed to move 2 columns from table A to table B.  We made the changes and immediately a lot of unit tests began failing.  As we worked on it we found out we forgot a couple of things:

  1. The logging trigger on the table needed to be changed.  I take responsibility for this.  Another developer made the change, talked to me, and I didn’t think it through.  This is one reason I use triggers minimally, and why some people won’t use them at all.
  2. We are using Linq to SQL for data access on this project.  I haven’t been shy about stating my dislike for Linq to SQL, but allowed it on this project partly so I could understand it well enough to complain about it intelligently.  Well, when you make changes to a the database schema, those changes need to be made to the DBML as well because Linq to SQL is generating SQL statements from the DBML which means the SQL being generated will be wrong if you don’t update the DBML.

Moral of the story

Make sure you consider everything and take your time when making schema changes.

Thursday, September 23, 2010

PASS Elections – Improving the Process

Since there has been a bit of a furor over the PASS election process the past 2 years I thought I’d post some ideas about the process, even if many people are tired of it.

The process this year was essentially 4 steps:

  1. Written applications reviewed & rated by the Nominating Committee.
  2. Applicants with a high enough score on the application invited for phone interviews by the Nominating Committee.
  3. Interviewees with a high enough combined score presented as a slate to the board of directors
  4. Slate voted on by the Board of Directors.  Strictly a yes/no vote.  If rejected then sent back to the Nominating Committee to be adjusted and re-presented to the board.

Seem like a pretty simple process, and as an applicant and interviewee I can say that parts 1 and 2 of the process were okay from an implementation process.  The issue this year seems to have been the rating process.  The rating templates were posted on the elections site (Applications | Interviews) so you knew what areas you would be rated on, but the issue is that there was no published standard as to what constituted a 1 or a 5.  This is particularly an issue when you have static things like education or volunteerism (in or out of PASS). The other issue I had with the ranking process is that there were shared items in the two forms and they were evaluated differently (education, references, volunteer experience).  I’d suggest in the future that those things be rated one time.  I can say that PASS did put the documents out for feedback prior to the elections starting, but that I did not review them because I thought that it would not have been ethical for me to see the process before applying (I’m not passing judgment on any applicants who did, it was a personal decision).

Issues I Would Address

Nominating Committee

Currently, according to the by-laws, the Nominating Committee consists of:

The Immediate Past President shall preside as Chair over the Nominations Committee, subject to approval of the
Board of Directors. Should the Board not approve the Immediate Past President’s role as Chair, the President will select the new Chair, whose appointment shall be subject to Board ratification. The President cannot serve as Chair of the Nominations Committee. 

The Nominations Committee shall consist of at least five (5) voting members, one of whom shall be the Chair. The
Chair shall appoint the other members of the Nominations Committee.

The Nominations Committee shall nominate up to three (3) candidates for each open position on the Board, unless
otherwise determined by the Board of Directors. Each nominee must be reviewed and accepted by the Board to be
eligible for office. All voting member representatives are eligible to serve on the Nominations Committee. All
voting members are eligible to recommend candidates for nomination and election. 


This year the nominating committee consisted of the Immediate Past President (voting board member), 3 sitting board members, the PASS Executive Director (non-voting board member) and 2 community members.  So in essence you have 4 of 7 nominating committee members are voting board members.  Here’s my issue with this, the board approves the slate the nominating committee recommends and in the 2010 elections 1/3 of the board members that voted on the slate selected the slate.  This year that had a major impact on the board decision as the final vote was 7-5 to approve the slate as recommended.  Assuming all 4 nominating committee members voted for the slate then the vote by the board members NOT on the nominating committee was 5-3 against the slate.  In my opinion the nominating committee should have board representation, but should not have such a large number of board members.  With this many board members on the nominating committee I think you might as well have the board do the interviews. 

Suggested Solution

The nominating committee does need to have board representation as the board members are the ones who really know what it takes to be a board member, but limit that to the Immediate Past President (or Nominating Committee chair) and 1 other board member.  The rest of the committee should be made up of community members.  In my previous experience with Nominating committee’s this has been the practice.

The nominating committee should really exist to make sure that the applicants meet the minimum requirements.  As long as the applicant meets those minimum requirements then they should be on the recommended slate.

Candidate Requirements


Candidate requirements are not defined and repeatable.  In 2009 we had a candidate who had no volunteer experience with PASS and in 2010 a person was rejected because not enough volunteer experience with PASS.  The qualifications listed this year on the elections web site (you need to scroll down):

  • Strong written, verbal, and time management skills.
  • Strong leadership and management abilities.
  • At least 5 years of practical experience with SQL Server or related products.
  • Prior experience within the PASS volunteer organization.
  • Support and understanding from employer to fulfill the role of a Board member, which includes time away from work for meetings and conferences, as well as Board calls during business hours.

As you can see there isn’t a lot to go on here.  The only clearly defined requirements are 5 years experience with SQL Server or related products, although I do wonder what qualifies as a related product, and support from employer.  Now I have to grant that the first two are subjective and I don’t know how you get an objective evaluation.  The key one to me is prior experience within the PASS volunteer organization.  What’s enough?  What levels?  Is one year on a committee good enough?  What about leading a chapter?  Why restrict it to PASS? 


Honestly, I don’t know how you totally solve this problem.  Here are some of my ideas and I’m open to others. 

Strong written, verbal, and time management skills

I’d like to see samples of writing (books, articles, white papers, blogs) that demonstrate the candidates ability to convey a message in writing.

I’d like to see the candidate have speaking experience at User Groups, SQLSaturday’s, PASS Summit, PASS SQLRally.  Even videos and podcasts can be used to demonstrate that a candidate can communicate verbally.

For time management, let’s see a history of regular writing and speaking in addition to a day job.  If you can do all of that then you probably have decent time management skills.

Strong Leadership and Management Abilities

This is where the application and interview really come into play.  Does the candidate have good examples of successfully implementing change or of leading a team?  This doesn’t have to be work related, it could be being president of the PTA, serving on the board of a different volunteer or non-profit agency.  It also can be shown through references.  This is still subjective, but if you were elected chairperson of the local Salvation Army board or president of the PTA, I’d say that generally indicates strong leadership and management abilities.  This is one area where being a successful business person should separate you from the pack. 

At Least 5 Years of Practical Experience with SQL Server or Related Products

I have to admit to being torn on this one.  On one hand you really need to be a SQL Server professional to know what other SQL Server professionals need or want from their professional organization, but, on the other hand, how does experience with SQL Server qualify you to lead or handle a budget.  I suppose if you combine this with Stong Leadership and Management Abilities I think you’d be all right.  Also, what are the related products?  Office or .NET?  Would another RDBMS qualify?

Prior experience within the PASS volunteer organization

This has been a big one.  In the 2009 election we had a candidate make it to the slate with no experience with PASS and no SQL Server experience.  In the 2010 election we had an interviewee withheld from the slate because he did not have enough experience with PASS, even though he has been a strong advocate in the larger SQL Server Community for many years.  I’ve even heard that there has been dispute about if being a Chapter Leader should qualify you to be on the board.  My personal opinion is that, yes, it would be great for board members to have some experience within PASS, but, then again, people from outside the organization may bring in fresh ideas. 

Andy Warren and I have discussed this issue many times, and we don’t necessarily agree on it.  He tends to want to have the process be open and allow for many paths to the board while I’d like to see some kind of progression.  I’m a big believer that the backbone of PASS is, and should be, chapters.  Because of this I think the best path to the board begins with Chapter leadership and progresses through organizing a SQLSaturday (helps prepare for planning the Summit), maybe planning a SQLRally in your region, becoming a Regional Mentor.  I’m not saying that this should be the only path to being qualified for the board, but I think it should be one path.  If you’ve done all these things, in my opinion, you clearly have what it takes as a manager and leader AND the experience within PASS.

Yes, there should be other paths to leadership, but let’s clearly define how much experience is necessary.  Is serving on the Program Committee one year enough?  There are two things that need to be done:

  1. Define the amount of volunteer experience required
  2. Post specific volunteer opportunities and allow people to sign up for them.  This is something that has been discussed, but not implemented yet.


I don’t know that I’ve solved any problems with this post, but I hope I’ve offered some ideas that will make people think.  I know that the board is setting up a committee to look into the election (September meeting minutes) so the issues are going to be addressed.

If you are going to the PASS Summit this year, I’ll be there, so we can discuss this if you are interested.

Monday, September 20, 2010

SQLSaturday #49 – Orlando is Closing In

We are less than an month from SQLSaturday #49 – Orlando at Seminole State College – Sanford/Lake Mary campus on October 16th.  Our preparations are going well, we have a good sponsor base, a great schedule, and several volunteers.  We can always use more sponsors (plan|sign up) and volunteers.  Our registrations are bit lower than we’d like at this point, but we normally see a spike in the last few weeks.  If you have registered please invite your friends and co-workers, our best advertisement is satisfied customer base, and if you have not registered, what are you waiting for (register).  If you need a reason to sign up check out Arie Jones’ take:

Why #SQLSaturday Matters

and for any Oracle folks, here’s a post for you:

SQLSaturday for an Oracle Guy

I’ve been trying to woo some more sponsors.  I’m a bit disappointed we don’t have more local companies as sponsors.  I love to have the software companies as sponsors as they bring some great value and expertise to the event, but I also think that the local companies would benefit and add value as well.  At our most recent OPASS meeting, we had several people who are looking for work, but only one recruiter in attendance that we could connect these people with.  We only have one recruiting company signed up as a SQLSaturday sponsor, yet I’d have to imagine that there will be many people looking for work out of the 250 that we anticipate attending.  I know if I’m looking, the first companies I’d contact are the ones I’ve seen at events.

I’ve also spent time on the event guide.  Graphic design and layout are not strengths, but I think I have something acceptable.  It’s hard as I try to keep the length down so that we don’t have a huge expense for the event guide.

We are trying a some new things this year.  First we have a new sponsorship type for personal bloggers.  For $5 you can be a SQL Blogger sponsor and have your logo on the site and in the event guide.  See Andy Warren’s post for details.  We currently have 7 bloggers signed up.

Next we have a volunteer, Bob Blaydes, who has a popcorn machine, so we will be having fresh popcorn in the afternoon.  In relation to this we have offered our currently signed up sponsors the opportunity to become the official popcorn sponsor by bidding on the sponsorship (min. bid $100).  If you are signed up as a sponsor send your bid to by September 30th.

We also are asking each speaker to take the first 2 minutes of their session to ask the attendees to introduce themselves to the people next to them.  We want to encourage people to get to know each other and do some networking.

Overall the event is looking pretty good.  If you haven’t registered yet, register now!

Friday, September 17, 2010

SQLSaturday #52 – Colorado Here I Come!

Well, I’ve been waiting to book hotel and rental car for SQLSaturday #52 – Colorado because I wasn’t sure if my father-in-law’s health issues were going to cause us to cancel the trip, but fortunately his health is looking up, so we booked our hotel last night and our rental car this morning.

This trip is a short getaway for my wife, Alice, and I and her birthday present.  Alice has connected on-line with Steve Jones’ wife, Tia, as Alice loves horse and Tia has them and trains them.  So while I’m at SQLSaturday soaking up knowledge and networking, Alice will be heading out to the ranch to hang with Tia.  We really appreciate Steve and Tia opening their home for the day.  Alice and I aren’t sure what we’ll be doing on Sunday (we’ll be attending church in the AM) and Monday (flight is in the evening), but I’m sure we’ll find something. 

I’m scheduled to give two sessions at SQLSaturday:

Why I Use Stored Procedures

With the proliferation of ORM tools like Entity Framework, nHibernate, and Linq to SQL, many projects have decided that stored procedures are not needed and slow down development. While these tools have their place and have improved greatly, stored procedures still have their place, and, in this speaker's opinion, are the best way to do data access. In this session I'll discuss my reasons for using stored procedures and hopefully stimulate some discussion of other access methods.

Session Level: Intermediate

Introduction to Triggers

This session will give a brief overview of the different types of triggers available in SQL Server (DDL & DML) and then go into more detail on how and when to use DML triggers. This session will cover misconceptions about how triggers work, when triggers shoul d and shouldn't be used (we will discuss options), common mistakes, and how to fix the most common mistakes. After attending this session a person will: 1. Identify different types of triggers and when to use them. 2. Be able to identify when a trigger is the right solution 3. Be able to write triggers that perform well

Session Level: Beginner

Finally, the organizers are doing some good work on this event by with a food drive:

Giving Back - Help local food banks and the Boulder fire victims!

In spirit of this community event and giving back to the community, we have decided to run a food drive to help out others in our area.  Attendees that bring in can goods or provide a financial donation, all of which will be going to local food banks and help out the Boulder fire victims, you will be entered into a special drawing.  This drawing, for a special prize, will be held during lunch at SQL Saturday #52 – Colorado.

This is a great idea especially as we close in on the holiday season.  We need to remember that most of us in the technology field are blessed with good salaries where out needs are met, and we often have more that we can give back.  Take the time to help out those less fortunate than us by bring something for the food drive.

Can’t wait to get there!

Tuesday, September 14, 2010

September OPASS Meeting Tonight!


Topic: Using PIVOT – Going from Static to Dynamic

Sometimes data normalization results in a data structure that is not convenient for displaying the data. Take the common example of a sales database in which each record represents a single sale.  However, what the customer really wants is a summary of sales for each product by quarter in which the quarters are columns, not vertical groupings.  SQL 2005 introduced PIVOT  to solve that type of problem.  The only drawback is that you must know when you write the SQL statement, how many columns you will need along with their name/values.  In some situations you may not know how many columns you need ahead of time.  Suppose you wanted to pivot on products that your company sells, but the number of products changes frequently.  How can you make the PIVOT statement dynamic?  We will explore one solution to that problem in this month’s SQL Tech Shot.

Speaker: Michael Antonovich

Mike Antonovich is the Assistant Director of Web Services for Orange County Public Schools in Orlando, FL where he manages the SharePoint portal team implementing the Internet, intranet, collaboration, project, team, and school sites. They are also responsible for multiple .Net custom applications around the district. In June of 2010, he published his 7th book: Office and SharePoint 2010 User's Guide. Mike has been using SQL Server since 1998 and SharePoint since 2007.

Main Session

Topic:  Cool Stuff with SQL Azure

This session will provide a quick introduction into SQL Azure, including account creation and security, and discuss why a move to SQL Azure might be important to your organization. We will discuss supported functionality in SQL Azure and then look at different deployment scenarios and data access techniques such as sharding and why that is important in SQL Azure. We will then take a look at how to develop applications for SQL Azure using many of the topics discussed

Speaker: Scott Klein

Scott Klein is President of Blue Syntax, a consulting and services firm specializing in SQL Azure. Scott is a Microsoft SQL Server MVP and author of several books including Professional SQL Server 2005 XML, Professional LINQ, Professional Entity Framework 4.0, and Pro SQL Azure. Scott runs the South Florida SQL Server Users Group.



6:00-6:10 Welcome and Announcements

6:10-6:25 SQLSaturday

6:25-6:40 Michael Antonovich - Using PIVOT – Going from Static to Dynamic

6:40-7:00 Pizza/Networking

7:00-8:00 Scott Klein - Cool Stuff with SQL Azure

8:00-8:15 Wrap-up/Raffle

Hope to see you there

 Don't Forget to register for SQLSaturday #49 - Orlando!

Monday, September 13, 2010

Space Coast User Group Recap

I had the pleasure of making my second annual September visit to the Space Coast SQL Server User Group in Melbourne, FL, last Thursday, September 9, 2010, to present, Introduction to Triggers.  This is small user group, but they are a lot of fun and ask good questions.  Because of the small size it is a very informal group so I took some time to talk about SQLSaturday #49 – Orlando, the pre-con on Database Design with Louis Davidson, and SQLRally before getting on with my presentation. 

The presentation went well and they caught me on one of my demos.  The demo in question demonstrates a common mistake I see in triggers and mention before doing the demos.  So, when I get to it I ask, “Can anyone see the problem with this trigger?”, and in this  case someone noticed I had left out the code, “SET NOCOUNT ON;”, at the start of the trigger body.  This was right after I had mentioned that you should always include this statement, unfortunately, this was not the problem I was trying to point out.  And, no, I’m not going to tell you what the answer I was looking for was.  If you want to get that, you’ll need to come see me present at SQLSaturday #52 – Colorado on September 25th.  Other than that, all the demos went well and the attendees learned a few new things.

Afterwards we went out to socialize at the restaurant at the local Holiday Inn where we talked SQLSaturday, football, and paper mills.  Why paper mills?  Well, it turns out that one attendee worked for the paper company that used own the mill I used to work at, and we had mutual friends in the company, and another attendee used to work for the company that wrote the truck scale software that we used at the paper mill I worked at.  It’s amazing how small the world is!

I’m tentatively scheduled to return next September, as we might as well make this an annual event!  Topic to be announced.

Thursday, September 9, 2010

PASS SQLRally – Session/Speaker Selection

SQLRally Winner
Hopefully by now you’ve heard about the PASS SQLRally event that will be held in Orlando, May 11-13.  Andy Warren, Kendal Van Dyke, and I are the local members of the planning team and we are making our best effort to give you a look behind the curtain to see what it takes to make an event like this happen.  Session/speaker selection is an area we are concentrating on because we would like to have the selection process be one of the differences between the SQLRally and the PASS Summit.  Andy has already shared his thoughts and Arie Jones has a very well-thought out response on his blog here
This post focuses on the regular community sessions while Andy had already blogged about the Pre-Con process.
So what are our goals in the session/speaker selection process?
  1. Provide a high-quality event that provides a “taste” of the Summit. 
  2. Provide a growth path for speakers. 
  3. Involve the community in the process. 
  4. Build a process that can be used as a template for other events.
So what are our plans for meeting the goals?
It really starts with being transparent in the process and getting input from the community along the way.  This is why we are making the effort to blog about what we are doing and thinking.  Some of our thoughts on session/speaker selection have been:
  1. Solicit abstracts similar to the Summit process but with a twist.  A selection committee, likely consisting of a representative from the host chapter and 2 representatives from other local chapters, would rate the sessions and present at least 3 sessions (as available) for each slot to the community for vote.
  2. For 8-12 sessions, invite 24 previous Summit speakers to take part in SQLRally.  We’d provide this list to the community who would pick the 8-12 speakers that they would like to hear from.  These would be the “name” speakers for the event that get your boss to foot the bill.
  3. Invite best of Summit speaker for each track to present their 2010 Summit sessions.
  4. Solicit topics from the community and then have speakers submit sessions for those topics.
  5. Allow chapters to “nominate” speakers.  Invite those speakers to submit abstracts.
  6. Assign session selection for different tracks to local chapters.  For example, Orlando and Richmond might vote on DBA sessions, Tampa and Atlanta on BI, etc…
These ideas lead to some questions where we would love to hear what YOU think:
  1. Is there anything wrong with the Summit process?
  2. Who would/should be on the selection committee?
Having selected sessions for SQLSaturday and been on the Program Committee for the PASS Summit 2010, the hard part is deciding what is more important the content or the speaker.  A great speaker can make poor content look good, while a poor speaker can make good content look bad.  So should the community vote on the speakers or the sessions?  Maybe a combination of both?
Speaker requirements:
  1. Except in special situations such as those Summit speakers invited to submit and voted on by the community, not a Summit 2010 presenter.
  2. Experience presenting at chapters, SQLSaturday’s or similar events.  We’d ask where, when, and what they have presented.
  3. Preferably a session that has been presented before.  As Arie points out this may mean we miss some “new” features, but when I pay for an event I want to know that the material has been done before.
A key point in all of this is that we want the process to be repeatable so subsequent events can re-use and build on the process.  While I wouldn’t say that the next local group that puts on the SQLRally would have to use the same process we use, I do hope that the framework we have laid will be able to be used to make their job a bit easier.
Please leave comments on the blog as we definitely are interested in YOUR thoughts on the process.  There are no guarantees that your ideas will be included, but they WILL be considered.

Tuesday, September 7, 2010

Upcoming Engagements

I haven’t been speaking a lot lately as I’ve been busy working, planning SQLSaturday #49 – Orlando, and planning PASS SQLRally, but I do have some upcoming engagements that I hope to see some of you at.

Introduction to Triggers on Thursday, September 9th 6:30pm, Space Coast SQL Users Group.

This session will give a brief overview of the different types of triggers available in SQL Server (DDL & DML) and then go into more detail on how and when to use DML triggers. This session will cover misconceptions about how triggers work, when triggers shoul d and shouldn't be used (we will discuss options), common mistakes, and how to fix the most common mistakes. After attending this session a person will: 1. Identify different types of triggers and when to use them. 2. Be able to identify when a trigger is the right solution 3. Be able to write triggers that perform well

SQLSaturday #52 – Colorado on Saturday September 25th

I’m scheduled for 2 sessions at this event.  I’m attending this event for 2 reasons:

  1. My wife has connected with Steve Jones’ wife, Tia, online and they both love horses.  Tia has horses, so my wife, Alice, will be spending the Saturday at the ranch with Tia and the horses.
  2. An opportunity to go to a part of the country I haven’t been to and to connect with some new people.  There are several people I know from SQLServerCentral and Twitter that I have not meet in person yet, and this will be a great opportunity to do that.
Why I Use Stored Procedures

With the proliferation of ORM tools like Entity Framework, nHibernate, and Linq to SQL, many projects have decided that stored procedures are not needed and slow down development. While these tools have their place and have improved greatly, stored procedures still have their place, and, in this speaker's opinion, are the best way to do data access. In this session I'll discuss my reasons for using stored procedures and hopefully stimulate some discussion of other access methods.

Introduction to Triggers

This session will give a brief overview of the different types of triggers available in SQL Server (DDL & DML) and then go into more detail on how and when to use DML triggers. This session will cover misconceptions about how triggers work, when triggers shoul d and shouldn't be used (we will discuss options), common mistakes, and how to fix the most common mistakes. After attending this session a person will: 1. Identify different types of triggers and when to use them. 2. Be able to identify when a trigger is the right solution 3. Be able to write triggers that perform well

SQLSaturday #49 – Orlando on Saturday, October 16th

In addition to planning and and running this event I’ll be presenting one session.

Profiling: It's Okay in SQL Server

Learn how to use SQL Server Profiler/Trace to troubleshoot SQL Server performance and errors. This session will cover how to use Profiler to capture SQL Server events, creating server-side traces, creating custom templates, saving trace data, and interpreting trace data.

I hope to see you at one of these events.  Please come up and talk to me, share your business card, and ask questions.  My favorite part of these events is meeting new people and re-connecting with people I haven’t seen recently.

Wednesday, September 1, 2010

Book Review: Crunch Time

About a month ago I went to Barnes & Noble to pick up a copy of Seth Godin’s book, Tribes: We Need You to Lead Us and, having some extra time, I was browsing the discount areas and I came upon Crunch Time: 8 Steps to Making the Right Life Decisions at the Right Times by Ken Lindner.  Since I’m in a time where I have some decisions to make and I’m also focusing on reading books about leadership I thought this might be an interesting read, especially at 50% off.

The book is broken down into 3 sections:

  1. Exploring Your Decision-making Foundation

    The author uses this section to talk about the first 2 steps. Identifying when you need to make a decision and "clearly and concisely stating what the issue is". For instance, you are in the store and you pass an end aisle display with Double-stuff Oreos and there is a big sign that says, "Special Offer". Do you buy the cookies? Now there are many things that go into making the decision, but that is the core issue.

  2. The Crunch Time Strategies

    Here the author uses most of the book to explain Step 3, Identify, Explore, and then Apply the Appropriate Crunch Time Strategies.  This has 24 sub-steps that I won’t list here.  To sum it up, be constructive, be disciplined, be objective, and evaluate decisions based on your long-term goals.

  3. Completing the Process

    This breaks down the final 5 steps in about 30 pages. To sum it up, make sure your decisions are based on accurate information, what you value, and what you really want.

I honestly had a hard time getting into the book because it has a "touchy-feely" tone. The author talks a lot about making "self-enhancing" decisions and decisions that take you where you want to go in your "heart of hearts". That's not to say that the author doesn't give you some good ideas and a framework to build on, it's just that he worded it in a way that is more self-help than professional development. 

What did I learn from this book?  First, have goals, have a decision-making process (he provides his in this book), and evaluate every decision using the process and make decisions that lead to the fulfillment of your goals.

Would I recommend that you buy this book?  Not if you had to pay full –price, but for $5.00 it wasn’t a bad read once you get past the writing style.  I did learn some things and it dove tails pretty well with Tribes and the book I’m currently reading, Visioneering by Andy Stanley