SQL JOINs? Go read the article from the source (Visual Representation of SQL Joins) and it’ll make even more sense.
I’m needing to do a sql query to show just the opportunities from the current month, the sql snippet for the WHERE clause to do this is the following:
WHERE MONTH(opportunities.date_closed) = MONTH(NOW()) and YEAR(opportunities.date_closed) = Year(now())
Cardinality specifies how many instances of an entity relate to one instance of another entity.
The day is almost over, so I’ll fill you in on some of what occurred today, as it relates directly to this post by Mike at GLComputing. This was originally written as a comment to his post and kinda grew, so I’m posting it here in full.
SQL 2008 Express R2 has finally let me install a default SQLEXPRESS instance but I still can’t get a custom instance of ACT7 working. Who should be paying for the time it’s taking me to work out this issue?
I don’t yet have a complete answer to that question.
Imagine for a moment that I buy a brand new car, from a dealership. The car has trouble starting. So I go back to the dealership and ask them to fix it. They do so. I as a client go home happy.
But what’s really occurred? Well, the dealership gets a mechanic to look at it; he determines that a component if faulty, he replaces it with one off the spare part shelf in the dealership.
The dealership doesn’t want to wear the cost of the mechanics time or the cost of the part, so they put in a warranty claim to the manufacturer for the time taken by the mechanic and the cost of the part.
The manufacturer pays up, occasionally they audit the dealership to make sure fraud isn’t occurring. The manufacturer actually obtained the faulty component from a supplier. They then make a claim to the supplier for the costs.
The supplier pays up.
I know this because many years ago (early ’90’s) I was a Warranty Manager for a car dealership.
Should the same process apply in the software industry?
Is it the fault of the reseller/dealership that software/component failed?
Is it the fault of the software house/manufacturer that the software/component failed?
Is it the fault of the supplier that the software/component failed?
Of course the initial supplier will argue that they make their product to stringent standards, and they can’t account for all the possible variables of other hardware and environmental conditions.
And of course the software house/manufacturer will say they took all appropriate steps.
And also, of course, the reseller/dealership will say they aren’t to blame either.
And the customer, well, the customer is never wrong, right?
Getting a little more specific, in my case today, the client has all good name brand equipment, setup by a reputable IT firm with a solid reputation. I couldn’t fault either their spec’s or configuration. I know the amount of effort I’ve put into this today. I know how much effort I’ve put into making SQL installs go smoothly, to the point where they mostly do go smooth for me, but sometimes, like today, they go very very wrong.
And so yes, I lay the fault with the remaining two players. Me, the guy on the pointy end of the issue, who gets to look like an idiot in front of a customer because he can’t make shrink wrapped software work on name brand computers. [Do you think I’m a little cranky? hint, I am.]
You see, the vendor here (Sage) have a product they sell (Sage ACT!) that uses a database in the back end (Microsoft SQL Server 2008 Express R2). The vendor (Sage) has chosen to use that product, use that version of the product. That choice means an implicit responsibility to issues using their product with the 3rd party product. Let me say it clearly, “Sage, you chose to use Microsoft SQL 2008 Express R2, which makes you half responsible.”
The 3rd party, the supplier of that component, Microsoft, have chosen to update their product, and sometimes that transition hasn’t gone smoothly for them, but nonetheless they have updated on a semi-regular basis (although not yearly, and the topic of frequency will be the subject of another discussion). They provide help via their KB articles and revert to the line “too many other environmental factors, not our problem”.
Reminds me of a joke I heard years ago:
A helicopter was flying around above Seattle when an electrical malfunction disabled all of the aircraft’s electronic navigation and communications equipment. Due to the clouds and haze, the pilot could not determine the helicopter’s position and course to fly to the airport. The pilot saw a tall building, flew toward it, circled, drew a handwritten sign, and held it in the helicopter’s window. The pilot’s sign said “WHERE AM I?” in large letters. People in the tall building quickly responded to the aircraft, drew a large sign and held it in a building window. Their sign read: “YOU ARE IN A HELICOPTER.” The pilot smiled, waved, looked at her map, determined the course to steer to SEATAC airport, and landed safely. After they were on the ground, the co-pilot asked the pilot how the “YOU ARE IN A HELICOPTER” sign helped determine their position. The pilot responded “I knew that had to be the Microsoft building because, like their technical support, online help and product documentation, the response they gave me was technically correct, but completely useless.” – Thanks to Alun for the source link.
In my view, if a car had, say a throttle problem, the manufacture would be sorting out the problem quick smart. Sage, you need to compensate the people in the front line, in the trenches. Go hit Microsoft up if you’re not happy about it. That’s what the car manufacturers do. It works for them so don’t tell me it can’t work.
But, Sage, I’m not hearing much from you. And that’s concerning to me because in today’s world, the world of 2011, the internet, social media and a with your own social media presence, to not hear much at all is to hear all the other dissenting voices, to hear the competition.
Now honestly, the competition to Sage ACT! is woeful. Seriously, it is. ACT! is a great product, it’s flexible, customisable, and at least 11 other herbs and spices, all of which are pure goodness (honestly, it’s a lot more than 11). So here’s a hint to the competition, if you want a good CRM product, imitate ACT!.
Want to know one of its weaknesses? It’s reliance on product that doesn’t install properly. Achilles only had one heel that gave him trouble. Most, but not all, of the competition have figured this out, and allow either multiple backend databases to be used (MSSQL/MySQL/Oracle/PostgreSQL and others).
Now if you agree with me, let me know, if you don’t let me know as well, because as those that know me can attest, if you can prove your point, I’ll change. Of course, if you don’t give two hoots, then I guess I won’t be hearing from you. Either way, I’m gonna go hold my teddy bear and sing myself to sleep, hoping that the SQL install nightmare doesn’t plague me tonight. I’m gonna need some sleep to go fight this dragon again.
Stan Smith has just posted a link to MS KB 321185 – How to identify your SQL Server version and edition which is quite handy.
I have to thank Kevin Chieff (ACT! guru) for pointing me to this link on how to tell the difference between versions of Microsoft SQL 2005 – and the MS page it points to re the SERVERPROPERTY (Transact-SQL) command.
The number of times I’ve had to work out just which version of SQL is running is amazing. The difficulty in doing so is amazing. There ought to be a simple utility that does it all.
So the two links above will get used a lot in conjuction with my previous post re determining SQL versions.
It is now two weeks in to my new digs at Evolution Marketing – and it sure is fun.
Primarily I’ve been learning how to drive ACT!, software to take care of your contact management. Yesterday and today I’ve been playing with custom tables in the ACT! MS-SQL database. While ACT! looks after contacts and tasks, meetings & calls to do with your contacts really well, some clients would like to be able to do even more, like handle job sheets etc. Which is the reason for the custom tables. These allow us to track all sorts of other information and connect them to contacts & companies.
I’ve also setup a Blackberry Bold simulator and a Windows Mobile 6 Emulator, this allows me to experience the same things as our clients, notably HandHeldContact, which allows you to sync multiple calenders, notes, histories etc to your phone – loads more than MS Exchange alone allows.
To paraphrase the paragraphs above, I’m having fun learning new stuff!
The other staff at Evolution are great to work with, the coffee is good and all the tech toys I’ve asked for have been delivered, with the exception of the telephone headset, but it is on the way so they’re forgiven ;-). Woot!
Update 20th Oct: Got the telephone headset on Friday afternoon. Cool.
[update: SQL2005 versions more info here]
To find out what version of SQL Server your running, do this:
From the command prompt on the SQL Server itself,
osql -E -S %computername%
This will give you a SQL prompt, at which you do the following:
1>exec master..xp_msver 'ProductName'
2>exec master..xp_msver 'ProductVersion'
This gives you two bits of information, (1) the Product Name & (2) the Product Version – which requires some interpretation, note them both. But first, at the SQL prompt, type quit.
The table below will help determine exactly what SQL Server is running.
2005.90.1399 – SQL Server 2005 RTM
2005.90.2047 – SQL Server 2005 Service Pack 1
2005.90.3042 – SQL Server 2005 Service Pack 2
8.00.194 – SQL Server 2000 RTM
8.00.384 – SQL Server 2000 SP1
8.00.532 – SQL Server 2000 SP2
8.00.760 – SQL Server 2000 SP3
8.00.760 – SQL Server 2000 SP3a *note below
8.00.818 – SQL Server 2000 SP3 w/ Cumulative Patch MS03-031
8.00.2039 – SQL Server 2000 SP4
7.00.1063 – SQL Server 7.0 Service Pack 4 (SP4)
7.00.961 – SQL Server 7.0 Service Pack 3 (SP3)
7.00.842 – SQL Server 7.0 Service Pack 2 (SP2)
7.00.699 – SQL Server 7.0 Service Pack 1 (SP1)
7.00.623 – SQL Server 7.0 RTM (Release To Manufacturing)
6.50.479 – SQL Server 6.5 Service Pack 5a (SP5a) Update
6.50.416 – SQL Server 6.5 Service Pack 5a (SP5a)
6.50.415 – SQL Server 6.5 Service Pack 5 (SP5)
6.50.281 – SQL Server 6.5 Service Pack 4 (SP4)
6.50.258 – SQL Server 6.5 Service Pack 3 (SP3)
6.50.240 – SQL Server 6.5 Service Pack 2 (SP2)
6.50.213 – SQL Server 6.5 Service Pack 1 (SP1)
6.50.201 – SQL Server 6.5 RTM
You will notice that there is SQL Server 2000 SP3 and SP3a both have the same version number. Some software providers require at least SP3a (i.e. some MYOB products). So how does one tell the difference between the two?
By finding the file SSNETLIB.DLL and right clicking it, and checking the version number. If the version number of this file is 2000.80.760.0, you have SQL Server 2000 SP3. If the version number of this file is 2000.80.766.0, you have SQL Server 2000 SP3a.
This file is normally found in one of these two locations:
- Default instance: C:\Program Files\Microsoft SQL Server\Binn\Ssnetlib.dll
- Named instance: C:\Program Files\Microsoft SQLServer\MSSQL$<InstanceName>\Binn\Ssnetlib.dll
Of course, Microsoft have more to say and you can find it at: www.support.microsoft.com/kb/321185