Wednesday, May 21, 2014

A New Adventure (Part Two)



Getting Ready for the Track


She's in her track clothes now!
In my first post of this series, I laid out the plan to shift from riding on the road to the racetrack.  I’m not there yet, but I’ve made a ton of progress since then.  I’ve bought the bike and trailer, back protector, new gloves, and I am finalizing my order for new leathers with Comet Racing.  I’ve also made quite a bit of progress on preparing the bike for the track.  

I’ve definitely learned an important lesson this far along in the process: it’s expensive!  Granted, I haven’t exactly gone the budget route with this project.  I could have spent about half as much on the bike, and still had something perfectly acceptable for the track.  Given the wide range of bike options and rider preferences, I’m not going to focus on the bike aside from the track preparations.  I had also budgeted for the gear replacements and upgrades, and I truly believe that it’s worth it to buy the best of anything that might one day save my skin.  The expenses that I’ve really been feeling have been the “nickel and dime” sort of thing.  I’ve had to make several runs to The Home Depot for little stuff, tools, zip ties, towing accessories, and what not.  

Bike Prep


After 10 days on the road with the SQL Sentry team for the PASS Business Analytics Conference and Microsoft Tech Ed North America, much of my weekend was spent getting the bike ready.  I purchased the bike with a full set of Sharkskinz race bodywork, so that was a big plus.  I did have to pull all of the street parts, tie up some wires, and mount the race plastics.  Wow!  There are a ton of pieces to the street plastics on the ZX10R!  I took off 25 or so pieces of bodywork.  They were replaced with four!  I’m planning to sell the street plastics, mirrors, and lights to recoup some of my costs.

Who blew up a motorcycle in my living room?


 What’s left to do: 

  • Safety Wire
  • Replace coolant with distilled water and Water Wetter
  • Change numbers, and maybe add some other cosmetic touches.

New Gear


As I mentioned earlier, I’ve been getting some new gear.  I’ll be sure to review all of these in a future post.

Gloves:

I’m going to get my old set of Held Phantom IIs repaired, but went ahead and ordered another set from Revzilla since Held’s USA distributor went out of business a few months ago.  I love the Phantoms and wanted to grab another set while I could still get them from a US retailer.  Not having to order from Europe saves on duties and an unfavorable exchange rate.

Back Protector:

My Forcefield Pro Sub 4 arrived while I was out of town.  I needed it before I could order my custom leathers, since I wanted to be able to wear it when I had all of my measurements taken.  My initial impression is that it’s very well made and quite comfortable. 

Leathers:

My new suit took a lot more research, and will be another month or so before it arrives.  I can’t fit my back protector under my old Joe Rocket suit, and it’s due for replacement anyway.  I’m sure there are off the rack suits out there that would fit me, but here in Charlotte, NC there are very few places that stock high end suits.  After riding for the last year with gloves made from kangaroo leather, I decided to focus my search on a kangaroo suit.  This further limited my options, and led to my investigation of custom suit manufacturers.  Most of the custom suit makers are small businesses with overseas production facilities, so it was important to me to find one with good customer service and a solid reputation.  

After speaking with staff at several others, I ended up going with Comet Racing Leathers.  After a few emails and a lengthy phone conversation with Karl, the owner, I’m sold.  I’m actually sold enough that I’m signed up for their track day ambassador program, which will make me a field representative for the company.  This did get me a discount on my suit, but I would have purchased one even without the deal.  Customer service and responsiveness are very important to me, and Karl has that side of things well-covered.  I’ll be posting a more thorough review on the suit and purchase process once it arrives in about a month.   



I went for one of Comet’s raciest suits, the Apex Pro, in Kangaroo.  I’m going to use their red/black color scheme as a base for my design, but we’re going to go a bit further and have some fun with it! 

Monday, May 19, 2014

As a SQL Server DBA, Why Do I Need Performance Advisor for Windows?



Performance Advisor for Windows for the SQL Server DBA


SQL Sentry Performance Advisor (PA) for Windows is one of our newer product offerings, and I think one that could use a little bit of use-case clarification.  I am often asked questions like this: “Why would I need Performance Advisor for Windows when Performance Advisor for SQL Server already shows me Windows metrics?”
There are several possible answers to this question.
  • You really don’t need it, PA for SQL Server has you covered.
  • You need visibility into other Windows Servers that aren’t monitored by Performance Advisor for SQL Server.
  • You need additional visibility into other things running on one or more of your monitored SQL Servers.
Before we talk about each of the three answers above, let’s go over what Performance Advisor for Windows does:
  • Adds the Processes Tab.
  • Adds process group highlighting to the PA Dashboard.
  • Allows monitoring of any Windows machine with the Windows portion of the PA Dashboard and the Processes Tab.

You really don’t need it, PA for SQL Server has you covered.

