Database //

By: Fiebert  09-12-2011
Keywords: Monitor, Trending, Thresholds,

Lets jump into a practical example of openrowset in action. A common issue among dataservers is disk space so it only makes sense to monitor for thresholds so that you can fix an issue before it becomes an emergency. Thresholds are great, and you probably have an alerting tool like HP Service Center to take care of that for you. However, what about trending and proactive issue resolution?

When you must maintain hundreds of machines, space trending is practically a requirement. You will likely want to monitor (and trend) disk space on the database level as well, and we will get to that in a separate post.

First, my approach toward the openrowset:

SET @LocalQuery = ‘
INSERT INTO #freeSpace
OPENROWSET(‘‘SQLNCLI’‘, ‘‘Server=’ + @RemoteInstance + ‘;Trusted_Connection=yes;’‘,’” + @RemoteQuery + ”‘); ‘
EXEC master.sp_executesql @LocalQuery

Here, we figure we will try and keep everything as dynamic as possible. The only real things we need to specify are the driver and that this will be a trusted connection. We will construct the remote query dynamically in the code before openrowset and the remote instance will be passed into the instance upon execution (exec p_get_drive_details ‘HOSTNAME\INSTANCENAME’).

SET @RemoteQuery = ‘SET NOCOUNT ON; SET FMTONLY OFF; exec master.xp_fixeddrives’

To setup, first create a table drive_details with columns for: Date, InstanceName, DriveLetter, TotalMB, FreeMB

After that, create the procedure and run. In our crawler, which we will discuss later, we can loop through all of our available instances (we will get into error checking later too).

Bonus: Create a view on top of your table called drive_details_recent and have it just show the last run. This way we can have a history table for trending yet quickly look up the most recent info for either displaying on a front end or to just hide old data from view.

Keywords: Monitor, Thresholds, Trending

Other products and services from Fiebert


Rants //

The problem is this time that I don’t have the option to edit the code after the query has been returned, I need the actual query results to have NULL removed from them. Now this isn’t the first time I’ve gotten NULL as a result and usually my code has an if statement in there to swap out the NULL values with zero. You can use COALESCE in any part of your query, it doesn’t only have to be where you specify the columns you want returned.



This would return true for every row giving us every single credit card number in the table, and a similar attack would work equally well on an INSERT, DELETE or UPDATE query. PHP has two built in functions addslashes and stripslashes, however you must add slashes to every incoming variable and strip the slashes off of every outgoing variable.


Interesting //

Write a query for this table to display all user access however if a user is a “Super User”, only display the one row for them demonstrating that they are a “Super User”. I was asked this question a few months ago and liked it due to its simplicity, and how it can be done on paper which is how we’ve been administering our interview tests. Often times a user is given access to multiple packages only to later be given “Super User” access.


The Site //

First, I’m going to redesign the site to fit more of where I see it going, then I’ll show you my current project cinder, which is basically a random name for the existing project that I came up with right now. Whether or not it worked is another story but I’ve got “The Job” so I think it is about time to repurpose the site. It goes along with the whole computer agnostic trend the web has taken these days.


Wordpress //

I’ve totally redesigned / restructured the site from the last theme with high hopes that I can make a solid foundation to build on in the future. I like it because it’s fully extensible and very easy to build on using just the theme alone. I’ve spent a lot of time lately working with wordpress and it’s pretty awesome.