Joe Webb

Musing and observations about SQL Server, other technogies, and sometimes just life in general
posts - 85, comments - 857, trackbacks - 0

My Links


This blog has moved!

Click here for the new location.

Follow me on Twitter
Add to Technorati Favorites

Search this Blog


Post Categories

About me

Tuesday, June 23, 2009


Over the past several years, I've regularly blogged about SQL Server and other technologies, and sometimes about life in general. I enjoy sharing my experiences and love it when something I've written evokes a good conversation in the comments section of the blog.

For the past couple of years, I've hosted my blog right here on SQLTeam with my good friend and fellow SQL Server MVP, Bill Graziano. Bill's a wonderful guy with a true passion for the SQL Server community.

Recently I finally finished porting my professional web site over to a platform that allows me to host my own blog content. This will afford me more flexibility and will give me a unified presence on the web - making it easier for me consulting, mentoring, and training clients to find and follow me on the web.

I've already begun posting blogs to the new site. Here are a few that may be of interest to you.
Bill's agreed to keep this blog and all its posts in place so that search engines and hard coded links will continue to direct traffic to content.

If you've been a subscriber to this blog via rss, THANK YOU!!! I truly appreciate it.

ACTION: To keep receiving updates, you'll need to modify your rss reader's settings for my blog. The new feed is

Thanks to Bill and SQLTeam for hosting my blog these years. It's been great!


posted @ Tuesday, June 23, 2009 11:02 AM | Feedback (4) | Filed Under [ Misc Community ]

Wednesday, March 25, 2009

Carbonite's failures and the blog-o-sphere

Yesterday, I was catching up on some blogs that I regularly read and noticed one that got me to really thinking. It was written by fellow SQL Server enthusiast and blogger extrodenaire Brent Ozar. The blog posting, entitled Another backup failure: Carbonite, recounts and offers Brent's commentary on the relatively recent failures of online backup company Carbonite. The blog is interesting itself and well worth the read, but what I found most interesting was in the comments section.

David Friend, Carbonite's CEO, found Brent's blog and responded to it by leaving a comment. Friend offered some additional insight into the failures and provided some clarifications of its implications. In short, Friend defended the company, downplayed how wide spread the affect was, and indicated that the company is seeking relief and damages from their hardware provider through the court system.

As few as five years ago, news of Carbonite's failures and their subsequent lawsuit would have been relegated to the back side of a page buried deep inside a middle section of the Wall Street Journal where only those who have bird cages to clean would have ever laid eyes on it.

But now in the age of blogs, Twitter, FaceBook, and other social networking sites, news like this spreads as quickly as celebrity gossip. And it's the wise executive who understands and embraces this phenomenon. CEO's, company president's, marketing types, and other public faces for organizations must be prepared to respond to quickly and decisively to public outcry through these media. And it's not just a one-way public relations vehicle, either. The successful company will tap into the collective voice of the community and learn from it.

As an aside: Brent followed up his original commentary with another posting that asks very pointed questions about Carbonite's decisions prior to the failure, questions that the Carbonite executives should have asked from the very beginning. I hope for their sake, and the sakes of all who trust Carbonite with their data, that the company learns from their mistakes and views the community's response as valuable input.

I'd love to hear your comments on this. Do you agree? Disagree?


kick it on

posted @ Wednesday, March 25, 2009 11:55 AM | Feedback (20) | Filed Under [ Misc Current Events ]

Monday, March 16, 2009

Things you know now

I was recently tagged by my long-time friend and colleague Kevin Kline in his blog post Things You Know Now. The thread originated with Mike Walsh, in his blog post also entitled Things You Know Now.  In his thread, Mike asks a simple, open-ended question: "It doesn't have to be DBA skills, but what do you wish you knew when you were starting?"

As I began thinking about the things I've learned over the years, I realized that there are plenty of things I wish I had known 10 or 15 years ago. It was hard to narrow it down to just a few, but I've long believed that it's better to do 2-3 things really well than to do a dozen things half-way.

So here are my top three.

Think like a consultant

