<?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 &#187; Triggers</title>
	<atom:link href="http://www.youdidwhatwithtsql.com/tag/triggers/feed" rel="self" type="application/rss+xml" />
	<link>http://www.youdidwhatwithtsql.com</link>
	<description>making DBAs everywhere curse!</description>
	<lastBuildDate>Wed, 01 Sep 2010 17:02:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Using Powershell to check if Triggers are enabled</title>
		<link>http://www.youdidwhatwithtsql.com/using-powershell-to-check-if-triggers-are-enabled/186</link>
		<comments>http://www.youdidwhatwithtsql.com/using-powershell-to-check-if-triggers-are-enabled/186#comments</comments>
		<pubDate>Wed, 17 Jun 2009 18:57:51 +0000</pubDate>
		<dc:creator>Rhys</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Powershell Scripting]]></category>
		<category><![CDATA[Triggers]]></category>

		<guid isPermaLink="false">http://www.youdidwhatwithtsql.com/using-powershell-to-check-if-triggers-are-enabled/186</guid>
		<description><![CDATA[I’ve been thinking about how Powershell can be used by the DBA as an extra tool in their armoury. An article that caught my eye was The Daily DBA Checklist, specifically an item about Triggers; &#34;…last week some idiot turned a host of triggers off in our ERP system, causing a cascade of posting problems [...]<p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/using-powershell-to-check-if-triggers-are-enabled/186">Using Powershell to check if Triggers are enabled</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I’ve been thinking about how <a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx" target="_blank">Powershell</a> can be used by the <a href="http://en.wikipedia.org/wiki/Database_administrator" target="_blank">DBA</a> as an extra tool in their armoury. An article that caught my eye was <a href="http://www.simple-talk.com/community/blogs/tony_davis/archive/2008/05/13/52769.aspx" target="_blank">The Daily DBA Checklist</a>, specifically an item about <a href="http://en.wikipedia.org/wiki/Database_trigger" target="_blank">Triggers</a>;</p>
<p>&quot;<em>…last week some idiot turned a host of triggers off in our ERP system, causing a cascade of posting problems on dozens of orders before we caught the root cause…</em>&quot;</p>
<p><a href="http://www.microsoft.com/sqlserver/2008/en/us/default.aspx" target="_blank">SQL Server</a> does contain a system view called <a href="http://msdn.microsoft.com/en-us/library/ms188746(SQL.90).aspx" target="_blank">sys.triggers</a> to provide us with some detailed information on <a href="http://en.wikipedia.org/wiki/Database_trigger" target="_blank">triggers</a> in our databases. Lets view all triggers in the <a href="http://www.codeplex.com/MSFTDBProdSamples" target="_blank">AdventureWorks</a> 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('p186code5'); return false;">View Code</a> TSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1865"><td class="code" id="p186code5"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">SELECT</span> <span style="color: #808080;">*</span>
<span style="color: #0000FF;">FROM</span> sys.<span style="color: #202020;">triggers</span>;</pre></td></tr></table></div>

<p><a href="http://www.youdidwhatwithtsql.com/wp-content/uploads/2009/06/image13.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sys.triggers from the AdventureWorks database" border="0" alt="sys.triggers from the AdventureWorks database" src="http://www.youdidwhatwithtsql.com/wp-content/uploads/2009/06/image-thumb13.png" width="644" height="149" /></a></p>
<p>View a list of disabled triggers;</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('p186code6'); return false;">View Code</a> TSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1866"><td class="code" id="p186code6"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">SELECT</span> name
<span style="color: #0000FF;">FROM</span> sys.<span style="color: #202020;">triggers</span> 
<span style="color: #0000FF;">WHERE</span> is_disabled <span style="color: #808080;">=</span> <span style="color: #000;">1</span>;</pre></td></tr></table></div>

<p><a href="http://www.youdidwhatwithtsql.com/wp-content/uploads/2009/06/image14.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Disabled triggers in AdventureWorks" border="0" alt="Disabled triggers in AdventureWorks" src="http://www.youdidwhatwithtsql.com/wp-content/uploads/2009/06/image-thumb14.png" width="177" height="108" /></a> </p>
<p>View a summary of enabled and disabled triggers;</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('p186code7'); return false;">View Code</a> TSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1867"><td class="code" id="p186code7"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">SELECT</span> <span style="color: #0000FF;">CASE</span><span style="color: #808080;">&#40;</span>is_disabled<span style="color: #808080;">&#41;</span>
              <span style="color: #0000FF;">WHEN</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">THEN</span> <span style="color: #FF0000;">'Disabled'</span>
              <span style="color: #0000FF;">WHEN</span> <span style="color: #000;">0</span> <span style="color: #0000FF;">THEN</span> <span style="color: #FF0000;">'Enabled'</span>
          <span style="color: #0000FF;">END</span> <span style="color: #0000FF;">AS</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">state</span><span style="color: #808080;">&#93;</span>,
          <span style="color: #FF00FF;">COUNT</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">*</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">AS</span> <span style="color: #808080;">&#91;</span><span style="color: #FF00FF;">count</span><span style="color: #808080;">&#93;</span>
<span style="color: #0000FF;">FROM</span> sys.<span style="color: #202020;">triggers</span>
<span style="color: #0000FF;">GROUP</span> <span style="color: #0000FF;">BY</span> is_disabled;</pre></td></tr></table></div>

<p><a href="http://www.youdidwhatwithtsql.com/wp-content/uploads/2009/06/image15.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Disabled / Enabled trigger summary in AdventureWorks" border="0" alt="Disabled / Enabled trigger summary in AdventureWorks" src="http://www.youdidwhatwithtsql.com/wp-content/uploads/2009/06/image-thumb15.png" width="164" height="88" /></a> </p>
<p>Many people may be happy with these methods but here’s a <a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx" target="_blank">Powershell</a> method that I think is much better;</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('p186code8'); return false;">View Code</a> POWERSHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1868"><td class="code" id="p186code8"><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;"># Set sql server &amp; db info</span>
<span style="color: #800080;">$sqlserver</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;RHYS-PC\sql2005&quot;</span>;
<span style="color: #800080;">$database</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;AdventureWorks&quot;</span>;
&nbsp;
<span style="color: #008000;"># Create sql server and db objects</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;">$sqlserver</span>;
<span style="color: #800080;">$db</span> <span style="color: pink;">=</span> <span style="color: #800080;">$srv</span>.Databases<span style="color: #000000;">&#91;</span><span style="color: #800080;">$database</span><span style="color: #000000;">&#93;</span>;
&nbsp;
<span style="color: #800080;">$triggerCount</span> <span style="color: pink;">=</span> <span style="color: #804000;">0</span>;
<span style="color: #800080;">$disabledCount</span> <span style="color: pink;">=</span> <span style="color: #804000;">0</span>;
&nbsp;
<span style="color: #008000;"># Any Database Triggers?</span>
<span style="color: #800080;">$DatabaseTriggerCount</span> <span style="color: pink;">=</span> <span style="color: #800080;">$db</span>.Triggers.Count;
&nbsp;
<span style="color: #0000FF;">if</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$DatabaseTriggerCount</span> <span style="color: #FF0000;">-gt</span> <span style="color: #804000;">0</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #800080;">$triggerCount</span> <span style="color: pink;">+=</span> <span style="color: #800080;">$DatabaseTriggerCount</span>;
	<span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$DatabaseTrigger</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$db</span>.Triggers<span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$active</span> <span style="color: pink;">=</span> <span style="color: #800080;">$DatabaseTrigger</span>.IsEnabled;
		<span style="color: #0000FF;">if</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$active</span><span style="color: #000000;">&#41;</span>
		<span style="color: #000000;">&#123;</span>
			<span style="color: #008000;"># Set text to green</span>
			<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #008080; font-style: italic;">-ForegroundColor</span> Green <span style="color: #800000;">&quot;$DatabaseTrigger IsEnabled = $active.&quot;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0000FF;">else</span>
		<span style="color: #000000;">&#123;</span>
			<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #008080; font-style: italic;">-ForegroundColor</span> Red <span style="color: #800000;">&quot;$DatabaseTrigger IsEnabled = $active.&quot;</span>;
			<span style="color: #008000;"># Increment $disabledCount</span>
			<span style="color: #800080;">$disabledCount</span> <span style="color: pink;">+=</span> <span style="color: #804000;">1</span>;
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #008000;"># For each table</span>
<span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$table</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$db</span>.Tables<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #008000;"># tally up trigger count</span>
	<span style="color: #800080;">$triggerCount</span> <span style="color: pink;">+=</span> <span style="color: #800080;">$table</span>.Triggers.Count;	
	<span style="color: #008000;"># For each trigger on the current table</span>
	<span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$trigger</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$table</span>.Triggers<span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$active</span> <span style="color: pink;">=</span> <span style="color: #800080;">$trigger</span>.IsEnabled;
		<span style="color: #0000FF;">if</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$active</span><span style="color: #000000;">&#41;</span>
		<span style="color: #000000;">&#123;</span>
			<span style="color: #008000;"># Set text to green</span>
			<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #008080; font-style: italic;">-ForegroundColor</span> Green <span style="color: #800000;">&quot;$trigger IsEnabled = $active.&quot;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0000FF;">else</span>
		<span style="color: #000000;">&#123;</span>
			<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #008080; font-style: italic;">-ForegroundColor</span> Red <span style="color: #800000;">&quot;$trigger IsEnabled = $active.&quot;</span>;
			<span style="color: #008000;"># Increment $disabledCount</span>
			<span style="color: #800080;">$disabledCount</span> <span style="color: pink;">+=</span> <span style="color: #804000;">1</span>;
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #008000;"># Write summary</span>
<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #008080; font-style: italic;">-ForegroundColor</span> Green <span style="color: #800000;">&quot;=======================================&quot;</span>;
<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #008080; font-style: italic;">-ForegroundColor</span> Green <span style="color: #800000;">&quot;Total triggers in $sqlserver\$database = $triggerCount&quot;</span>;
<span style="color: #800080;">$colour</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Green&quot;</span>;
<span style="color: #0000FF;">if</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$disabledCount</span> <span style="color: #FF0000;">-gt</span> <span style="color: #804000;">0</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #008000;"># If any triggers are disabled change warning text to red!</span>
	<span style="color: #800080;">$colour</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Red&quot;</span>;
<span style="color: #000000;">&#125;</span>
<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #008080; font-style: italic;">-ForegroundColor</span> <span style="color: #800080;">$colour</span> <span style="color: #800000;">&quot;Total disabled triggers = $disabledCount.&quot;</span>;</pre></td></tr></table></div>

<p><a href="http://www.youdidwhatwithtsql.com/wp-content/uploads/2009/06/image17.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Checking triggers with Powershell" border="0" alt="Checking triggers with Powershell" src="http://www.youdidwhatwithtsql.com/wp-content/uploads/2009/06/image-thumb17.png" width="644" height="327" /></a> </p>
<p>In this <a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx" target="_blank">Powershell</a> script I have used coloured text to make certain things stand out. The <a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx" target="_blank">Powershell</a> method would be easy to adapt to use with multiple servers or take corrective action, i.e. enabling triggers. A Powershell script would be an excellent choice for that final go-live sanity check. I’m going to focus on more items in <a href="http://www.simple-talk.com/community/blogs/tony_davis/archive/2008/05/13/52769.aspx" target="_blank">The Daily DBA Checklist</a>, and similar articles, for further <a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx" target="_blank">Powershell</a> articles.</p>
<p><map name='google_ad_map_186_a45beff5d2e172f6'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/186?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_186_a45beff5d2e172f6' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=186&amp;url=http%3A%2F%2Fwww.youdidwhatwithtsql.com%2Fusing-powershell-to-check-if-triggers-are-enabled%2F186' title="Using Powershell to check if Triggers are enabled" alt=" Using Powershell to check if Triggers are enabled" /></p><p>Post from: <a href="http://www.youdidwhatwithtsql.com">youdidwhatwithtsql.com</a><br/><br/><a href="http://www.youdidwhatwithtsql.com/using-powershell-to-check-if-triggers-are-enabled/186">Using Powershell to check if Triggers are enabled</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.youdidwhatwithtsql.com/using-powershell-to-check-if-triggers-are-enabled/186/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
