January 2007 - Posts

Manny Siddiqui to present Windows Communication Foundation!

Manny Siddiqui present Windows Communication Foundation to the Richmond .Net Users Group meeting Thursday, 1 Feb 2007, at 6:30 PM.

Manny is an accomplished software architect, has written quite a few articles, and just started a new blog!

MaconIT is our sponsor. I've known Brock Barnett for over five years and Gregg Barnett for about a year now - they're good people.

It should be a great meeting!

:{> Andy

Technorati Tags: Developer Community Richmond .Net Users Group Manny Siddiqui Windows Communication Foundation

I will present SQL Server Tips and Tricks 8 Feb 2007

After the Freezing Redneck Tour 2007 wraps up this week, I'm looking forward to the next meeting of the Richmond SQL Server Users Group.

I've decided to present on SQL Server Tips and Tricks. I have three topics in mind:

  • SqlClr
  • An Introduction to Incremental Data Warehouse ETL with SSIS
  • A surprise topic!

Trust me, if you work with SQL Server data warehouse ETL you will like the surprise. ;)

Hope to see you there!

:{> Andy

Technorati Tags: Developer Community Richmond SQL Server Users Group SqlClr Incremental ETL

Richmond Code Camp 3 Registration Link!

for Richmond Code Camp 3!

Hope to see you all there!

:{> Andy

Technorati Tags: Developer Community Richmond Code Camp 3

The Freezing Redneck Tour 2007, Week 3

Week 3 of the Freezing Redneck Tour 2007 finds me on the way to Boston this fine Monday morning.

We had ice yesterday and overnight in the central Virginia area - not fun and certainly not conducive to driving 90 or so miles to the airport one way starting around 3:30 AM.

The air temperature was below freezing in Farmville but, fortunately, the ground temperature was not - at least not on the roads. In addition, the good people at the Virginia Department of Transportation were out early putting sand on ramps and bridges. Thanks VDoT!

So the roads were fine but leaving a little early didn't hurt any.

:{> Andy

Technorati Tags: Freezing Redneck 2007 VDoT Boston

SQL Programmability and API Development Team Blog

If you work with SQL Server and haven't checked out the SQL Programmability and API Development Team Blog, you should. Now. Immediately. I'm not kidding.

It's simply awesome!

:{> Andy

Technorati Tags: SQL Server Programmability API Development blog

Competition and lawyers

Let me state at the outset that some of my friends are lawyers. My oldest daughter Manda even has a pre-law degree (Political Science). And I am certain some of the nicest people on the planet are lawyers.

In the interests of full disclosure, I'd like to also say I've had my share of run-ins with the law. Nothing major, mind you... My experience with lawyers has been educational. That's a good word to use: educational.

So I'm sitting here watching television - that's right, the play-offs are about to start (arguably the best football of the season will be played today and not a couple Sundays hence) and most of you know I rarely watch television - and I see this commercial about calling this 800 number if you've lost money in the stock market. And I feel the blood rush to my face.

Lean in, real close to your monitor - I have a secret to share with you about investing in anything, especially the stock market: It's

RISKY!!!

1...
2...
3...
4...
5...
6...
7...
8...
9...
10...

I construct a quick use case of how this commercial came to be. My thoughts are:

  • Someone invested in the stock market
  • This person expected to make loads and loads of cash
  • Instead, some or all of the money was lost
  • So the person contacted a lawyer

Some people do make money in the stock market. A few of them share how they did it in ways you and I can understand. I like Jim Cramer. His books help ordinary people understand the risks and propose a methodology that helps me invest according to my risk tolerances. I particularly like .

This, and all good books about investing, make the point that investing is risky.


Then, catching up on my blogs, I come across a link to this: Comes v. Microsoft.

I read through some of the information posted there and my reaction is "Thank God for Google."

"What?!" you gasp, "aren't you sold out to Microsoft and isn't Google their arch-rival?" No, and yes.

I'm not sold out to anyone. I have a limited number of minutes to apply to learning new stuff everyday and I can barely keep up with the products offered by a single company, so I chose Microsoft technology. And ask anyone, I give Microsoft high marks for the stuff they do well and low marks for the stuff they don't do well. I don't see that as being sold out. But I digress...

So why "hooray for Google?" Google has proven beyond a shadow of a doubt that it is possible to compete with Microsoft.

It is my contention that there would be no lawsuits if, say, Microsoft had simply rolled over and allowed these companies to catch up - or if they'd met with these companies to divvy up the market... no wait, that would be illegal, nevermind.

My point is pretty simple. Microsoft isn't perfect. But neither are their competitors. If some of the "technological alliances" formed to compete with Microsoft had been formed to compete with anyone else on the planet it would have been shot down by some monopoly law or other, but since they were formed to combat Microsoft they were deemed legitimate.

When Microsoft provides the lowest TCO (total cost of ownership) and the highest ROI (return on investment) one competing strategy seems to be to form an alliance to try to create a standard that excludes Microsoft, or engage in admittedly clever marketing (will they break into double-digit marketshare with those commercials?) with cool people and sappy comparisons (conspicuous in its absence was the C# GUI Programmers Guide). Here's something I really admire: When Microsoft gets outwitted in the market - like by - their strategy is to compete.

It isn't Microsoft's "fault" that the competition makes mistakes and Microsoft takes advantage of it. It's the competition's fault for making the mistake in the first place. Microsoft is simply doing what every other business on the planet - including mine - does to remain open and profitable: competing.

When you're that big, however, it looks awfully unfair from the standpoint of the little guy.

But the opposing argument is: Microsoft should not be allowed to compete. And this is just wrong.


So, bringing it all back around...

How about some personal responsibility?

If you invest in the stock market, you could lose every cent. That's the way it is. If you do not wish to accept that risk, you have an option: don't invest in the stock market.

If you decide to start a business that competes with Microsoft, you could lose. That's the way it is. If you do not wish to accept the risk of losing, you also have a similar option: don't go head-to-head against Microsoft.

The first game's on...(and I believe the Bears Defense will decide the remainder of the games in which they play this season...)

:{> Andy

Disclaimer: The opinions expressed herein are the opinions of the author and not the owners and operators of the site or the internet. Ok, maybe the owners of the site since the author does, in fact, own the site; but definitely not the operators. And other people are responsible for what they say and do on the remainder of the internet - the set of said which encompasses but excludes this site herein. Wheretofore. I am not a lawyer and I do not play one on the web. Ad nauseum, ad infinitum, add oneplusone, e pluribus unum.

Technorati Tags: Microsoft legal battles competition

posted Sunday, January 21, 2007 5:35 PM by andy with 0 Comments

The Freezing Redneck Tour 2007 rolls on...

This evenings' blog entry is brought to you by Duke Athletic ThermaForm® Long Underwear - especially the Hood:

Is it me, or does this scream "Finish Him!"?

My first ETL with SSIS class in Minneapolis is complete and went well, I think. A large part of the success for this - and all the ETL with SSIS classes I've led thus far - can be attributed to the fact that only cool people attend.

It's always great to hear how someone met and overcame a data warehouse or ETL challenge. I believe I learn more than anyone else!

I had a handful of good stumper questions about migration from DTS to SSIS - excellent blog fodder. And late this afternoon I saw a cool demonstration of DTS packages stored in SQL Server 2005 (thanks Rajesh!). I am building a new VPC now for a SQL Server 2k instance to test (and blog) against.

Buck, Chavez, John, Doug, and Eric also taught an old dog some new SSIS tricks. :)

Minneapolis is awesome! It's been cold here - 6 below Tuesday morning - but it reached a balmy 25 here today (with flurries, of course!). Folks tell me it's been a warm winter here until now. I'll be back week after next - maybe it will start warming up again... :)

Here's hoping the travel tomorrow is uneventful...

:{> Andy

Technorati Tags: sql server 2000 dts ssis migration upgrade long underwear finish him!

posted Thursday, January 18, 2007 10:18 PM by andy with 0 Comments

SQL Snack

...from theDailtyWTF: Chocolate Covered SQL


...spaces in the table and field names. Easier to read or just three extra characters to type?

Thanks Frank for sending me this!

:{> Andy

Technorati Tags: SQL humor raisins chocolate

posted Thursday, January 18, 2007 10:06 PM by andy with 0 Comments

Nascar Loses a Legend

Tuesday, Nascar lost legend Benny Parsons.

Andy

Technorati Tags:

posted Wednesday, January 17, 2007 10:08 AM by andy with 0 Comments

A couple changes!

I've started a new blog: Applied Business Intelligence!

I will continue to blog here about Team System topics. I'll probably continue to share personal stuff here as well - I'm debating that...

I've also changed my login here at VSTeamSystemCentral.com. I'll no longer be posting as that dry and boring "admin" guy - now I'll be posting as me!

:{> Andy

Technorati Tags: New blog Applied Business Intelligence BI SSIS ETL Reporting Services

posted Tuesday, January 16, 2007 10:45 AM by andy with 0 Comments

Richmond MSDN Event - Digital Identity Lifecycle

The Richmond Microsoft Office is hosting an event entitled March 13, 2007 from 9:00 AM to 1:00 PM at their Stony Point Parkway offices.

From the website:

Hear from the experts, Microsoft, Microsoft Customers and Microsoft Partners – Quest and Logic Trends, on how to best map Identity and Access Management technology and processes to improve operational efficiency, reduce internal cost and address corporate compliance requirements (Sarbanes Oxley, HIPAA & GLB).

I am planning to attend!

:{> Andy

Technorati Tags: MSDN Richmond, VA Identity Management developer community

posted Tuesday, January 16, 2007 1:18 AM by admin with 0 Comments

Editorial Decision

I am making an editorial decision based upon the following: The more I blog about my air travel experiences, the worse said experiences get.

I think my blogging may be impacting my experiences - kind of like Spin, Twin, and Fin imply some sub-atomic particles exhibit free will or maybe it has something to do with the physics of dimensions four through ten.

:{> Andy

Technorati Tags: physics blogging airports twin spin fin 10 dimensions

posted Tuesday, January 16, 2007 12:36 AM by admin with 0 Comments

In Atlanta...

I finally left Richmond only four hours later than expected.

We made great time on a nice big jet to Atlanta. I found the gate, grabbed a mocha, and found a seat near an AC receptacle so I can get some work done.

And then the inevitable announcement: "Ladies and gentlemen travelling to Minneapolis aboard flight ..." You guessed it, delayed again.

I suppose the airlines are doing the best job they can but this seems counter-productive - not to mention counter-profit.

The good news? My Mom reads this blog and likes for me to let her know how these flights go. She's able to track my progress today by just reading this!

:{> Andy

Technorati Tags: More delayed flights fun with airports Mom

Re-Import Schema in Team Edition For Database Professionals

What happens when I want to refresh the schema in a Team Edition for Database Professionals database project? Say I've created a project, imported a database schema, and then I make some changes using SQL Server Management Studio. How do I get my updates into my database project?

There are a couple ways to accomplish this. This post describes one method.



First I create a database project named Test1:

Once created the project shows up in Solution Explorer:

I right-click on the project name (Test1) and click Import Database Schema:

I configure the import dialog as shown:

After I click Finish, the import process fires:

After import completes, I note the warnings and click the Finish button. When I right-click on the project name (Test1) in Solution Explorer, my context-sensitive menu has changed. To proceed with the demonstration, click Unload Project:

Once the project is unloaded, Solution Explorer now contains only the project file. I right-click the project and click Edit Test1.dbproj:

The xml containing the project definition opens in the IDE editor (There are always risks when editing xml project definitions, so be careful. It's a god idea to make a backup before editing begins.):

If I collapse all but the last tag (the tag that contains the schema definitions), I can easily highlight this information:

Once deleted, I save the file and close it:

Right-click the project name in Solution Explorer and select Reload Project:

If I forgot to close the file earlier, I will receive this prompt:

When the project reloads, the schema is empty:

A right-click on the project name in Solution Explorer brings up the earlier menu, allowing me to import the schema:

There are always risks when editing xml project definitions, so be careful. It's a god idea to make a backup before editing begins.

:{> Andy

Technorati Tags: Data Dude Team EDition for Database Professionals Import Re-import refresh schema

posted Sunday, January 14, 2007 4:55 PM by admin with 0 Comments

Lemons...

Funny, I was just posting - here in Richmond, VA, about leaving on time.

We did manage to leave on time (which, in hindsight, should have been a clue) but turned around half-way to Cincinnati because the part of the aircraft that cools things off and provides cabin pressurization above 10,000 feet stopped working. We could have flown there below 10,000 feet, if only we'd taken on enough fuel before leaving.

So now I'm forced to sit in a bar at the Richmond airport, waiting on the 3:05 to Atlanta (my beautiful bride, who lived in Georgia while attending high school, tells me it's pronounced "Alanna" - there are no t's in the name of the city), drinking Sam Adams, blogging, and watching football. As I type, the Bears are up 14-7 over the Seahawks. Remember I mentioned that stuff about lemons earlier? :)

I will get to Minneapolis a little later than expected, but it's all good.

I bought a mammoth burger at a little shop down the terminal and walked over here to the Sam Adams bar with it. I asked the bartender lady "Do-I-have-to-buy-a-beer-to-sit-here-and-eat-and-watch-football-and-blog-just-say-yes?" She said "Yes." So I was practically forced to drink this cold delicious Sam Adams draft.

Internet access is free (as in beer - unless you're drinking Sam Adams at an airport bar) at RIC. The website is www.FlyRichmond.com.

Next entry from Minnesota, provided my luck changes...

:{> Andy

Technorati Tags: Delayed flights blogging football Sam Adams FlyRichmond.com

The Freezing Redneck Tour - 2007 Rolls On!

The Freezing Redneck Tour - 2007 continues. In Week 2, I'm off to Minneapolis for an SSIS training course.

Since I started traveling regulary, I've been checking out different airlines - just to see what the differences are. I don't have enough data to make any determinations yet, but I see an interesting trend: a lot of the major airlines subcontract to smaller carriers. I see it with a flight advertised with Delta, for instance, but with a sub-heading that says something like "Operated by Fly-Me-Please Airlines."

It looks like the boarding for my connector is beginning - on time this time! :)

:{> Andy

Technorati Tags: Solid Quality Learning SSIS Training Minneapolis

Career Advice: Going Solo

I recently shared this advice with a friend who is considering becoming an independent consultant:


0) There's a great book about consulting by Tom Lambert called . I highly recommend it. I love Chapter 6. I just bought a used copy from Amazon for $4.20.

1) Don't take anyone's advice seriously - unless you know for a fact they have a fully licensed version of CrystalBall 3.2 software installed and running, and you've conducted the tests yourself to validate it works as advertised. I do not have a fully licensed version of CrystalBall 3.2 installed.

2) I'm a huge believer in going for it. Any comments I make are going to slant that way. But - and this is a big butt (double-entendre intended) - be aware of as many risks going in as you can possibly identify. When you go for it, identified risks provide metrics for measuring your progress.

For instance, if you are not independently wealthy, money makes a good metric. As I mention in The Clean Break : 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.

3) There's a lot of hubbub out there about identifying your weaknesses and trying to "not do anything stupid." Hogwash. Quitting Harvard in your junior year to start an industry is stupid, but it worked out ok for Bill Gates.

4) Odds are you're not going to make as much money as Bill Gates. That's ok, you can live very well on substantially less.

5) I subscribe heartily to the philosophy. It basically states "you're good at what you're good at - go do that." Weaknesses will remain weaknesses but they do not have to stop your momentum with your strengths.

For instance, you are passionate about great coding. I built my first (and now my second) business on passion. I kid you not. The fact that I was good at what I did helped, but the passion sold.

It's like the scrawny kid who gives 110% every football practice. The coach is going to call that kid's number before long - and that kid will likely impact the game. Be that kid.

6) Speaking of sales, it will be good at some point to figure out how you're going to get new work. The inherent weakness in any consulting model (and this is a weakness for me too) is: you (and I) do not scale well. If all our business is generated by us, then performed by us, then invoiced and accounted for and business-developed by us - we are going to be very busy doing a lot of stuff which a) we may be no good at; and b) we may not like in the least.

This is business development. I've always managed this with channels. You probably know this already, but a channel is a company or individual that will tell others about you and your work - either for free or for some direct or indirect gain (money).

That aside, you will be amazed at the work that finds you once you go into business for yourself.

7) How much do you know about contracts? I didn't know beans about them until I got handed my [sic]hat once. It only cost me $6,500 to learn about contracts - which, I hear, is pretty cheap.

There's lots of approaches to contracts. Verbal contracts usually prove at some point to be as valid as the paper on which they're printed. I like work orders that specify deliverables and percentages expected for bid-by-job work. I like billing cycles (1st of each month, 15th and 30th, or my personal favorite: every Friday) for bid-by-time work. No matter what, you want to have terms (net 30, net 10, etc.) in writing up front.

The customer is not always right. In our field, a lot of customers are completely ignorant of what they're asking you to do for them. You need to keep this in mind when negotiating the contract. And protect yourself.

There is such a thing as bad business. Bad business will hurt you way more than no business. Bad business ends up causing you to work for free. And there are a substantial number of business people out there who believe they're doing you a service by teaching you this valuable lesson while consuming your single, non-scaling resource: you. They're on par with people who want to teach you how to play poker or pool... just bring money. ;)

Pop quiz: The nicest, most sincere people with whom you are negotiating are:
a) Truly the salt of the earth, genuine, will-do-anything-to-help-everyone-succeed people.
b) Sick bastards who are playing a game with your life and future by which they gain points the more you suffer.
c) You have no idea - until payday.

The answer, sadly, is c.

8) How much do you know about managing cashflow? You can actually lose money - for years in fact - and remain in business if you can maintain a positive cashflow. In my opinion, this is the key to the business side of things.

:{> Andy

Technorati Tags: Developer Community Career Advice Independent consultant

posted Sunday, January 14, 2007 9:17 AM by admin with 0 Comments

Career Advice: Team Building Activities

I had this experience once with Team Building Activities. I go into work one Monday and there's an email in the Inbox about this subject, and I open it and read that it's the Saturday after next.

Saturday?

Ummm Yeah.

Pop Quiz: You're president of a company with a dozen or so employees and you find certain parts of the movie Office Space highly offensive and usually talk to the television when the movie is playing saying things like "That's such an exaggeration!" The real problem is:
a) The market
b) Supply-side economics
c) Your employees
d) Mike Judge
e) You

