What is most valuable?
There are many, but I would have to say the two most important for me have been SQL Server Profiler -- to run traces and the ability to kill sessions in the enterprise manager tool. This command-based functionality lets you search and sort through processes actively running on the system to find your i/o hog – that is the user that is overloading the database either through a hung query or bad SQL code.
Once the hog user is found, the terminate or “kill” command can be used to shut down the hanging transaction. Similar to how clearing a vehicle crash on the interstate frees up waiting traffic, this kill command gives other users the ability to continue work as normal once the terminated transaction has been killed. This should be used sparingly though since it can cause waiting applications to corrupt data depending on how the application was written, but it is an often used research feature when a system starts to overload or show major signs of slowing.
How has it helped my organization?
In an effort to forego a data warehouse purchase, one company I worked with used a second SQL Server instance loaded to separate hardware as a reporting environment avoiding the need to hire additional employees to support a data warehouse. Essentially, the production database was snapshot and copied nightly to the reporting instance where it was restored through automated processes.
All employees who wrote queries and reports against the reporting instance utilized the same knowledge, skillset and tools already used in the OLTP production environment. While it didn’t have all the abilities of a true data warehouse, it was quickly implemented and well served for the desired purpose.
What needs improvement?
Multiple operating systems support should improve. The ongoing and newly marketed support for Linux and Unix environments running SQL Server is a big win for Microsoft, in my opinion.
Previous hold back related to open source environments stemmed from admins or management who would not run SQL Server for various reasons which many times boiled down to not liking Microsoft as a company.
Open source and Microsoft have conflicted in the open source world for years, but I think Microsoft is finally starting to turn that tide in an effort to compete with other vendors.
For how long have I used the solution?
20 years. I began as a Microsoft Access database programmer in 1998 connecting early dynamic intranet websites to Access backend databases.
I later progressed to the SQL Server 2000 environment and have utilized SQL Server ever since then.
What do I think about the stability of the solution?
Issues encountered with stability were always correctable assuming we as a business were willing to spend money. The two major issues that come to mind were slowing of image files loading to disk using SQL Server and lack of proper indexing.
Images were archived for a 30 year legal period at a rate of at least 12 million per year and we eventually just hit a max depth of data where SQL Server had a hard time returning results. Shortening the physical file path structure of how deep SQL Server had to dig through the hard drive in addition to changing to new and improved disk technologies resolved the problem.
After this drive change occurred, a separate problem started where our database came to a crawl which is when we realized our regularly scheduled database index had not been updated to accommodate the new structure changes. A new index was put in place which is when SQL Server started humming along better than ever.
What do I think about the scalability of the solution?
Microsoft makes life easy to expand your environment through clustering tools and after-hours operational scheduling features. SQL Server is easily suited for small businesses where it found huge popularity, but daily operations can sometimes be overlooked as the business grows causing intermittent operational kinks. I have seen a few small businesses determine that a slowing or overloaded SQL Server environment means they should look at more enterprise level databases, which is simply not the case.
Just like a Windows PC needs basic defragmentation maintenance to run effectively, SQL Server needs its own regular maintenance. There are many options available to improve the performance of SQL Server including the simple add-on clustering features which will balance excess load on the server.
In addition, database indexes need to either be created or re-indexed periodically. A database does not automatically know how an application was designed although it’s very good at trying to guess using built-in scheme mapping software. Creating indexes and related maintenance schedules specific to your environment can make a huge difference in how quickly SQL Server responds to data requests.
Disk partitions are another method for improvement. No matter how well SQL Server software is configured, it is limited by the hardware level. Underlying disk usage grows as data grows meaning the more data you add to the database results in the longer it will take for the database to find data on-disk. That’s when it’s time to either spread data across many independent disk sets or move to more expensive flash drives which save time by avoiding read & write disk operations.
These options, of course, require time, effort, and money, but they have been well worth the costs of doing business based on my experience.
How are customer service and technical support?
I have only had to call Microsoft support 5 times in my nearly 20-year career, but they were extremely helpful. The one frustrating experience was 10 years ago when I worked over the phone 8 hours straight with 3 separate techs from the India location. Keep in mind, these were days pre-remote support meaning I had to verbally translate every diagnostic error I was seeing on the screen and assume the tech was clear on the meaning. The techs I worked with were extremely nice and tried hard to help, but I reached my frustration level due to the verbal language barrier.
The senior tech, who I spent the most time working with, had an extremely thick accent and was hard to understand. I could tell he had hit a dead-end on his knowledge of the product so I finally asked to be transferred to a specialist in America. Once I found the right person in the US, my problem was resolved within an hour.
In hindsight, I knew the senior tech was lost at the 6-hour mark, so I should have spoken up then, but he never complained and kept trying different solutions, which is good on Microsoft’s part.
Which solution did I use previously and why did I switch?
My team and I have tried many different technologies including MySQL (cheap but effective), Oracle (expensive and effective), PostgreSQL, and DB2. I never jumped on the PostgreSQL or DB2 train, but could not give you a specific reason why due to my limited knowledge of the products. It usually came down to lack of knowledge for available programmers in our area, meaning we would have to train new hires and take a lot of time getting them familiar with a new database structure. That defaulted us to either Oracle or SQL Server since MySQL was not used in production at the time due to limitations surrounding support.
Oracle owns MySQL these days and they, of course, would prefer you run full fledged Oracle database for support needs. Oracle’s supremely expensive licensing has normally pushed me and coworkers to Microsoft SQL Server although every organization I have worked with pays for some form of Oracle even though SQL Server is primarily touching end users.
I personally feel Oracle is a great database but also think Microsoft SQL Server can be configured to run just as well as Oracle in most cases. The problem I normally find is that many bloated applications run SQL Server where more streamlined (and many times less functional) applications run Oracle. For that reason primarily, Oracle has had a better reputation in the pre-Amazon world.
This could all change in the years to come as Microsoft starts to fight Amazon and Google in cloud processing.
How was the initial setup?
Creating a SQL Server instance using the pre-installed GUI setup screen available in either Visual Studio or Enterprise Manager can be very simple to create and maintain database “instances” making it a prime choice for small startup businesses.
In addition, Microsoft has added loads of training videos on their website along with step-by-step instructions for creating and maintaining servers. The user can get as complex as desired in SQL Server by learning all the behind-the-scenes commands the GUI is using. You will start researching commands quickly once the first SQL Server error occurs and the GUI doesn’t know how to resolve it.
What's my experience with pricing, setup cost, and licensing?
For the most part, what you see is what you get with Microsoft’s licensing website. I sat through many hours of negotiations with many database and application vendors. Some application vendors try negotiating a better deal based on their licensed volume, but only twice have I seen Microsoft cater to lower licensing and it was because they wanted to make long-term wins with the customer knowing they had the possibility of gaining market share.
That said, Microsoft is still usually cheaper than Oracle who will sometimes look cheaper to start with but add the possibility of higher long term rates. Asking for a discount can never hurt.
Which other solutions did I evaluate?
MySQL (now owned by Oracle) is sometimes used internally for dynamic website needs, but Oracle is the only competitor evaluated for SQL Server.
What other advice do I have?
Start in the cloud if feasibly possible and if it makes sense for your business. I have mostly worked with organizations that still don’t trust the cloud for security and legal reasons, but Amazon, Microsoft, and Google are releasing promising products in the cloud that are leaps and bounds ahead of processing power for local servers assuming your organization is willing to pay what it takes. I have priced cloud services enough to know they’re expensive, but they could replace a lot of unknowns for growing businesses or those starting from scratch; mainly network security, redundancy and technical skillset of employees.
Cloud services have full-time employees focusing on those niches meaning you as an employer will have less headaches at night.
According to CNBC and Synergy Research Group as of this writing, Amazon AWS leads 33% of global cloud market share. That may sound like a small number, but it’s by far the majority of customers since Amazon’s AWS cloud revenue is more than the next five providers combined. Two of those 5 providers are Microsoft and Google.
And for those of you new to the cloud, you do have the ability to run Microsoft products, including Microsoft SQL Server, in the AWS cloud.