Showing posts with label Windows Server. Show all posts
Showing posts with label Windows Server. Show all posts

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!



Friday, December 21, 2012

Dude Where Did my AD Account Go? Troubleshooting Duplicate SID's.

Hello Dear Reader!  I've been working on Setting up a Virtual Lab in using Virtual Box on my work laptop.  I originally thought of blogging through all of this but I've had a few issues.  I stepped away from this project at one point in time and was using a personal one.  However I really want to get this work on my Pragmatic Works laptop.

I may go back and do a step by step once I've got my feet underneath me, but for now I'll just be happy to have this up and running.

I've finally gotten my Domain Controller Online, Added two Servers to my Domain, and then I wanted to add a Domain Account as an Admin to each Server.  

So I logged onto the sever using the local admin, opened up Server Manager, opened up the Configuration tree, Opened Local Users and Groups, and Clicked on Administrators.

As I expected only the local admin account and a local SQL Server Account, that I'll be replacing with a domain account.

So I click add, type in SQLBalls, Authenticate to my domain to get the account added, and everything looks good.  I hit OK.

Hey where'd my AD account go?

So I went through the whole process again.  Click Add, added SQLBalls, validated against the Domain Controller, and then I get this error.

Well if my account is already in the group, then why isn't is showing up.  So I turn to trusty old DOS and open a Command Prompt Window and run net localgroup "administrators".

Sure enough my domain account is not in there.  It didn't take much searching on the Intrawebs to find other people with my issue.  After a little while I found people encountering this error when they had Cloned a VM.

The Domain Controller and the VM had the same SID's, Security Identifiers.  So to validate this I went and grabbed the handy sysinernals tool PSGetSID, to get this click here.  

Once I had downloaded this to my software share I put it on my Domain Controller and one of my other Servers.  I extracted it to a folder called PSGetSID, I know *how original*, navigated to the folder, and typed in psgetsid.

Now that I know what my SID for my Domain Controller is I need to find it for my other computer.  I extract the files and run the command and VOILA!

Sure enough I have duplicate SID's.  If you notice up at the top the Account name has a SID after it, before I click OK and it disappears.  That SID is the same one as both of my computers.


So duplicate SID's are preventing me from adding one AD account to other computers on my domain. I had set up an image of Windows 2008 R2 that was my base image.  I had been keeping the widows update current, but I left it pretty much alone.  I would clone it before I taught a class, did a presentation, or experimented on really f***ing up doing non best practice things on my computer.

So Cloning the same image to make my Domain Controller led to this error.

"So Balls", you say, "How do you fix it?  And isn't there a better way to do things."

Yes Dear Reader there is.  I was saved by this blog by Ilija Brajkovic.  There is a tool called sysprep.  I should have run that before to clean up my base image before cloning it.  Now I can use it to change my SID.  I start out by pulling up run and typing in sysprep and click OK.

It will open up sysprep in it's windows folder.  I then double click on the sysprep.exe in order to launch the application.

Now that sysprep is open I make sure OOBE is selected, I need to click Generalize in order to generate a new SID, and I will also select Reboot.  Then Click OK. This ran very quickly for me.

As Ilija notes there will be some additional information to enter on reboot.  Note *I SHOULD HAVE DONE THIS RIGHT AFTER CLONING*  After reboot You will get prompted for the language choice.  *Warning this will reset your image to a factory setting, if you already have SQL Server Installed this will erase the instance.  This will detach drives, this will reset your TCP/IP Settings.  DO NOT DO THIS IF YOU DO NOT WANT TO WIPE CLEAN YOUR VM*

Then you check the box to Accepte the Agreement.

Then wait while your settings are finalized.

When I log back in my VM has been reset, hence the Enter System Out-of-Box Experience.  The software I had installed is still there. But I'm no longer on the domain, my computer name is changed, and hopefully my SID is different.  Lets run PSGetSID to validate that.

Excellent!  I've got my new SID.  I need to set my NIC card again to be on the right network, rename my server, add it to the domain, and reboot.  After that I can go back into the setup for my AD groups and add my User Account.

This time when I click OK it doesn't go away.  Alright Dear Reader, I hope you enjoyed this one, it was a lot of fun to figure it out!