November 2006 - Posts

Off to the Philadelphia Launch Event!

is about to launch! :)

If you read this blog and will be attending the Philadelphia Launch Event on launch day - Thursday, 30 Nov 2006 - please introduce yourself!

My lovely bride Christy and I will be there. We're making the road trip today - preparing to leave in a few minutes in fact (as soon as someone quits blogging and finishes packing!).

It's an honor to be asked to deliver a keynote at a Microsoft launch event - I'm so excited!

:{> Andy

Technorati Tags: Team Edition for Database Professionals Data Dude Philadelphia Launch Event

posted Wednesday, November 29, 2006 11:07 AM by admin with 0 Comments

I'm a Mentor!



My Solid Quality Learning business cards arrived in the mail yesterday. I like my new title: Mentor.

I believe the title is appropriate for the mission of Solid Quality Learning which is summarized:
Solid Quality Learning is the trusted, global provider of advanced education and solutions for the entire Microsoft database platform.

Cool.

:{> Andy

Technorati Tags: Solid Quality Learning SQL Mentor

False? Advertising

This is a follow-up to my earlier post about Black Friday.

If you read it, you know I was in the market for a snappy laptop and waited all night partially to obtain said device. I did not mention that I didn't get it at the establishment where I waited all night. I got my new laptop (upon which I am typing this blog) at a different establishment. And I paid more money for it too - slightly over $1,000 USD plus an extended accidental warranty plan.

I didn't buy my laptop at the original establishment because it was never there. The store circular stated there was a minimum quantity, but this was inaccurate. This was the place that, for years, I headed to first when in need of electronics and computer accessories. But now I will patronize the other establishment first. Why?

For the same reason it's wrong to break in line: it's wrong to say you have something in stock when you do not.

I'm not talking about the popular deals here - this is about something that should have been around all day even if they only had a handful. And I was the third person to arrive at the laptop department - they simply were not there.

Worse, another model - one which had a few less features, but (concidentally) sold for more - was readily available. This is simply wrong. It smacks of the worst sort of practices abolished from used car lots during the mid-1980's: bait and switch.

The other establishment - the one where I spent about $300 more than I would have at the first place - had more (gasp) items than the minimum advertised, and they had the items advertised in stock. At the very least, the first place could have lowered the price on the substitute item, since it was so clearly a substitute.

I'm not saying I won't shop at Best Buy anymore, I will. They are very competitive and have good, helpful people. I am saying that I will likely shop there less, as I will likely find most of the things I'm searching for at the Circuit City across the street.

:{> Andy

Technorati Tags: Black Friday ethics About Andy Best Buy Circuit City

Black Friday

Today was "Black Friday" in the US. So named because a lot of retail businesses operate in the red until today, when hordes of shoppers flood the market and marketplace with money and their presence to officially begin the Christmas shopping season.

To be honest, I largely ignored this event until last year - when my beautiful bride talked me into waking up at 3:00 AM to stand in line at a major electronics retailer in the bitter Roanoke, VA cold. We waited about 90 minutes outside, shuffled around the store for another 30 minutes, then stood in line for three hours to check out - and I enjoyed every minute of it.

This year I needed a new laptop. I was going to put the purchase off until the last week of the year but was informed Wednesday "you can use your own laptop to do the demos during the keynote for the of ." The old rugged Gateway is still chugging along, but it's a couple years old at this point and has definitely tolerated more abuse by me - not to mention Stevie Ray and Emma bouncing on it (yes, there will be more about this later. The kids are a veritable hardware stress-testing laboratory...). In addition to this motivation, one retailer had Sandisk 2GB Micro Cruzers on sale for $30 each, limit five per customer - I had to get these to build my long dreamt-of Flash-drive array inspired by my good friend Harper Trow.

So Christy and I ride over to said retail establishment around 3:00 PM and there's a couple college guys out there with a tent. We think "Crazy kids! They're way early!" and return to Casa de Grandparents to continue the turkey attack. When the second football game became boring I said "Hey Cutie, let's ride back over there and see if anyone else is in line." We did, and there were about 10 people in line! We rushed home and recalculated the plan. We simply had to have a TV/DVD combo that was on sale for a great price. I wanted a nice LCD monitor because, for some odd reason, I'm tired of x-rays having their way with my brain via my optic nerves, and they had a nice laptop in the circular for a decent price.

By "nice laptop" I mean a dual-core 64-bit box with 2G of RAM installed and enough hard drive space for SQL Server 2005, lots of projects, and a couple / three virtual servers. By decent price I mean under $1000 (by a significant fraction). So off I go to sit outside all night bundled in several layers of clothing and battle the elements for a TV, LCD monitor, and a snappy new laptop.

Mind you: If I did not enjoy this particular shopping experience, I wouldn't do this. Considering the time this consumed and the things I need to accomplish in the comming weeks and months, this wasn't a wise investment. But I wasn't investing, I was enjoying my holiday! :)

Things were ok in line. I met some very cool people, everyone pretty much discussed the same sorts of things: how brave we were considering people were robbed a few weeks ago when the new video gamming system (I refuse to plug those people, much less buy anything they manufacture, until they build a time-machine, go back in time, and tell themselves "whatever you do, do not release those CDs with that root kit!") was released, how uncool it is to break in line and the clever ways people did it last year, and wondered what the people in front of us were buying - hoping it wasn't what we were buying.

It was a study in human psychology to observe the responses to the questions about what people were buying. I was around number 12 in line and no one in front of me was after the high end laptops or TV/DVD combo - and we all knew there'd be a billion or so flash drives present. But when the folks behind me were asked what they were after, the responses became more obtuse. As a pattern-recognizer, I immediately noted the proportional relationship between distance-from-the-front and open-honesty-without-hesitation-about-what-they-were-hoping-to-buy. And this is perfectly understandable. Suppose you're there for a TV/DVD combo and flash drives like me, but the establishment advertised they would have a minimum of 5 TV/DVD combos - where are you going first? especially if someone ahead of you admits that's what they're after? Yep, me too.

Pattern-recognition aside, it was still an interesting evening/morning. I got to enjoy a milder night out than expected, even if I did get cold around 2:00 AM. The only really bad parts came towards morning.

Folks began showing up just before vouchers were to be handed out and attempted to cut in line. Mind you, by the time vouchers were to be handed out the line was considerably long - perhaps 500 people or more. Basically, if you hadn't made the line before about 10:00 PM, you were out of luck... unless you cheated. And some tried. And a few succeeded. One was punched just inside the store, removed, and later re-entered the store to (presumably) buy his item. I personally advocate violence as a last resort, but I completely understood - after having waited 10 hours for the store to open - someone's frustration at this person breaking in line.

One couple walked up 30 minutes before vouchers were handed out and stood just outside the line. When asked what they were waiting for they replied they were "just standing there." When the vouchers appeared, they joined the crowd vying for them. When confronted they explained "we have kids." Now this makes a lot of sense and explains some things I hadn't understood until now. These folks are the ones producing the children on the planet - not the rest of us. Someone in line threatened to punch these "parents" in the mouth and they (wisely) decided to walk to the back of the line - voucher-less and exclaiming "Look what you've done! I hope you're happy!" The line applauded - apparently very happy indeed at what they'd done.

Suffice it to say I was a little disappointed in this handful of my fellow shoppers for this behavior. It's not like this is anything new - Black Friday happens every year. The rules do not change: there are bargains for those who arrive early and scraps for those who do not. If you want what you want, get there early. Cheating makes you look like, well, a cheater. It's unethical and you shouldn't do it.

If I conducted myself in this way, in any endeavor - personal or business - my mother would (somehow) hear about it. Most likley it would be immediately. The only thing that travels faster than light is news to our Mom that me or one of my three brothers is misbehaving. Someone in line would have recognized me and called Mom to tell her what I was doing. Mom would then show up and, in front of the people I was attempting to defraud, have me go pick my own switch and then whip me with it in front of those people.

Mom still has a temper. And she has no tolerance for unethical behavior whatsoever.

The question I have is: were the line-breakers never exposed to the existence of consequences? If so, they did a great job of concealing that fact. I actually witnessed the "male parent" (I won't call him a man) turn his back on someone taking him to task for his actions. Honestly. Stevie Ray has known better than that for a year or more - and he's 3.

Perhaps Universal Justice, the entropic nature of the universe, or good old-fashioned kharma will take care of the folks who cheated today. But even if it does, will they recognize it? or learn anything from it? After all: some of them, at least, got what they wanted...

:{| Andy

Technorati Tags: Black Friday ethics About Andy

The Clean Break

For the first time since 2001, I find myself sitting behind the president's desk in the global headquarters of my own business!

The new venture is called Andy Leonard Technologies, Inc. and this my first full-time day on the new office.

I mostly perform work for Solid Quality Learning as a mentor. For those who are unfamiliar with S. Q. L., it's a fantastic company! Not only are the people industry-recognized experts, they're actually cool! They engineer the entire process of joining their ranks so that it's low-stress. It has allowed me to ramp up quickly - and for that I am very thankful.

Mentoring is a great concept - it's a hybrid between consulting and instructing. Here's how it works: I join teams for a number of days or weeks. While working together, we develop a specific set of objectives - usually to develop template projects, best practices, and establish a foundation for the working environment. Together, we build out example projects using the templates to demonstrate their effectiveness.

In addition to this, I'm also a trainer. When training, I lead excellent classroom-based instruction courses. I currently lead the ETL with SSIS course, but I am ramping up on more course material - hoping to lead others.

In my previous jaunt into business, I operated ASI. ASI specialized in industrial automation and integration. It was a lot of fun for me because it brought together several disciplines I enjoyed (and still enjoy!): engineering, electrical control systems design, and software development.

ASI started in 1995 when I wrote one of the first completely web-based Manufacturing Execution Systems (MES) called Plant-Wide Webs. Plant-Wide Webs started using dynamic HTML before DHTML was widely available, then graduated to ASP. Writing the application and running the business were cool experiences!

I learned a lot about business and myself. :)

Most of those lessons were learned the hard way. I remember looking at the checking account one day during my first few months of entrepreneurship and seeing $80 in there. I thought "I must've done something stupid." I was right, and this was the beginning of my understanding of business development.

When Solid Quality Learning called I was ready. I understood the risks of making the leap. I knew it would be a lot of hard work. But, unlike last time, this time I have a fantastic team supporting me - and outstanding business development support!

The person who deserves the most credit has to be Christy. Not only does she support this decision, she's actively involved - booking my flights, making hotel arrangements, and renting cars... she's awesome! She even jumps onto mapping software and talks me in from the airport to the hotel so I don't drive around lost my first night in a new town! (The car rental people always ask "Do you know where you're going?" and look at me funny when I say "No, but I'll find it!") Christy does this in addition to taking care of Stevie Ray and Emma without help from me (when I'm out of town or holed up in the office) - and she does it without complaining.

Thanks, Cutie. I couldn't do this without you!

It feels good to be back. So far, the new boss is treating me ok... but it's still early on the first day... ;)

:{> Andy

Technorati Tags: Andy Leonard Technologies, Inc. Self-employment SQL Server Solid Quality Learning SQL

posted Monday, November 20, 2006 4:14 PM by admin with 0 Comments

Study: SQL Server is Safest Database

According to this report, SQL Server is the safest database engine on the market.

Security Vulnerability Count

  • Oracle: 70
  • MySQL: 59
  • Sybase: 7
  • DB2: 4
  • SQL Server: 2

I don't even have to search for them to know there are already howls of protest from Sybase, DB2, MySQL, and Oracle DBAs. I understand, truly I do.

Again, I haven't read the protests or complaints. I simply know the responses - because for years I've felt the same way when someone poked holes in my favorite database engine, SQL Server.

It's not that the holes don't (or didn't) exist - it's that these sorts of tests usually ignore the value any DBA brings to the table. The DBA knows about the vulnerabilities - at least the good one's do - and how to configure the system to be less vulnerable.

So Oracle, Sybase, DB2, and MySQL DBAs (once more, without even bothering to search), I understand.

Next time someone posts something about SQL Server, I expect you to also understand.

(... off to search for the responses now...)

:{> Andy

Technorati Tags: SQL Server Security Oracle DB2 MySQL

posted Monday, November 20, 2006 3:56 PM by admin with 0 Comments

Team Foundation Server Personal Workspace

Mitch Denny provides a single-WorkItem (Task) process template for developers to store stuff in TFS - what a cool idea!

:{> Andy

Technorati Tags: TFS Team Foundation Server Personal Workspace

posted Thursday, November 16, 2006 2:33 AM by admin with 0 Comments

Roll your own error-handler in SSIS

I was working on error handling with SSIS recently and came up with what I believe is a snappy way to address it. The solution presented below is partial. For one, I would encourage you to use a database table to house errors; for another, I would encourage you to store lots more data than merely the ErrorDescription field.

Error logging is crucial to troubleshooting and auditing efforts. If an error occurs in your SSIS package while it is executing production loads, transformations, or transfers; you will want to know as much as possible about it.

To demonstrate, create a new SSIS project named ErrorTest:

I encourage you to develop the practice of renaming packages as you create them. This will make your life simpler once you deploy:

I rename Package.dtsx to ErrorTestPkg.dtsx (don't change the extension):

When you rename a package the following dialog will appear:

Always answer this dialog "Yes".
Drag an Execute SQL Task onto the Control Flow:

Configure it (double-click or right-click and select Edit to open the editor) as shown below. Note any connection will suffice, so long as the SQL Server is running. Also note the SQL will generate an exception (intentionally):

Click OK to close the editor. Right-click the Task and select Execute Task to test:

The task should fail (as planned):

Stop execution and click on the Event Handlers tab:

Check to be sure the Executable dropdown is set to the ErrorTestPkg (the package) and the Event handler dropdown is set to OnError. Click the link to create a new OnError Event Handler for the package. From the Toolbox, drag and drop a Data Flow Task onto the Event Handler:

Double-click the Data Flow Task to edit it. From the toolbox, drag a Script Component transformation onto the Data Flow:

The Script Component can be configured as a Source, Transformation, or Destination. Select Source:

Since a Source has only outputs (a destination has only inputs, and a transformation has both inputs and outputs), you will need to configure the Output. Rename the generic Output 0 to ErrorOutput:

Click on Output Columns and click Add Column:

Rename the Column ErrDescription:

Edit the ErrDesription column's properties - change the datatype to String (DT_STR) and the length to 5000:

Add the ErrorDescription System variable to the ReadOnlyVariables property of the Script Component:

There are other variables you will add to your error handling script component. Remember variable names are case-sensitive, comma-separated, with no spaces in the list.
Click the Design Script button and add the following code snippet as shown below:


        With ErrorOutputBuffer
            .AddRow()
            .ErrDescription = Me.Variables.ErrorDescription
        End With


Some explanation: The name of the ErrorOutputBuffer was determined by the name you gave the Script Component Output earlier. When you changed the Output name to ErrorOutput, the script component's output buffer was changed to ErrorOutputBuffer.

To populate the buffer, you must add rows to it. Think of this as starting a new row in a table. If you're familiar with tables in Microsoft Word documents, you know when you start a new row it is empty until you populate it. The same is true here. You are creating a new, empty row in the output buffer to populate with data.

The final step is to load the row. Again, in your production-ready error event handler you will populate more columns in the output buffer than this one - this is for demonstration purposes only:

Next, drag a flat file destination onto the Data Flow and connect it to the Script Component as shown:

Note: You will likely want to store error data in a database rather than a flat file.

When you configure a flat file destination, you are prompted for which type of file. Delimited files are fairly simple to read - especially with few fields:

Select a location and name for your flat file. I chose C:\ErrorOutput1.txt:

Click Columns to view the columns the file will contain. Note: the columns would be empty if you had not connected a data path from the Script Component prior to configuring the Flat File Destination:

Click OK to proceed. Click the Mappings page to assign mappings between fields in the pipeline and fields in the destination:

Since you built the destination from the metadata contained in the pipeline, auto-mapping should occur when you click Mappings:

Click OK. Your Event Handler should appear as shown:

Start debugging the package by pressing F5 or clicking the Debug Run arow. Your ExecuteSQL task should fail as before:

Click on the Event Handlers tab to determine the run status of your Package OnError Event Handler. Double-click the Data Flow Task and note one row was written to your error file (ErrorOutput1.txt):

Open ErrorOutput1.txt file to view the error stored there:

In this example, we built a package to demonstrate logging package errors to a data destination - albeit a flat file. This technique can be used to catch errors and store them for troubleshooting posterity.

:{> Andy

Technorati Tags: SSIS OnError Event Handlers Logging

posted Thursday, November 16, 2006 1:21 AM by admin with 0 Comments

Team Edition for Database Professionals RTM 30 Nov 2006!

Grant Fritchey posts an excellent article about database Unit Testing with Visual Studio at SQLServerCentral.com.

Grant begins the article with a lament regarding all his work to automate unit testing using TSQLUnit and CodeSmith - only to have Team Edition for Database Professionals come along and integrate this functionality into Team Suite! I nearly shared the same fate.

Earlier this year, I was ready to start a community initiative to develop a plugin for Visual Studio and/or Team Foundation Server that would facilitate automated database testing. My logic: This was long overdue. As a web developer in pre-.Net days, I could practice test-driven development. I found TDD added a self-organizing emphasis to my thinking and work.

When I became a database developer, I searched for similar tools and methodologies for my database objects. To my shock and dismay, there were none. Since that time I've found some but they lacked the crucial integration component I sought.

(aka TEDP or Data Dude) - about to be officially !

Yours truly will be delivering the keynote at the Philadelphia Launch Event that very day!

Database development increasingly consumes more enterprise project development life-cycle time. As application developers take advantage of agile methodologies and development tools like Visual Studio Team Suite, their portion of the development lifecycle improves in quality and takes less time. It was all we poor database developers could do to keep up - and usually we needed to be ahead of the application developers (so they would have data to work with!).

Now, we have a fighting chance.

:{> Andy

Technorati Tags: Team Edition for Database Professionals TEDP Data Dude RTM Test-Driven Development SQL Server Test-driven database development

posted Wednesday, November 15, 2006 10:37 AM by admin with 0 Comments

Microsoft SQL Server 2005 SP2 CTP

Microsoft announces the release of .

There are versions for different editions of SQL Server 2005:

:{> Andy

Technorati Tags: SQL Server SP2 CTP

posted Friday, November 10, 2006 2:03 PM by admin with 0 Comments

SQL Server 2005 Compact Edition RC1

Microsoft announces the release of - formerly named SQL Server Everywhere Edition. You can download it .

One nice feature is ClickOnce support. There several steps you must take to enable ClickOnce in this edition (perhaps another blog entry...). But the work will be worth it if ClickOnce works as advertised (I haven't tested it).

:{> Andy

Technorati Tags: SQL Server Compact Edition Everywhere Edition ClickOnce

posted Friday, November 10, 2006 1:55 PM by admin with 0 Comments

Page Vest and SQL Server 2005 Service Broker

Page Vest did an outstanding job last night at the Richmond SQL Server User Group! His presentation on SQL Server 2005 Service Broker was well-received by all in attendance.

He did a good job digging into the inner workings of queues. I learned something: there's a system queue (sys.transmission_queue) where all messages land before moving to the destination queue. The reason? The destination queue may be disabled.

Page covered that and much more - good stuff!

:{> Andy

Technorati Tags: Developer Community SQL Server Service Broker Richmond, VA Page Vest

posted Friday, November 10, 2006 11:05 AM by admin with 0 Comments

Richmond SQL Server Users Group Meeting tonight!

Page Vest speaks on SQL Server 2005 Service Broker at the November meeting of the Richmond SQL Server Users Group.

Fahrenheit Technology sponsors this month's meeting - be sure to thank them for arranging the meeting room, providing pizza and sodas, and their continued support of the Richmond Microsoft developer community.

I look forward to learning more about this exciting enhancement to SQL Server 2005!

Hope to see you there tonight!

:{> Andy

Technorati Tags: Developer Community SQL Server Users Group Richmond, VA Service Broker

posted Thursday, November 09, 2006 2:38 PM by admin with 0 Comments

30 Nov 2006 Launch Event Keynote! Team Edition for Database Professionals

It's official - I am presenting the keynote at the !

After the keynote, I'll be participating in a panel discussion alongside some recognized names in the industry!

If you read this blog and you're going to be in the Philadelphia area 30 Nov, and then introduce yourself!

:{> Andy

Technorati Tags: Team Edition for Database Professionals Data Dude Philadelphia Launch Event

posted Sunday, November 05, 2006 5:33 PM by admin with 0 Comments