What Is A CMDB?


Big enterprise shops aspire to build a Configuration Management DataBase that will track their IT assets, how they’re configured, who relies on them, what applications live on them, and so on.

Let’s take a simple web application as an example: what would it take to document its components and configuration?  We would want to know:

  • What servers it lives on – including the database server(s), the web server(s), the app server(s), and any file server(s) where it might store content
  • What parts of the app live on what servers
  • How the application is configured on that server
  • How the server itself is configured
  • Who to notify when any of these moving parts change

If it’s done right, it ties in with other IT systems in the shop.  When a server goes down, the CMDB could tell us:

  • What applications are affected
  • Who we need to notify
  • What the server’s last known good config was

Building an enterprise-wide CMDB is a lot of work because of the complexity and cost involved, and some say it can’t be done.

At the enterprise level, they might be right – but for a SQL Server DBA, we do the impossible all the time.  This Thursday, I’m doing a Pain of the Week webcast on how to build a simple CMDB to collect information about your SQL Server environment using freely available tools like SQL Server 2008’s Central Management Server, its group query execute functionality, and Quest Discovery Wizard.  You can register for the webcast online.

Previous Post
Best Practices are Meaningless to Your Manager
Next Post
Certifications are the icing on the cake

9 Comments. Leave new

  • Hi Brent

    What you describe can be done (and would be very useful), but what you describe isn’t a CMDB.

    A CMDB needs to also store the relationships to conceptual entitiies, most important one being the Services supported by the apps and servers and… It also needs to be able to take baselines (you db geeks read: checkpoints) of some or all of the items in it and restore those baselines when needed. There’s more but I make my point. An assert database isn’t a CMDB. A network discovery or even an application discovery isn’t a CMDB.

    CMDB is hard. Too hard. it can’t be done within what would be considered a reasonable investment in most organisations.

    I draw the analogy of a GPS navigator in a car. For a small number of high-intensity mission-critical drivers such as emergency services aor couriers, a GPS nav pays off. For 99% of installations, it is just there to make the geek happy. CMDB is a geek toy.

    ITIL is all about process improvement. We can nearly always improve configuration management process to good enough without investing in a massive “database of everything”.

  • Hi, Skep. Thanks for your opinion. As I stated in my post, I’m not building an enterprise CMDB. (I got ITIL certified too, and I’ve got no interest in going back down that road.) We’re building a “simple CMDB to collect information about your SQL Server environment.” Sorry if that wasn’t more clear.

  • I’m a pedant when it comes to terminology 🙂 I think you’re describing an asset database. CMDB is about storing the Service configuration. You aren’t considering services, only IT-internal technologies such as servers and applications.

    This may seem moot and pedantic, but CMDB is rapidly coming to mean “any place where we store IT items with relationships between them” or even “any place where we store IT items”, and I hate it when terms get so diluted in meaning as to no longer be useful. We do it in IT all the time. Doctors, engineers, scientists don’t do it (except psychologists). It is a sign of our immaturity as a profession that we allow folk to use terms as they wish.

    So I’m turning into the Terminology Police, sorry

  • Heh – you might want to take a deep breath and relax. Here’s a comic to help:


  • Sounds like WMI would be ideal for this type of thing.

  • WMI is a good start, but it doesn’t have all of the SQL Server specific info, like who has access to a database, or how a database’s settings have changed over the past few days.

  • Powershell could do the business. Throwing in http://www.codeplex.com/SQLPSX should help the SQL specific stuff.

  • Dumb question – why are you so determined to avoid T-SQL? You, of all people. 😀

  • I may be married to T-SQL but it’s nice to have a mistress! 😉


Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.