The bright green for "other" here really doesn't have much of a story to tell.

This is the easy one.  In the case of a standalone SQL Server instance with few to no other running services aside from the OS, you probably don’t need PA for Windows, as there 
won’t be a need to see details on the “other” Network, CPU, and Memory metrics very often.  In this case, you are probably going to be just fine with PA for SQL Server by itself.

You need visibility into other Windows Servers that aren’t monitored by Performance Advisor for SQL Server.

PA for Windows gives you live and historical performance monitoring for any Windows Server

There are lots of use cases for this.  If you are responsible for monitoring other servers in the environment that aren’t running SQL Server, PA for Windows offers a great solution.  Often, for users of PA for SQL Server these are servers that interact with your SQL Servers: VM Hosts, Sharepoint Farm Servers, App Servers, Servers used in ETL processes, and so on.  This is helpful because a SQL Sentry user can create consolidated views of related servers, and easily drill into problems.

You need additional visibility into other things running on one or more of your monitored SQL Servers.

That's better!  Now we have visibility into other process groups on the dashboard.

The processes tab gives even more details.
If you find yourself wondering what makes up the “Other” category that you see on the PA for SQL Server dashboard, those details can be collected and shown by PA for Windows.  Well-known processes will have predefined color highlights, and highlights for other processes not automatically recognized by SQL Sentry can be created with a quick update to the SQL Sentry Database.  Detailed utilization metrics are also available on the Processes tab which is also available in the Jump To menu for drilldown.  This gives the user a way to see what is happening with processes like Reporting Services, Integration Services, Internet Information Services, third-party backup tools, and other things that might be running alongside the SQL Server process.

I hope this helps clear up the use cases, and what PA for Windows adds to servers already monitored by PA for SQL Server.  Please comment or contact us with any questions.

Thursday, May 1, 2014

A New Adventure




Motorcycles have been my primary hobby (obsession?) for nearly 14 years.  I’ve logged many thousands of miles on many different bikes.  Little did I know when I started that something I took up on a whim would become such a defining part of my life.
  
I had a very early brush with the dangers of riding a motorcycle when a month and a half into my riding career I was rear-ended at a stoplight by a pickup truck doing about 35 mph.  I was okay for the most part, as I was thrown clear and landed on the roof of the car in front of me.  After about 12 years of safe rides, the risks caught up to me again last July, an experience I wrote about here.  Neither of these really phased me, even the July crash which resulted in some pretty painful injuries.  I was back on a bike in a few weeks, considerably sooner than I should have been!

Now, less than a year later, I’ve had another freak accident due to a likely mechanical failure (hard to diagnose since the part I think failed was completely destroyed).  I walked away from this one completely uninjured, but with a very changed mindset.  Truth be told, I’m not sure where the seeds of this idea came from, but it started before the crash.  All I know is that it’s time to make a change.  Motorcycles are a part of me, and I don’t see that changing.  That said, sportbike riding on the street is drifting outside of my risk tolerance. 

A number of things have combined to push those risks up over the years.  Traffic is increasing, drivers seem to be increasingly distracted, road conditions are getting worse, and law enforcement is becoming increasingly aggressive in targeting even the riders that go out to the middle of nowhere to play around.  These are all factors that I don’t control. 

One factor that I do control is that over the years, my riding ability has increased to the point that I’ve got to go too fast to continue to challenge myself and get the adrenaline rush of days past.  I’m not the guy that’s flying by you on the highway like you’re standing still, while riding a wheelie in shorts and flip flops…that’s never been my way.  I’m the rider you probably never see speeding, because I’m looking for roads with lots of twists and turns and no traffic.  I’m also the guy you probably pass in traffic on my way to or from those roads and wonder why he’s wearing full leathers, gloves, and boots in 90 degree heat.  Despite taking every possible safety measure, nothing is going to adequately protect a human being from a car, tree, guardrail, or other solid object at speed.  It doesn’t take going 100+ mph to get hurt either.  I was only doing about 40 when I went down in July, and I broke a clavicle, two ribs, and had hairline fractures in two vertebrae.  Had I not been in full leathers and wearing a top-quality helmet, my injuries would likely have been much worse.

“Get to the point already!  Where does this lead?”


To the racetrack!

My first day on the track at Virginia International Raceway in 2002 doing California Superbike School
To anyone who hasn’t spent time on the track, that probably sounds completely ridiculous as a risk management strategy.  The fact is though; going fast on the track is safer than even going slowly on the street.  It’s a controlled environment: there are no cars, everyone goes the same direction, the surface is carefully maintained and kept clean, there is designed runoff area should someone go down, safety rules are strictly enforced, and there are emergency services on site should something go wrong.  The racetrack completely eliminates the concerns about getting a speeding ticket as well.

