What Does This Little Check Box Do

Ever wander around SQL Server properties and wonder what these little check boxes turn on? I do, and I get very tempted to check them. Here is one of those tempting little boxes that seems pretty handy. Use query governor to prevent long-running queries.

SQL Server properties

Syntax

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'query governor cost limit', 180;
GO
RECONFIGURE;
GO

How Does it Work?

It’s simple. This option, available in SQL Server 2008 standard and forward, will prevent long-running queries based on run time measured in seconds. If I specify a value of 180 the query governor will not allow any execution of a query that it estimates will exceed that value. Notice it says ESTIMATES which means it will be based on optimizer estimates and not ACTUAL run times. It does NOT KILL an actively running query after a designated amount of time. There is no worries about rollback scenarios or partial data.

Caution

This is an advanced option, keep in mind this is a server instance-wide option. This will also affect your maintenance queries, so please use with caution, this is not “a let me check this box for fun” option.

But Wait There’s More

Now there is a query “transaction” based option available to us that will limit a specific query. This option will estimate a transaction and prevent it from running if it goes over the boundary we have set. Notice we set the limit before the query and then back to 0 after.

SET QUERY_GOVERNOR_COST_LIMIT 180
SELECT * FROM REALLYBADTABLE
SET QUERY_GOVERNOR_COST_LIMIT 0

Again, playing with any old check box is not a recommended practice. Make sure you research it first and understand the full impact before checking that tempting little box.


Similar Articles
Denny Cherry and Associates
Expert Consultants From HA to DR to up-time to SQL virtualization to scalability.