It's true, I've been a consultant for a very long time, 15 plus years in fact. And over that time I've met a number of clients who hold consultants in very poor esteem. As with any vocation, a few really bad ones can tarnish the reputation for the rest.

But I'm not referring to actually being a consultant, just thinking like one. View your relationship with your employer or boss as a consultant would and act accordingly. For example:
  • Be responsive - don't sit on things hoping they'll go away. Respond promptly, even if it's simply to say "I'm working on it."
  • Add value - don't just rotely put in your 40 hours per week. Look for ways to add value to the team or organization.
  • Bring solutions - don't regularly bring problems to your boss, bring recommended solutions.
  • Don't take it personally - sometimes your great ideas will not be accepted for reasons you won't understand. That's ok. Don't take it personally. Think of your ideas like a work of fine art. You may like them but others may not. If that's the case, paint another work of art.
  • Put others first - think of others before yourself. Find ways to helps others and it'll come back to you.

Enjoy the day

Life is short, too short sometimes. It's like a wisp of mist that's here for little while and then disappears. I don't mean to sound pesimistic about it; I'm not actually. But I do realize that life is too short to get burdened down with things that don't really matter in the long run or to worry about things that are really out of your control. Do the things you can to prepare and trust that it will work out for the good.

One rule of thumb that I created back in high school was to think of things in terms of 5 year periods. When I'm facing something that seems worrisome at the moment, I try to think about it from the perspective of 5 years from now. Will it really matter to me 5 years from now? If not, don't sweat it. If so, then I do what I can to make it right, now. Of course the 5 year rule must be applied judiciously. While one minor thing may not matter 5 years from now, a series of minor things that lead to a pattern may indeed matter.

So, enjoy the day while preparing for the future.

It's all about relationships

As I go about my professional life, I realize that much of what I do will not be around 5 to 10 years from now. The T-SQL code that I write, the databases that I design, the solutions that I architect all have a very finite lifetime. At some point no matter how good they are today, they will be completely obsolete.

But the difference I make in the life of someone else may live on forever. Whether it's in my kids or in my relationships with friends and coworkers, investing in the lives of others will pay off in ways I can never even imagine.

So find someone to invest in.

And a bonus one

In keeping with the spirit of thinking like a consultant (giving you more than I promised), I'll leave you with one more thing. Don't let your sense of self-worth get wrapped up in what you do or how you perform. Find a hobby that you enjoy and find the time to do it. I enjoy working outside so we bought a small hobby farm and we raise chickens, cows, vegetables, etc. It certainly keeps me busy, but I so enjoy the time I spend doing it. It helps to keep things in perspective and to make me more well-rounded.

Next up

I'd love to hear your comments on these "Things I know now". As for the thread, I'm tagging:



posted @ Monday, March 16, 2009 11:36 AM | Feedback (4) | Filed Under [ Misc ]

Monday, March 02, 2009

SQL Server Upgrade Technical Reference Guide

So, you are considering upgrading to SQL Server 200x from a previous version. What are some of the key issues that you need to consider, or at least be made aware of, prior to upgrading?

Fortunately the heavy lifting of answering that question has already been done for you. It's available to you in the form of an Upgrade Technical Reference Guide. There's one available for upgrading to SQL Server 2008 and one for SQL Server 2005.

Of course, you'll still need to consider the information provided in these documents in light of your specific databases and servers, but at least these will provide a good jump start on the process.


kick it on

posted @ Monday, March 02, 2009 12:28 PM | Feedback (21) | Filed Under [ SQL Server ]

Friday, February 27, 2009

SQLTeach Vancouver 2009 Sessions are online

Yesterday I posted a short blog about DevLink in the middle Tennessee area. Today, I'd like to make sure that you're aware of another great event in the great northwest - DevTeach/SQLTeach.

DevTeach/SQLTeach is a wonderful event put on largely by volunteers led by Jean-Rene (JR) Roy. It's got a good combination of developer tracks and SQL Server tracks. So if you're a developer with a bent for database application, this event is right up your alley.

