Click here to Skip to main content
15,892,537 members
Articles / Programming Languages / C++/CLI

xp_regex: Regular Expressions in SQL Server 2000

Rate me:
Please Sign up or sign in to vote.
4.95/5 (33 votes)
6 Oct 20035 min read 466K   2.6K   86  
This is a SQL Server 2000 Extended Stored Procedure writted in Managed C++. It allows you to use regular expressions in T-SQL.
/*
xp_regex. A Regular Expressions extended stored procedure for use with Microsoft SQL Server.
Copyright (C) 2003 Dan Farino (dfarino@bigfoot.com)

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

#include "stdafx.h"

#define XP_REGEX_USING_PERF_COUNTERS

#ifdef XP_REGEX_USING_PERF_COUNTERS

using namespace System;
using namespace System::Diagnostics;

public __gc class CPerfCounters
{
public:
	static CPerfCounters()
	{
		// delete the category if it exists
		if (PerformanceCounterCategory::Exists( S"xp_regex" ) )
            PerformanceCounterCategory::Delete( S"xp_regex" );

		CounterCreationDataCollection *ccdCol = new CounterCreationDataCollection();

		// split cache hits total
		CounterCreationData *ccd = new CounterCreationData(
			S"Split Cache Hits",
			S"Total split cache hits",
			PerformanceCounterType::NumberOfItems32
			);
		ccdCol->Add( ccd );

		// split cache misses total
		ccd = new CounterCreationData(
			S"Split Cache Misses",
			S"Total split cache misses",
			PerformanceCounterType::NumberOfItems32
			);
		ccdCol->Add( ccd );

		// cache creations (since it is stored as a WeakReference and may be deleted at any time)
		ccd = new CounterCreationData(
			S"Split Cache Creations",
			S"Total times a new split cache has been created",
			PerformanceCounterType::NumberOfItems32
			);
		ccdCol->Add( ccd );

		// total calls
		ccd = new CounterCreationData(
			S"Total Calls",
			S"Total times xp_regex_... has been called",
			PerformanceCounterType::NumberOfItems32
			);
		ccdCol->Add( ccd );

		// total calls
		ccd = new CounterCreationData(
			S"Total Calls/s",
			S"Total times xp_regex_... has been called per second",
			PerformanceCounterType::RateOfCountsPerSecond32
			);
		ccdCol->Add( ccd );

		// create the category
		PerformanceCounterCategory::Create(
			S"xp_regex",
			S"Monitor the xp_regex Extended Stored Procedure",
			ccdCol
			);

		cacheHitsCounter = new PerformanceCounter( S"xp_regex", S"Split Cache Hits", false );
		cacheMissCounter = new PerformanceCounter( S"xp_regex", S"Split Cache Misses", false );
		cacheCreateCounter = new PerformanceCounter( S"xp_regex", S"Split Cache Creations", false );
		totalCallsCounter = new PerformanceCounter( S"xp_regex", S"Total Calls", false );
		totalCallsPerSecCounter = new PerformanceCounter( S"xp_regex", S"Total Calls/s", false );
	}

	static PerformanceCounter* cacheHitsCounter;
	static PerformanceCounter* cacheMissCounter;
	static PerformanceCounter* cacheCreateCounter;
	static PerformanceCounter* totalCallsCounter;
	static PerformanceCounter* totalCallsPerSecCounter;
};

#endif

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions