Login or Sign Up to become a member!
LessThanDot Sit Logo

LessThanDot

Data Management

Less Than Dot is a community of passionate IT professionals and enthusiasts dedicated to sharing technical knowledge, experience, and assistance. Inside you will find reference materials, interesting technical discussions, and expert tips and commentary. Once you register for an account you will have immediate access to the forums and all past articles and commentaries.

LTD Social Sitings

Lessthandot twitter Lessthandot Linkedin Lessthandot friendfeed Lessthandot facebook Lessthandot rss

Note: Watch for social icons on posts by your favorite authors to follow their postings on these and other social sites.

Your profile

    Search

    XML Feeds

    Google Ads

    « Three different ways of populating variables with configuration values in SQL ServerHow to use T-SQL to get the command line startup parameters that were used to start SQL Server »
    comments

    1. Not adjusting memory settings on your database server


    Below is a screen shot of the dreaded default 214748367 maximum server memory allowed to SQL Server. Will it take it? Yes, it will. It holds no sympathy for others and will leave no crumbs behind for mere OS operations or paging. Set this to an allowable maximum based on your server’s actual available memory. Leave some for the OS to survive. The server will thank you later. Trust me!


    2. Installing EVERYTHING by default


    Defaults hurt. They take a 3 inch splinter and try to bury it as far up and under your nail as far as they possibly can. Every database server has a task. A mission if you will. That mission is to serve the data and secure the data. Some need 32GB of RAM; some need 3GB of RAM. This one might need 32 spindles on RAID 3 billion. Point is: There are no defaults that match your installation. Do not take them for granted and do not expect them to be your saving grace preventing some research. Know what hurts even more? Installing all of the features on one server when you only need one of them can cause as much of a problem as leaving default settings in place. Try to install the features that you know will be utilized so you can utilize the resources of the server to what it is meant for?


    3. Enabling CLR and abusing it


    CLR is a foundation, a pillar of strength and power, a stance in front of an angry mob preventing chaos, the punk rocker that stands above the exhausted and pile-driven leftovers from a slam dance session. Embrace CLR like it is hiding under the couch and can save the puzzle you spent days working on but has that one piece missing, causing nothing but pain and agony with failure to your hard work. OK, now STOP! With great power brings great failure. CLR will and can take you to the next level of strength and functionality to your trials with SQL Server as a DBA and Developer. CLR can also and will take everything it wants when not managed from your database server. This will leave it starving for more and hung in the shadows begging for a restart.


    4. Handing out the SA password like it was free ice cream day.


    SA is a landmark and an object not to be tangled with. Think of Dirty Harry and that monster 44 Magnum facing you down. OK, now hand the 44 over to someone and ask them to point it at you. Feel good? NO! Keep SA as your protection. Do not use it unless it is called upon in a time of need. Yes, even the sysadmin(s) should have their own security model and SA is not part of it.


    5. Never maintaining indexes and statistics


    You’ve spent days researching and configuring IO, memory, SQL Server configurations down to the last MAXDOP setting. It truly is a remarkable feeling you can only explain by feeling it yourself. Problem is, when it stops there and maintaining the database server is left to the planning and implementation. Indexes and Statistics alike need special care. They can enforce performance beyond your most exotic dreams when used and maintained. They can become your nightmarish horrors if not maintained at the same time.


    6. Installing EVERYTHING including binary, data and log files to the C drive


    If you are installing SQL Server on your desktop or laptop at home and have one 25GB drive, then sure, install to the C drive. Most of us have those “server” things. They have drive bays, and sometimes we even get a D or an E drive. When you install SQL Server it will want and request you to install everything to the C drive (or the volume letter you pick for the OS). It’s ok for the setup team to do this. I respect that not all best practices can be programmed into everything. So here is the almighty: If you have a data drive, log drive and OS drive or anything other than the drive for the OS, please use it for your data. Your database server will thank you when it is not contending with other IO operations.


    7. Relying on RAID as a recovery plan


    RAID is not going to save you. Before last year or so when it was publicized that a company literally was found whimpering in the corner after losing all of their data from relying on RAID levels to protect against failures, we didn’t think it was possible to fathom this concept. Who would think this way? Well, someone did, so we need to say it.


    8. Think you are protected from disasters without HA or DR?


    Disasters are inevitable. We cannot hide from them and they jump up behind us when we least expect it. Plan for it, test for it and become familiar with it. SQL Server has many native features that can be used to handle HA and DR. When lightning hits the building, a river decides to create a lake near your cube, a tornado says hello to the data center (face to face) or even an earthquake decides to open a nice pretty hole in the earth and eat the very data you vowed to protect, HA and DR will be there to rescue you (and your job).


    9. Under-sizing your installation


    Sizing is an art for database servers. It is also an art form to not size your database server correctly. Not doing so will cost much more in the long run. There will be cost both in dollars and downtime (which just means more dollars – lost).


    10. Forgetting the network is just as important as IO performance


    It’s the network! Blaming the network on slow performance is fun. Network and database administrators like to blame each other on performance being slow. The nice part about the network is if there isn’t much monitoring in place, we can get away with it as DBAs so much easier. OK, is it really the network or not? If you do not have a network that is stable and can handle your data flying around the business, your hardcore, supersonic, beefy, brat- eating server doesn’t help you at all. Get with your network group and discuss the amount of expected data. ASYNC_NETWORK_IO waits are not fun when you are plagued with them on a database server.


    11. Allowing Jane and John to write T-SQL because they know how to write SELECT *


    So the CFO comes to your office and he just went to this really cool lightshow expo in Vegas to release SQL Server 30099 R500. Best lightshow he has ever seen. Even better was that the really good sales guy up on the stage popped open SQL Server Management Studio version fifty billion and started bringing up data. Yes, you guessed it. He just asked for you to install that really neat tool on his laptop so he can, "Get data". Scary! Put policies in place to prevent this. Even for senior staff. Someone in an office with their finger on the F5 key and a SELECT * FROM reallybloodyhugeandwidetable is your nightmare come true.


    12. Backups are for sissies so I don’t do them or restore them to test


    Everyone knows the signature. It’s comical in passing and at user group meetings. Is it true? Not even close. Backups are your foundation for recovery. Your ability to save the universe from data gremlins that chew their way through your NIC port into the chassis, feasting on the RAM before moving to your beloved disk. Wait, listen to this:

    Jan: My database blew up. Something about corrupt, torn pages and Google can’t save me. John, can you help?

    John: Jan, let’s just restore to the other server so we can figure this out without being on the verge of heart attacks.

    jan : backups?

    Don’t be that person! Backup your data and back it up as much as you possibly can. Most of all restore it wherever you can to test it, well, can be restored. This is a nice feature to know you have before you need to have it.

    About the Author

    Ted Krueger is a SQL Server MVP and has been working in development and database administration for 13+ years. Specialties range from High Availability and Disaster / Recovery setup and testing methods down to custom assembly development for SQL Server Reporting Services. Ted blogs and is also one of the founders of LessThanDot.com technology community. Some of the articles focused on are Backup / Recovery, Security, SSIS and working on SQL Server and using all of the SQL Server features available to create stable and scalable database services. @onpnt
    Social SitingsTwitterLinkedInLTD RSS Feed
    1629 views
    Instapaper

    7 comments

    Comment from: SQLDenis [Member] Email
    SQLDenis A couple more


    13) Truncating your log file (your favorite)

    14) using BEGIN TRAN around a 2 hour long query and locking everything up for everyone else

    15) Not checking for how much free space you have left and filling up the drive with the transaction log

    16) Adding indexes in the hope that it will help speed up the query even though the queries are not sargable or the selectivity level of these indexes is just to low (like an index on middle initial, gender. salutation)
    05/19/10 @ 07:07
    Comment from: SQLDenis [Member] Email
    SQLDenis 17) Using SELECT INTO with a multi million row table

    18) Using cursors to update some data, bonus points for using dynamic cursors

    19) Running sp_updatestats during work hours

    20) Rebuilding all indexes without checking fragmentation levels, meanwhile you should have used SQLFool's defrag script
    05/19/10 @ 07:13
    Comment from: Lori [Visitor] · http://www.sqlsertimes2.com
    Lori Ted - great points and you get bonus points for being so hilarious!
    05/19/10 @ 12:35
    Comment from: Ted Krueger (onpnt) [Member]
    Ted Krueger (onpnt) :-) Thanks Lori.

    Thanks for the additions Denis. I love the SELECT INTO multi million row tables. I've caught developers doing that one. *sigh*
    05/19/10 @ 20:58
    Comment from: niikola [Member] Email
    niikola Better than SELECT INTO multi million row tables is:
    SELECT DISTINCT * INTO multi million row tables
    05/20/10 @ 04:08
    Comment from: SQLDenis [Member] Email
    SQLDenis Niikola, good one

    what about

    SELECT DISTINCT * INTO multi_million_row_table
    From BigTable CROSS JOIN AnotherBigTable
    05/20/10 @ 04:34
    Comment from: niikola [Member] Email
    niikola ouch :D
    05/20/10 @ 06:08

    Leave a comment


    Your email address will not be revealed on this site.

    Your URL will be displayed.
    (Line breaks become <br />)
    (Name, email & website)
    (Allow users to contact you through a message form (your email will not be revealed.)