Imagine a world in which change control is fun

Anyone who has worked in IT for any period of time knows the potential value of change control.   You can’t have people just wily nily making changes to production systems, that is how outages happen.  However, I have met very few people who find the change control process to be anything more than a painful frustrating exercise in dealing with idiots.

One reason this happens is that change control is often set up to be an adversarial process and the approvers are often not technical, so they do not know to ask the correct questions and often the questions that are asked just frustrate process. Before long what happens is an organization starts to find ways to subvert change control negating the whole point of change control.

I have this idealist vision of that change control should be a positive and dare I say fun.   Change control is a positive tool in helping an organization move forward.  Changes are generally performed to improve your systems.  Even a fix of a problem is a positive.   Also I have never met anyone who does not like to talk about what they do and change control gives the average IT worker a chance to tell their peers about the awesome thing that they are implementing in nauseating detail.  Perhaps that is just me that likes to talk about my work to everyone.  If the IT manager remember the purpose of change control and build processes to be positive they would be more effective.

 

Virtualize Everything!

With the increase in resources limits in Hyper-V on Windows Server 8, I have been toying with the idea of putting every server on a Hyper-V instance.  Even if it is just a stand alone instance with one Hyper-V instance on a single physical server.

By having every server be a virtual server, I will have much greater flexibility in moving the server to new hardware for growth or disaster recovery reasons.  The virtual server would be like a little server package that I pick up and move anywhere.  I could then use virtualization replication to move to a new server with very little downtime or create a warm standby server.

I do recognize that the virtualization platform itself would add overhead and take resources away from the SQL Server.  However, I think the trade-off in increased manageability is worth it.  It won’t of course work for every database server, but for the most part my SQL Servers are modest in size and rarely need more than 128 GB of RAM.  I do spend a ridiculous amount of time moving between servers, so the time savings is worth it alone.

What are your thoughts?

Benefits of the Private Cloud

When speaking about private clouds I find many people have a hard time trusting an infrastructure platform that they do not have control.   How do you know if you data is being backed up?  How do you know that your data is secure?  How can SLA be maintained if you don’t control the infrastructure?  And that is not even addressing the auditor’s concerns.  The fact of the matter is that many companies will never move to the cloud, the risk to their business continuity is not something that they are willing to risk to a third party.

The reported cost savings are not something that can be ignored, but I am still skeptical on the real savings of the cloud.  Microsoft recently announced they are cutting their Azure SQL Storage prices almost in half, but you still have to pay for computing time, data access and bandwidth.  In my experience with hosted databases, customers have no idea how much resources they actually use.  While the idea that you pay for only what you use sounds appealing, it is until you have to pay more than you budgeted.

I expect that in the next few years we will see more companies getting comfortable with the cloud slowly, they may move non critical systems to a cloud provider, but keep mission critical data in house on their own private clouds.  The cloud providers are already looking for methods to make it easier for business to transfer to the cloud. Having a private cloud in house will give you flexibility, security and control to decide for yourself on upon which cloud your data lives and hopefully one day to move between clouds easily.

I love Error Logs

It is no secret that I love SQL Server Error Logs.  I can’t believe that how often I am   called to help with an outage and the DBA has not once looked at the SQL Server error logs.  It is the first place I look for any issue and normally provides a starting point to solve the problem.   I can’t believe how many times I have asked what the do the SQL Server error logs say and have been told “I did not look”.

I have encountered a server once that could not write to the error log, which threw me quite for a loop.   The inability to write to the SQL error log did not throw an error to the server application error log or any other log.   To protect against this I created a job that writes to a test entry to the error log.

USE master
EXEC xp_logevent 100000, 'This is a test', informational

It is also important to know how to read the SQL Server error log from T-SQL.

/*This extended stored procedure has 7 parameters:
1. Error log file you want to read: 0 = current, 1 = Archive #1, 2 = Archive #2, etc...
2. Log file type: 1 = SQL error log, 2 = SQL Agent log
3. Search string 1: String one you want to search for
4. Search string 2: String two you want to search for
5. Search from start time
6. Search to end time
7. Sort order for results: N'asc' = ascending, N'desc' = descending*/
EXEC master.dbo.xp_readerrorlog 0, 1, 'test', NULL , NULL, NULL, N'desc'
--Get Buffer Pool Cache Information

Being a DBA is a Customer Service Job

My first real DBA job was at a large insurance company, where all the databases administrators worked on the same floor.  There were mainframe DBAs, Oracle DBAs, DB2 DBAs and I was the sole SQL Server DBA.   I noticed that the other DBAs were what I might describe as grumpy old men.  They never talked to end users or even developers.  It was rare to see them talk to each other.

