Wednesday, February 20, 2013

Windows 2012 for the DBA Setting Your Server to High Performance

Hello Dear Reader!  I’ve been doing a lot of work with Windows Server 2012 lately.  The interface is wildly different from what we’ve gotten used to in the past.  

If you’ve worked with Windows 8 or Windows Phone at all, then the UI will come as less of a shock to you. 

 If you haven’t, then hold on to your pants.

This creates a lot of fun in figuring out how to do things we already thought we knew how to do.

“So Balls”, you say, “What did you know how to do that you don’t now know how to do?  Did that even make sense?”

Yes Dear Reader it did.  Ever since the Windows Servers have been given the same GUI upgrades as the user/Windows upgrades (Thank GOD there was no Windows Server ME), ever since Perfmon has been renamed 50 BAGILLION times, there have been DBA’s scratching their heads going ARRUUU!?

Continuing that trend is the way CPU performance is handled.  

Thanks to brilliant MVP’s such as Glenn Berry(@GlennAlanBerry | Blog) and Brent Ozar (@BrentO | Blog) we’ve had guidance on how to use CPU-Z, see Glenn’s Blog on this subject, and how Power Saving Options are bad, see Brent’s Blog on the subject

Now we have Window’s Server 2012 and we know we should check our power saving options, and we should use CPU-Z.  When we get a bad reading how do we change it?


There is a Windows 2012 Performance Tuning document that is worth a read, Click here to download the Word Doc.  If you have owned a laptop in the past 5 years with Windows Vista on up on it you are familiar with the power management plans.  Interestingly enough, or not based on your viewpoint, this is in Windows 2012 as well.   Below is an exert from the Document


Common applicable scenarios
Implementation highlights
Balanced (recommended)
Default setting. Targets good energy efficiency with minimal performance impact.
·         General computing
Matches capacity to demand. Energy-saving features balance power and performance.
High Performance
Increases performance at the cost of high energy consumption. Power and thermal limitations, operating expenses, and reliability considerations apply.
·         Low latency applications
·         Application code that is sensitive to processor performance changes
Processors are always locked at the highest performance state (including “turbo” frequencies). All cores are unparked.
Power Saver
Limits performance to save energy and reduce operating cost.
·         Deployments with limited power budgets
·         Thermal constraints
Caps processor frequency at a percentage of maximum (if supported), and enables other energy-saving features.

Dear Reader I’m going to tell you right now, Balanced is not recommended.  High Performance is.  If you’re not sure why go read Glenn and Brent’s blogs about Green options and how they will hinder your CPU performance.

Now don’t get me wrong I’m all about the environment, I love me some outside, but when I have a server in a rack the only option for me is High Performance.  

The fact that Balanced is the DEFAULT is a HUGE MISTAKE in my opinion.  If you know how to find and change your power settings, have done the due diligence to understand what your usage consumption is vs. your peak hours, and care about the cost of your data center to the point that this matters, then change it.  Also stop reading here.

If like most of us you have a DAY job, get really busy, and expect your server to perform with the power and performance you purchased it at, then keep reading.

I used CPU-Z to find a couple of facts out right away.  

My server with 24 cores each running at 2.5 GHZ is running at 1.1 GHZ.  YIKES!  That’s ½ of this expensive box that we paid for.  So now I’m going to open up a Command Prompt in Administrator Mode. 

To do this go to the upper right hand corner, get the Spy Glass Icon, and type cmd, Right Click on the Icon instead of Clicking on it, and then click the option at the bottom of the screen that says Run As Administrator. (You can also pin this to the start tiles window, but one thing at a time).

Now in our Command Prompt type powercfg –LIST to see all of the active plans.  Your currently selected plan will be denoted with an *.

We can see that Balanced is currently select, as this is the default out of the box configuration.  So let’s change this.  Make note of the GUID above because you’re going to need it.  The command is powercfg –SETACTIVE <guidoftheplanyouwant>.

We run another powercfg –LIST to check our options and we see that High Performance is now our default.   Another look at CPU-Z and everything looks right as rain.


For more on this subject Dear Reader, visit the Windows Technet site on How to Set the Default Power Plan for Windows 2012 by clicking here

As for Windows Server 2012 I must profess, despite the out of the box options, I like it.  Always on is more stable, It reads ISO files without a 3rd party installer, and while the interface is different I’ve been able to find a lot of configuration items that were previously in hard to reach places.  Basically more blogs to come.

As Always Dear Reader Thanks for Stopping by and I hope this helps you get the most out of your server!



Thursday, January 24, 2013

I'm an Administrator Why Can't I Copy Files

Hello Dear Reader!  I've been working on setting up a virtual environment for quite some time. When last I wrote about it, I described issues I was having due to cloning the same server that I had set up as my Domain Controller, Dude Where Did my AD Account Go? Troubleshooting Duplicate SID’s. 

Well I’ve gotten further down the road and today I was setting up some new servers to do some work with Availability Groups.  The Servers were cloned, SID’s were different from the Domain Controller, I renamed the servers, added them to the domain, set up my additional hard drives, and started copying over SQL Server files for the installation.  Then I get this error.

“So Balls”, you say, “did you remember to add your domain account as a Local Admin?”

Excellent question Dear Reader, you’re on your game today!  I did.  I even logged on as the local server’s Administrator and double check that my account was listed in the Administrators group.

Initially the way I had gotten around this error was by logging in as the Local Server Administrator.  I found that account had all the correct permissions.  This wasn’t a satisfying resolution.  If I didn’t have access to copy files, what else was I missing?  Would this cause an issue with my SQL Installation?