Earlier this week, DevTeach/SQLTeach released their lineup of speakers and sessions. Have a look at them and I'm sure you'll find quite a few to your liking. I'll be there. Hope to see you there too.



posted @ Friday, February 27, 2009 11:25 AM | Feedback (3) | Filed Under [ Current Events Community ]

Thursday, February 26, 2009

DevLink 2009 Call for Speakers

For those of you who are not familiar with DevLink, you should be. It's Middle Tennessee's premier developer and database conference. It attracts some of the best speakers from all over North America, yet it provides a comfortable and relaxed environment where attendees and speakers can have a fun time just hanging out and getting to know one another.

Currently the call for speakers is open. If you're interested in speaking at the event, visit the DevLink site ,, to download the abstract submission form

posted @ Thursday, February 26, 2009 6:44 AM | Feedback (7) | Filed Under [ Current Events Community ]

Tuesday, February 17, 2009

Reporting Services Licensing

Licensing models can sometimes make database modeling seem trivial. Per processor or per seat? Single core, dual-core, multi-core processors? Multiple instances on one server? Virtualizing servers on a single server? It can get very confusing, very quickly.

Recently, I was asked by a former student about licensing for a SQL Server Reporting Services instance. In the proposed scenario, the Report Server would be installed on one server and the back end database would be installed on a separate, remote server. How many licenses of SQL Server are required?

In short, each server where a Business Intelligence component is installed requires a valid SQL Server license. So, a remote database deployment scenario where the Report Server is installed on one server and the ReportServer database is installed on a separate server requires two licenses of SQL Server.

But don't take my word for it. Here are a couple of links that will help clarify licensing requirements.

Special Licensing Considerations for SQL Server 2005

SQL Server 2008 Pricing and Licensing

Cheers and I hope this helps!

kick it on

posted @ Tuesday, February 17, 2009 8:01 AM | Feedback (11) | Filed Under [ Reporting Services ]

Thursday, January 15, 2009

Adding a column to every table in a database

Despite the best laid plans, sometimes circumstances or project scope change and the definition of one or more tables in your database must be altered after they have been created. It's just a fact of life for a DBA.

Frequently these changes affect more than one database in your environment. The development, test, and eventually even the production databases must have their definitions updated to reflect the newly implemented changes.

For cases like this, I generally prefer to script out the necessary changes rather than using the Management Studio tools. Scripting reduces the likelihood of an unintentionally errant change while updating the 100+ tables in the database. If one database or table is done correctly, you can be assured that the rest are in order as well. That's not to say you shouldn't test; you should. But the changes will be much more consistent when they are implemented via a script rather than by hand.

Recently I was tasked with adding a column to every user table in a database. There were lots of tables in this database and doing it by hand was not a good alternative. Of course if the changes were successful in Dev, they would need to propagated to Test and Production as well. So, I used T-SQL to dynamically create a script for me.

There a number of ways to accomplish this. A cursor or a while loop come to mind. However, since I knew that the new column name did not exist in any of the tables, I could use a shortcut and make use of the sp_msforeachtable system stored procedure. I described its use in a prior blog.

The first step is to use the stored procedure to generate T-SQL code to implement the change. For this example, we want to add a datetime column called Date_Created to each table in the AdventureWorks database. In a new query window, type the following code.

USE AdventureWorks;
EXEC sp_msforeachtable

When this script is executed, the Messages pane of the query window is filled with a list of DDL (Data Definition Language) statements to implement our change. The output is shown in the following figure.


After reviewing these DDL statement to ensure they are indeed what we wish to do, we can then copy and paste them into a query window for execution.

Of course this implementation doesn't have error handling. If a column by that name already exists, the DDL statement will fail for that table. If you are unsure whether a column already exists, you should use one of the other implementations (cursor, while, etc) so you can check for the presence of the column before issuing the ALTER TABLE statement.

I hope you find this useful. If you have any favorite scripting techniques or comments on this one, please feel free to share in the comments section below.



kick it on

posted @ Thursday, January 15, 2009 8:59 AM | Feedback (23) | Filed Under [ T-SQL ]