I think that the user friendliness of SQL Server has eliminated the divide between the developer and the DBA.   The developer can now write queries themselves, but often need help at the next step of creating indexes.  End users know that the DBA is person who can solve performance problems and contact DBAs directly.   This user interaction is what separates the competent DBA from the great DBA.  A great DBA needs to have people skills and the ability to explain complex technical problems to the non-technical user easily. No one likes to feel stupid, especially developers, and databases are a great unknown to a lot developers.  An asshole DBA will not win friends and developers will avoid working with the DBA.  The DBA and the developer should be partners.

Set Number of Error Logs via code

In my ongoing effort to automate everything. I wanted to have a script that would change the default number of error logs. After some looking around in help and on the internet, I realized I was going to have come up with a solution on my own. I was complaining to Ryan about having to do some real work, when he suggested that I just run a trace when I make the change via Management Studio.
Here is the result:
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE',
      N'Software\Microsoft\MSSQLServer\MSSQLServer',
      N'NumErrorLogs', REG_DWORD, 10
I am sure using this is not recommended, but then MS should have provided me a better method to accomplish this.

SQL Server Private Clouds, what are they?

Now this is a topic that annoys me.  Everyone on the planet is acting like this a new idea. However, At the PASS summit in 2008, I presented a session on “How to Build a Private SQL Server Cloud” and have been running my own private SQL Server cloud since the launch of SQL Server 2008.  I thought now is the time to do a series of blog posts on what I am doing with Private Clouds, this is the first in that series.

Back in 2008, the cloud was just beginning to buzz and I thought wow this is a great idea, but I am not putting my data into the cloud.  I talked to other “data” people and they all thought the same thing.  They might put their applications into the cloud, but not their data.   I started to think how might I achieve the benefits of  cloud technologies without handing my data over to an unknown provider.

So what makes a cloud a cloud?  I define a cloud as an infrastructure that provides high availability, self service, on-demand use and elasticity of resources.  Make sense? I thought not.  Lets break it down.

High availability is a term often used with a set of assumptions that can vary by person. For some people, high availability is just having good backups, but for others it means having geo-redundant systems that can fail over with no loss of data or downtime.  I define high availability within a single data center, meaning that I want to make sure if I have a hardware failure I am protected with no downtime or data loss.  However, if the data center is lost I am not protected.  In SQL 2012, I will expand my definition to include geo-redundancy.

I run a large environment with very little staff, so it is important that I empower my users and developers to do as much on their own as possible, so I can focus on what is important.  I would rather enable a system to allow users to spin up SQL Servers and databases on their own, than waste my time doing a repetitive task.  However, I want to be able to control how the users spin up servers and databases, which brings us to on demand use of resources.

I want the system to be able to determine when a new SQL Server is needed or when space needs to be added to a drive own its own rather than have to monitor and react.  This requires a lot of data collection and understanding of SQL Server workloads.  For some resources this is quite basic,  I want my servers to run at max of 80% of CPU.  So when a server is running at an average of 50% CPU,  I will stopping adding databases to the server, and spin up a new server instance.  Since this is a process I can define, thus I can automate it.

Elasticity is not only hard to define, but hard to implement and one of the attributes that is most desirable.  Everyone has systems that need a ton of resources at once  but only periodically; the rest of time the hardware is just being wasted.  I wanted to be able shift resources to where they are needed most and when, but at the same time control an unexpected load from taking over a server.  I want to be able to put a troublesome database in “Database Jail”.

With these concepts in mind, I thought I can achieve these benefits of the cloud, but do so within my own network.  Thus a private cloud is just a cloud with in a private network.

Coming up next….
The Benefits of Private SQL Clouds
The Architecture of Private SQL Clouds

SQL Saturday WIT Panels

I have had the privileged of being part of several SQL Saturday Women in Technology lunch panels.  Each one has been such fun and such a positive experience, but I believe what I enjoy the most is the opportunity to talk with other women who share my experiences.   At many companies there may be only one woman in the technical staff, if any at all and the opportunity to share experiences can not be over looked.

With so many women leaving technical professions, I think that it is important for those of us who remain to have the opportunity to gather and remind ourselves of the importance of what we do and why we enjoy it.  Like with many things in life, success is often determined by how much support we have around us.  I am not sure I would be in IT today if it was not for the community of women I was surround by when I started out in Austin Texas.

These SQL Saturday events had motivated me to stop just thinking about volunteering with the PASS WIT chapter and actually do it.  I will be working with other communities this year to help them organize their own WIT lunches and I am very much looking forward to it.