Help me help You Windows!  HELP ME HELP YOU!

I was stumped, so I turned to the Intrawebs.  Google/Binging the error message got me some results.   The first couple links didn’t help.  Then I came across a message board from the Windows Server forums, Destination Folder Access Denied – Copying file to root of C:\.

I wasn’t trying to access my C:\ but these steps worked for me.  I’m going to detail out the same steps that Rick Tan did in the forum post.

First open up run and type in gpedit.msc to open the Group Policy Manager.

Next expand the tree by Windows Settings | Security Settings | Local Policies | Security Options.  Scroll to the bottom we are looking for Policies that begin with User Account Control.   First up User Account Control: Behavior of the elevation prompt for administrators.    

You may not want to disable this on your server at work, but these are my VM’s.  I’ve given my account Server Admin level access.  I don’t want to have to answer a prompt every time I need to do Administrative things.  We want to set this to elevate without prompting.

Click OK and let’s move on to our next one.  User Account Control: Detect application installations and prompt for elevation.  Okay I’m an Admin.  I’m going to install things on my server.  Otherwise this account wouldn’t be an Admin.  Let’s disable this, I don’t want to be prompted with “are you sure?” every time I try to install something.

Click okay and now onto User Account Control:  Run all administrators in Admin Approval Mode.  Seriously?  How many times do I need to say I’m sure this Admin account is an Admin?

Click Disabled and OK.  So once we change these policies you no longer get the annoying ARE YOU SURE, ARE YOU SURE?, ARE YOU SURE?,prompts.  Sometimes you just want to yell!  I’m an Administrator, I granted this account Admin access.  YES! IT’S A F#(%ING ADMIN!

“So Balls,” you say, “You okay there?”

Sorry Dear Reader, redundant security frustrates me.  The steps worked for me though.  When I try to copy over SP1 for SQL 2012 it succeeds.  Refreshingly enough, I don't get prompted to ensure I wanted to really run the item I double clicked on.  What a wonderful world.

For these settings to take affect a reboot will be required.  So now it's time to sit back, and enjoy a pop up free world.  As always Dear Reader, Thanks for stopping by!



Tuesday, January 22, 2013

Pro SQL Server 2012 Practices Chapter 18 Review Tuning for Peak Load

I'm on a Book!

Hello Dear Reader, early last year I was asked if I would like to contribute to a book.  The concept was get a lot of really great SQL People together and let them write a chapter on a subject that they were passionate about.  Eighteen different top SQL professional’s, at least two MCM’s, many MVP’s, Shake Stir and you get our book, Pro SQL Server 2012 Practices.

Having only written once chapter I hadn’t read the others.  I had an idea I’d read the chapters and then blog reviews.  I shared this idea with Mr. Grant Fritchey (@GrantFritchey|Blog), check out his review of Chapter 12 yesterday,  and he suggested that we get all of the authors to blog reviews.  A lot of people signed on and we’re releasing our reviews one at a time. 

My first review is on Ben Debow’s (@BBQSQL | Website) chapter Tuning for Peak Load.  Ben is a co-founder of SQLHA with MVP Alan Hirt(@SQLHA | Blog).  Ben is a speaker, very active in the SQL Community, and an all around expert.

“So Balls,” you say, “Get to the review all ready!”

Alright Dear Reader, away we go!


Ben does an amazing job of stepping through many different tools that you can use to assess your environment.  First Ben identifies what Peak Load is.  He talks about the people that should be involved in the process of identifying and tuning for this period, and really steps through the business logic of why these different people should be involved.  Your mileage may vary based on how large or small your shop is, but in bigger shops he is spot on.  He goes on to talk about how you identify where you are today.

This is an important concept.  You cannot measure improvements, or if changes were detrimental, without first knowing as much as possible about your current environment.  We start at a 10,000 foot view of a setting up a topology diagram, Ben also lists a detailed table of Attributes to gather on your servers.  Next up we begin doing a performance assessment.

Ben weaves his way through Perfmon, gives you counters to monitor, and reasons for why you would want to collect them.  We move into a discussion of how to gather profiler data and recommendations what counters you would want to collect.

We move next into Observations.  Ben walks through metric’s he has collected and what they tell him.  This is invaluable to a DBA.  You often hear professionals say “Collect this data” if you’re lucky you hear them say “You want these numbers”, in this case he tells you how he interprets the numbers and what they could mean.  I’m stressing could, because this will help you in diagnosing your server, but each environment will be different.

We move into using PAL,, to interpret and report on our Perfmon counters we’ve been collecting.  A quick aside if you want to set up PAL and get it working  read the documentation, there are two add ins.  One is tools for Office 2013 Web Components, another is Microsoft Log Parser, not listed but required as well is Microsoft Chart Controls for Microsoft.NET Framework 3.5.  If you do not have that last one you’ll get a nice little .NET error when trying to generate the report.

From there we move onto DMV’s and gathering index statistics.  Ben discusses gathering Index Usage Statistics from sys.dm_db_index_operational_stats, no script is listed to verify, but the columns discussed are from sys.dm_db_index_usage_stats.  As long as you get the right DMV the content is solid and I found the Costly Indexes description very interesting!

Finally Ben helps you devise a plan to actually implement the analysis into a plan you can implement.  The thing I love is that you can ask 20 brilliant SQL minds to do the same thing, and you’ll get 20 different variations of the same thing.  Ben looks for some things that I had not considered.  I enjoyed the chapter immensely and look forward to implementing what I’ve learned.

If you pick up the book please feel free to drop me a line and tell me what you think!

As always Thank You for stopping by!