Wednesday, January 14, 2009

Desktop Virtualization

The past couple of years has seen a great increase in the interest of server consolidation and virtualization. Once considered an almost impossible to achieve ideal, today more and more companies are taking a serious look at its benefits. And those benefits are quite alluring.

I have talked with colleagues who swear by virtualization. They claim that when properly configured, SQL Server can perform every bit as well on a virtual server as when on a dedicated box. So for them, the benefits greatly outweigh any potential drawbacks.

Although I don't have a great deal of experience with server virtualization, I do make quite extensive use of desktop virtualization. In fact, my laptop does not have a single piece of SQL Server or .NET related software installed it. Everything that I do professionally, I do in a virtualized environment.

A recent request from a long time client further highlighted the benefits of desktop virtualization. The client uses a ten year old VB6.0 / Crystal Reports 8.0 application that I support. The application has been quite stable and has met their needs for some time now and as a result I haven't used VB6.0 nor CR8.0 is years. However the client recently identified some relatively minor enhancements that would improve the application. Without desktop virtualization, creating the development environment would have been rather difficult. I wouldn't have had these older tools on my laptop already and I certainly wouldn't have wanted to install an older set of tools on top of a newer version.

But with virtualization, no problem. I can simply copy an existing virtual machine and install the required software. Existing virtual machines would not be affected. In this case I already had a virtual machine configured for this scenario, but if a hadn't it would have been easy to create.

I have six or seven different virtual machines configured for different purposes. For example, I have a virtual machine with each of the following configurations and uses.
  • SQL Server 2005 / Visual Studio 2005 - This is my primary development machine that I use for most of my clients.
  • SQL Server 2000 / Visual Studio 2000 - Some clients still use an older set of technologies, so I have a machine configured with that set of software.
  • SQL Server 2000 / Visual Basic 6.0 - A few of my clients still use VB6.0 applications that I created for them years ago, so I have a virtual machine configured for this purpose.
  • SQL Server 2008 - When I speak at conferences and user group meetings, I like having a dedicated environment that I can quickly configure without affecting my production environments.
  • SQL Server 2005 / SQL Server 2008 - I used the system to test upgrade paths when writing some technical documentation for a recent project.
  • Base O/S install - I use this as a the basis for new virtual machines that I create. It only has a fully patched operating system installed on it.
The beauty of this layout is that I can easily copy an existing virtual machine for a new purpose as need be. This provides me with a pristine environment in which to work.

If you're using desktop virtualization, I'd like to hear about your experiences. Drop me a comment below. If you're not already using desktop virtualization, I'd highly recommend it.


kick it on

posted @ Wednesday, January 14, 2009 7:38 AM | Feedback (24) | Filed Under [ Other Technologies ]

Friday, January 02, 2009

Welcome 2009!

Happy New Years! (noise makers sounding in the background, confetti and streamers softly floating down behind me). I hope you all had a wonder New Year's Day holiday. Now it's back to work.

This fall was quite busy for me. I spoke at a couple of user group meetings, two conferences in two countries, and best of all received into this world a new son, Timothy. For anyone counting that makes four children for me and my wonderful bride of 11+ years.

I also received word yesterday that I was re-awarded as a Microsoft SQL Server MVP for 2009. It's the fifth time I've received the honor and I'm definitely humbled to be even be mentioned in the same breath with such a great group of people. If you're not familiar with the MVP program, here's a link to the official home page of the Microsoft MVP program.

Anyway, with all of the fall's activities, my blogging efforts suffered a bit. The number of posts over last 3 months of the year were down significantly compared to the prior 9 months. The timing also corresponded to my Twittering activities too. I've found that it's very convenient to share technical resources and links via short Tweets rather than compile it into a longer blog. They shouldn't be mutually exclusive, though.

I'm not one to make New Year's Resolutions, but I have decided to again turn my attention to blog posts. So keep an eye our for some new content here.



posted @ Friday, January 02, 2009 8:36 AM | Feedback (0) | Filed Under [ Misc Community ]

Powered by:
Powered By Subtext Powered By ASP.NET