Recently I worked on a project where every data type was user defined. In case you weren’t aware, SQL Server supports the use of User Defined Data Types. These are custom data types which are based on the standard types. For example, if your data always uses a two character string for states, you may want to create a data type called UDT_State.
However, this project had 40 UDTs and their names were fairly ambiguous. So, I created a “cheat sheet” script to refer to when working in that environment.
First, let’s create some user defined data types.
use tempdb
go
CREATE TYPE [dbo].[UDT_State]FROMchar(2)NOTNULL;
GO
CREATE TYPE [dbo].[UDT_User_Id]FROMIntNOTNULL;
GO
CREATE TYPE [dbo].[UDT_Cost]FROMdecimal(10, 3)NULL;
GO
The following script is compatible with SQL 2005 through 2008 R2. I believe it also works on SQL 2000 but don’t have access to a server to test it.
SELECT ST.[name]AS UDTName,
CASEWHEN ST1.[name]LIKE'%char'THEN
ST1.[name]+'('+cast(ST.max_lengthASVARCHAR(5))+')'WHEN ST1.[name]='numeric'OR ST1.[name]='decimal'THEN
ST1.[name]+'('+cast(ST.[precision]ASVARCHAR(5))+','+Cast(ST.scaleASVARCHAR(5))+')'ELSE
ST1.[name]ENDAS BaseType,
CASE ST.is_nullableWHEN1THEN'NULL'ELSE'NOT NULL'ENDAS Nullable
FROM sys.types ST
JOIN
sys.types ST1
ON ST1.user_type_id= ST.system_type_idWHERE ST.is_user_defined=1
Special thanks to Jeff Rush (Blog/Twitter) for the idea to write this script.
While troubleshooting an existing 2008 R2 package the other day I received the following error.
Error HRESULT E_FAIL has been returned from a call to a COM component.
The error occurred when I was using breakpoints and watch windows to diagnose problems in the package. The breakpoint behavior was off because even when there wasn’t a breakpoint on this particular task, it halted anyway. When I clicked on the Break OnPreExecute event, the error popped up. I took the following steps to attempt to fix the problem because the package was too involved to start over.
Restarted SQL Server Business Intelligence Development Studio (BIDS) and the computer.
Tried editing the package on a different machine.
Updated SQL Server to the latest cumulative update.
Attempted a repair install.
None of that worked. Surprisingly, what did work was simply copying and pasting the task into the same package. The task copy did not have the same problem as the original. I deleted the original and everything ran as expected.
Hope this post helps someone who runs into a similar problem.
When you pass GetDate() as a parameter to a stored procedure, the following error is returned:
EXEC dbo.ProcDate GetDate()
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ‘)’
When I ran into this problem, I found this helpful article which suggests that I should assign the value of GetDate() to variable and then pass the variable as the parameter. While that does work, I wasn’t in a position where I could use a variable so I needed to find another solution.
The Solution
My solution was fairly simple. Define a default value for the parameter as GetDate() like so.
IFEXISTS(SELECT name
FROM sysobjects
WHERE name = N'ProcDate'AND type ='P')DROPPROCEDURE ProcDate
GO
CREATEPROCEDURE ProcDate
@DateDATETIME=NULLASSET @Date=coalesce(@Date, Getdate())SELECT @Date
GO
Now the stored procedure works correctly. If a date is passed as a parameter, the stored procedure uses it, otherwise it defaults to GetDate().
Incidentally, I realize that this stored procedure isn’t “production ready” because it will fail if someone passes “Bleh” in as the parameter. I deliberately left out the error checking to give avoid clutter.
As I’ve mentioned before, the Made2Manage Favorites Bar is a buggy mess. I regularly get questions from my clients and readers of this blog asking why M2M screens return incorrect data or otherwise misbehave. One of my first suggestions to them is to disable the favorites bar. However, disabling the bar isn’t intuitive so I thought I would quickly post how to do it.
First, it is not enough to simply un-check the toolbar. If you un-check the toolbar, but leave the M2M screens attached in it, you haven’t really disabled it.
So, select the toolbar and then left click and drag the items off it one at a time. Where you drag and release them doesn’t matter. It feels awkward, but you know when you’ve “grabbed” the item correctly when it forms an unusual black cross. Unfortunately, I couldn’t catch that in a screenshot.
After you have cleared all of the individual items from the toolbar, then you can disable it by selecting Windows, Toolbars, and un-checking the Favorites Bar.
Incidentally, there isn’t a way to keep users from loading the toolbar up with screens again afterward, and I find that they often do. These incorrect record number issues tend to be cyclical because the same users have the problem repeatedly after they enable the toolbar again.
Hey, at least it’s job security for M2M Adminstrators.
Like many of you, I have been finalizing my PASS Summit plans, getting ready for the trip to Seattle.
For the past week, my girlfriend has been asking weird questions like, “Have you packed your sun screen?” This makes no sense because there’s no way I’ll get a sunburn in Seattle in October. When I ask her about it she just giggles and moves on.
She’s also reminded me to bring other things such as a bathing suit, hot dogs, and marshmallows. When she mentioned the marshmallows, I finally got it. She’s teasing me about PASS as if I’m going to summer camp. And if you think about it, summer camp is a pretty apt metaphor.
As I type this I am really excited about the trip. I’m looking forward to seeing all of my friends, many of whom I haven’t seen since last year, and doing all sorts of fun “activities” with them. We may not be going hiking, fishing, or swimming, but we will be networking, singing at SQL Karaoke, and attending the vendor parties.
So, here’s to all of my PASS Camp buddies. I can’t wait to see you again this year.
Oh and at camp this year, I’ll also be attending the PUSS Party. God knows what’ll happen. I just hope nobody brings a flute.
“Why would you do that for free?” she asked. I was kind of surprised and paused for a minute because it had been some time since I had thought about it.
To set the stage, I was visiting a relatively new client and since they have casual Fridays, I wore my speaker shirt from SQL Saturday Chicago which is personalized with my name. The client asked about it and I told her that I often volunteer and present at SQL Saturdays and User Group Meetings. The conversation went like this:
Her: How much does that pay?
Me: Umm… nothing. It’s volunteer.
Her: Well, they do reimburse you for travel expenses, right?
Me: No, that’s my responsibility.
Her: I don’t get it. Why would you do that for free? Why work for nothing?
….. Pause
Me: It’s not work because I love doing it. I enjoy teaching and presenting, and well… just hanging out with these people.
….. Skeptical look from the client.
Her: It’s a career thing, right? There are people who will advance your career there?
Me: Umm.. there are some career aspects about it, but mostly I went to that event, and really all of these events, because I like the people. Don’t you travel to spend time with people you like?
Her: Well yeah, but not other [Business Type Removed] people. It’s not a social thing.
Me: Well, I guess it’s a PASS thing, a geek thing.
Her: I don’t get it.
Me: I’m going to several events in the next month and maybe your DBA’s would like to attend Austin’s SQL Saturday…….
Terrible Photoshop Skills, I Know
It’s a PASS thing, you wouldn’t understand.
I’ve been a member of this community for a few years and it’s a big part of my life. If you haven’t gotten involved and embraced the SQL Community yet, then what are you waiting for?
Why attend these events? What do you get?
Free or inexpensive training.
Access to some of the best minds in SQL Server.
Exposure to new SQL Server ideas and features.
Inspiration to increase your skill set and improve your career.
It goes without saying that those benefits are important. However, they’re not the most important aspect of these PASS Events. For example, the knowledge is great, but I can learn from books, recordings, blogs, etc. Thanks to the community, tons of free information can be found on the Web.
So, what’s the most important aspect of these events? For me, it’s all about relationships. Building bonds with these people is everything and all of the other stuff is a by-product of that. The events are fun, especially if you volunteer and speak at them. I love this community. That’s the intangible aspect that I couldn’t relate well to the new client.
Upcoming Events
This Saturday (10/1), the fine folks at CACTUSS will be hosting SQL Saturday #97. Some of the best minds in SQL Server will be there to share their knowledge and passion for SQL Server. Oh, and I’ll be there as well to present the following two topics:
Data Warehouse Mistakes You Can’t Afford to Make
Many data professionals understand the basics of Data Warehouse design, including Dimension and Fact Tables, slowly changing Dimensions, and the use of meaningless surrogate keys. However, it isn’t until you’ve created a dimensional model and put it into production, that you realize just how much of an impact seemingly trivial mistakes can make. They can hobble performance, allow inaccuracy, and perhaps worst of all, inhibit adoption and usage of the new system.
Learn how to avoid many common mistakes, from someone who’s made them and then found ways to correct them.
SSIS Done Right With Package Configurations Everyone starts creating SSIS Packages the same way. We hard code connection strings, file locations, etc. Package Configurations are a powerful way to control your packages at run time. This allows you to seamlessly move packages between servers, dynamically assign data sources and destinations, cycle through data sources, and create reusable code.
In this presentation, I’ll demonstrate an easy to understand three step process which you can use with all of your packages to increase your productivity in SSIS.
PASS Summit 2011
The Pass Summit is happening the week of October 10th. The PASS Summit is a wonderful experience, that you just can’t get anywhere else.
This year I’ve been selected to give a five minute lightning talk. DBA Lessons Learned from The Godfather. In that presentation, I’ll share how themes from the Godfather novel and movies apply to our profession and the SQL Community.
I’m really looking forward to these events. I can’t wait to see some of my friends again and get re-energized about SQL Server, blogging, and the community.
Like many other technical bloggers, I receive requests for help on a regular basis. Since I’m constantly learning and evolving I approach others for help as well. A couple of years ago, I received an email from a new reader which began with:
Always two there are, no more, no less: a master and an apprentice.
The line is from Star Wars, of course. Being a huge geek, it’s easy to understand how his email got my attention right away. His approach was polite, respectful, and most importantly demonstrated that he had in fact read some of my blog. That got me thinking, what are some tips I could give my readers on how to ask for help? Of course, I couldn’t just produce a list. In my geekitude, I have prepared a list of movie scenes to explain my suggestions.
Show Respect
What have I ever done to make you treat me so disrespectfully? – Godfather
Be respectful in your request and if at all possible, offer your friendship before you need help. Attend user group meetings and get to know people. Volunteer. If it’s a forum, do your best to participate and help others in the forum. As in the movie, you’re more likely to get help when you need it if you already belong to a group.
Be Nice (Politeness)
Be Nice
If somebody gets in your face and calls you a &^*%*$!!!, I want you to be nice. Ask him to walk. Be nice. If he won’t walk, walk him. But be nice. If you can’t walk him, one of the others will help you, and you’ll both be nice. I want you to remember that it’s a job. It’s nothing personal.- Dalton in Road House
Don’t go overboard but a complimentary remark never hurts when asking for help. If you’ve seen them present, read their blog, or answer questions in forums, complement them on their abilities. Just make sure that your compliments are sincere. I can’t tell you how many “requests” I’ve gotten for help which sounded more like demands for help. People don’t tend to respond well to demands.
Communicate Clearly
Do you understand the words that are coming out of my mouth?!?!? – Detective Carter in Rush Hour
Take some time and compose your question so it can be easily read and understood. If I have to waste cycles trying to decode your question, or need additional information, chances are that I won’t bother. In my experience, most people are like this. Depending on your problem, explain the steps you have taken to remedy your issue and the result of those attempts. Take time to use a code prettify-er before posting it and if possible the code to generate a sample data set people can use to help you. Make it easy for people to assist you. Now that I’ve just told you how complete your questions should be, remember that at the same time you should….
Be Brief
Let me ‘splain… No, there is too much. Let me sum up. Buttercup is marry’ Humperdinck in a little less than half an hour. So all we have to do is get in, break up the wedding, steal the princess, make our escape… after I kill Count Rugen – Inigo Montoya in The Princess Bride
The longer your question, the less likely people are to read it. Therefore, it’s in your best interest to be as brief as possible while still providing the background information to solve your problem. Try to leave rants or opinion out of it and just state the facts.
Work for Your Own Answers
Wax On Wax Off
Before asking for help, do your due diligence. RTFM, Google it, and try to find the answer yourself. Nothing exasperates people more than being asked questions with simple answers that can be found in two minutes with a search engine. Make sure you indicate that you have already searched for the answer so others will take time to answer you. Sometimes the answer to a problem is as simple as knowing the right search terms.
Ask for Guidance, Not Solutions
It is like a finger pointing away to the moon. Don’t concentrate on the finger or you will miss all that heavenly glory. Bruce Lee
This goes along with RTFM. People are more likely to help you if you ask for general direction and not the complete solution to your problem. People do not want to do your homework, but they will direct you to information sources that will help you. A question framed like, “Can anyone recommend a resource where I can learn to…..” is likely to be answered.
Be Patient
We’re running out of time!!!! – Jack Bauer in 24
You often see this in forums. “Help!!!! My Server is down and I have no backups!!!!” Then five minutes later the person bumps their topic again because people haven’t responded fast enough. If you have a time sensitive emergency, then pay for immediate support. Don’t expect a forum to substitute for that kind of assistance. Your behavior won’t get your question answered any faster, and may in fact alienate people who would normally be willing to help you.
Don’t be Greedy
The point is ladies and gentlemen that greed, for lack of a better word, is good.- Gordon Gekko in Wall Street
Yes, I know that the movie quote says the opposite, but stay with me. Similar to my last point, if you continuously ask questions without reciprocating, you may find that the answers stop coming. People don’t want to feel used, so you should prioritize your issues/questions and use community resources sparingly.
Don’t Argue
Pai Mei
That, my dearest, depends entirely on you. Now, remember: no sarcasm, no backtalk. At least not for the first year or so. You’re gonna have to let him warm up to you. – Bill in Kill Bill, Volume 2 (speaking about Pai Mei, plucker of eyes.)
I’ve seen this more times than I can count and it’s often hilarious. Some newbie asks for help on a forum regarding how often he should be shrinking his database. Paul Randal (Blog/Twitter), who has forgotten more about SQL Server than most will ever learn, advises him that shrinking should be avoided. The newbie then proceeds to argue because he heard somewhere that database shrinking is akin to nirvana. Will Paul pluck your eye out like the infamous Pai Mei? Probably not, though I wouldn’t bet against him having those skills. However, if you argue with folks trying to help you, you’ll most likely get less assistance next time.
If Possible, Offer to Pay
Give Me Paw!!!
Listen! We’re not just doing this for the money! We’re doing this for a S*** LOAD of money! -Lone Starr in Spaceballs
I’m not suggesting that everyone is motivated to help others by money, however it doesn’t hurt. In fact, you’ll most often find that people will refuse money that is coming out of our personal pocket. However, it does indicate to them that you are serious about getting help and answers. Also, offering to buy someone lunch or a drink or whatever goes a long way. I’ve bought more than a few meals in my day as a way of thanking people who helped me.
Follow Up
“Just pay it forward.” – Thorsen in Pay It Forward
If you ask a question on a forum, and you find the answer yourself, make sure to go back and update the thread with the answer you found. This gesture doesn’t benefit you personally, but it will help others when they have a similar problem.
Also, if a answer or suggestion helped you, follow up with the person and let them know. This seems obvious, but you’d be surprised how often people neglect to do this. Let’s face it, it feels good to receive a thank you message, and you’re more likely to get help with your next question.
So, that’s my list. Do you folks have any other suggestions?
I haven’t been participating in many of these blog memes because I have been so busy lately. A lot of my time was occupied with job hunting and since I just finished a series of interviews with different companies, this meme is perfectly timed. My good friend Jen McCown (Blog/Twitter), the fairer half of the Midnight DBAs, tagged the SQL Community asking for our bad interview stories. I’m going to give two bad experiences and one surprisingly good experience.
First, I’ve been putting this announcement off, but I have changed employers. I am now a Senior Business Intelligence Consultant for a specialized consulting firm in Irving Texas. I want to thank the entire SQL Community for their help, training, and friendship on my way to this goal. To my Made2Manage friends, let me just say that this isn’t the end. I’ve started doing formal M2M consulting as part of this new position as well and still intend to release M-Data Analytics. More information on that will be coming soon, so stay tuned.
So, on with the stories.
Two Men Enter, One Man Leaves
I answered a post from a local company that was looking for a Business Intelligence Developer with Data Warehousing experience. I had a first interview (telephone) that went very well and was called back for a second. They were very accommodating in that they scheduled the interviews at the end of the day. It’s easier to duck out at the end of the day for a “Doctor’s appointment” rather than losing 4 hours in the middle of the day. If an employee has a string of “appointments,” the employer starts to wonder.
Anyway, I arrived a few minutes early but there was a guy in a business suit already getting out of the car next to mine. He looked nervous and obviously there for an interview as well. He signed in at the front desk right before me and was seeing the same person. I immediately got a weird feeling.
We rode upstairs and sat in a small reception area for 15 or 20 minutes (though we were both on time) which was uncomfortable. I broke the ice and joked with him about whether he or I had made a scheduling mistake or perhaps we were going to have a cage match to see who got the position. We then discussed our work experience and I convinced him that he should be going to our local SSUG meetings. By the way, the receptionist wasn’t very good at hiding the fact that she was listening to everything we said.
The BI Director finally came to get us and I asked him in a humorous way if there had been a scheduling mistake or if we were about to fight to the death like Mad Max Beyond Thunderdome. The director indicated that having both candidates interact was intentional and meant to raise stress levels. I said that it hadn’t raised my stress level, as I wasn’t there to compete with anyone else and had in fact recruited another PASS community member to boot.
Liar Liar
My second experience involves a recruiter. In the IT world, recruiters are a fact of life and Brent Ozar (Blog/Twitter) has written a couple of wonderful articles about dealing with them.
I spoke with a recruiter about a Data Warehouse position that they were trying to fill, but it would involve relocation. Relocation is problematic because of the costs involved, but even more so if the new location is in an economically depressed area. The job market in Dallas is very strong, particularly for business intelligence people, and I was reluctant to relocate somewhere with limited employment alternatives. I aced the technical telephone interview, largely thanks to all of the help and training I receive from other PASS members. However, when we discussed the terms of the job, I was informed that it would be a contract to hire and that relocation costs were not part of the package.
This was unacceptable to me as I wasn’t going to pay several thousands of dollars moving everything I own to an economic wasteland for a contracted hourly rate. There is no commitment on the employer’s part, and if things didn’t work out, I’d have to pay to move again to find a good position. Umm… no.
The recruiter called their client to discuss this and said that since the client was so impressed with my resume, they’d make an exception, hire me as an employee, and compensate me for relocation. I arranged an in person interview with the client, and paid the costs to travel to it. This wasn’t a big deal because I was traveling to this area anyway.
The interview went well and I found the hiring manager to be a straight forward and nice guy. He then offered me the job and asked when I could start. I was rather taken aback because we hadn’t discussed the actual salary, benefits, and relocation package. When I asked him about those, he was suprised and said, “What do you mean? This is a contract to hire job and there is no relocation package. We don’t have to provide that because the job market here is so poor.” Ugh.
I then explained to him exactly what the recruiter told me and offered to send him a copy of the e-mail to corroborate my “story.” He asked me to wait a moment and as I sat there, he called the recruiter. The conversation went like this.
“Ms. Smith (name withheld to protect the guilty), what did you tell Mr. Stein about my job terms?” Pause…. and then more forcefully, “No, what EXACTLY did you tell Mr. Stein?” Longer Pause… “Precisely what did you hope to gain by wasting his time and mine this way?” Pause…. “Well Ms. Smith, have Mr. Jones, the head of your company, call me later so I can explain to him why we will never use your company again.” Pause… “No, you simply cannot treat people this way as it reflects poorly on me and my company. Good Day.”
After he hung up we shook hands and he apologized for wasting my time. I told him that I enjoyed speaking with him anyway and eventually added him to my LinkedIn network. It may not have resulted in a job, but it was a hilarious experience anyway.
Diamond in the Rough
A few weeks ago, I went to a Qlikview demonstration at the request of my previous employer. To set the scene, I brought my laptop and such because I was going to a North Texas SQL Server User Group meeting immediately afterward, but was dressed very casually in shorts and a video gaming t-shirt for the same reason. I wasn’t trying to impress anyone and certainly didn’t expect to find a potential employer there.
Perfect Interview Attire
Anyway, I was surrounded by a group of business people, typically dressed in suits or other business dress and obviously stood out. I noticed a a guy with brown hair, goatee, and glasses who entered with a group of people and I did a double take. I thought he was Andy Leonard (Blog/Twitter). By chance they sat down near me so I struck up a conversation with the guy asking him what he did. He’s a Microsoft BI DBA, so I asked him if he had heard of Andy, and he gave me a weird look, because this whole situation was fairly unusual. I opened up my laptop and found a picture of Andy on the internet and the guy agreed that they were likely twins separated at birth. Anyway, the gentleman next to him, who was obviously the doppleganger’s Director, was listening to our conversation and asked me about my background. I told him what I did, how I knew Andy, my work with the North Texas SQL Server User Group, etc. I didn’t realize it, but I was being interviewed. The company was looking for a talented, outgoing, business intelligence person and the Director saw something in me that he liked.
The Director sent me an email asking me to lunch and I had my second interview at Chili’s while wearing business casual dress. In fact, I was wearing my Chicago SQL Saturday Presenter’s shirt. The interview had a technical portion, but mostly it was about my personality, the current team, and how to mesh the two together. We were just two guys talking about our mutual love of all things Data.
The rest is history. I now work for the new firm, and am getting the experience and being challenged every day.
So, what about you? Any of you have any bad or good interview stories?
Last week I saw a discussion on the LinkedIn Made2Manage Group about the Pros and Cons of using SSRS vs. VFP Reporting, and it amazes me that people are still arguing about it. So, I thought I’d reaffirm a stance that I’ve had for many years, which is VFP Reporting Must Die.
I’ve lamented Visual FoxPro’s limitations in the past and I don’t want bore you by hashing them all out again. Let’s just hit the highlights.
VFP reports are difficult to write and maintain.
VFP lacks chart and graph capability.
M2M report permissions management is tedious.
However, in addition to that list, there are many other reasons you should curtail your use of Visual FoxPro.
Technological Advantages
There many technical advantages to using SSRS (or even Crystal Reports for that matter) over Visual FoxPro. In addition to graphing capabilities, SSRS also facilitates more interaction and customization. For example, you can easily create reports with drill down, and you can drill across to different reports as well. Let’s say for example, that your Operations Manager is looking at a Sales Order report, and wants to drill across to Purchase Order information tied to that Sales Order. Think you can do that with VFP?
Develop Marketable Skills
As I mentioned last week, VFP is a dying language and will never make you a more desirable employee in the market. The same applies if M2M adopts some other niche product as their new reporting strategy. Nobody is going to pay six figures for experience in some product nobody uses. Spend time focusing on T-SQL Programming and SSRS instead.
Remember, that it’s in Consona’s best interest to use a proprietary niche product as that generates additional consulting revenue for them.
Ease of Use
SSRS is so much easier to use than Visual FoxPro. It’s easier to learn and the tools are more polished.
Re-usable Code
All of these methods essentially boil down to one common denominator, T-SQL. The base T-SQL code is more easily extracted from SSRS, Crystal, etc. than from Visual FoxPro. Also, once you have the T-SQL, you can quickly re-create reports in any of the other methods including Qlickview, Tableau, and Excel.
Also, don’t forget to use Database Views to make your code more manageable and easier to upgrade.
SSRS is Less Expensive Than VFP
SSRS is free with SQL Server 2005 and above. Did you actually license all of those copies of Visual FoxPro that you most likely have on your server and several workstations? If not, you’re breaking the law as those licenses cost approximately $500 a pop.
SSRS Consulting is Less Expensive
M2M charges $225 an hour for report customization work. One of the reasons they can is because there are relatively few people who are skilled in Visual FoxPro Reporting. SSRS Reporting skills are much more common and the competition drives prices down. Competent SSRS report writers can be hired for anywhere from $100 – $150 per hour on contract.
The Made2Manage people who recommend VFP Report Writing have three basic reasons that they cite for doing so.
Using Anything Else is Not Supported
Yes, this is true. Consona does not support the use of SSRS, Crystal, or even Excel for that matter. However, they don’t support their own VFP report customizations either. Consona’s contracts generally state that the contracted customization is only guaranteed to work on the version for which it was written. Be prepared, no matter which reporting method you use, to test and possibly edit your custom reports when migrating to a new version of M2M. If you’re using M2M Customized VFP reports, that may well mean more billing hours at $255 per.
M2M Version 7 is Imminent
Really? M2M has just begun to ask for Beta Testing volunteers. That process, especially when migrating to a new major release, will take a long time. And really, even if Version 7 was available today, how soon will most of you migrate anyway? I personally wouldn’t move until 7.01 (or after several service packs were issued) as new major releases are always problematic. Just ask the poor souls who were early adopters of version 6.0.
Yes, in a future version, M2M will get away from using Visual FoxPro. However, to the best of my knowledge they still haven’t announced what their new method will be. Even if it is some proprietary product, does it really matter anyway? They certainly aren’t going to migrate the entire product to Oracle or another database platform. Your SSRS reports will still work, and the time and effort invested in them is not wasted.
Opening Reports in Another Program is Inconvenient
You don’t need to open SSRS to use the reports. Those of you who regularly read this blog know that I’ve already shared how you can launch SSRS reports quickly and easily directly from M2M. I know that people have done the same thing with Crystal Reports as well.
One Exception….
The only time I edit a M2M VFP Report is when the requested customization is very small and easy to deliver. If a user wants another field from a table in the query, or some other small task, I’ll edit the current VFP report instead. I only do that when it’s more efficient than creating an entire report in SSRS or another medium.
What do you think? Anyone disagree with what I’ve said? What are you using as your reporting method and why?
When was the last time you booked a trip through a Travel Agent? Rented a Video from an actual person? Have you ever seen a Milkman Telephone Operator, or Elevator Operator except in classic movies?
Why do I ask? Well, technology is eliminating the first two jobs, and the last three are practically extinct. Which way is your skill set headed?
Several years ago, my career was going in that direction. I was a Made2Manage expert and used Visual FoxPro to create reports, customize the system, etc. I had skills, but they were very difficult to leverage in the job market. I saw the writing on the wall, made changes, and I urge you to do the same.
Focus on Skills With Staying Power
Invest your time developing skills in technologies that are not going to be obsolete or completely change every year. In my case, my skills were focused on obsolete technologies like Visual FoxPro Programming and Reporting, which was a dead end.
I initially switched my focus to T-SQL and Visual Basic programming, then eventually to Data Warehousing, and Microsoft Business Intelligence (SSIS, SSRS, SSAS). As others have mentioned, T-SQL is relatively static, and since Data Warehouse design concepts are technology agnostic they’re also unlikely to change radically. Microsoft has invested a fortune in it’s Business Intelligence products and has an immense customer base.
Keep in mind that these were my choices and aren’t necessarily for you. Just make sure that your choices have staying power as well.
Focus on Skills That Fascinate You
Gotta Love Your Job
While presenting at M2M’s premier conference last year, an audience member asked me how I felt about being a M2M Administrator. I answered with a joke,
It’s a lot like working at a sewage treatment plant. You’ll always have a job that pays relatively well, but you always go home smelling like crap.
Like most jokes, it’s funny because there’s an element of truth. It’s not enough to focus on a specific skill because it has staying power, you need to figure out what you love to do. Practicing a skill you find fascinating increases your learning rate and leads to a more enjoyable life as well.
Narrow Your Focus
In a past life, I taught high school biology and one of the concepts was Specialization vs. Generalization. In terms of Biology, organisms that specialize are more efficient (like humans) whereas organisms which are more generalized (like Bacteria) have greater survivability in times of calamity. The same is true for IT Skills. You can’t be excellent at everything, there is simply too much to know. Andy Leonard (Blog/Twitter) is probably not an expert in Disaster Recovery and Performance Tuning and Paul Randal (Blog/Twitter) can’t create world class SSIS packages.
However, a narrow focus fosters greater skill and that results in greater efficiency. This generally results in a higher rate of pay as well. Conversely, a generalist with average skills in several areas might seem to have a higher survivability in times of trouble. The generalist can work anywhere, whereas your average company cannot hire Brent Ozar (Blog/Twitter) to be their IT guy.
While this may have been an issue at one time, the Internet has largely negated it. The top people in these fields will always have work and in my opinion, they will always be worth more than a good generalist. Now I realize that every job requires a certain amount of undesirable tasks. Perhaps you dislike checking backups, error logs, etc. I’m not suggesting that you stop doing that, but do your best to spend the bulk of your time working on specific skills to achieve mastery.
I had a conversation with a friend of mine recently about this and he told me, “I do specialize, I specialize on [name of his company here].” He’s banking on being indispensable and that his job security will carry him in this tough economic climate. Hate to burst your bubble, but….
There is No Job Security
Nobody is indispensable, and you shouldn’t want to be. The company survived before you started there, and they will find a way to do without you. They may have to spend more money or limp along with substandard service, but they don’t need you. Besides, in my experience being considered mission critical is more of a hindrance than a benefit. If you are absolutely necessary in your current role, you cannot be promoted and your skills may stagnate.
Focus on Skills in Demand
Back in the 70′s and 80′s Racquetball was a hot sport, and while I was in college, I used to work out with a Professional Racquetball Player. The popularity of racquetball has dropped since then, and Rocky Carson, the current top pro, claims to earn six figure income from winnings and endorsements. Meanwhile Tiger Woods, another non-team athlete, earns nearly 1000 times as much. Is Tiger really 1000 times the athlete as Rocky? Maybe and maybe not, but I’d argue that the primary difference is the demand of their respective sports.
Being the world’s best Tiddlywinks player doesn’t matter much if you can’t make money doing it, unless of course you aren’t trying to make a career out of it. I’m just saying that if Turbo Pascal and C# .NET both fascinate you, I’d go with C# .NET.
Focus On Networking
Something I learned a few years ago is that I always need to network. People come and go from your work, community, and personal lives so you need to be in a constant state of expansion. Don’t start networking when you need a job, a mature network should already be in place beforehand. Notice that when I say networking, I’m not talking about prowling sites like Monster or Dice and I’m not suggesting that you should perpetually look for a new job. Networking is about making friends, sharing technical information, helping others, etc.
Although I respect both men a great deal, ultimately I’d rather end up like Thomas Edison than Nikola Tesla. Both were undoubtedly brilliant, but Tesla died in obscurity, alone and penniless.
Focus On Soft Skills
Anybody can learn to take backups, use Reporting Services, or write T-SQL code. If you’re reading this, you’re smart and want to succeed. However, the geek stereotype is that we’re often socially awkward, don’t relate well to people, and don’t express ourselves well in both verbal and written form. These are the kinds of skills that we all should focus on because they’re considered rare in our profession. To paraphrase an old saying:
If we’re running from Zombies, I don’t need to outrun the Zombies. I only need to outrun you.
Having participated in many interviews recently, soft skills are often much more important than the hard skills. If you give a good, motivated junior DBA a job, his technical skills will quickly improve. If you hire a Senior DBA with the stereotypical personality challenges, is he likely to become Dale Carnegie-esque at the same rate?
So, how do you get the soft skills? Well, the same way you can gain all of of the skills I’ve already mentioned.
Focus on Community Involvement
Geoff Hiten, Grant Fritchey, and Buck Woody at the 2010 Summit
Get involved. Attend meetings, blog, and present. This will help you learn those soft skills, and become known for them. You can’t achieve these skills overnight, but if you want to jump start the process, you should….
Focus on Going to the Pass 2011 Summit
The PASS Summit is the premier event for SQL Server Professionals. You can network with the best and brightest. Get help with your technical problems, sometimes from the people who created the technologies. If your employer will send you, that’s great. If not then bite the bullet and pay your own way as I did last year.
I’m registering today and you should too, because today is the last day to take advantage of the $600 early bird discount. You may find that it’s one of the best things to happen to your career. I did last year.
I urge you to take the time to examine your focus and where it’s leading you. This is your life, your career, and your future.
I hope you’ll make the most of it and that I’ll see you at this year’s PASS Summit.
Find ways to change focus that are good for you and the employer, or find a new employer. This is your life.
Popular Articles