What’s it going to take to make the change?


Here’s my list so far:
  •  Track bike - I’m buying a 2012 Kawasaki ZX10R that’s already got most of the track prep done.
    • This probably isn’t the best “starter” track bike, but I’m accustomed to and really like power!
    •  I’ll post a follow up once I have the bike.
  • Trailer – Comes with the bike.   
  • Trailer hitch – no big deal.
  • New leathers – looking for a custom, made-to-measure  suit. 
    • I already have most of my gear, but my suit’s about 13 years old, time for a new one.
    • Stay tuned for a future post on this purchase, and a review once I get my suit.
  • Back protector – Just ordered a Forcefield Pro Sub 4 from Competition Accessories 
    • These are supposed to be the best thing out there right now, review to come.
  • Spare parts, tools, gas, and tires.

Once I have everything together, I’ll be doing track days and racing schools all over the Southeastern US.  I'm already booked to repeat level 1 of California Superbike School at Virginia International Raceway in August.  At some point, I’ll probably do some competition as well, but that’s still a ways off.

I picked up a couple of GoPro cameras this winter, so reviews and track stuff will all be getting upgraded to video coverage going forward. Stay tuned!


Tuesday, November 19, 2013

Simplify your on-call hours with automated response from SQL Sentry

For many DBAs and other IT professionals, on-call hours are part of the job.  Keeping critical servers and applications running 24/7 requires the ability to respond to problems at any time of day.  This usually means that a call or page to the on-call administrator when something does go wrong off-hours.  With SQL Sentry's extensive automated alerting and response capabilities, this isn't always necessary.  Let's take a look at how it works.

Automated response types:



There are four different responses that I'm going to focus on for this post: Execute Job, Execute Process, Execute SQL, and Run QuickTrace.  We will also look at using some notifications alongside them.  Let's start by examining the capabilites of each in detail.

Execute Job


The Execute Job action can be used to execute a SQL Agent job on the current server, or any other watched server in your enterprise. This action effectively enables you to create simple "one-to-one" job chains by associating it with Job Completed, Success, or Failure conditions.  SQL Sentry Event Manager users can also create more advanced job workflows using Event Chaining, but that's a topic for another post.

Execute Job is my favorite response type because I can wrap almost anything in a job, and the job itself is monitored by Event Manager.  This allows me to not only automate a response, but very easily configure a Send Email or Send Page notification in case of a failure in my automated response.

Execute Process


The Execute Process action can be used to execute any executable or batch file against any of your monitored servers.  This option does require xp_cmdshell to be enabled on the server, so this is not always an option.

Execute SQL


The Execute SQL action executes any T-SQL statement(s) against any of your monitored servers.  This option is very flexible, able to respond to pretty much anything you can anticipate and write a script or stored procedure to resolve.  The upside to this versus Execute Job is that you do not have to create an object on the server.  The downside is that it is a little bit more complicated to build a notification to respond to issues with your automated response. 

Run QuickTrace

Sometimes you have a recurring issue that some extra trace data would be helpful to resolve, but it is hard to predict when the issue will happen.  Run QuickTrace is for this kind of scenario, as it allows you to run a short-term trace in response to the event occurring.  This allows you to minimize the amount of time the trace has to run against the server, and the amount of data that needs to be sifted through to analyze the problem.

The Quick Trace runs for a short time, I usually set its duration for 10-30 seconds, and grabs everything running against the server at either the batch or statement event level.  You can also specify a rowcount limit for the trace, limiting the amount of data collected.

The QuickTrace is unfiltered and collects a broad range of data columns.  This is something we would typically think of as being fairly high-impact from a standpoint of overhead on the server,and certainly something we would be very resistant to firing off from Profiler as a client-side trace.  SQL Sentry has a number of different safeguards and optimizations to reduce that overhead.  I won't bore you with the details here, but they're all available in the SQL Sentry User Guide.

Configuring an example in SQL Sentry:

Let's take a look at one possible example using my demo environment. 

First, we need a problem to solve. For our example, I have built an automated response to handle a failure of my nightly full backup job on one of my monitored SQL Server instances.  I created a second backup job for my automated response, and it backs up to an alternate storage location.  This way, if my primary backup location runs out of space, or there is some other issue, we can retry to an alternate location.  In this case, I wouldn't disable the failed job email alert that I have configured globally, because I do want to know that my backup isn't going to be in its usual location.  Let's take a look at how I configured it:

Click to enlarge.  On the left, I've configured the Execute Job action on failure to start the alternate backup job.  On the right, I set a Send Page alert targeting both of my call groups and the help desk so a high-priority notification goes out if the alternate backup should fail as well.

This is just a simple example, but outlines one of the many ways you can have SQL Sentry automate response to events to save aggravation and ensure that problems are resolved quickly.