<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>youdidwhatwithtsql.com</title>
	<atom:link href="http://www.youdidwhatwithtsql.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.youdidwhatwithtsql.com</link>
	<description>making DBAs everywhere curse!</description>
	<lastBuildDate>Fri, 18 May 2012 14:07:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Monitoring Windows with NSClient++</title>
		<link>http://www.youdidwhatwithtsql.com/monitoring-windows-nsclient/1479</link>
		<comments>http://www.youdidwhatwithtsql.com/monitoring-windows-nsclient/1479#comments</comments>
		<pubDate>Fri, 18 May 2012 13:59:49 +0000</pubDate>
		<dc:creator>Rhys</dc:creator>
				<category><![CDATA[Nagios]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[nsclient++]]></category>
		<category><![CDATA[nscp]]></category>

		<guid isPermaLink="false">http://www.youdidwhatwithtsql.com/?p=1479</guid>
		<description><![CDATA[I&#8217;ve been playing with Nagios recently and have been using NSClient++ to monitor Windows machines. In some places the documentation wasn&#8217;t too great so I thought I&#8217;d outline some service checks I&#8217;ve got working here. The service definitions here would normally be defined on the Nagios host not on the Windows box itself. Check Windows [...]<p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/monitoring-windows-nsclient/1479">Monitoring Windows with NSClient++</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing with <a title="Nagios" href="http://www.nagios.org/" target="_blank">Nagios</a> recently and have been using <a title="NSClient++ for Nagios" href="http://www.nsclient.org/nscp/" target="_blank">NSClient++</a> to monitor Windows machines. In some places the documentation wasn&#8217;t too great so I thought I&#8217;d outline some service checks I&#8217;ve got working here. The service definitions here would normally be defined on the Nagios host not on the Windows box itself.</p>
<p><strong>Check Windows Memory Usage with NSClient++</strong></p>
<p><strong></strong>Warn if memory usage reaches 85%, critical if 90%.</p>
<pre>define service {
        use                     generic-service
        host_name               windoze
        service_description     Memory Usage
        check_command           check_nt!MEMUSE!-w 85 -c 90
        servicegroups           windows
}</pre>
<p><strong>Check Windows Disk Usage with NSClient++</strong></p>
<p><strong></strong>Warn if the disk is 85% full, critical at 90%. It seems there&#8217;s no way to check all disks at once. You have to setup a check for each one separately.</p>
<pre>define service {
        use                     generic-service
        host_name               windoze
        service_description     C:\ Drive Space
        check_command           check_nt!USEDDISKSPACE!-l c -w 85 -c 90
        servicegroups           windows
}</pre>
<p><strong>Check Windows Service is running with NSClient++</strong></p>
<p><strong></strong>This will alert if the MSSQLSERVER service is not running.</p>
<pre>define service {
        use                     generic-service
        host_name               windoze
        service_description     SQL Server Engine
        check_command           check_nt!SERVICESTATE!-d SHOWALL -l MSSQLSERVER
        servicegroups           sql-server
}</pre>
<p><strong>Check a Windows Executable is running with NSClient++</strong></p>
<p><strong></strong>This will check that the process sqlservr.exe is running.</p>
<pre>define service {
        use                     generic-service
        host_name               windoze
        service_description     Process Check Test
        check_command           check_nt!PROCSTATE!-d SHOWALL -l sqlservr.exe=started
        servicegroups           windows
}</pre>
<p><strong>Check SQL Server CPU Time with NSClient++</strong></p>
<p>This check accesses Windows performance counters. Documentation on this wasn&#8217;t great. Consult the list of counters in perfmon.exe for what&#8217;s available. Two backslahes are needed.</p>
<pre>define service {
        use                     generic-service
        host_name               windoze
        service_description     Perf CPU Counter Test
        check_command           check_nt!COUNTER!-l "\\Process(sqlservr)\\% Processor Time","CPU Time for sqlservr is %.f.0 %%","Processor Time"
        servicegroups           windows
}</pre>
<p><strong> Check SQL Server Memory Working Set with NSClient++</strong></p>
<p>Virtually the same setup as the previous check. Just a different counter is accessed to return the memory used by SQL Server.</p>
<pre>define service {
        use                     generic-service
        host_name               windoze
        service_description     Perf Mem Counter Test
        check_command           check_nt!COUNTER! -d SHOWALL -l "\\Process(sqlservr)\\Working Set","Mem Working Set for sqlservr is %.f.0","Working Set"
        servicegroups           windows
}</pre>
<p><strong>Check SQL Server User Connections with NSClient++</strong></p>
<p>Another performance monitor counter check. This one returns the number of user connections to the SQL Server instance.</p>
<pre>define service {
        use                     generic-service
        host_name               windoze
        service_description     SQL Server User Connections
        check_command           check_nt!COUNTER!-d SHOWALL -l "\\SQLServer:General Statistics\\User Connections","Number of Users: %.f",Users
        servicegroups           sql-server
}</pre>
<p><map name='google_ad_map_1479_a45beff5d2e172f6'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/1479?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_1479_a45beff5d2e172f6' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=1479&amp;url=http%3A%2F%2Fwww.youdidwhatwithtsql.com%2Fmonitoring-windows-nsclient%2F1479' title="Monitoring Windows with NSClient++ " alt=" Monitoring Windows with NSClient++ " /></p><p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/monitoring-windows-nsclient/1479">Monitoring Windows with NSClient++</a></p>
<div class="none"><div class="g-plusone" data-href="http://www.youdidwhatwithtsql.com/monitoring-windows-nsclient/1479" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://www.youdidwhatwithtsql.com/monitoring-windows-nsclient/1479/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nagios timeperiod for Bank Holidays</title>
		<link>http://www.youdidwhatwithtsql.com/nagios-timeperiod-bank-holidays/1475</link>
		<comments>http://www.youdidwhatwithtsql.com/nagios-timeperiod-bank-holidays/1475#comments</comments>
		<pubDate>Tue, 15 May 2012 14:29:31 +0000</pubDate>
		<dc:creator>Rhys</dc:creator>
				<category><![CDATA[Nagios]]></category>

		<guid isPermaLink="false">http://www.youdidwhatwithtsql.com/?p=1475</guid>
		<description><![CDATA[The Nagios configuration files come with a timeperiod example for US Public holidays but not for good old Blighty! Obviously that won&#8217;t do so here&#8217;s one for England &#38; Wales (sorry Scotland!). define timeperiod { name england-wales-holidays timeperiod_name england-wales-holidays alias England &#38; Wales Holidays january 1 00:00-00:00 ; New Years Day march 29 00:00-00:00 ; [...]<p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/nagios-timeperiod-bank-holidays/1475">Nagios timeperiod for Bank Holidays</a></p>
]]></description>
			<content:encoded><![CDATA[<p>The Nagios configuration files come with a timeperiod example for US Public holidays but not for good old Blighty! Obviously that won&#8217;t do so here&#8217;s one for England &amp; Wales (sorry Scotland!).</p>
<pre>define timeperiod {
	name			england-wales-holidays
	timeperiod_name		england-wales-holidays
	alias			England &amp; Wales Holidays

	january 1		00:00-00:00	; New Years Day
	march 29		00:00-00:00	; Good Friday (Variable) 29 March good for 2013
	april 1			00:00-00:00	; Easter Monday (Variable) 1 April good for 2013
	monday 1 may		00:00-00:00	; May Day Bank Holiday (1st Monday in month)
	monday -1 may		00:00-00:00	; Spring Bank Holiday (Last Monday in month)
	monday -1 august	00:00-00:00	; Late Summer Bank Holiday
	december 25		00:00-00:00	; Public Holiday rolls forward if this falls on a Weekend (Good until 2016)
	december 26		00:00-00:00	; Public Holiday rolls forward if this falls on a Weekend (Good until 2015)
}
</pre>
<p>I never realised <a title="Public Holidays in the United Kingdom" href="http://en.wikipedia.org/wiki/Public_holidays_in_the_United_Kingdom" target="_blank">Scotland</a> had such a variable system for public Holidays so have fun setting that up! Some of the holiday dates here are variable check <a title="England &amp; Wlaes Public Holidays" href="http://www.direct.gov.uk/en/employment/employees/timeoffandholidays/dg_073741" target="_blank">here</a> for details.</p>
<p><map name='google_ad_map_1475_a45beff5d2e172f6'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/1475?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_1475_a45beff5d2e172f6' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=1475&amp;url=http%3A%2F%2Fwww.youdidwhatwithtsql.com%2Fnagios-timeperiod-bank-holidays%2F1475' title="Nagios timeperiod for Bank Holidays" alt=" Nagios timeperiod for Bank Holidays" /></p><p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/nagios-timeperiod-bank-holidays/1475">Nagios timeperiod for Bank Holidays</a></p>
<div class="none"><div class="g-plusone" data-href="http://www.youdidwhatwithtsql.com/nagios-timeperiod-bank-holidays/1475" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://www.youdidwhatwithtsql.com/nagios-timeperiod-bank-holidays/1475/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Group By</title>
		<link>http://www.youdidwhatwithtsql.com/mysql-group-by/1471</link>
		<comments>http://www.youdidwhatwithtsql.com/mysql-group-by/1471#comments</comments>
		<pubDate>Sun, 01 Apr 2012 13:40:41 +0000</pubDate>
		<dc:creator>Rhys</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[GROUP BY]]></category>

		<guid isPermaLink="false">http://www.youdidwhatwithtsql.com/?p=1471</guid>
		<description><![CDATA[Many people are caught out by MySQL&#8217;s implementation of GROUP BY. By default MySQL does not require that you GROUP BY all non-aggregated columns. For example the following is an illegal query in SQL Server (as well as rather nonsensical); ?View Code MYSQLSELECT * FROM INFORMATION_SCHEMA.TABLES GROUP BY TABLE_SCHEMA; This will generate the following error; [...]<p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/mysql-group-by/1471">MySQL Group By</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Many people are caught out by MySQL&#8217;s implementation of GROUP BY. By default MySQL does not require that you GROUP BY all non-aggregated columns. For example the following is an illegal query in SQL Server (as well as rather nonsensical);</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1471code5'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p14715"><td class="code" id="p1471code5"><pre class="mysql" style="font-family:monospace;"><span style="color: #990099; font-weight: bold;">SELECT</span> <span style="color: #CC0099;">*</span>
<span style="color: #990099; font-weight: bold;">FROM</span> INFORMATION_SCHEMA.<span style="color: #990099; font-weight: bold;">TABLES</span> 
<span style="color: #990099; font-weight: bold;">GROUP BY</span> TABLE_SCHEMA<span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>This will generate the following error; </p>
<pre>Msg 8120, Level 16, State 1, Line 1
Column 'INFORMATION_SCHEMA.TABLES.TABLE_CATALOG' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.</pre>
<p>While in MySQL this query would return a resultset. I believe this was implemented for performance reasons as it would clearly be more efficient grouping on one column than multiple ones. Obviously you introduce a degree of uncertainty as to what will be presented in your final resultset. That may be tolerable for some use cases but if you want the more standard functionality here&#8217;s what you have to do;</p>
<p>First check your <a title="MySQL sql_mode" href="http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html" target="_blank">sql_mode</a> with the following;</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1471code6'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p14716"><td class="code" id="p1471code6"><pre class="mysql" style="font-family:monospace;"><span style="color: #990099; font-weight: bold;">SHOW</span> VARIABLES <span style="color: #CC0099; font-weight: bold;">LIKE</span> <span style="color: #008000;">'<span style="color: #008080; font-weight: bold;">%</span>sql<span style="color: #008080; font-weight: bold;">_</span>mode<span style="color: #008080; font-weight: bold;">%</span>'</span><span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>This will return the value for your server which you&#8217;ll want to take a note of in case you want to revert changes. To change the default behaviour we need to add <a title="MySQL ONLY_FULL_GROUP_BY sql_mode" href="http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_only_full_group_by" target="_blank">ONLY_FULL_GROUP_BY</a> to the sql_mode;</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1471code7'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p14717"><td class="code" id="p1471code7"><pre class="mysql" style="font-family:monospace;"><span style="color: #990099; font-weight: bold;">SET</span> sql_mode <span style="color: #CC0099;">:=</span> <span style="color: #000099;">CONCAT</span><span style="color: #FF00FF;">&#40;</span>@@sql_mode<span style="color: #000033;">,</span><span style="color: #008000;">',ONLY<span style="color: #008080; font-weight: bold;">_</span>FULL<span style="color: #008080; font-weight: bold;">_</span>GROUP<span style="color: #008080; font-weight: bold;">_</span>BY'</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>Run this query again;</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1471code8'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p14718"><td class="code" id="p1471code8"><pre class="mysql" style="font-family:monospace;"><span style="color: #990099; font-weight: bold;">SELECT</span> <span style="color: #CC0099;">*</span>
<span style="color: #990099; font-weight: bold;">FROM</span> INFORMATION_SCHEMA.<span style="color: #990099; font-weight: bold;">TABLES</span> 
<span style="color: #990099; font-weight: bold;">GROUP BY</span> TABLE_SCHEMA<span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>and we will get the following error;</p>
<pre>Query : SELECT * FROM INFORMATION_SCHEMA.TABLES  GROUP BY TABLE_SCHEMA
Error Code : 1055
'TABLES.TABLE_CATALOG' isn't in GROUP BY</pre>
<p>This will require MySQL queries to use the standard GROUP BY implementation. This would be a breaking change for some queries so be very careful in production systems. Of course, to make this change permanent you&#8217;ll need to add it to your <a title="MySQL Option Files" href="http://dev.mysql.com/doc/refman/5.1/en/option-files.html" target="_blank">my.cnf</a>.</p>
<p><map name='google_ad_map_1471_a45beff5d2e172f6'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/1471?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_1471_a45beff5d2e172f6' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=1471&amp;url=http%3A%2F%2Fwww.youdidwhatwithtsql.com%2Fmysql-group-by%2F1471' title="MySQL Group By" alt=" MySQL Group By" /></p><p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/mysql-group-by/1471">MySQL Group By</a></p>
<div class="none"><div class="g-plusone" data-href="http://www.youdidwhatwithtsql.com/mysql-group-by/1471" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://www.youdidwhatwithtsql.com/mysql-group-by/1471/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pmp-check-mysql-deleted-files plugin issue</title>
		<link>http://www.youdidwhatwithtsql.com/pmpcheckmysqldeletedfiles-plugin-issue/1466</link>
		<comments>http://www.youdidwhatwithtsql.com/pmpcheckmysqldeletedfiles-plugin-issue/1466#comments</comments>
		<pubDate>Fri, 30 Mar 2012 15:33:45 +0000</pubDate>
		<dc:creator>Rhys</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[percona]]></category>
		<category><![CDATA[pmp-check-mysql-deleted-files]]></category>

		<guid isPermaLink="false">http://www.youdidwhatwithtsql.com/?p=1466</guid>
		<description><![CDATA[I&#8217;ve been busy setting up the Percona Nagios MySQL Plugins  but ran into an issue with the pmp-check-mysql-deleted-files plugin; UNK could not list MySQL's open files After a little debugging we tracked this down to a problem caused by running multiple instances of mysqld. This is something the script author (Baron Schwartz) mentions in his [...]<p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/pmpcheckmysqldeletedfiles-plugin-issue/1466">pmp-check-mysql-deleted-files plugin issue</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been busy setting up the <a title="Percona Nagios MySQL Plugins" href="http://www.percona.com/software/percona-monitoring-plugins/" target="_blank">Percona Nagios MySQL Plugins</a>  but ran into an issue with the <a href="http://www.percona.com/doc/percona-monitoring-plugins/nagios/pmp-check-mysql-deleted-files.html" target="_blank">pmp-check-mysql-deleted-files</a> plugin;</p>
<pre>UNK could not list MySQL's open files</pre>
<p>After a little debugging we tracked this down to a problem caused by running multiple instances of mysqld. This is something the script author (<a title="Baron Schwartz" href="http://www.percona.com/about-us/our-team/baron-schwartz/" target="_blank">Baron Schwartz</a>) mentions in his script &#8220;# TODO: We could auto-check every running instance, not just one.&#8221;. I&#8217;ve replaced the following line</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1466code11'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p146611"><td class="code" id="p1466code11"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">local</span> <span style="color: #007800;">PROC_ID</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span>_pidof mysqld <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">head</span> -n1<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></td></tr></table></div>

<p>With&#8230;</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1466code12'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p146612"><td class="code" id="p1466code12"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">local</span> <span style="color: #007800;">PROC_ID</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ps</span> aux <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> mysqld <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-v</span> mysqld_safe <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #007800;">$OPT_PORT</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $2}'</span><span style="color: #000000; font-weight: bold;">`</span>;</pre></td></tr></table></div>

<p>Note, this uses the MySQL port number supplied to the script to identify the correct MySQL instance. Probably a cleaner way to do this so I&#8217;ll think about updating this post with a better way in the future. Usual disclaimer applies; not properly tested, buyer beware, keep out of reach of children, may contain nuts etc.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><map name='google_ad_map_1466_a45beff5d2e172f6'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/1466?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_1466_a45beff5d2e172f6' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=1466&amp;url=http%3A%2F%2Fwww.youdidwhatwithtsql.com%2Fpmpcheckmysqldeletedfiles-plugin-issue%2F1466' title="pmp check mysql deleted files plugin issue" alt=" pmp check mysql deleted files plugin issue" /></p><p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/pmpcheckmysqldeletedfiles-plugin-issue/1466">pmp-check-mysql-deleted-files plugin issue</a></p>
<div class="none"><div class="g-plusone" data-href="http://www.youdidwhatwithtsql.com/pmpcheckmysqldeletedfiles-plugin-issue/1466" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://www.youdidwhatwithtsql.com/pmpcheckmysqldeletedfiles-plugin-issue/1466/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Linux Tip: rpm query &amp; xclip</title>
		<link>http://www.youdidwhatwithtsql.com/quick-linux-tip-rpm-query-xclip/1460</link>
		<comments>http://www.youdidwhatwithtsql.com/quick-linux-tip-rpm-query-xclip/1460#comments</comments>
		<pubDate>Wed, 07 Mar 2012 18:42:36 +0000</pubDate>
		<dc:creator>Rhys</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.youdidwhatwithtsql.com/?p=1460</guid>
		<description><![CDATA[I&#8217;m working on a script to do some basic auditing of my Linux servers. One thing I want to record is the install details from an rpm query. The following command will provide us with some basic details of the rpms installed and ordered by date. ?View Code BASHrpm -qa --queryformat '%{NAME} %{VERSION} %{INSTALLTIME:date}\n' --last; [...]<p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/quick-linux-tip-rpm-query-xclip/1460">Quick Linux Tip: rpm query &#038; xclip</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a script to do some basic auditing of my Linux servers. One thing I want to record is the install details from an rpm query. The following command will provide us with some basic details of the rpms installed and ordered by date.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1460code15'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p146015"><td class="code" id="p1460code15"><pre class="bash" style="font-family:monospace;">rpm <span style="color: #660033;">-qa</span> <span style="color: #660033;">--queryformat</span> <span style="color: #ff0000;">'%{NAME} %{VERSION} %{INSTALLTIME:date}\n'</span> --last;</pre></td></tr></table></div>

<p>Output will look something like below&#8230;</p>
<pre>xclip-0.11-11.1.3                             Wed 07 Mar 2012 18:15:13 GMT
splunk-4.3-115073                             Thu 26 Jan 2012 15:51:36 GMT
glibc-devel-32bit-2.14.1-14.18.1              Thu 26 Jan 2012 15:40:04 GMT
glibc-devel-2.14.1-14.18.1                    Thu 26 Jan 2012 15:40:03 GMT
glibc-locale-2.14.1-14.18.1                   Thu 26 Jan 2012 15:39:58 GMT
busybox-1.18.3-5.1.3                          Thu 26 Jan 2012 15:39:38 GMT
glibc-2.14.1-14.18.1                          Thu 26 Jan 2012 15:39:35 GMT
glibc-32bit-2.14.1-14.18.1                    Thu 26 Jan 2012 15:39:32 GMT
MozillaFirefox-translations-common-9.0.1-1.1  Thu 12 Jan 2012 14:44:46 GMT
mozilla-nss-devel-3.13.1-5.1                  Thu 12 Jan 2012 14:44:25 GMT
MozillaFirefox-9.0.1-1.1                      Thu 12 Jan 2012 14:44:17 GMT
libsoftokn3-3.13.1-5.1                        Thu 12 Jan 2012 14:44:03 GMT
mozilla-nss-3.13.1-5.1                        Thu 12 Jan 2012 14:44:02 GMT
MozillaFirefox-branding-openSUSE-5.0-15.1     Thu 12 Jan 2012 14:44:00 GMT
libfreebl3-3.13.1-5.1                         Thu 12 Jan 2012 14:43:59 GMT
mozilla-nss-certs-3.13.1-5.1                  Thu 12 Jan 2012 14:43:57 GMT
mysql-workbench-5.1.16-2.3.5                  Tue 01 Nov 2011 14:28:47 GMT
mozilla-nspr-devel-4.8.9-2.1                  Mon 31 Oct 2011 13:58:58 GMT
mozilla-nspr-4.8.9-2.1                        Mon 31 Oct 2011 13:58:49 GMT
MySQL-server-5.5.15-1.linux2.6                Tue 30 Aug 2011 13:23:44 BST</pre>
<p>I&#8217;m auditing a bunch of servers and handling a lot of output in a console windows can be a pain. That&#8217;s where <a title="xclip" href="http://sourceforge.net/projects/xclip/" target="_blank">xclip</a> can come in. Just pipe the output to xcip and everything will get copied to your hosts clipboard to paste into your reports;</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1460code16'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p146016"><td class="code" id="p1460code16"><pre class="bash" style="font-family:monospace;">rpm <span style="color: #660033;">-qa</span> <span style="color: #660033;">--queryformat</span> <span style="color: #ff0000;">'%{NAME} %{VERSION} %{INSTALLTIME:date}\n'</span> <span style="color: #660033;">--last</span> <span style="color: #000000; font-weight: bold;">|</span> xclip;</pre></td></tr></table></div>

<p><map name='google_ad_map_1460_a45beff5d2e172f6'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/1460?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_1460_a45beff5d2e172f6' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=1460&amp;url=http%3A%2F%2Fwww.youdidwhatwithtsql.com%2Fquick-linux-tip-rpm-query-xclip%2F1460' title="Quick Linux Tip: rpm query & xclip" alt=" Quick Linux Tip: rpm query & xclip" /></p><p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/quick-linux-tip-rpm-query-xclip/1460">Quick Linux Tip: rpm query &#038; xclip</a></p>
<div class="none"><div class="g-plusone" data-href="http://www.youdidwhatwithtsql.com/quick-linux-tip-rpm-query-xclip/1460" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://www.youdidwhatwithtsql.com/quick-linux-tip-rpm-query-xclip/1460/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Check the SQL Server Service Account Can Write the SPN</title>
		<link>http://www.youdidwhatwithtsql.com/check-sql-server-service-account-write-spn/1456</link>
		<comments>http://www.youdidwhatwithtsql.com/check-sql-server-service-account-write-spn/1456#comments</comments>
		<pubDate>Wed, 07 Mar 2012 18:30:07 +0000</pubDate>
		<dc:creator>Rhys</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.youdidwhatwithtsql.com/?p=1456</guid>
		<description><![CDATA[I don&#8217;t have access, like many DBAs, to the inner bowels of Active Directory.  While I&#8217;m more than happy for it to stay this way I still want to check that certain things have been setup correctly and haven&#8217;t been &#8220;cleaned-up&#8221; by a security nazi focused domain administrator. One such situation arose recently with Service Principal Names. SPNs [...]<p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/check-sql-server-service-account-write-spn/1456">Check the SQL Server Service Account Can Write the SPN</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t have access, like many DBAs, to the inner bowels of Active Directory.  While I&#8217;m more than happy for it to stay this way I still want to check that certain things have been setup correctly and haven&#8217;t been &#8220;cleaned-up&#8221; by a security <del>nazi</del> focused domain administrator.</p>
<p>One such situation arose recently with <a title="Service Principal Names" href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms677949(v=vs.85).aspx" target="_blank">Service Principal Names</a>. SPNs are used predominately with impersonation and delegation. There&#8217;s a good <a title="Service Principal Names" href="http://msmvps.com/blogs/ad/archive/2010/06/04/what-are-service-principle-names-spns.aspx" target="_blank">explanation on SPNs here</a>.</p>
<p>The account SQL Server runs under requires the &#8220;Read/Write servicePrincipalName&#8221; permission. If for some reason this is removed, and you restart SQL Server, client using the SPN will no longer function.</p>
<p>Luckily this can be easily checked with <a title="Active Directory Powershell cmdlets" href="http://www.quest.com/powershell/activeroles-server.aspx" target="_blank">Quest&#8217;s Powershell cmdlets for Active Directory</a>. Once these are installed you can simply do&#8230;</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1456code18'); return false;">View Code</a> POWERSHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p145618"><td class="code" id="p1456code18"><pre class="powershell" style="font-family:monospace;">Get<span style="color: pink;">-</span>QADPermission <span style="color: pink;">-</span>Identity Domain\SqlServiceAcc <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Where-Object</span> <span style="color: #000000;">&#123;</span><span style="color: #000080;">$_</span>.RightsDisplay <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Read/Writ
e servicePrincipalName&quot;</span> <span style="color: #FF0000;">-and</span> <span style="color: #000080;">$_</span>.AccessControlType <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Allow&quot;</span><span style="color: #000000;">&#125;</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">SELECT</span> <span style="color: pink;">*</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Format-List</span>;</pre></td></tr></table></div>

<p>The output should look something like below. You may want to hold off rebooting your SQL Server if the ReadProperty/WriteProperty values are missing.</p>
<pre>NativeAce         : System.DirectoryServices.ActiveDirectoryAccessRule
TargetObject      : Domain\SqlServiceAcc
Account           : NT AUTHORITY\SELF
TransitiveAccount : NT AUTHORITY\SELF
AccountName       : NT AUTHORITY\SELF
AccessControlType : Allow
Rights            : ReadProperty, WriteProperty
RightsDisplay     : Read/Write servicePrincipalName
Source            : NotInherited
ExtendedRight     :
ValidatedWrite    :
Property          : CN=Service-Principal-Name,CN=Schema,CN=Configuration,DC=domain,DC=co,DC=uk
PropertySet       :
ApplyTo           : ThisObjectOnly
ApplyToDisplay    : This object only
ApplyToType       :
ChildType         :</pre>
<p><map name='google_ad_map_1456_a45beff5d2e172f6'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/1456?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_1456_a45beff5d2e172f6' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=1456&amp;url=http%3A%2F%2Fwww.youdidwhatwithtsql.com%2Fcheck-sql-server-service-account-write-spn%2F1456' title="Check the SQL Server Service Account Can Write the SPN" alt=" Check the SQL Server Service Account Can Write the SPN" /></p><p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/check-sql-server-service-account-write-spn/1456">Check the SQL Server Service Account Can Write the SPN</a></p>
<div class="none"><div class="g-plusone" data-href="http://www.youdidwhatwithtsql.com/check-sql-server-service-account-write-spn/1456" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://www.youdidwhatwithtsql.com/check-sql-server-service-account-write-spn/1456/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Database Maintenance Stored Procedure</title>
		<link>http://www.youdidwhatwithtsql.com/mysql-database-maintenance-stored-procedure/1452</link>
		<comments>http://www.youdidwhatwithtsql.com/mysql-database-maintenance-stored-procedure/1452#comments</comments>
		<pubDate>Fri, 02 Mar 2012 14:31:21 +0000</pubDate>
		<dc:creator>Rhys</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.youdidwhatwithtsql.com/?p=1452</guid>
		<description><![CDATA[Here&#8217;s a very simple stored procedure I use to run some maintenance on MySQL tables. It allows you to run OPTIMIZE TABLE or ANALYZE TABLE on all (or most) tables in a MySQL database. ?View Code MYSQLDELIMITER $$ &#160; DROP PROCEDURE IF EXISTS `db_maintenance`$$ &#160; CREATE DEFINER = 'root'@'%' PROCEDURE db_maintenance &#40; IN p_mode TINYINT, [...]<p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/mysql-database-maintenance-stored-procedure/1452">MySQL Database Maintenance Stored Procedure</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a very simple stored procedure I use to run some maintenance on MySQL tables. It allows you to run <a title="MySQL OPTIMIZE TABLE" href="http://dev.mysql.com/doc/refman/5.5/en/optimize-table.html" target="_blank">OPTIMIZE TABLE</a> or <a title="MySQL ANALYZE TABLE" href="http://dev.mysql.com/doc/refman/5.5/en/analyze-table.html" target="_blank">ANALYZE TABLE</a> on all (or most) tables in a MySQL database.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1452code22'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p145222"><td class="code" id="p1452code22"><pre class="mysql" style="font-family:monospace;">DELIMITER $$
&nbsp;
<span style="color: #990099; font-weight: bold;">DROP</span> <span style="color: #990099; font-weight: bold;">PROCEDURE</span> <span style="color: #009900;">IF</span> <span style="color: #990099; font-weight: bold;">EXISTS</span> <span style="color: #008000;">`db<span style="color: #008080; font-weight: bold;">_</span>maintenance`</span>$$
&nbsp;
<span style="color: #990099; font-weight: bold;">CREATE</span>
    <span style="color: #990099; font-weight: bold;">DEFINER</span> <span style="color: #CC0099;">=</span> <span style="color: #008000;">'root'</span>@<span style="color: #008000;">'<span style="color: #008080; font-weight: bold;">%</span>'</span>
    <span style="color: #990099; font-weight: bold;">PROCEDURE</span> db_maintenance
    <span style="color: #FF00FF;">&#40;</span>
		<span style="color: #990099; font-weight: bold;">IN</span> p_mode <span style="color: #999900; font-weight: bold;">TINYINT</span><span style="color: #000033;">,</span>
		<span style="color: #990099; font-weight: bold;">IN</span> p_database <span style="color: #999900; font-weight: bold;">VARCHAR</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">128</span><span style="color: #FF00FF;">&#41;</span>
    <span style="color: #FF00FF;">&#41;</span>
    <span style="color: #990099; font-weight: bold;">LANGUAGE SQL</span>
    <span style="color: #990099; font-weight: bold;">SQL SECURITY</span> <span style="color: #990099; font-weight: bold;">INVOKER</span>
    <span style="color: #990099; font-weight: bold;">BEGIN</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">##################################################</span>
		<span style="color: #808080; font-style: italic;"># Author: Rhys Campbell                          #</span>
		<span style="color: #808080; font-style: italic;"># Created: 2012-03-02                            #</span>
		<span style="color: #808080; font-style: italic;"># Description: Performs Analyze or Optimize      #</span>
		<span style="color: #808080; font-style: italic;"># actions on all tables in the provided db.      #</span>
		<span style="color: #808080; font-style: italic;">##################################################</span>
&nbsp;
		<span style="color: #990099; font-weight: bold;">DECLARE</span> done <span style="color: #999900; font-weight: bold;">TINYINT</span><span style="color: #000033;">;</span>
		<span style="color: #990099; font-weight: bold;">DECLARE</span> my_table <span style="color: #999900; font-weight: bold;">VARCHAR</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">128</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;"># Table cursor</span>
		<span style="color: #990099; font-weight: bold;">DECLARE</span> table_cursor CURSOR FOR <span style="color: #990099; font-weight: bold;">SELECT</span> t.TABLE_NAME
						<span style="color: #990099; font-weight: bold;">FROM</span> INFORMATION_SCHEMA.<span style="color: #990099; font-weight: bold;">TABLES</span> t
						<span style="color: #990099; font-weight: bold;">WHERE</span> t.TABLE_SCHEMA <span style="color: #CC0099;">=</span> p_database
						<span style="color: #CC0099; font-weight: bold;">AND</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #990099; font-weight: bold;">EXISTS</span> <span style="color: #FF00FF;">&#40;</span><span style="color: #990099; font-weight: bold;">SELECT</span> <span style="color: #CC0099;">*</span>
								<span style="color: #990099; font-weight: bold;">FROM</span> db_maintenance_table_excludes t											<span style="color: #990099; font-weight: bold;">WHERE</span> t2.database_name <span style="color: #CC0099;">=</span> t.TABLE_SCHEMA
														<span style="color: #CC0099; font-weight: bold;">AND</span> t2.table_name <span style="color: #CC0099;">=</span> t.TABLE_NAME<span style="color: #FF00FF;">&#41;</span>
										<span style="color: #CC0099; font-weight: bold;">AND</span> t.TABLE_TYPE <span style="color: #CC0099;">=</span> <span style="color: #008000;">'BASE TABLE'</span><span style="color: #000033;">;</span>
&nbsp;
		<span style="color: #990099; font-weight: bold;">DECLARE</span> CONTINUE <span style="color: #990099; font-weight: bold;">HANDLER</span> FOR <span style="color: #CC0099; font-weight: bold;">NOT</span> FOUND <span style="color: #990099; font-weight: bold;">SET</span> done <span style="color: #CC0099;">=</span> <span style="color: #008080;">1</span><span style="color: #000033;">;</span>
&nbsp;
		<span style="color: #990099; font-weight: bold;">SET</span> done <span style="color: #CC0099;">=</span> <span style="color: #008080;">0</span><span style="color: #000033;">;</span>
&nbsp;
		OPEN table_cursor<span style="color: #000033;">;</span>										
&nbsp;
		table_loop: LOOP
&nbsp;
		FETCH table_cursor <span style="color: #990099; font-weight: bold;">INTO</span> my_table<span style="color: #000033;">;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;"># Leave the loop if we're done</span>
		<span style="color: #009900;">IF</span> <span style="color: #FF00FF;">&#40;</span>done <span style="color: #CC0099;">=</span> <span style="color: #008080;">1</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #009900;">THEN</span>
			LEAVE table_loop<span style="color: #000033;">;</span>
		<span style="color: #009900;">END</span> <span style="color: #009900;">IF</span><span style="color: #000033;">;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;"># Now lets do the table maintenance</span>
		<span style="color: #009900;">IF</span><span style="color: #FF00FF;">&#40;</span>p_mode <span style="color: #CC0099;">=</span> <span style="color: #008080;">1</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #009900;">THEN</span> <span style="color: #808080; font-style: italic;"># Optimize</span>
&nbsp;
			<span style="color: #990099; font-weight: bold;">SET</span> @q <span style="color: #CC0099;">=</span> <span style="color: #000099;">CONCAT</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">'OPTIMIZE TABLE '</span><span style="color: #000033;">,</span> p_database<span style="color: #000033;">,</span> <span style="color: #008000;">'.'</span><span style="color: #000033;">,</span> my_table<span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span>
			PREPARE stmt <span style="color: #990099; font-weight: bold;">FROM</span> @q<span style="color: #000033;">;</span>
			EXECUTE stmt<span style="color: #000033;">;</span>
&nbsp;
		ELSEIF <span style="color: #FF00FF;">&#40;</span>p_mode <span style="color: #CC0099;">=</span> <span style="color: #008080;">2</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #009900;">THEN</span> <span style="color: #808080; font-style: italic;"># Analyze</span>
&nbsp;
			<span style="color: #990099; font-weight: bold;">SET</span> @q <span style="color: #CC0099;">=</span> <span style="color: #000099;">CONCAT</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">'ANALYZE TABLE '</span><span style="color: #000033;">,</span> p_database<span style="color: #000033;">,</span> <span style="color: #008000;">'.'</span><span style="color: #000033;">,</span> my_table<span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span>
			PREPARE stmt <span style="color: #990099; font-weight: bold;">FROM</span> @q<span style="color: #000033;">;</span>
			EXECUTE stmt<span style="color: #000033;">;</span>
&nbsp;
		<span style="color: #009900;">END</span> <span style="color: #009900;">IF</span><span style="color: #000033;">;</span>
&nbsp;
		<span style="color: #009900;">END</span> LOOP table_loop<span style="color: #000033;">;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;"># Clean up</span>
		CLOSE table_cursor<span style="color: #000033;">;</span>
&nbsp;
    <span style="color: #009900;">END</span>$$
&nbsp;
DELIMITER <span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>Tables are retrieved from <a title="INFORMATION_SCHEMA" href="http://dev.mysql.com/doc/refman/5.5/en/information-schema.html" target="_blank">INFORMATION_SCHEMA</a> and I use the below table to hold any tables I want to exclude from automatic maintenance.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1452code23'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p145223"><td class="code" id="p1452code23"><pre class="mysql" style="font-family:monospace;"><span style="color: #990099; font-weight: bold;">CREATE</span> <span style="color: #990099; font-weight: bold;">TABLE</span> db_maintenance_table_excludes
<span style="color: #FF00FF;">&#40;</span>
	database_name <span style="color: #999900; font-weight: bold;">VARCHAR</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">128</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">,</span>
	table_name <span style="color: #999900; font-weight: bold;">VARCHAR</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">128</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">,</span>
	<span style="color: #990099; font-weight: bold;">PRIMARY KEY</span>
	<span style="color: #FF00FF;">&#40;</span>
		database_name<span style="color: #000033;">,</span>
		table_name
	<span style="color: #FF00FF;">&#41;</span>
<span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>Usage is as follows;</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1452code24'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p145224"><td class="code" id="p1452code24"><pre class="mysql" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># Run OPTIMIZE TABLE</span>
<span style="color: #990099; font-weight: bold;">CALL</span> <span style="color: #008000;">`db<span style="color: #008080; font-weight: bold;">_</span>maintenance`</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">1</span><span style="color: #000033;">,</span> <span style="color: #008000;">'db<span style="color: #008080; font-weight: bold;">_</span>name'</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span>
<span style="color: #808080; font-style: italic;"># Run ANALYZE TABLE</span>
<span style="color: #990099; font-weight: bold;">CALL</span> <span style="color: #008000;">`db<span style="color: #008080; font-weight: bold;">_</span>maintenance`</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">2</span><span style="color: #000033;">,</span> <span style="color: #008000;">'db<span style="color: #008080; font-weight: bold;">_</span>name'</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span></pre></td></tr></table></div>

<p><map name='google_ad_map_1452_a45beff5d2e172f6'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/1452?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_1452_a45beff5d2e172f6' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=1452&amp;url=http%3A%2F%2Fwww.youdidwhatwithtsql.com%2Fmysql-database-maintenance-stored-procedure%2F1452' title="MySQL Database Maintenance Stored Procedure" alt=" MySQL Database Maintenance Stored Procedure" /></p><p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/mysql-database-maintenance-stored-procedure/1452">MySQL Database Maintenance Stored Procedure</a></p>
<div class="none"><div class="g-plusone" data-href="http://www.youdidwhatwithtsql.com/mysql-database-maintenance-stored-procedure/1452" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://www.youdidwhatwithtsql.com/mysql-database-maintenance-stored-procedure/1452/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Purging data &amp; Partitioning for Paupers</title>
		<link>http://www.youdidwhatwithtsql.com/purging-data-partitioning-for-paupers/1448</link>
		<comments>http://www.youdidwhatwithtsql.com/purging-data-partitioning-for-paupers/1448#comments</comments>
		<pubDate>Mon, 20 Feb 2012 22:33:34 +0000</pubDate>
		<dc:creator>Rhys</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[T-SQL]]></category>
		<category><![CDATA[delete]]></category>
		<category><![CDATA[partition]]></category>
		<category><![CDATA[partitioning]]></category>
		<category><![CDATA[purging data]]></category>
		<category><![CDATA[TSQL]]></category>

		<guid isPermaLink="false">http://www.youdidwhatwithtsql.com/?p=1448</guid>
		<description><![CDATA[Several months ago at work we started having some terrible problems with some jobs that purge old data from our system. These jobs were put into place before my time, and while fine at the time, were now causing us some big problems. Purging data would take hours and cause horrendous blocking while they were [...]<p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/purging-data-partitioning-for-paupers/1448">Purging data &amp; Partitioning for Paupers</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Several months ago at work we started having some terrible problems with some jobs that purge old data from our system. These jobs were put into place before my time, and while fine at the time, were now causing us some big problems. Purging data would take hours and cause horrendous blocking while they were going on.</p>
<p>The original solution consisted of a simple trigger and an archive table something like below; </p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1448code33'); return false;">View Code</a> TSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p144833"><td class="code" id="p1448code33"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">TABLE</span> dbo.<span style="color: #202020;">SomeTable</span>
<span style="color: #808080;">&#40;</span>
	id <span style="color: #0000FF;">INTEGER</span> <span style="color: #0000FF;">IDENTITY</span><span style="color: #808080;">&#40;</span><span style="color: #000;">1</span>,<span style="color: #000;">1</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span> <span style="color: #0000FF;">PRIMARY</span> <span style="color: #0000FF;">KEY</span> <span style="color: #0000FF;">CLUSTERED</span>,
	created <span style="color: #0000FF;">DATETIME</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
	url <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">100</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
	html <span style="color: #0000FF;">NVARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">MAX</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>
<span style="color: #808080;">&#41;</span>;</pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1448code34'); return false;">View Code</a> TSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p144834"><td class="code" id="p1448code34"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">TRIGGER</span> trg_InsRecord
   <span style="color: #0000FF;">ON</span> dbo.<span style="color: #202020;">SomeTable</span>
   <span style="color: #0000FF;">AFTER</span> <span style="color: #0000FF;">INSERT</span>
<span style="color: #0000FF;">AS</span> 
<span style="color: #0000FF;">BEGIN</span>
	<span style="color: #008080;">-- SET NOCOUNT ON added to prevent extra result sets from</span>
	<span style="color: #008080;">-- interfering with SELECT statements.</span>
	<span style="color: #0000FF;">SET</span> <span style="color: #0000FF;">NOCOUNT</span> <span style="color: #0000FF;">ON</span>;
&nbsp;
    <span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> dbo.<span style="color: #202020;">SomeArchiveTable</span>
    <span style="color: #808080;">&#40;</span>
		id,
		created,
		url,
		html
	<span style="color: #808080;">&#41;</span>
	<span style="color: #0000FF;">SELECT</span> id,
		   created,
		   url,
		   html
	<span style="color: #0000FF;">FROM</span> inserted;
&nbsp;
<span style="color: #0000FF;">END</span>
GO</pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1448code35'); return false;">View Code</a> TSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p144835"><td class="code" id="p1448code35"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">TABLE</span> dbo.<span style="color: #202020;">SomeArchiveTable</span>
<span style="color: #808080;">&#40;</span>
	id <span style="color: #0000FF;">INTEGER</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span> <span style="color: #0000FF;">PRIMARY</span> <span style="color: #0000FF;">KEY</span> <span style="color: #0000FF;">CLUSTERED</span>,
	created <span style="color: #0000FF;">DATETIME</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
	url <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">100</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
	html <span style="color: #0000FF;">NVARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">MAX</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>
<span style="color: #808080;">&#41;</span>;</pre></td></tr></table></div>

<p>Probably a setup many DBAs have seen before. In the <strong>dbo.SomeTable </strong>we keep just a few hours of data while in <strong>dbo.SomeArchiveTable</strong> seven days of data was kept. The SQL Agent job to purge data ran nightly and was just a simple delete statement;</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1448code36'); return false;">View Code</a> TSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p144836"><td class="code" id="p1448code36"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">DELETE</span> <span style="color: #0000FF;">FROM</span> dbo.<span style="color: #202020;">SomeArchiveTable</span> <span style="color: #0000FF;">WHERE</span> created <span style="color: #808080;">&amp;</span>lt;<span style="color: #808080;">=</span> <span style="color: #FF00FF;">DATEADD</span><span style="color: #808080;">&#40;</span>dd, <span style="color: #808080;">-</span><span style="color: #000;">14</span>, <span style="color: #FF00FF;">GETDATE</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span>;</pre></td></tr></table></div>

<p>This was fine while the table was small (yes created was indexed) but over time, as the business grew, the amount of data increased from a few gigabytes to hundreds of gigabytes. The job was taking anywhere between 2 and 5 hours, locking the entire database, and causing client timeouts.&#160; My SQL Server probably felt like this;</p>
<p><a href="http://www.youdidwhatwithtsql.com/wp-content/uploads/2012/02/crying-child.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="crying-child" border="0" alt="crying child thumb Purging data &amp; Partitioning for Paupers" src="http://www.youdidwhatwithtsql.com/wp-content/uploads/2012/02/crying-child_thumb.jpg" width="179" height="186" /></a></p>
<p>A temporary solution was to delete the data in small batches to prevent <a title="Lock Escalation in SQL Server" href="http://msdn.microsoft.com/en-us/library/ms184286.aspx" target="_blank">lock escalation</a>. </p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1448code37'); return false;">View Code</a> TSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p144837"><td class="code" id="p1448code37"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">DECLARE</span> @rc <span style="color: #0000FF;">INTEGER</span> <span style="color: #808080;">=</span> <span style="color: #808080;">-</span><span style="color: #000;">1</span>;
&nbsp;
<span style="color: #0000FF;">WHILE</span><span style="color: #808080;">&#40;</span>@rc <span style="color: #808080;">!=</span> <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">BEGIN</span>
&nbsp;
	<span style="color: #008080;">-- Delete 4999 rows to prevent lock escalation</span>
	<span style="color: #008080;">-- http://msdn.microsoft.com/en-us/library/ms184286.aspx</span>
	<span style="color: #0000FF;">DELETE</span> <span style="color: #0000FF;">TOP</span> <span style="color: #808080;">&#40;</span><span style="color: #000;">4999</span><span style="color: #808080;">&#41;</span> 
	<span style="color: #0000FF;">FROM</span> dbo.<span style="color: #202020;">SomeArchiveTable</span> 
	<span style="color: #0000FF;">WHERE</span> created <span style="color: #808080;">&amp;</span>lt;<span style="color: #808080;">=</span> <span style="color: #FF00FF;">DATEADD</span><span style="color: #808080;">&#40;</span>dd, <span style="color: #808080;">-</span><span style="color: #000;">7</span>, <span style="color: #FF00FF;">GETDATE</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span>
&nbsp;
	<span style="color: #0000FF;">SET</span> @rc <span style="color: #808080;">=</span> <span style="color: #FF00FF;">@@ROWCOUNT</span>;
&nbsp;
<span style="color: #0000FF;">END</span></pre></td></tr></table></div>

<p>This solved the horrendous blocking issue but our SQL Server still wasn&#8217;t happy with several hours of heaving Disk I/O each night.</p>
<p><a href="http://www.youdidwhatwithtsql.com/wp-content/uploads/2012/02/hdd_on_fire.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Hard Drive on fire" border="0" alt="hdd on fire thumb Purging data &amp; Partitioning for Paupers" src="http://www.youdidwhatwithtsql.com/wp-content/uploads/2012/02/hdd_on_fire_thumb.jpg" width="242" height="216" /></a></p>
<p>I&#8217;ve read a lot of great blogs about <a href="http://www.sqlmag.com/article/database-administration/using-table-partitions-to-archive-old-data-in-oltp-environments" target="_blank">SQL Server Partitioning</a> and thought it could be of use here. Essentially these blogs demonstrate how to use partitioning to make dealing with large amounts of data easier. </p>
<p>Partitioning is an Enterprise only feature and we run standard in production. Do we upgrade to Enterprise and pay for a Microsoft executives bonus? </p>
<p><a href="http://www.youdidwhatwithtsql.com/wp-content/uploads/2012/02/fat_cat.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Fat Cat" border="0" alt="fat cat thumb Purging data &amp; Partitioning for Paupers" src="http://www.youdidwhatwithtsql.com/wp-content/uploads/2012/02/fat_cat_thumb.jpg" width="404" height="304" /></a></p>
<p>With a little TSQL trickery we can stick with standard edition but get partition-like benefits.</p>
<p> Say we split our archive table into seven new tables, one for each day of the week, and change our trigger to insert an appropriate table according to the day.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1448code38'); return false;">View Code</a> TSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p144838"><td class="code" id="p1448code38"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">TABLE</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>.<span style="color: #808080;">&#91;</span>SomeArchiveTable_Sunday<span style="color: #808080;">&#93;</span><span style="color: #808080;">&#40;</span>
	<span style="color: #808080;">&#91;</span>id<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">int</span><span style="color: #808080;">&#93;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
	<span style="color: #808080;">&#91;</span>created<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">datetime</span><span style="color: #808080;">&#93;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
	<span style="color: #808080;">&#91;</span>url<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">varchar</span><span style="color: #808080;">&#93;</span><span style="color: #808080;">&#40;</span><span style="color: #000;">100</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
	<span style="color: #808080;">&#91;</span>html<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">nvarchar</span><span style="color: #808080;">&#93;</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">max</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
<span style="color: #0000FF;">PRIMARY</span> <span style="color: #0000FF;">KEY</span> <span style="color: #0000FF;">CLUSTERED</span> 
<span style="color: #808080;">&#40;</span>
	<span style="color: #808080;">&#91;</span>id<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">ASC</span>
<span style="color: #808080;">&#41;</span><span style="color: #0000FF;">WITH</span> <span style="color: #808080;">&#40;</span>PAD_<span style="color: #808080;">IN</span>DEX  <span style="color: #808080;">=</span> <span style="color: #0000FF;">OFF</span>, STATISTICS_N<span style="color: #808080;">OR</span>ECOMPUTE  <span style="color: #808080;">=</span> <span style="color: #0000FF;">OFF</span>, IGN<span style="color: #808080;">OR</span>E_DUP_KEY <span style="color: #808080;">=</span> <span style="color: #0000FF;">OFF</span>, <span style="color: #808080;">ALL</span>OW_ROW_LOCKS  <span style="color: #808080;">=</span> <span style="color: #0000FF;">ON</span>, <span style="color: #808080;">ALL</span>OW_PAGE_LOCKS  <span style="color: #808080;">=</span> <span style="color: #0000FF;">ON</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">ON</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">PRIMARY</span><span style="color: #808080;">&#93;</span>
<span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">ON</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">PRIMARY</span><span style="color: #808080;">&#93;</span>
&nbsp;
GO
&nbsp;
<span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">TABLE</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>.<span style="color: #808080;">&#91;</span>SomeArchiveTable_Monday<span style="color: #808080;">&#93;</span><span style="color: #808080;">&#40;</span>
	<span style="color: #808080;">&#91;</span>id<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">int</span><span style="color: #808080;">&#93;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
	<span style="color: #808080;">&#91;</span>created<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">datetime</span><span style="color: #808080;">&#93;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
	<span style="color: #808080;">&#91;</span>url<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">varchar</span><span style="color: #808080;">&#93;</span><span style="color: #808080;">&#40;</span><span style="color: #000;">100</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
	<span style="color: #808080;">&#91;</span>html<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">nvarchar</span><span style="color: #808080;">&#93;</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">max</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
<span style="color: #0000FF;">PRIMARY</span> <span style="color: #0000FF;">KEY</span> <span style="color: #0000FF;">CLUSTERED</span> 
<span style="color: #808080;">&#40;</span>
	<span style="color: #808080;">&#91;</span>id<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">ASC</span>
<span style="color: #808080;">&#41;</span><span style="color: #0000FF;">WITH</span> <span style="color: #808080;">&#40;</span>PAD_<span style="color: #808080;">IN</span>DEX  <span style="color: #808080;">=</span> <span style="color: #0000FF;">OFF</span>, STATISTICS_N<span style="color: #808080;">OR</span>ECOMPUTE  <span style="color: #808080;">=</span> <span style="color: #0000FF;">OFF</span>, IGN<span style="color: #808080;">OR</span>E_DUP_KEY <span style="color: #808080;">=</span> <span style="color: #0000FF;">OFF</span>, <span style="color: #808080;">ALL</span>OW_ROW_LOCKS  <span style="color: #808080;">=</span> <span style="color: #0000FF;">ON</span>, <span style="color: #808080;">ALL</span>OW_PAGE_LOCKS  <span style="color: #808080;">=</span> <span style="color: #0000FF;">ON</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">ON</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">PRIMARY</span><span style="color: #808080;">&#93;</span>
<span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">ON</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">PRIMARY</span><span style="color: #808080;">&#93;</span>
&nbsp;
GO
&nbsp;
<span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">TABLE</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>.<span style="color: #808080;">&#91;</span>SomeArchiveTable_Tuesday<span style="color: #808080;">&#93;</span><span style="color: #808080;">&#40;</span>
	<span style="color: #808080;">&#91;</span>id<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">int</span><span style="color: #808080;">&#93;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
	<span style="color: #808080;">&#91;</span>created<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">datetime</span><span style="color: #808080;">&#93;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
	<span style="color: #808080;">&#91;</span>url<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">varchar</span><span style="color: #808080;">&#93;</span><span style="color: #808080;">&#40;</span><span style="color: #000;">100</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
	<span style="color: #808080;">&#91;</span>html<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">nvarchar</span><span style="color: #808080;">&#93;</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">max</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>,
<span style="color: #0000FF;">PRIMARY</span> <span style="color: #0000FF;">KEY</span> <span style="color: #0000FF;">CLUSTERED</span> 
<span style="color: #808080;">&#40;</span>
	<span style="color: #808080;">&#91;</span>id<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">ASC</span>
<span style="color: #808080;">&#41;</span><span style="color: #0000FF;">WITH</span> <span style="color: #808080;">&#40;</span>PAD_<span style="color: #808080;">IN</span>DEX  <span style="color: #808080;">=</span> <span style="color: #0000FF;">OFF</span>, STATISTICS_N<span style="color: #808080;">OR</span>ECOMPUTE  <span style="color: #808080;">=</span> <span style="color: #0000FF;">OFF</span>, IGN<span style="color: #808080;">OR</span>E_DUP_KEY <span style="color: #808080;">=</span> <span style="color: #0000FF;">OFF</span>, <span style="color: #808080;">ALL</span>OW_ROW_LOCKS  <span style="color: #808080;">=</span> <span style="color: #0000FF;">ON</span>, <span style="color: #808080;">ALL</span>OW_PAGE_LOCKS  <span style="color: #808080;">=</span> <span style="color: #0000FF;">ON</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">ON</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">PRIMARY</span><span style="color: #808080;">&#93;</span>
<span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">ON</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">PRIMARY</span><span style="color: #808080;">&#93;</span>
&nbsp;
GO</pre></td></tr></table></div>

<p>&#8230; and so on for each day of the week. </p>
<p><a href="http://www.youdidwhatwithtsql.com/wp-content/uploads/2012/02/purging_data_partitioning_for_paupers.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="purging_data_partitioning_for_paupers" border="0" alt="purging data partitioning for paupers thumb Purging data &amp; Partitioning for Paupers" src="http://www.youdidwhatwithtsql.com/wp-content/uploads/2012/02/purging_data_partitioning_for_paupers_thumb.png" width="244" height="177" /></a></p>
<p>Then we need to alter our trigger to insert data into the correct table. In this case it is determined by the current day returned via the <a title="DATEPART" href="http://msdn.microsoft.com/en-us/library/ms174420.aspx" target="_blank">DATEPART</a> function.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1448code39'); return false;">View Code</a> TSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p144839"><td class="code" id="p1448code39"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">ALTER</span> <span style="color: #0000FF;">TRIGGER</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>.<span style="color: #808080;">&#91;</span>trg_InsRecord<span style="color: #808080;">&#93;</span>
   <span style="color: #0000FF;">ON</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>.<span style="color: #808080;">&#91;</span>SomeTable<span style="color: #808080;">&#93;</span>
   <span style="color: #0000FF;">AFTER</span> <span style="color: #0000FF;">INSERT</span>
<span style="color: #0000FF;">AS</span> 
<span style="color: #0000FF;">BEGIN</span>
	<span style="color: #008080;">-- SET NOCOUNT ON added to prevent extra result sets from</span>
	<span style="color: #008080;">-- interfering with SELECT statements.</span>
	<span style="color: #0000FF;">SET</span> <span style="color: #0000FF;">NOCOUNT</span> <span style="color: #0000FF;">ON</span>;
&nbsp;
	<span style="color: #008080;">-- What day is it?</span>
	<span style="color: #0000FF;">DECLARE</span> @<span style="color: #0000FF;">day</span> <span style="color: #0000FF;">TINYINT</span> <span style="color: #808080;">=</span> <span style="color: #FF00FF;">DATEPART</span><span style="color: #808080;">&#40;</span>dw, <span style="color: #FF00FF;">GETDATE</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span>;
&nbsp;
	<span style="color: #0000FF;">IF</span><span style="color: #808080;">&#40;</span>@<span style="color: #0000FF;">day</span> <span style="color: #808080;">=</span> <span style="color: #000;">1</span><span style="color: #808080;">&#41;</span>
	<span style="color: #0000FF;">BEGIN</span>
		<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> dbo.<span style="color: #202020;">SomeArchiveTable_Sunday</span>
		<span style="color: #808080;">&#40;</span>
			id,
			created,
			url,
			html
		<span style="color: #808080;">&#41;</span>
		<span style="color: #0000FF;">SELECT</span> id,
			   created,
			   url,
			   html
		<span style="color: #0000FF;">FROM</span> inserted;
	<span style="color: #0000FF;">END</span>
	<span style="color: #0000FF;">ELSE</span> <span style="color: #0000FF;">IF</span> <span style="color: #808080;">&#40;</span>@<span style="color: #0000FF;">day</span> <span style="color: #808080;">=</span> <span style="color: #000;">2</span><span style="color: #808080;">&#41;</span>
	<span style="color: #0000FF;">BEGIN</span>
		<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> dbo.<span style="color: #202020;">SomeArchiveTable_Monday</span>
		<span style="color: #808080;">&#40;</span>
			id,
			created,
			url,
			html
		<span style="color: #808080;">&#41;</span>
		<span style="color: #0000FF;">SELECT</span> id,
			   created,
			   url,
			   html
		<span style="color: #0000FF;">FROM</span> inserted;	
	<span style="color: #0000FF;">END</span>
	<span style="color: #0000FF;">ELSE</span> <span style="color: #0000FF;">IF</span> <span style="color: #808080;">&#40;</span>@<span style="color: #0000FF;">day</span> <span style="color: #808080;">=</span> <span style="color: #000;">3</span><span style="color: #808080;">&#41;</span>
	<span style="color: #0000FF;">BEGIN</span>
		<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> dbo.<span style="color: #202020;">SomeArchiveTable_Tuesday</span>
		<span style="color: #808080;">&#40;</span>
			id,
			created,
			url,
			html
		<span style="color: #808080;">&#41;</span>
		<span style="color: #0000FF;">SELECT</span> id,
			   created,
			   url,
			   html
		<span style="color: #0000FF;">FROM</span> inserted;	
	<span style="color: #0000FF;">END</span>	
	<span style="color: #0000FF;">ELSE</span> <span style="color: #0000FF;">IF</span> <span style="color: #808080;">&#40;</span>@<span style="color: #0000FF;">day</span> <span style="color: #808080;">=</span> <span style="color: #000;">4</span><span style="color: #808080;">&#41;</span>
	<span style="color: #0000FF;">BEGIN</span>
		<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> dbo.<span style="color: #202020;">SomeArchiveTable_Wednesday</span>
		<span style="color: #808080;">&#40;</span>
			id,
			created,
			url,
			html
		<span style="color: #808080;">&#41;</span>
		<span style="color: #0000FF;">SELECT</span> id,
			   created,
			   url,
			   html
		<span style="color: #0000FF;">FROM</span> inserted;	
	<span style="color: #0000FF;">END</span>	
	<span style="color: #0000FF;">ELSE</span> <span style="color: #0000FF;">IF</span> <span style="color: #808080;">&#40;</span>@<span style="color: #0000FF;">day</span> <span style="color: #808080;">=</span> <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span>
	<span style="color: #0000FF;">BEGIN</span>
		<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> dbo.<span style="color: #202020;">SomeArchiveTable_Thursday</span>
		<span style="color: #808080;">&#40;</span>
			id,
			created,
			url,
			html
		<span style="color: #808080;">&#41;</span>
		<span style="color: #0000FF;">SELECT</span> id,
			   created,
			   url,
			   html
		<span style="color: #0000FF;">FROM</span> inserted;	
	<span style="color: #0000FF;">END</span>
	<span style="color: #0000FF;">ELSE</span> <span style="color: #0000FF;">IF</span> <span style="color: #808080;">&#40;</span>@<span style="color: #0000FF;">day</span> <span style="color: #808080;">=</span> <span style="color: #000;">6</span><span style="color: #808080;">&#41;</span>
	<span style="color: #0000FF;">BEGIN</span>
		<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> dbo.<span style="color: #202020;">SomeArchiveTable_Friday</span>
		<span style="color: #808080;">&#40;</span>
			id,
			created,
			url,
			html
		<span style="color: #808080;">&#41;</span>
		<span style="color: #0000FF;">SELECT</span> id,
			   created,
			   url,
			   html
		<span style="color: #0000FF;">FROM</span> inserted;	
	<span style="color: #0000FF;">END</span>
	<span style="color: #0000FF;">ELSE</span> <span style="color: #0000FF;">IF</span> <span style="color: #808080;">&#40;</span>@<span style="color: #0000FF;">day</span> <span style="color: #808080;">=</span> <span style="color: #000;">7</span><span style="color: #808080;">&#41;</span>
	<span style="color: #0000FF;">BEGIN</span>
		<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> dbo.<span style="color: #202020;">SomeArchiveTable_Saturday</span>
		<span style="color: #808080;">&#40;</span>
			id,
			created,
			url,
			html
		<span style="color: #808080;">&#41;</span>
		<span style="color: #0000FF;">SELECT</span> id,
			   created,
			   url,
			   html
		<span style="color: #0000FF;">FROM</span> inserted;	
	<span style="color: #0000FF;">END</span>
<span style="color: #0000FF;">END</span></pre></td></tr></table></div>

<p>So how do we purge data? Simple, just run something like this a little before midnight each day&#8230;</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1448code40'); return false;">View Code</a> TSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p144840"><td class="code" id="p1448code40"><pre class="tsql" style="font-family:monospace;">	<span style="color: #008080;">-- What day is it?</span>
	<span style="color: #0000FF;">DECLARE</span> @<span style="color: #0000FF;">day</span> <span style="color: #0000FF;">TINYINT</span> <span style="color: #808080;">=</span> <span style="color: #FF00FF;">DATEPART</span><span style="color: #808080;">&#40;</span>dw, <span style="color: #FF00FF;">GETDATE</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span>;
&nbsp;
	<span style="color: #0000FF;">IF</span><span style="color: #808080;">&#40;</span>@<span style="color: #0000FF;">day</span> <span style="color: #808080;">=</span> <span style="color: #000;">1</span><span style="color: #808080;">&#41;</span> <span style="color: #008080;">-- Sunday - truncate Mondays table</span>
	<span style="color: #0000FF;">BEGIN</span>
		<span style="color: #0000FF;">TRUNCATE</span> <span style="color: #0000FF;">TABLE</span> dbo.<span style="color: #202020;">SomeArchiveTable_Monday</span>;
	<span style="color: #0000FF;">END</span>
	<span style="color: #0000FF;">ELSE</span> <span style="color: #0000FF;">IF</span> <span style="color: #808080;">&#40;</span>@<span style="color: #0000FF;">day</span> <span style="color: #808080;">=</span> <span style="color: #000;">2</span><span style="color: #808080;">&#41;</span> <span style="color: #008080;">-- Monday -- truncate Tuesdays table</span>
	<span style="color: #0000FF;">BEGIN</span>
		<span style="color: #0000FF;">TRUNCATE</span> <span style="color: #0000FF;">TABLE</span> dbo.<span style="color: #202020;">SomeArchiveTable_Tuesday</span>;
	<span style="color: #0000FF;">END</span>
	<span style="color: #0000FF;">ELSE</span> <span style="color: #0000FF;">IF</span> <span style="color: #808080;">&#40;</span>@<span style="color: #0000FF;">day</span> <span style="color: #808080;">=</span> <span style="color: #000;">3</span><span style="color: #808080;">&#41;</span>
	<span style="color: #0000FF;">BEGIN</span>
		<span style="color: #0000FF;">TRUNCATE</span> <span style="color: #0000FF;">TABLE</span> dbo.<span style="color: #202020;">SomeArchiveTable_Wednesday</span>;
	<span style="color: #0000FF;">END</span> <span style="color: #008080;">-- and so on for each day of the week...</span></pre></td></tr></table></div>

<p>Truncating a table takes milliseconds so our SQL Server is now much happier. Disk I/O is massively reduced. There&#8217;s also a couple of additional benefits from this approach; each table is smaller so re-indexing is much quicker, and usually a table being re-indexed is not being inserted into so no blocking occurs.</p>
<p><map name='google_ad_map_1448_a45beff5d2e172f6'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/1448?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_1448_a45beff5d2e172f6' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=1448&amp;url=http%3A%2F%2Fwww.youdidwhatwithtsql.com%2Fpurging-data-partitioning-for-paupers%2F1448' title="Purging data &amp; Partitioning for Paupers" alt=" Purging data &amp; Partitioning for Paupers" /></p><p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/purging-data-partitioning-for-paupers/1448">Purging data &amp; Partitioning for Paupers</a></p>
<div class="none"><div class="g-plusone" data-href="http://www.youdidwhatwithtsql.com/purging-data-partitioning-for-paupers/1448" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://www.youdidwhatwithtsql.com/purging-data-partitioning-for-paupers/1448/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Check Mirroring Status with Powershell</title>
		<link>http://www.youdidwhatwithtsql.com/check-mirroring-status-powershell/1436</link>
		<comments>http://www.youdidwhatwithtsql.com/check-mirroring-status-powershell/1436#comments</comments>
		<pubDate>Tue, 31 Jan 2012 12:21:23 +0000</pubDate>
		<dc:creator>Rhys</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[mirroring]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.youdidwhatwithtsql.com/?p=1436</guid>
		<description><![CDATA[Here&#8217;s a simple Powershell snippet to check the mirroring status on your SQL Server instances. ?View Code POWERSHELL# Load SMO extension &#91;System.Reflection.Assembly&#93;::LoadWithPartialName&#40;&#34;Microsoft.SqlServer.Smo&#34;&#41; &#124; Out-Null; &#160; # Servers to check $sqlservers = @&#40;&#34;server1&#34;, &#34;server2&#34;, &#34;server3&#34;&#41;; foreach&#40;$server in $sqlservers&#41; &#123; $srv = New-Object &#34;Microsoft.SqlServer.Management.Smo.Server&#34; $server; # Get mirrored databases $databases = $srv.Databases &#124; Where-Object &#123;$_.IsMirroringEnabled -eq $true&#125;; Write-Host [...]<p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/check-mirroring-status-powershell/1436">Check Mirroring Status with Powershell</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a simple <a title="Windows Powershell" href="http://technet.microsoft.com/en-us/scriptcenter/dd742419" target="_blank">Powershell</a> snippet to check the <a title="SQL Server Mirroring Status" href="http://msdn.microsoft.com/en-us/library/ms365781.aspx" target="_blank">mirroring status</a> on your SQL Server instances.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1436code42'); return false;">View Code</a> POWERSHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p143642"><td class="code" id="p1436code42"><pre class="powershell" style="font-family:monospace;"><span style="color: #008000;"># Load SMO extension</span>
<span style="color: #000000;">&#91;</span><span style="color: #008080;">System.Reflection.Assembly</span><span style="color: #000000;">&#93;</span>::<span style="color: #800000;">LoadWithPartialName</span><span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Microsoft.SqlServer.Smo&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Out-Null</span>;
&nbsp;
<span style="color: #008000;"># Servers to check</span>
<span style="color: #800080;">$sqlservers</span> <span style="color: pink;">=</span> <span style="color: pink;">@</span><span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;server1&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;server2&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;server3&quot;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$server</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$sqlservers</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #800080;">$srv</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> <span style="color: #800000;">&quot;Microsoft.SqlServer.Management.Smo.Server&quot;</span> <span style="color: #800080;">$server</span>;
	<span style="color: #008000;"># Get mirrored databases</span>
	<span style="color: #800080;">$databases</span> <span style="color: pink;">=</span> <span style="color: #800080;">$srv</span>.Databases <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Where-Object</span> <span style="color: #000000;">&#123;</span><span style="color: #000080;">$_</span>.IsMirroringEnabled <span style="color: #FF0000;">-eq</span> <span style="color: #800080;">$true</span><span style="color: #000000;">&#125;</span>; 
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800080;">$server</span>;
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;==================================&quot;</span>;
	<span style="color: #800080;">$databases</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Select-Object</span> <span style="color: #008080; font-style: italic;">-Property</span> Name<span style="color: pink;">,</span> MirroringStatus <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Format-Table</span> <span style="color: #008080; font-style: italic;">-AutoSize</span>;
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>This will output something looking like below&#8230;</p>
<pre>server1
====================================

Name                 MirroringStatus
----                 ---------------
db1         		Synchronized
db2                    	Synchronized
db3              	Synchronized
db4			Synchronized
db5    			Synchronized
server2
=====================================

Name                 MirroringStatus
----                 ---------------
db1         		Synchronized
db2                    	Synchronized
db3              	Synchronized
db4			Synchronized
db5    			Synchronized
server3
=====================================

Name                 MirroringStatus
----                 ---------------
db1         		Synchronized
db2                    	Synchronized
db3              	Synchronized
db4			Synchronized
db5    			Synchronized</pre>
<p><map name='google_ad_map_1436_a45beff5d2e172f6'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/1436?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_1436_a45beff5d2e172f6' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=1436&amp;url=http%3A%2F%2Fwww.youdidwhatwithtsql.com%2Fcheck-mirroring-status-powershell%2F1436' title="Check Mirroring Status with Powershell" alt=" Check Mirroring Status with Powershell" /></p><p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/check-mirroring-status-powershell/1436">Check Mirroring Status with Powershell</a></p>
<div class="none"><div class="g-plusone" data-href="http://www.youdidwhatwithtsql.com/check-mirroring-status-powershell/1436" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://www.youdidwhatwithtsql.com/check-mirroring-status-powershell/1436/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get-ServerErrors Powershell Function</title>
		<link>http://www.youdidwhatwithtsql.com/getservererrors-powershell-function/1431</link>
		<comments>http://www.youdidwhatwithtsql.com/getservererrors-powershell-function/1431#comments</comments>
		<pubDate>Fri, 06 Jan 2012 16:57:26 +0000</pubDate>
		<dc:creator>Rhys</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Powershell]]></category>

		<guid isPermaLink="false">http://www.youdidwhatwithtsql.com/?p=1431</guid>
		<description><![CDATA[Here&#8217;s a little Powershell function I&#8217;m using to check the Event Logs and SQL Server Error Logs in one easy swoop; ?View Code POWERSHELLfunction Get-ServerErrors &#123; # Server to check &#38;amp; hours back. Will only support default sql instances # Could add a third param for instance and modify script where appropriate if needed param &#40;$server, [...]<p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/getservererrors-powershell-function/1431">Get-ServerErrors Powershell Function</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a little Powershell function I&#8217;m using to check the <a title="Windows Event Logs" href="http://technet.microsoft.com/en-us/library/cc722404.aspx" target="_blank">Event Logs</a> and <a title="SQL server Error Logs" href="http://sqlserverpedia.com/wiki/SQL_Server_Error_Logs" target="_blank">SQL Server Error Logs</a> in one easy swoop;</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1431code45'); return false;">View Code</a> POWERSHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p143145"><td class="code" id="p1431code45"><pre class="powershell" style="font-family:monospace;"><span style="color: #0000FF;">function</span> Get<span style="color: pink;">-</span>ServerErrors
<span style="color: #000000;">&#123;</span>
	<span style="color: #008000;"># Server to check &amp;amp; hours back. Will only support default sql instances</span>
	<span style="color: #008000;"># Could add a third param for instance and modify script where appropriate if needed</span>
	<span style="color: #0000FF;">param</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$server</span><span style="color: pink;">,</span> <span style="color: #000000;">&#91;</span><span style="color: #008080;">int</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$hours</span><span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #000000;">&#91;</span>datetime<span style="color: #000000;">&#93;</span><span style="color: #800080;">$after</span> <span style="color: pink;">=</span> $<span style="color: #000000;">&#40;</span><span style="color: #008080; font-weight: bold;">Get-Date</span><span style="color: #000000;">&#41;</span>.AddHours<span style="color: #000000;">&#40;</span><span style="color: pink;">-</span><span style="color: #800080;">$hours</span><span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #008000;"># Windows Event Log (Application &amp;amp; System) Errors &amp;amp; Warnings</span>
&nbsp;
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;Application Event Log Errors from $server after $after&quot;</span>;
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;========================================================================&quot;</span>;
	<span style="color: #008080; font-weight: bold;">Get-EventLog</span> <span style="color: #008080; font-style: italic;">-ComputerName</span> <span style="color: #800080;">$server</span> <span style="color: #008080; font-style: italic;">-LogName</span> <span style="color: #800000;">&quot;Application&quot;</span> <span style="color: pink;">-</span>EntryType <span style="color: #800000;">&quot;Error&quot;</span> <span style="color: pink;">-</span>After <span style="color: #800080;">$after</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Format-List</span>;
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;Press any key to continue or ctrl + c to quit&quot;</span>;
	<span style="color: #800080;">$r</span> <span style="color: pink;">=</span> <span style="color: #800080;">$host</span>.UI.RawUI.ReadKey<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;NoEcho,IncludeKeyDown&quot;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;System Event Log Errors from $server after $after&quot;</span>;
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;========================================================================&quot;</span>;
	<span style="color: #008080; font-weight: bold;">Get-EventLog</span> <span style="color: #008080; font-style: italic;">-ComputerName</span> <span style="color: #800080;">$server</span> <span style="color: #008080; font-style: italic;">-LogName</span> <span style="color: #800000;">&quot;System&quot;</span> <span style="color: pink;">-</span>EntryType <span style="color: #800000;">&quot;Error&quot;</span> <span style="color: pink;">-</span>After <span style="color: #800080;">$after</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Format-List</span>;
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;Press any key to continue or ctrl + c to quit&quot;</span>;
	<span style="color: #800080;">$r</span> <span style="color: pink;">=</span> <span style="color: #800080;">$host</span>.UI.RawUI.ReadKey<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;NoEcho,IncludeKeyDown&quot;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;Application Event Log Warnings from $server after $after&quot;</span>;
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;========================================================================&quot;</span>;
	<span style="color: #008080; font-weight: bold;">Get-EventLog</span> <span style="color: #008080; font-style: italic;">-ComputerName</span> <span style="color: #800080;">$server</span> <span style="color: #008080; font-style: italic;">-LogName</span> <span style="color: #800000;">&quot;Application&quot;</span> <span style="color: pink;">-</span>EntryType <span style="color: #800000;">&quot;Warning&quot;</span> <span style="color: pink;">-</span>After <span style="color: #800080;">$after</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Format-List</span>;
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;Press any key to continue or ctrl + c to quit&quot;</span>;
	<span style="color: #800080;">$r</span> <span style="color: pink;">=</span> <span style="color: #800080;">$host</span>.UI.RawUI.ReadKey<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;NoEcho,IncludeKeyDown&quot;</span><span style="color: #000000;">&#41;</span>;	
&nbsp;
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;System Event Log Warnings from $server after $after&quot;</span>;
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;========================================================================&quot;</span>;
	<span style="color: #008080; font-weight: bold;">Get-EventLog</span> <span style="color: #008080; font-style: italic;">-ComputerName</span> <span style="color: #800080;">$server</span> <span style="color: #008080; font-style: italic;">-LogName</span> <span style="color: #800000;">&quot;System&quot;</span> <span style="color: pink;">-</span>EntryType <span style="color: #800000;">&quot;Warning&quot;</span> <span style="color: pink;">-</span>After <span style="color: #800080;">$after</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Format-List</span>;
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;Press any key to continue or ctrl + c to quit&quot;</span>;
	<span style="color: #800080;">$r</span> <span style="color: pink;">=</span> <span style="color: #800080;">$host</span>.UI.RawUI.ReadKey<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;NoEcho,IncludeKeyDown&quot;</span><span style="color: #000000;">&#41;</span>;	
&nbsp;
	<span style="color: #008000;"># SQL Server Error Log</span>
	<span style="color: #000000;">&#91;</span>reflection.assembly<span style="color: #000000;">&#93;</span>::<span style="color: #800000;">LoadWithPartialName</span><span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Microsoft.SqlServer.Smo&quot;</span><span style="color: #000000;">&#41;</span> ;
	<span style="color: #800080;">$sql_server</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">new-object</span> <span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Microsoft.SqlServer.Management.Smo.Server&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #800080;">$server</span>;
	<span style="color: #800080;">$sql_server</span>.ReadErrorLog<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Where-Object</span> <span style="color: #000000;">&#123;</span><span style="color: #000080;">$_</span>.Text <span style="color: #FF0000;">-like</span> <span style="color: #800000;">&quot;Error*&quot;</span> <span style="color: #FF0000;">-and</span> <span style="color: #000080;">$_</span>.LogDate <span style="color: #FF0000;">-ge</span> <span style="color: #800080;">$after</span><span style="color: #000000;">&#125;</span>;
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>Usage is as follows;</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1431code46'); return false;">View Code</a> POWERSHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p143146"><td class="code" id="p1431code46"><pre class="powershell" style="font-family:monospace;">Get<span style="color: pink;">-</span>ServerErrors <span style="color: pink;">&lt;</span>server name<span style="color: pink;">&gt;</span> <span style="color: pink;">&lt;</span>hours back to check<span style="color: pink;">&gt;</span>;</pre></td></tr></table></div>

<p><map name='google_ad_map_1431_a45beff5d2e172f6'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/1431?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_1431_a45beff5d2e172f6' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=1431&amp;url=http%3A%2F%2Fwww.youdidwhatwithtsql.com%2Fgetservererrors-powershell-function%2F1431' title="Get ServerErrors Powershell Function" alt=" Get ServerErrors Powershell Function" /></p><p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/getservererrors-powershell-function/1431">Get-ServerErrors Powershell Function</a></p>
<div class="none"><div class="g-plusone" data-href="http://www.youdidwhatwithtsql.com/getservererrors-powershell-function/1431" size="standard" count="true"></div></div>]]></content:encoded>
			<wfw:commentRss>http://www.youdidwhatwithtsql.com/getservererrors-powershell-function/1431/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 7.740 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-19 05:01:45 -->