The email - gosh I wish I'd saved it - said something about how important the event was, and I believe it stated it was voluntary but then implied you weren't a good employee if you didn't attend. All in all, very reminiscent of the "flair scene" in Office Space.


Here's some thoughts:

If you own a small company, you probably work Saturdays anyway. This is a fun outing for you and a chance to do things away from the office with people who work for you - a way to get to know them better and for them to get to know you better.

To the employees, this is a day when they usually would not be working, but now have to. They're just working in a different location - one which you thought would be a lot of fun. It's not as fun for them. The work- / game-face needs to be on - on a day when usually it's off. They're giving up a day of doing-nothing-for-the-company to do something for the company. You are stealing a day from them.

It's completely different if you're hiking on a mountain trail or walking on a beach and bump into one of your employees. They're doing what they planned to do that day - all by themselves and without your help - on their day off.

So, if it's that important, schedule it for a Monday or Tuesday or Wednesday or Thursday or Friday - one of those other days when important work-related stuff gets done.

:{> Andy

Technorati Tags: Developer Community Career Advice Team building activities

posted Saturday, January 13, 2007 8:59 AM by admin with 1 Comments

Stuck at Logan...

Ok. So I'm hanging out at Logan after a great week in Boston (working with some really cool people here on a neat project).

It's a little past 6:00 PM and the flight was supposed to board at 6:30 and leave at 7:00 - but it ain't happening. The latest update is predicting a 45-minute delay... we'll see...

So I'm reduced to blogging about the stuff around me (and Versioning my kids). I could work some, but I've worked a lot this week already.

I'm at gate 9B - in case the flight is delayed even more and you want to drop by and say "Hi!" Because my memory is going, I got confused and told the cab driver to take me the United terminal instead of the US Airways terminal. It was only a half-mile walk. Or so. With luggage. I keep telling myself I needed the exercise, but I digress:

Earlier I watched a guy driving the plane-pusher cart and wondered how much that job pays. That looks like fun. If it was me, I think I would weave and swerve all over the place. I mean, what are the pilots going to do? Get out of the plane and kick my butt? I'd like to see them try!

I think flight delays make me scrappy.

Anyway, I could just see the pilot getting all ticked and flipping me off or shaking his fist at me through the cockpit window. I think I'd just go have me a coffee break about then - and come back afterwards and unhook the plane from my pusher-cart. Oh yeah.

I don't think I'd last long as a plane-pusher... maybe that has something to do with me being canned a few years ago.

:{> Andy

Technorati Tags: stuck at the airport blogging being fired plane-pusher

SSIS Raw File Reader Review

As promised in an earlier post, I've tested the SSIS Raw File Reader released by Simon Sabin this past week.

Here's how I tested it:

First, I start a new SSIS project. I rename the package RawFileGen.dtsx. I add a Data Flow Task to the Control Flow as shown:

I double-click the Data Flow Task to edit it and add an OLE DB Source. I double-click the OLE DB source to edit it and aim it at the AdventureWorks.HumanResources.Employee as shown:

I add a Raw File Destination and configure it to dump the results to a file as shown:

I check the Input Columns to see if all are selected - I want a good test:

I click OK and press the F5 key to execute the package in Debug Mode:

I open the file generated in NotePad - not very legible:

I fire up the SSIS Raw File Reader:

I have to click File|Open and navigate to the file to view the columns:

After that, clicking Tools|Read File loads the data:

And this is a lot easier to read than the Notepad version!

I like it. Good work, Simon!

:{> Andy

Technorati Tags: SSIS Raw File Raw File Reader

Versioning...

I need new glasses - bifocals, I'm afraid. I'm thinking of getting a pair like William Shatner wore in the later Star Trek movies. Some good, old guy, Ben-Franklin specs.

I think my memory is going too. I sometimes have to list my children in order to get to the one I'm thinking about. That's a lot of trouble so I've decided to version my kids.

Manda will be 1.1 since she's my first child from my first marriage. Penny will be 1.2. Keeping with that, Stevie Ray is 2.1 and Emma is 2.2.

I was discussing this with Frank La Vigne and he suggested that version 2.3 "is scheduled for release later this year." Definitely still in development.

Maybe I should get a pipe too.

:{> Andy

Technorati Tags: aging spectacles Star Trek The Shat Frank La Vigne versioning children smoking pipe

posted Friday, January 12, 2007 8:37 PM by admin with 3 Comments

Career Advice: Interview the Company

I had a refreshing conversation with a Human Resources person recently.

I was asked by a friend to provide a reference for employment, and was honored to do so. During the course of describing my relationship with the person in reference, I mentioned that I had been fired from the company where we met and worked together.

The engineer in me mentions these types of things, with no value judgment assigned, as facts. I say it with no more passion or conviction than I state "The sky is blue."

But I learned something during this exchange. The HR person was impressed with my openness about the matter and told me my attitude about it indicated self-confidence. Indicating self-confidence is a good thing if you're talking to a human resources person, so I thought I'd pass this tidbit along: If you've been canned, bring it up!

It might help.


The details of my experience are not as important, but these sorts of things happen so I'll share some.

It was a small company that had been in business for a couple years when I joined them. My motivation for going to work there was to be closer to my girlfirend (to whom I am now happily married) which, I'm certain, affected my judgment while interviewing the company.

"Interviewing the company?" you ask. Yep - they're interviewing you, you should be interviewing them too. That "good fit" stuff (more on this later) is a two-way street.

Looking back, there were clues during the interviewing process that I ignored. When I took notice of potential warnings, I naively thought "I can manage this." Truth was, I could not manage it.

From my first week on the job, bad things happened. They continued to happen and grow in magnitude. Although I made a couple friends there - people with whom I will remain in contact for the rest of my life, most likely - I also lost one good friend as a result of my involvement with this company. And it happened within the first 30 days of arriving on the job.

Still, I persisted. Still thinking "I can manage this."

I put that episode behind me and resolved to "do better next time." I did do better, but things did not improve for me. In fact, they grew much worse.

At my 90-day review I was denied a raise discussed at the time of my hire. There were three measurements I was to achieve in order to earn the raise:

  • Provide technical leadership
  • Develop software
  • Generate a certain volume of sales

I hit two of the three. The owner of the company acknowledged this during the review. I missed the sales target.

Pop quiz: The resulting raise was:
a) 66.6666% of the agreed-upon amount + the percentage of the sales quota I did generate.
b) 66.6666% of the agreed-upon amount
c) 50% of the agreed-upon amount
d) 25% of the agreed-upon amount
e) 0% of the agreed-upon amount

Sadly, the answer was e.

Now I'm not one to make excuses. I believe if you agree to something - especially something involving money - you stick to it no matter what. That said, I started with this company in August 2001. Anyone recall any market-impacting events around a month after that?

It had already become clear to me, by the time of the 90-day review, that my career with this company was in trouble.

Why? In all fairness it was not a "good fit." That's what the owner told the Virginia Employment Comission when he protested my application for unemployment after firing me, and I have to agree.

Things I did - heck, things that are just my nature - irked the company president. I realized much later he really enjoyed having an impact on people's lives, and he measured that impact by their reactions to things he did.

Ask anyone who knows me, I don't react. It's not in my nature. I'm almost always content and happy. When life hands out a lemon, I wait for life to hand out a crab-stuffed flounder filet to squeeze it onto.

It's how I roll.

I also don't derive satisfaction from the misfortune of others, no matter how much effort they expend to bring said misfortune upon themselves. There were about 12 employees working there the day I got canned, including the company president and a vice-president whom I believe is part-owner. Of those, only the president and vice-president remain with the company, and last time anyone mentioned it to me (I don't ask about such things), the company had 2 or 3 employees.

Part of this is due to the general economy of the area.

But most of it probably isn't.

:{> Andy

Technorati Tags: Developer Community Interviewing Technical Personal You're Fired!

posted Friday, January 12, 2007 8:20 AM by admin with 3 Comments

Randy Franklin, SQL Server Notification Services, Tonight!

Randy Franklin presents an introduction to SQL Server Notification Services tonight at the January Meeting of the Richmond SQL Server Users Group!

The meeting will be held at the Markel Facility, 4600 Cox Road, Glen Allen. It starts at 6:30 PM and the public is invited.

Randy has been digging into SSNS for a while now and shares tips and tricks about this service for SQL Server 2005. Come on out this evening - bring a friend!

The pizza is free!

This month's sponsor is
Richmond Code Camp 3!
Richmond Code Camp 3!

Richmond Code Camp 3 will be held 28 April 2007 at ECPI-Innsbrook.

:{> Andy

Technorati Tags: Developer Community SQL Server Users Group Notification Services Richmond Code Camp

posted Thursday, January 11, 2007 7:56 AM by admin with 0 Comments

Vista Launch Events!

Microsoft is giving away Office Professional 2007 and Office Groove 2007 when you attend a !

How cool is that?

An event is coming to and another to .

Nothing in Richmond, despite my repeated begging. :{<

There are some cool events headed our way though, including Richmond Code Camp 3!

:{> Andy

Technorati Tags: Vista Launch MSDN Richmond Code Camp

posted Thursday, January 11, 2007 6:05 AM by admin with 0 Comments

Read Variable Value From a Flat File In SSIS

I recently saw a post on MSDN forums about loading a date value from a flat file into an SSIS variable. I thought I'd document one way to do it - I don't claim this is the best way, but it is one way that works.




First, I created a file named C:\FileDate.txt Download the File! and put the date 1/12/2007 in it.

Next, I created a new SSIS package and renamed it VarFromFile.dtsx Download the File!. I dragged a Data Flow task onto the Control Flow.

Double-click the Data Flow task to edit it. Drag a Flat File Source onto the Data Flow:

Double-click the Flat File Source to edit it. Click the New button to create a new Flat File Connection Manager:

I gave the Flat File Connection Manager the name FileDate, added a Description, and set the File name to C:\FileDate.txt:

Next, click the Columns item on the left to view the Row and Column delimiters and contents of the file:

Click OK to close the Connection Manager editor. The FileDate Flat File Connection Manager we just created is visible in the Flat File Connection Manager combobox:

Click OK to close the Flat File Source editor. Click the Control Flow tab. Right-click in the white space of the Control Flow tab and click Variables from the menu:

Create a new variable by clicking the New Variable icon (upper left). Name it vdtFileDate and configure the properties as shown:


Note: You cannot change the scope of the variable in the Variables window. Scope is controlled by the object that had focus when you created the variable - in this case, it was the Package.

Next, return to the Data Flow by either double-clicking the Data Flow Task or clicking the Data Flow tab. Drag a Script Component onto the Data Flow. You will be prompted to select the function of this script component (Source, Destination, or Tranformation). Choose Transformation:

Connect the data path (green arrow) from the Flat File Source to the Script Component:

Double-click the Script Component to open the editor. On the Input Columns page, select Column 0:

On the Script page, enter vdtFileDate into the ReadWriteVariables property:

Click the Design Script button to open Microsoft Visual Studio for Applications and perform the following edits:

  • Beneath the Inherits UserComponent line add Dim myDate As Date
  • In the Input0_ProcessInputRow subroutine add
    With Row
    myDate = CDate(.Column0.ToString)
    End With
  • After the End Sub for the Input_ProcessInputRow subroutine, add a new subroutine:
    Public Overrides Sub PostExecute()
    Me.Variables.vdtFileDate = myDate
    MsgBox(Me.Variables.vdtFileDate.ToString)
    End Sub


IMPORTANT: Do not leave the MsgBox command in deployed code. It will halt execution at this point. The MsgBox is here only to display the variable value has, in fact, been read from the file!

Execute by pressing the F5 key or clicking the green "Play" arrow on the SSIS IDE toolbar. You should see the results in a message box:

I'm certain there are better ways to get a variable value from a flat file. Please comment if you know one!

:{> Andy

Technorati Tags: SSIS Variable File

Simple "Changed Rows" SSIS Conditional Split Expression Generator

When building a dimension load data flow for SSIS ETL, I want to detect changed rows using a Conditional Split Transformation.

To demonstrate, I built a generic package:

The Lookup outer joins to the destination table and returns the surrogate key. If this returns a NULL, the record is new. But what if the row is there and there's no good way to tell it's been modified? You have to compare each and every column in the source and destination rows.

I find it painful to type all that out, so I have created this script which works well if:

  • The column names in the source match the column names in the destination.
  • A consistent aliasing convention is used for the Destination columns (here, I have aliased all my destination columns by adding the prefix "DW_" to each column name).

I just pop it into SSMS, execute it, copy the results to the clipboard...

... and then paste them into the Changed Rows condition of my Conditional Split transformation:

Voila! With some modification, it could do even more.

Here's the script:


declare @SourceServer varchar(255)
declare @DestinationServer varchar(255)
declare @SourceDB varchar(255)
declare @DestinationDB varchar(255)
declare @SourceSchema varchar(255)
declare @DestinationSchema varchar(255)
declare @SourceTable varchar(255)
declare @DestinationTable varchar(255)
declare @Sql varchar(8000)
declare @Output varchar(8000)
declare @DestinationPrefix varchar(25)

set @SourceServer=''
set @DestinationServer=''
set @SourceDB = 'Stage'
set @DestinationDB = 'DataWarehouse'
set @SourceSchema = 'Stg'
set @DestinationSchema = 'DW'
set @SourceTable = 'Table1'
set @DestinationTable = 'Dimension1'
set @DestinationPrefix = 'DW_'

set @Sql = 'USE tempdb;
if exists(select *
from sys.objects
where name
like ''##tmpSourceFields%'')
drop table ##tmpSourceFields;

use ' + @SourceDB +
';select c.name
into ##tmpSourceFields
from sys.columns c
inner join sys.tables t on t.object_id
= c.object_id
inner join sys.schemas s on s.schema_id
= t.schema_id
where t.name = ''' + @SourceTable +
''' and s.name = ''' + @SourceSchema
+ ''';'

--print @Sql
Exec(@Sql);
set @Sql = '';

set @Sql = 'USE tempdb;
if exists(select *
from sys.objects
where name
like ''##tmpDestinationFields%'')
drop table ##tmpDestinationFields;
use ' + @DestinationDB +
';select c.name
into ##tmpDestinationFields
from sys.columns c
inner join sys.tables t on t.object_id
= c.object_id
inner join sys.schemas s on s.schema_id
= t.schema_id
where t.name = ''' + @DestinationTable
+
''' and s.name = ''' +
@DestinationSchema + ''';'

--print @Sql
Exec(@Sql);

set @Output = ''
select @Output = @Output +
'(' + s.name + '!=' + @DestinationPrefix + d.name + ') || '
from ##tmpSourceFields s
inner join ##tmpDestinationFields d on
d.name = s.name;

set @Output = @Output + 'False';

select @Output;

:{> Andy

Technorati Tags: SSIS Expression Changed Rows T-SQL script

posted Tuesday, January 09, 2007 3:17 PM by admin with 0 Comments

Happy Birthday to Mom!

I want to wish my Mom a Happy Birthday!

My Mom is one of the people responsible for my success in life. She raised four sons - nearly by herself.

She always found (and still finds) something positive in each of her sons. She had (and still has) a way of recognizing our different abilities without making us feel like we're competing against each other - but rather complementing each other as part of a family.

So here's to you Mom on your day! Love ya!

:{> Andy

Technorati Tags: Happy Birthday Mom

posted Tuesday, January 09, 2007 12:00 AM by admin with 0 Comments

Five Things You Don't Know About Me

Ok, so I asked to be tagged and Rob is too classy a guy to out me!

So, here we go:

  1. When I was seven years old, I fell out of a tree into some brush and tore the top of my right ear almost completely off. You can still see where nine stitches tacked it back on.
  2. I played alto sax in the Nottoway Senior High School marching and jazz bands.
  3. At 19, I was a licensed Class A truck driver and drove the big rigs.
  4. I spent six years in the Virginia Army National Guard. My MOS (Military Occupational Specialty) was TOW and Dragon Missile Guidance Systems repair technician.
  5. In 1994, I lived and worked three months in the Yunnan Province, PRC.

I now tag Frank La Vigne, MVP, Darrell Norton, MVP, Greg Postlewait, Jason Gerard, and Jonathan Cogley!

:{> Andy

Technorati Tags: Five things you don't know about me About Andy

posted Monday, January 08, 2007 8:49 PM by admin with 6 Comments

Ordering OLEDB Source Adapter Output

There are a couple approaches to ordering the rows delivered by an SSIS OLEDB source adapter.

First, open an SSIS package and add a Data Flow Task to the Control Flow. Open the Data Flow to proceed.

Approach 1 - Inline sorting using the Sort transformation

Configure the OLEDB source adapter to return all rows from a table:

Add a Sort transformation to the data flow and connect the OleDB source adapter to it as shown:

Double-click the Sort transformation to edit it. Select the fields you wish to sort on, in order, and specify ascending or descending sort order:

The problem with this approach is it can slow things down quite a bit if there's lots of data in the table you're sorting.

Approach 2 - Load the data sorted from the source

Configure the OLEDB source to use a SQL Command. Include the desired sort order in the Order By clause as shown:

Click OK to close the OLEDB source adapter editor.

Right-click the OLE DB source adapter and click "Show Advanced Editor...":

Navigate to the Input and Output Properties tab. Click on "OLE DB Source Output" and set the IsSorted property to True as shown:

Next, expand the "OLE DB Source Output" node and the "Output Columns" folder beneath, and click on the desired sort columns.

Set the SortKeyPosition property to indicate both direction and sort order. Direction - ascending or descending - is indicated by the sign of the number (negative = descending, positive = ascending). Sort order is indicated by the value of the number.

Therefore, a SortKeyPosition of -1 indicates [ExpYear] is the first field listed in the Order By clause, and is sorted descending:

Similarly, a SortKeyPosition of 2 indicates [ExpMonth] is the second field listed in the Order By clause, and is sorted ascending:

This method is preferable over the first for performance and scalability.

:{> Andy

Technorati Tags: SSIS Order By Ole DB Sort

posted Sunday, January 07, 2007 12:26 AM by admin with 0 Comments

SSIS Raw File Reader

Simon Sabin has released an SSIS Raw File reader. What a great idea!

I haven't had an opportunity to tinker with this yet, but I plan to test it later this week.

:{> Andy

Technorati Tags: SSIS Raw File Reader Simon Sabin

posted Sunday, January 07, 2007 12:20 AM by admin with 1 Comments

Manny Siddiqui's Blog is online!

My friend Manny Siddiqui is blogging!

Manny is one of the many people I always enjoy seeing at Richmond .Net Users Group meetings. In fact, he's presenting on WCF and ASP.Net in February.

Now, if we can talk him into presenting at the next Richmond Code Camp... ;)

:{> Andy

Technorati Tags: Developer Community Richmond .Net Users Group Manny Siddiqui WCF ASP.Net

posted Saturday, January 06, 2007 9:13 PM by admin with 0 Comments

Richmond Code Camp 3!

Richmond Code Camp 3 is on!

The Richmond Code Camp Steering Committee is excited to announce another MSDN Code Camp event in central Virginia! The last two events have been fantastic - and this one is poised to be the best so far!

:{D> Andy

Technorati Tags: Code Camp MSDN Richmond VA Developer Community Richmond .Net Users Group Richmond SQL Server Users Group

posted Friday, January 05, 2007 2:29 PM by admin with 0 Comments

Joe Bennett's presentation to RDN

Joe Bennett, software architect and president of the Triangle .Net Users Group (TriNUG) in Raleigh, NC did a great job presenting to a packed house at last night's Richmond .Net Users Group meeting!

Slides and demo project will be available soon at the new RichmondDotNet.org website.

:{> Andy

Technorati Tags: Richmond VA Developer Community Richmond .Net Users Group Joe Bennett Triangle .Net Users Group TriNUG

posted Friday, January 05, 2007 1:36 PM by admin with 0 Comments

New RichmondDotNet domain!

The Richmond User Groups Leadership Team is proud to announce RichmondDotNet.org!

The old RichmondDotNet.com website remains active, but only with a link to the new site.

We're still getting our sea legs on this new site, but a site re-design is underway!

:{> Andy

Technorati Tags: Richmond VA Developer Community Richmond .Net Users Group

posted Friday, January 05, 2007 12:41 PM by admin with 0 Comments

Windows Defender Error

When I fired up the BOOM (Big Old Office Machine) the past few mornings, I noticed a message box:

Could not start the Windows Defender Service service on Local Computer.

I took a look at the Services utility and noticed the Windows Defender Service service was disabled! No wonder it wouldn't start:

A quick search revealed some interesting info and a pointer to the help file:

Note Item 2...

Installing a new version did the trick.

:{> Andy

Technorati Tags: Windows Defender service error could not start

posted Wednesday, January 03, 2007 9:12 PM by admin with 0 Comments

Integrity

Steve Jones makes some good points about ethics in an Ethics editorial at SQLServerCentral.com.

My oldest daughter Manda is working on a masters in theology (and another masters in counseling, I think...). She said something that really stuck during a pre-Christmas lunch: "Integrity is now the key to business leadership and not just some nice-to-have trait."

One thing about business ethics is it doesn't lend itself to "balancing" like other things in our field. For example, Jeffrey Skilling could not argue that he engaged in proper accounting most of the time at Enron and should therefore not be punished for the few times he strayed.

There's also the myth that disclosure will absolve all that's wrong. Disclosure is nice, mind you, but calling the person you just screwed in a business deal and telling them "you've been screwed!" doesn't really make it right. "Un-screwing" is the solution - and good luck with that.

In an age where integrity is key it's not the 1,000 ethical things you or I do that will actually count, it's the absence of 1 unethical thing.

Thinking in this manner may seem difficult but it's more a matter of habit than anything else. I was fortunate to have a grandmother that drilled this fact into my very being. She said (several times) "Doing the right thing ain't always easy, but it's always the right thing."

:{> Andy

Technorati Tags: Ethics business SQLServerCentral

posted Monday, January 01, 2007 1:10 PM by admin with 0 Comments