<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2252997773360746596</id><updated>2011-11-07T03:12:29.183-05:00</updated><category term='install'/><category term='red-gate'/><category term='ms09-feb'/><category term='DBCC SHRINKFILE'/><category term='free'/><category term='mscs'/><category term='file size'/><category term='SP3'/><category term='Encryption'/><category term='SQLAgent subsystem dll msdb syssubsystems'/><category term='Analysis Services'/><category term='database files'/><category term='Version'/><category term='powershell'/><category term='best practice'/><category term='file deletion'/><category term='PBM'/><category term='SQLSaturday'/><category term='maintenance'/><category term='SQL2005'/><category term='Linked Server'/><category term='allocated'/><category term='SSIS'/><category term='nic'/><category term='ms08-jul'/><category term='Cluster'/><category term='backup'/><category term='CU5'/><category term='scripting'/><category term='showplan'/><category term='SQL2008'/><category term='OLAP'/><category term='percent free'/><category term='sql security patch'/><category term='tempdb'/><category term='used'/><category term='permissions'/><category term='Graphical Execution Plan'/><category term='SSAS'/><category term='eventid'/><category term='search'/><category term='simple-talk'/><category term='article'/><category term='network'/><category term='configurations'/><category term='T-SQL'/><category term='model'/><category term='Training'/><category term='Policy Based Management'/><title type='text'>SQL, Powershell &amp; Etcetera</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-141028800261613982</id><published>2009-12-22T15:01:00.012-05:00</published><updated>2009-12-23T19:16:07.777-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='OLAP'/><title type='text'>Backup Failures in OLAP</title><content type='html'>&lt;p&gt;I've recently come across backup failures on an SSAS database with the below error...&lt;/p&gt;

&lt;p&gt;"Memory error: Allocation failure : Not enough storage is available to process this command."&lt;/p&gt;

&lt;p&gt;
So I was thinking about the errors &amp;amp; think these can be gotten around to a degree.&lt;/p&gt;

&lt;p&gt;
In AS there is a setting called MemoryLimitErrorEnabled that controls whether an error will be generated if the estimated memory needed for an operation can’t be granted. See this &lt;a href="http://technet.microsoft.com/en-us/library/cc966526.aspx" target="_blank"&gt;technet article&lt;/a&gt; for more in-depth info. &lt;/p&gt;

&lt;p&gt;I’m pretty sure this is causing at least some of the errors. Since this is for estimated memory usage only there shouldn't’t be any detrimental effect to disabling it for backups (presumably you won't be processing cube dimensions while taking backups). The worst case is the backup will just fail a bit later when it actually runs out of memory; at best the backup will succeed &amp;amp; not require manual intervention or a restart. &lt;/p&gt;

&lt;p&gt;The plan would be to &lt;/p&gt;

&lt;p&gt;1. set MemoryLimitErrorEnabled to false&lt;/p&gt;

&lt;p&gt;2. take a backup&lt;/p&gt;

&lt;p&gt;3. set MemoryLimitErrorEnabled back to true &lt;/p&gt;

&lt;p&gt;Setting MemoryLimitErrorEnabled does not require a restart to take effect &amp;amp; can be &lt;a href="http://docs.google.com/View?id=ddcssfvk_16cvwpkbhn" target="_blank"&gt;scripted&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I've tested this method on a Development server &amp;amp; it worked perfectly.&lt;/p&gt;
&lt;p&gt;Quick update, on implementing this solution I realized that the workflow of the SQLAgent job would need to change. This workflow is designed to always leave MemoryLimitErrorEnabled - true regardless of whether the backup step succeds or fails. Please forgive the roughness of the document, but I don't have access to Visio.&lt;/p&gt;&lt;a href="http://1.bp.blogspot.com/_xhyp2IZfN3c/SzKylBI058I/AAAAAAAAAF4/veTc9jhjrZo/s1600-h/Workflow.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5418589650710489026" style="WIDTH: 400px; CURSOR: hand; HEIGHT: 324px" alt="" src="http://1.bp.blogspot.com/_xhyp2IZfN3c/SzKylBI058I/AAAAAAAAAF4/veTc9jhjrZo/s400/Workflow.bmp" border="0" /&gt;&lt;/a&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-141028800261613982?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/141028800261613982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/12/backup-failures-in-olap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/141028800261613982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/141028800261613982'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/12/backup-failures-in-olap.html' title='Backup Failures in OLAP'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xhyp2IZfN3c/SzKylBI058I/AAAAAAAAAF4/veTc9jhjrZo/s72-c/Workflow.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-6736553347443407457</id><published>2009-10-20T12:16:00.009-04:00</published><updated>2009-10-20T14:54:42.910-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='SQLSaturday'/><category scheme='http://www.blogger.com/atom/ns#' term='Encryption'/><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><title type='text'>SQLSaturday 21 - Encrypting SSIS Connection Strings</title><content type='html'>I had the chance to speak at the recent &lt;a href="http://www.sqlsaturday.com/" target="_blank"&gt;SQLSaturday&lt;/a&gt; in Orlando on Encrypting SSIS Connection Strings.  Many thanks to Andy Warren for giving me the opportunity.&lt;br&gt;&lt;br&gt;
As always the day was top notch all the way.  Andy &amp;amp; team put on a great event.&lt;br&gt;&lt;br&gt;
I've commented the code used for the demo (it's fully functional, just needs the passwords &amp;amp; file path for the master key backup changed) with enough information to implement the solution &amp;amp; placed it &lt;a href="http://docs.google.com/View?id=ddcssfvk_123574gg5" target="_blank"&gt;here&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
Thanks again to Andy &amp;amp; team for a great event.  Also a special thanks for all those who attended my session &amp;amp; restrained from any rotten fruit throwing :-).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-6736553347443407457?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/6736553347443407457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/10/sqlsaturday-21-encrypting-ssis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/6736553347443407457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/6736553347443407457'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/10/sqlsaturday-21-encrypting-ssis.html' title='SQLSaturday 21 - Encrypting SSIS Connection Strings'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-2212227006971789565</id><published>2009-10-07T13:48:00.006-04:00</published><updated>2009-10-07T14:08:09.727-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql security patch'/><category scheme='http://www.blogger.com/atom/ns#' term='Policy Based Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Linked Server'/><category scheme='http://www.blogger.com/atom/ns#' term='PBM'/><title type='text'>Finding Linked Servers with Open Mappings to SA</title><content type='html'>Recently I've been working on implementing PBM (&lt;a href="http://technet.microsoft.com/en-us/library/bb510667.aspx" target="_blank"&gt;Policy Based Management&lt;/a&gt;) in our environment.  In addition to using the predefined conditions &amp;amp; facets I've been creating custom Policies using &lt;a href="http://blogs.msdn.com/sqlpbm/archive/2008/07/03/executesql.aspx" target="_blank"&gt;executesql()&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;
As part of this effort we wanted a policy to alert us to Linked Servers with an open mapping to SA.  Since this isn't something that was really obvious it seemed worthy of a quick post.  There are 2 versions of the code, one for SQL2000 &amp;amp; one for SQL2005.  The code is written with PBM in mind so parses as one string, you can take this code out &amp; it will still work just fine.  The code is &lt;a href="http://docs.google.com/View?id=ddcssfvk_11d7gwwzhm" target="_blank"&gt;here&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;
Don't forget &lt;a href="http://www.sqlsaturday.com/eventhome.aspx?eventid=32" target="_blank"&gt;SQLSaturday #21&lt;/a&gt; in Orlando is less than 2 weeks away.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-2212227006971789565?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/2212227006971789565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/10/finding-linked-servers-with-open.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/2212227006971789565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/2212227006971789565'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/10/finding-linked-servers-with-open.html' title='Finding Linked Servers with Open Mappings to SA'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-3662043005778129401</id><published>2009-09-04T12:52:00.012-04:00</published><updated>2009-09-08T14:01:38.313-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='free'/><title type='text'>SQLSaturday #21 is Coming to Orlando...</title><content type='html'>...On October 17&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;th&lt;/span&gt;.
&lt;br&gt;&lt;br&gt;
For anyone who's not familiar with &lt;a href="http://www.sqlsaturday.com/eventhome.aspx" target="_blank"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;SQLSaturday&lt;/span&gt;&lt;/a&gt;, it's a free (a $10 fee for lunch is being charged this year due to funding challenges) all day event for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;SQL&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Pro's&lt;/span&gt; &amp;amp; those wanting to expand their &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;SQL&lt;/span&gt; skills. There's a wide variety of &lt;a href="http://www.sqlsaturday.com/schedule.aspx?eventid=32" target="_blank"&gt;sessions&lt;/a&gt; throughout the day organized in "tracks". For example there's a track for Administration which focuses more on, well, the administrative aspects of working with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SQL&lt;/span&gt; &amp;amp; a track on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;SSIS&lt;/span&gt; which focuses on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;ETL&lt;/span&gt;. The &lt;a href="http://www.sqlsaturday.com/schedule.aspx?eventid=32" target="_blank"&gt;sessions&lt;/a&gt; cover a broad range of depth &amp;amp; there are &lt;a href="http://www.sqlsaturday.com/schedule.aspx?eventid=32" target="_blank"&gt;sessions&lt;/a&gt; suitable for beginners all the way through advanced users.
&lt;br&gt;&lt;br&gt;
I had the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;privilege&lt;/span&gt; of &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;attending&lt;/span&gt; the very first &lt;a href="http://www.sqlsaturday.com/eventhome.aspx" target="_blank"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;SQLSaturday&lt;/span&gt;&lt;/a&gt; &amp;amp; several more since then &amp;amp; I can't recommend it highly enough. Top notch speakers (for example Andy Warren, Brian Knight, Buck Woody &amp;amp; Kendal Van Dyke to name a few), lots of info, lots of fun &amp;amp; you certainly can't beat the cost. In today's economic climate, with training budgets being slashed or eliminated this is a great way to pick up high quality training for the cost of lunch.
&lt;br&gt;&lt;br&gt;
In addition to the free event, &lt;a href="http://www.sqlshare.com/AboutUs.aspx" target="_blank"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;EndToEnd&lt;/span&gt; Training&lt;/a&gt; is also presenting 5 full day &lt;a href="http://www.sqlsaturday.com/seminars.aspx?eventid=32" target="_blank"&gt;seminars&lt;/a&gt; the week leading up to &lt;a href="http://www.sqlsaturday.com/eventhome.aspx" target="_blank"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;SQLSaturday&lt;/span&gt;&lt;/a&gt;. Each &lt;a href="http://www.sqlsaturday.com/seminars.aspx?eventid=32" target="_blank"&gt;seminar&lt;/a&gt; is $149 with a 20% discount to those that attend 2 or more sessions.
&lt;br&gt;&lt;br&gt;
&amp;lt;shameless plug&amp;gt;&lt;br&gt;
This year I'll be presenting a 15 minute session on &lt;a href="http://www.sqlsaturday.com/viewsession.aspx?sessionid=694" target="_blank"&gt;Encrypting &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;SSIS&lt;/span&gt; Connection Strings&lt;/a&gt;.&lt;br&gt;
&amp;lt;/shameless plug&amp;gt;
&lt;br&gt;&lt;br&gt;
So, get signed up &amp;amp; plan on being in Orlando on the 17&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;th&lt;/span&gt;. Trust me, you'll thank yourself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-3662043005778129401?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/3662043005778129401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/09/sqlsaturday-21-is-coming-to-orlando.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/3662043005778129401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/3662043005778129401'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/09/sqlsaturday-21-is-coming-to-orlando.html' title='SQLSaturday #21 is Coming to Orlando...'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-2401217786911428345</id><published>2009-08-27T19:40:00.010-04:00</published><updated>2009-08-27T20:02:40.185-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL2008'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='SP3'/><category scheme='http://www.blogger.com/atom/ns#' term='CU5'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Version'/><title type='text'>Checking SQL &amp; SSIS Versions with Powershell</title><content type='html'>I'm currently in the process of applying SP3 + CU5 to all our SQL2005 Instances.  I wanted to be able to quickly check whether the install was successful (we're experimenting with using SCCM to push to our standalone Instances). 
&lt;br&gt;&lt;br&gt;
Checking SQL was easy enough, just using &lt;span style="font-size:85%;color:fuchsia;"&gt;@@version&lt;/span&gt; in a multi-query was enough.  However SSIS is a little tougher, you can't check it via T-SQL and I don't have the patience to login to every machine and check it that way.
&lt;br&gt;&lt;br&gt;
The solution I came up with uses &lt;span style="font-size:85%;"&gt;&lt;span style="color:fuchsia;"&gt;SERVERPROPERTY&lt;/span&gt;(&lt;span style="color:red;"&gt;'ProductVersion'&lt;/span&gt;)&lt;/span&gt; to check the SQL build &amp;amp; &lt;span style="font-size:85%;"&gt;[&lt;span style="color:#008080;"&gt;system&lt;/span&gt;.&lt;span style="color:#008080;"&gt;diagnostics&lt;/span&gt;.&lt;span style="color:#008080;"&gt;fileversioninfo&lt;/span&gt;]::&lt;span style="color:#800000;"&gt;GetVersionInfo&lt;/span&gt;()&lt;/span&gt; to check the Product version on the SSIS executable.
&lt;br&gt;&lt;br&gt;
It returns a table with the Instance, Version, SQL &amp;amp; SSIS Builds and Notes (for example whether SSIS is installed &amp;amp; if installed do the SQL &amp; SSIS Builds match).  The code is &lt;a href="http://docs.google.com/View?id=ddcssfvk_108qrhn4gw" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-2401217786911428345?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/2401217786911428345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/08/checking-sql-ssis-versions-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/2401217786911428345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/2401217786911428345'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/08/checking-sql-ssis-versions-with.html' title='Checking SQL &amp; SSIS Versions with Powershell'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-6105572682065305057</id><published>2009-08-20T13:50:00.007-04:00</published><updated>2009-08-20T16:23:41.094-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eventid'/><title type='text'>Finding Event ID's</title><content type='html'>A while back, I had the need to look for a particular EventID across all our SQL servers. The script I came up to do the work is &lt;a href="http://docs.google.com/View?id=ddcssfvk_9gpfvzxgd" target="_blank"&gt;here&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;
This was one of my earliest efforts so its a bit primitive, but works just fine. The main working portion of the script is a straighforward query of the Win32_NTLogEvent wmi class.
&lt;br&gt;&lt;br&gt;
The fun part was converting the wmi time into something more usable/readable. I did this in a function that breaks the wmi time into discrete chunks &amp;amp; then strings them all back together in my preferred format.  Additionally it modify's the new date/time to account for daylight savings.
&lt;br&gt;
&lt;pre&gt;&lt;!--

Code highlighting produced by Actipro SyntaxEditor
http://www.ActiproSoftware.com/Products/DotNet/

--&gt;&lt;span style="color: #0000FF;"&gt;Function&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #5F9EA0;"&gt;Convert-WMITime&lt;/span&gt;&lt;span style="color: #000000;"&gt;
{
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;param&lt;/span&gt;&lt;span style="color: #000000;"&gt;([&lt;/span&gt;&lt;span style="color: #008080;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;span style="color: #800080;"&gt;$WMITime&lt;/span&gt;&lt;span style="color: #000000;"&gt;)

    &lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt;Break Date &amp;amp; Time into discreet elements&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #800080;"&gt;$ds&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [&lt;/span&gt;&lt;span style="color: #008080;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;span style="color: #800080;"&gt;$WMITime&lt;/span&gt;&lt;span style="color: #000000;"&gt;.substring(&lt;/span&gt;&lt;span style="color: #000000;"&gt;21&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
    &lt;/span&gt;&lt;span style="color: #800080;"&gt;$yr&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [&lt;/span&gt;&lt;span style="color: #008080;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;span style="color: #800080;"&gt;$WMITime&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Substring(&lt;/span&gt;&lt;span style="color: #000000;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
    &lt;/span&gt;&lt;span style="color: #800080;"&gt;$mo&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [&lt;/span&gt;&lt;span style="color: #008080;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;span style="color: #800080;"&gt;$WMITime&lt;/span&gt;&lt;span style="color: #000000;"&gt;.substring(&lt;/span&gt;&lt;span style="color: #000000;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
    &lt;/span&gt;&lt;span style="color: #800080;"&gt;$dy&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [&lt;/span&gt;&lt;span style="color: #008080;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;span style="color: #800080;"&gt;$WMITime&lt;/span&gt;&lt;span style="color: #000000;"&gt;.substring(&lt;/span&gt;&lt;span style="color: #000000;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
    &lt;/span&gt;&lt;span style="color: #800080;"&gt;$tm&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [&lt;/span&gt;&lt;span style="color: #008080;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;span style="color: #800080;"&gt;$WMITime&lt;/span&gt;&lt;span style="color: #000000;"&gt;.substring(&lt;/span&gt;&lt;span style="color: #000000;"&gt;8&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
    &lt;/span&gt;&lt;span style="color: #800080;"&gt;$hr&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [&lt;/span&gt;&lt;span style="color: #008080;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;span style="color: #800080;"&gt;$tm&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Substring(&lt;/span&gt;&lt;span style="color: #000000;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
    &lt;/span&gt;&lt;span style="color: #800080;"&gt;$min&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [&lt;/span&gt;&lt;span style="color: #008080;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;span style="color: #800080;"&gt;$tm&lt;/span&gt;&lt;span style="color: #000000;"&gt;.substring(&lt;/span&gt;&lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
    &lt;/span&gt;&lt;span style="color: #800080;"&gt;$sec&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [&lt;/span&gt;&lt;span style="color: #008080;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;span style="color: #800080;"&gt;$tm&lt;/span&gt;&lt;span style="color: #000000;"&gt;.substring(&lt;/span&gt;&lt;span style="color: #000000;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
    
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt;Create string in desired format&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #800080;"&gt;$s&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;$mo/$dy/$yr &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$hr&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;:&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$min&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;:&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$sec&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt;cast result as DateTime type&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #800080;"&gt;$result&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [&lt;/span&gt;&lt;span style="color: #008080;"&gt;DateTime&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;span style="color: #800080;"&gt;$s&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt;Account for DST&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #800080;"&gt;$cp&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$ds&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Contains(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;-240&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;))
    {
        &lt;/span&gt;&lt;span style="color: #800080;"&gt;$result&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$result&lt;/span&gt;&lt;span style="color: #000000;"&gt;.AddHours(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
    }
    
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$result&lt;/span&gt;&lt;span style="color: #000000;"&gt;
}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-6105572682065305057?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/6105572682065305057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/08/finding-event-ids.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/6105572682065305057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/6105572682065305057'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/08/finding-event-ids.html' title='Finding Event ID&apos;s'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-7540399817546143159</id><published>2009-08-14T14:55:00.008-04:00</published><updated>2009-09-22T13:26:05.778-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='percent free'/><category scheme='http://www.blogger.com/atom/ns#' term='allocated'/><category scheme='http://www.blogger.com/atom/ns#' term='used'/><category scheme='http://www.blogger.com/atom/ns#' term='file size'/><category scheme='http://www.blogger.com/atom/ns#' term='database files'/><title type='text'>Get Files, Sizes &amp; Percent Free by DB</title><content type='html'>This week I've been working on our space needs for the upcoming budget year. As part of that effort I spent a few minutes writing a script to return infrmation on database files; including file group, logical name, physical name, allocated size, used size &amp;amp; percent free space for each file. The code is &lt;a href="http://docs.google.com/View?id=ddcssfvk_8g6dd8frn" target="_blank"&gt;here&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;
In the next few weeks I'm planning to do a write up on the entire process I used to generate my space requests, it involves several pieces, inluding a process to populate database size (this is not mine).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-7540399817546143159?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/7540399817546143159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/08/get-files-sizes-percent-free-by-db.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/7540399817546143159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/7540399817546143159'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/08/get-files-sizes-percent-free-by-db.html' title='Get Files, Sizes &amp; Percent Free by DB'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-3791090494866371100</id><published>2009-08-03T15:35:00.009-04:00</published><updated>2009-08-03T16:23:23.457-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBCC SHRINKFILE'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><title type='text'>Generating log file shrinks</title><content type='html'>We had a situation where we needed to shrink all &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;log files&lt;/span&gt; for all &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;databases&lt;/span&gt; on a couple of drives &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;preparatory&lt;/span&gt; to moving all the files to a new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;LUN&lt;/span&gt; which would then be mounted as the same drive letter. This was being done to correct improperly aligned partitions on the drives causing performance issues.&lt;br&gt;&lt;br&gt;
When disk partitions are not properly aligned there is a significant performance degradation (30-40%) on the disk, see Chad Miller's &lt;a href="http://chadwickmiller.spaces.live.com/blog/cns!EA42395138308430!291.entry" target="_blank"&gt;blog post&lt;/a&gt; on this for more detail. Additionally, correcting this will reduce throughput to the SAN array which can benefit overall performance of the array.&lt;br&gt;&lt;br&gt;
I don't normally recommend (and would typically &lt;strong&gt;strongly&lt;/strong&gt; oppose) shrinking files, but in this case we had a limited &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;time frame&lt;/span&gt; to make this move &amp;amp; shrinking these files meant 150&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;GBs&lt;/span&gt; less data to move which was a make or break for the timeline we were allowed to complete the work in.&lt;br&gt;&lt;br&gt;
Since these were all log files I choose to shrink them all to 1MB for maximum benefit. For the sake of &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;paranoia&lt;/span&gt; (I like to double/triple/quadruple check scripts prior to running in Production) I had it generate the statements to run &amp;amp; then ran them manually. To customize for your drives you would just change the T-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;SQL&lt;/span&gt; defined in the @&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;sql&lt;/span&gt; variable. The script is &lt;a href="http://docs.google.com/View?id=ddcssfvk_5dx574hdf" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-3791090494866371100?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/3791090494866371100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/08/generating-log-file-shrinks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/3791090494866371100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/3791090494866371100'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/08/generating-log-file-shrinks.html' title='Generating log file shrinks'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-8088486272798606899</id><published>2009-07-27T09:23:00.003-04:00</published><updated>2009-08-14T15:32:13.862-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powershell'/><category scheme='http://www.blogger.com/atom/ns#' term='red-gate'/><category scheme='http://www.blogger.com/atom/ns#' term='simple-talk'/><category scheme='http://www.blogger.com/atom/ns#' term='article'/><title type='text'>Simple-Talk article</title><content type='html'>The folks at Simple-Talk were kind enough to give me an opportunity to write an article for them about Powershell, Reg-Gate SQLCompare &amp;amp; Snapshots.&lt;div&gt;
&lt;/div&gt;&lt;div&gt;The result is &lt;a href="http://www.simple-talk.com/content/article.aspx?article=761" target="_blank"&gt;here&lt;/a&gt;, please let me know what you think by voting.  Thanks!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-8088486272798606899?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/8088486272798606899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/07/simple-talk-article.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/8088486272798606899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/8088486272798606899'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/07/simple-talk-article.html' title='Simple-Talk article'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-5742881745773494157</id><published>2009-07-17T17:05:00.007-04:00</published><updated>2009-07-17T17:38:11.493-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Graphical Execution Plan'/><category scheme='http://www.blogger.com/atom/ns#' term='tempdb'/><category scheme='http://www.blogger.com/atom/ns#' term='showplan'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL2005'/><title type='text'>Granting use of Graphical Execution Plan in SQL2005</title><content type='html'>I recently had the need to allow non-sysadmin, non-db_owner users to use the graphcal execution plan in SQL2005 on a query using tempdb (temp table). Assuming this worked just like "SET SHOWPLAN_* ON" I granted the user Showplan on the DB in question.&lt;br&gt;&lt;br&gt;
To test, I created a user with access to only the DB in question &amp;amp; tested "SET SHOWPLAN_TEXT ON", "SET SHOWPLAN_XML ON" &amp;amp; "SET SHOWPLAN_ALL ON" with no issues. However, when I tried to use the graphical execution plan ("Include Actual Execution Plan" option on the query) it failed with the below error...&lt;br&gt;
&lt;span style="font-family:courier new;font-size:85%;color:#ff0000;"&gt;Msg 262, Level 14, State 4, Line 29 &lt;/span&gt;&lt;br&gt;
&lt;span style="font-family:courier new;font-size:85%;color:#ff0000;"&gt;SHOWPLAN permission denied in database 'tempdb'.&lt;/span&gt;&lt;br&gt;&lt;br&gt;
So, for a "normal" user who uses the graphical execution plan it seems my only option is to explicitly add them to tempdb &amp;amp; grant Showplan permissions (this would entail adding them to model as well so their perms persist on startup when tempdb is recreated). The other option would be to grant Showplan perms to guest on model/tempdb which given the &lt;a href="http://msdn.microsoft.com/en-us/library/ms189602(SQL.90).aspx"&gt;official&lt;/a&gt; &amp;amp; &lt;a href="http://www.sqlsecurity.com/Community/Discussions/tabid/68/forumid/1/postid/11663/view/topic/Default.aspx"&gt;observed&lt;/a&gt; (for example) vulnerabilities associated with SHOWPLAN seems a little crazy.&lt;br&gt;&lt;br&gt;
I don't normally knock MS around too much, but I really dislike both these options. Basically I'm being forced to choose between a gaping security hole (the guest scenario), a smaller security hole + a (to me) bad practice of granting a user access to a system DB that they really shouldn't need OR denying the perms to a user who's actually trying to do right.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-5742881745773494157?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/5742881745773494157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/07/granting-use-of-graphical-execution.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/5742881745773494157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/5742881745773494157'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/07/granting-use-of-graphical-execution.html' title='Granting use of Graphical Execution Plan in SQL2005'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-7199262648381343078</id><published>2009-07-15T11:49:00.015-04:00</published><updated>2009-07-17T17:35:47.318-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powershell'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='nic'/><title type='text'>Using Powershell to gather NIC info</title><content type='html'>In the course of troubleshooting a performance issue (in part caused by replication latency), we noticed that the NIC on our SQL server had been changed from Full Duplex to Half Duplex. Needless to say as soon as we switched back to Full Duplex our latency dropped back to what we'd come to expect. This was renforced by the behavior we observed when observing replication latency where it would be delivering transactions in bursts which lines up with the Half Duplex arcitecture of one-way communication.&lt;BR&gt;&lt;br&gt;

As as outgrowth of this I thought it would be prudent to check the rest of our environment to make sure we didn't have any more mis-configured NICs. The majority of our Prod SQL Instances are clustered &amp;amp; have 2 NICs, one for the Heartbeat network &amp;amp; one for the Public Network. Per MS best practices for Clustered SQL the Heartbeat NIC is set to "100 Mb Full" &amp;amp; the Public NIC is set to "1000 Mb Full" so differentiating bewteen the NICs is important.&lt;BR&gt;&lt;br&gt;

My first thought was to use the Win32_NetworkAdapter class which has properties for speed &amp;amp; duplex, unfortunantly looking at &lt;a href="http://msdn.microsoft.com/en-us/library/aa394216(VS.85).aspx" target="_blank"&gt;msdn&lt;/a&gt; it appears the properties haven't been implemented yet (this was verified in my testing). After viewing an excellent post on the topic by &lt;a href="http://www.peetersonline.nl/index.php/powershell/gather-nic-properties-including-speed-and-duplex" target="_blank"&gt;Hugo Peeters&lt;/a&gt;, I decided his method would work with a few small changes. My main gripe about this is the fact that MS forces us to (yet again) go to the registry for information that should be in WMI. Since the registry path changes by vendor (and in some cases model number) you'll need to modify your version of the script to account for the NIC vendors/models in your environment.&lt;BR&gt;&lt;br&gt;


The script is &lt;a href="http://docs.google.com/View?id=ddcssfvk_1dn9645g4" target="_blank"&gt;here&lt;/a&gt;, I was not able to get it to show in a usable format on the page so we'll try this instead.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-7199262648381343078?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/7199262648381343078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/07/using-powershell-to-gather-nic-info.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/7199262648381343078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/7199262648381343078'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/07/using-powershell-to-gather-nic-info.html' title='Using Powershell to gather NIC info'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-4908018215292452961</id><published>2009-06-16T15:23:00.018-04:00</published><updated>2009-06-16T18:08:42.582-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powershell'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Fun with Powershell &amp; Red-Gate SQL Compare</title><content type='html'>Last week I was asked to help out on a project where a group of users that didn't have access to Production needed to be able to perform schema compares of Dev &lt;-&gt; Prod DBs. We currently use Red-Gate SQL Compare &lt;begin&gt;which is a great product, BTW&lt;/END plug&gt; so a solution was designed around it. The solution decided on was to use SQL Compare to generate Snapshots of Prod nightly that could then be compared against without the need for access to Prod (Note: a SQL Compare Snapshot is a flat file which contains all information needed to perform a complete schema compare, but no actual data).&lt;p&gt;&lt;/p&gt;We wanted the process that generated the Snapshots to automatically run nightly against all online, non system DBs on all Prod SQL Instances, also excluding any DBs reserved for DBA usage only. The process should also be able to be manually run for an individual DB, one Instance or a group of SQL Instances. My final solution involved 2 powershell scripts &amp;amp; a scheduled job. One script actually creates the Snapshots &amp;amp; one script runs 4 iterations of the create script in parallel (more on this later).

There are a few considerations to take into considerations when using this method, SQL Compare 8.0 is required to create Snapshots from the command line &amp;amp; to compare against the Snapshots.

There is a free utility from Red-Gate that allows for command line creation of Snapshots (they are also usable by SQL Compare 7.0 and higher) that can be found here "&lt;a href="http://www.red-gate.com/downloads/labs/RedGate.SQLSnapper.zip"&gt;http://www.red-gate.com/downloads/labs/RedGate.SQLSnapper.zip&lt;/a&gt;" in our case we needed some of the features offered by Professional Edition so we went that route.

&lt;p&gt;The automated steps looks like this...&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Scheduled job "Create RG Snaps" runs... &lt;/li&gt;&lt;li&gt;PWS Script "Run-RGSnaps.ps1" which make 4 parallel calls to... &lt;/li&gt;&lt;li&gt;PWS Script "Create-RGSnaps.ps1" which save the snaps to... \\server\FOLDER\RedGate_Snaps\ in... &lt;/li&gt;&lt;li&gt;SERVER$INSTANCE.DB naming format&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;There are 3 methods by which the PWS Script "Create-RGSnaps.ps1" can be run manually.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;One Database&lt;/li&gt;&lt;li&gt;Open Powershell&lt;/li&gt;&lt;li&gt;Navigate to scripts folder, issue a "sl C:\&lt;yourdir&gt;\Script" (no quotes) command&lt;/li&gt;&lt;li&gt;To run against yourdb on SERVER1\INSTANCE1, for example, issue a "./Create-RGSnaps.ps1 SERVER1\INSTANCE1 yourdb" (no quotes) command. Output will look like the below...&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;SQL Compare Command Line V8.0.0.965==============================================================================&lt;/p&gt;&lt;p&gt;Copyright c Red Gate Software Ltd 1999-2009
Serial Number: 012-345-678901-2345
Creating database snapshot file '\\SERVER\FOLDER\RedGate_Snaps\SERVER1$INSTANCE1.yourdb .snp' from database 'yourdb ' on 'server1\instance1'...&lt;/p&gt;&lt;p&gt;OK&lt;/p&gt;&lt;ul&gt;&lt;li&gt;One Instance&lt;/li&gt;&lt;li&gt;Open Powershell&lt;/li&gt;&lt;li&gt;Navigate to scripts folder, issue a "sl C:\&lt;yourdir&gt;\Script" (no quotes) command&lt;/li&gt;&lt;li&gt;To run against SERVER1\INSTANCE1, for example, issue a "./Create-RGSnaps.ps1 SERVER1\INSTANCE1" (no quotes) command. Output will look the same as above...&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Multiple Instances&lt;/li&gt;&lt;li&gt;Open powershell&lt;/li&gt;&lt;li&gt;Navigate to scripts folder, issue a "sl C:\&lt;yourdir&gt;\Script" (no quotes) command&lt;/li&gt;&lt;li&gt;To run against SERVER1\INSTANCE1 &amp;amp; SERVER2\INSTANCE2, for example, create a file named Instances.txt (or a name of your choice) in "C:\&lt;yourdir&gt;\Script" that contains entries for SERVER1\INSTANCE1 &amp;amp; SERVER2\INSTANCE2 (one line per instance)&lt;/li&gt;&lt;li&gt;Issue a "Get-Content Instances.txt ForEach {./Create-RGSnaps $_}" (no quotes) command. Output will look the same as above...&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The script that does the work "Create-RGSnaps.ps1" takes a required parameter of Instance &amp;amp; an optional parameter of Database. If a value for Database is passed the script calls the command line interface for SQL Compare with no further processing. If no value for Database is passed the script parses all DBs on the Instance that are active/accessable &amp;amp; calls SQL Compare for each DB. The code is below...&lt;/p&gt;&lt;p&gt;&lt;DIV class=dp-highlighter id=hlDiv&gt;
&lt;DIV class=bar&gt;&lt;/DIV&gt;
&lt;OL class=dp-rb&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=keyword&gt;param&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Instance&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=string&gt;'Instance&amp;nbsp;is&amp;nbsp;required.'&lt;/SPAN&gt;&lt;SPAN&gt;),&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Database&lt;/SPAN&gt;&lt;SPAN&gt;) &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$ErrorActionPreference&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=string&gt;"SilentlyContinue"&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Path&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=string&gt;"\\SERVER\FOLDER\RedGate_Snaps\" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;$Query&amp;nbsp;=&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;SELECT&amp;nbsp;name&amp;nbsp;FROM&amp;nbsp;dbo.sysdatabases&amp;nbsp;(NOLOCK)&amp;nbsp;WHERE&amp;nbsp;dbid&amp;nbsp;&amp;gt;&amp;nbsp;4&amp;nbsp;AND&amp;nbsp;name&amp;nbsp;NOT&amp;nbsp;IN&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN class=string&gt;'distribution'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN class=string&gt;'DBADatabase'&lt;/SPAN&gt;&lt;SPAN&gt;)&amp;nbsp;AND&amp;nbsp;has_dbaccess(name)&amp;nbsp;=&amp;nbsp;1&lt;/SPAN&gt;&lt;SPAN class=string&gt;" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;######################### &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;function&amp;nbsp;Get-SQLData &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;{ &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;param($Instance&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;'Instance&amp;nbsp;is&amp;nbsp;required.'),&amp;nbsp;$DBName&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;'Database&amp;nbsp;is&amp;nbsp;required.'),&amp;nbsp;$Query&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;'Query&amp;nbsp;is&amp;nbsp;required.')) &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Write-Verbose&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;Get-SqlData&amp;nbsp;Instance:&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Instance&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Database:&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$DBName&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Query:&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Query&lt;/SPAN&gt;&lt;SPAN class=string&gt;" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$ConnString&amp;nbsp;=&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;Server=&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Instance&lt;/SPAN&gt;&lt;SPAN&gt;;Database=&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$DBName&lt;/SPAN&gt;&lt;SPAN&gt;;Integrated&amp;nbsp;Security=SSPI;&lt;/SPAN&gt;&lt;SPAN class=string&gt;" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$DataAdapter&amp;nbsp;=&amp;nbsp;New-Object&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;System.Data.SqlClient.SqlDataAdapter&lt;/SPAN&gt;&lt;SPAN class=string&gt;"&amp;nbsp;($Query,$ConnString) &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$DataTable&amp;nbsp;=&amp;nbsp;New-Object&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;System.Data.DataTable&lt;/SPAN&gt;&lt;SPAN class=string&gt;" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[void]$DataAdapter.fill($DataTable) &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$DataTable &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;}&amp;nbsp;#Get-SQLData &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;######################### &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;function&amp;nbsp;Get-Databases &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;{ &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;param($Instance&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;'Instance&amp;nbsp;is&amp;nbsp;required.')) &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Get-SqlData&amp;nbsp;$Instance&amp;nbsp;'master'&amp;nbsp;$Query &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;}&amp;nbsp;#Get-Databases &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;######################### &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;function&amp;nbsp;Invoke-SqlCompare &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;{ &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;param($Instance&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;'Instance&amp;nbsp;is&amp;nbsp;required.'),&amp;nbsp;$Database&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;'Database&amp;nbsp;is&amp;nbsp;required.'),&amp;nbsp;$Path&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;'Path&amp;nbsp;for&amp;nbsp;Snap&amp;nbsp;files&amp;nbsp;required.')) &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$InstanceStrng&amp;nbsp;=&amp;nbsp;($Instance&amp;nbsp;-replace('\\','`$')).ToUpper() &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$Command&amp;nbsp;=&amp;nbsp;'&amp;amp;"&lt;/SPAN&gt;&lt;SPAN&gt;C:\Program&amp;nbsp;Files&amp;nbsp;(x86)\Red&amp;nbsp;Gate\SQL&amp;nbsp;Compare&amp;nbsp;8\sqlcompare.exe&lt;/SPAN&gt;&lt;SPAN class=string&gt;"&amp;nbsp;/Server1:'&amp;nbsp;+&amp;nbsp;$Instance&amp;nbsp;+&amp;nbsp;'&amp;nbsp;/database1:"&lt;/SPAN&gt;&lt;SPAN class=string&gt;'&amp;nbsp;+&amp;nbsp;$Database&amp;nbsp;+&amp;nbsp;'&lt;/SPAN&gt;&lt;SPAN class=string&gt;"&amp;nbsp;/makesnapshot:"&lt;/SPAN&gt;&lt;SPAN class=string&gt;'&amp;nbsp;+&amp;nbsp;$Path&amp;nbsp;+&amp;nbsp;$InstanceStrng&amp;nbsp;+&amp;nbsp;'&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN class=string&gt;'&amp;nbsp;+&amp;nbsp;$Database&amp;nbsp;+&amp;nbsp;'&lt;/SPAN&gt;&lt;SPAN&gt;.snp"&amp;nbsp;/force' &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=builtin&gt;Invoke-Expression&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Command&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;}&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=comment&gt;#Invoke-SqlCompare &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=comment&gt;######################### &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=comment&gt;#Main &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;If&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Database&lt;/SPAN&gt;&lt;SPAN&gt;) &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{Invoke-SQLCompare&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Instance&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Database&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Path&lt;/SPAN&gt;&lt;SPAN&gt;} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;Else &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{Get-Databases&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Instance&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;|&amp;nbsp;ForEach&amp;nbsp;{Invoke-SQLCompare&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Instance&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$_&lt;/SPAN&gt;&lt;SPAN&gt;.name&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Path&lt;/SPAN&gt;&lt;SPAN&gt;}} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The script that runs the Create script in parallel "Run-RGSnaps.ps1" was written by my boss, his blog is here &lt;a href="http://chadwickmiller.spaces.live.com/default.aspx"&gt;http://chadwickmiller.spaces.live.com/default.aspx&lt;/a&gt; &amp;amp; was only modified by me to meet my needs. Since in Powershell 1.0 there's no way to spawn background processes the Run script launches new PWS threads unitil it reaches the number defined as it's max &amp;amp; then checks every 15 seconds for less than the max threads (excluding itself) &amp;amp; if less than the defined max, spawns a new thread. I take no credit for his excellent work, just want to include for completeness. The script takes no parameters, it has a built-in function to get a list of Prod Instances we have defined in a DB &amp;amp; pulls back the ones marked active &amp;amp; passes them to the create script to run in parallel. &lt;/p&gt;&lt;p&gt;I tested running serially and with 4 &amp;amp; 8 iterations in parallel with nothing else running on the host server. The best balance between performance &amp;amp; resource utilization was at 4 parallel iterations (your results will probably vary). Serially resource usage was minimal we saw 8% CPU, 447 DBs across 26 Instances completed in 56 minutes average; at 4 parallel iteration we saw 33% CPU &amp;amp; completion of the same DBs/Instances took 15 minutes average; at 4 parallel iteration we saw 85% CPU &amp;amp; completion of the same DBs/Instances took 12 minutes average. the server we're running this on has 4 single core procs, my suspicion is that you can run as many threads as you have processor cores. Code is below...&lt;/p&gt;&lt;p&gt;&lt;DIV class=dp-highlighter id=hlDiv&gt;
&lt;DIV class=bar&gt;&lt;/DIV&gt;
&lt;OL class=dp-rb&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=variable&gt;$ScriptRoot&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=string&gt;"C:\&amp;lt;yourdir&amp;gt;\Script\" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;$SQLPSXServer&amp;nbsp;=&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;SERVER3\INSTANCE3&lt;/SPAN&gt;&lt;SPAN class=string&gt;" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;$SQLPSXDatabase&amp;nbsp;=&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;DB3&lt;/SPAN&gt;&lt;SPAN class=string&gt;" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;$Query&amp;nbsp;=&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;SELECT&amp;nbsp;&amp;lt;column&amp;gt;&amp;nbsp;FROM&amp;nbsp;dbo.&amp;lt;table&amp;gt;&amp;nbsp;(NOLOCK)&amp;nbsp;WHERE&amp;nbsp;IsEnabled&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=string&gt;'true'&lt;/SPAN&gt;&lt;SPAN class=string&gt;" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;$MaxThread&amp;nbsp;=&amp;nbsp;4 &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;$ServerList&amp;nbsp;=&amp;nbsp;New-Object&amp;nbsp;System.Collections.ArrayList &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;######################### &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;function&amp;nbsp;Get-SQLData &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;{ &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;param($Instance&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;'Instance&amp;nbsp;is&amp;nbsp;required.'),&amp;nbsp;$DBName&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;'Database&amp;nbsp;is&amp;nbsp;required.'),&amp;nbsp;$Query&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;'Query&amp;nbsp;is&amp;nbsp;required.')) &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Write-Verbose&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;Get-SqlData&amp;nbsp;Instance:&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Instance&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Database:&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$DBName&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Query:&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Query&lt;/SPAN&gt;&lt;SPAN class=string&gt;" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$ConnString&amp;nbsp;=&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;Server=&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Instance&lt;/SPAN&gt;&lt;SPAN&gt;;Database=&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$DBName&lt;/SPAN&gt;&lt;SPAN&gt;;Integrated&amp;nbsp;Security=SSPI;&lt;/SPAN&gt;&lt;SPAN class=string&gt;" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$DataAdapter&amp;nbsp;=&amp;nbsp;New-Object&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;System.Data.SqlClient.SqlDataAdapter&lt;/SPAN&gt;&lt;SPAN class=string&gt;"&amp;nbsp;($Query,$ConnString) &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$DataTable&amp;nbsp;=&amp;nbsp;New-Object&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;System.Data.DataTable&lt;/SPAN&gt;&lt;SPAN class=string&gt;" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[void]$DataAdapter.fill($DataTable) &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$DataTable &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;}&amp;nbsp;#Get-SQLData &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;######################## &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;function&amp;nbsp;Get-SqlList &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;param&amp;nbsp;($SQLPSXServer&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;'SQLPSX&amp;nbsp;Instance&amp;nbsp;is&amp;nbsp;required.'),&amp;nbsp;$SQLPSXDatabase&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;'SQLPSX&amp;nbsp;Database&amp;nbsp;is&amp;nbsp;required.'),&amp;nbsp;$Query&amp;nbsp;=&amp;nbsp;$(throw&amp;nbsp;'Query&amp;nbsp;is&amp;nbsp;required.')) &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Get-SqlData&amp;nbsp;$SQLPSXServer&amp;nbsp;$SQLPSXDatabase&amp;nbsp;$Query&amp;nbsp;|&amp;nbsp;ForEach&amp;nbsp;{$ServerList.Add($_.Server)&amp;nbsp;&amp;gt;&amp;nbsp;$null} &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;}#&amp;nbsp;Get-SqlList &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;######################## &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;function&amp;nbsp;LaunchThread &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;{ &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;param($SQLServer) &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$StartInfo&amp;nbsp;=&amp;nbsp;new-object&amp;nbsp;System.Diagnostics.ProcessStartInfo &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$StartInfo.FileName&amp;nbsp;=&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$pshome&lt;/SPAN&gt;&lt;SPAN&gt;\powershell.exe&lt;/SPAN&gt;&lt;SPAN class=string&gt;" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$StartCommand&amp;nbsp;=&amp;nbsp;$ScriptRoot&amp;nbsp;+&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;Create-RGSnaps.ps1&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=string&gt;"&amp;nbsp;+&amp;nbsp;$SQLServer &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$StartInfo.Arguments&amp;nbsp;=&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;-NoProfile&amp;nbsp;-Command&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=string&gt;"&amp;nbsp;+&amp;nbsp;$StartCommand &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$StartInfo.WorkingDirectory&amp;nbsp;=&amp;nbsp;$ScriptRoot &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$StartInfo.LoadUserProfile&amp;nbsp;=&amp;nbsp;$true &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$StartInfo.UseShellExecute&amp;nbsp;=&amp;nbsp;$true &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[System.Diagnostics.Process]::Start($StartInfo)&amp;nbsp;&amp;gt;&amp;nbsp;$null &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;}#&amp;nbsp;LaunchThread &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;######################## &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;#Main &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;Get-SqlList&amp;nbsp;$SQLPSXServer&amp;nbsp;$SQLPSXDatabase&amp;nbsp;$Query &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;While&amp;nbsp;($ServerList.Count&amp;nbsp;-gt&amp;nbsp;0) &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;{ &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;($(Get-Process&amp;nbsp;|&amp;nbsp;where&amp;nbsp;{$_.ProcessName&amp;nbsp;-eq&amp;nbsp;'Powershell'&amp;nbsp;-and&amp;nbsp;$_.Id&amp;nbsp;-ne&amp;nbsp;$PID}&amp;nbsp;|&amp;nbsp;Measure-Object).count&amp;nbsp;-lt&amp;nbsp;$MaxThread) &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$Server&amp;nbsp;=&amp;nbsp;$ServerList[0] &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LaunchThread&amp;nbsp;$Server &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$ServerList.Remove("&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$server&lt;/SPAN&gt;&lt;SPAN&gt;") &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Else &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[System.Threading.Thread]::Sleep(15000) &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;}&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-4908018215292452961?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/4908018215292452961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/06/fun-with-powershell-red-gate-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/4908018215292452961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/4908018215292452961'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/06/fun-with-powershell-red-gate-sql.html' title='Fun with Powershell &amp; Red-Gate SQL Compare'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-4963605669784584626</id><published>2009-05-22T13:10:00.009-04:00</published><updated>2009-05-22T15:03:51.181-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powershell'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Checking for a Service in Powershell</title><content type='html'>Recently I had the need to check if a service was across all our SQL servers. In the interests of efficiency I thought it would be fun to write a little powershell script to do the checking for me.&lt;br&gt;&lt;br&gt;



Here's what I came up with, just pass the service name &amp;amp; machine(s) you want (either singly on in a *.txt file) &amp;amp; it will spit out a list of all with the machine, friendly service name (if installed) or whatever you choose for those where it's not installed (I chose blank).&lt;br&gt;&lt;br&gt;



The cmd would look like...&lt;br&gt;

./Check-ServiceInstalled SERVICENAME "C:\Lists\Servers.txt"&lt;br&gt;

OR&lt;br&gt;

./Check-ServiceInstalled SERVICENAME MACHINENAME&lt;br&gt;&lt;br&gt;



The Code (using Registry)...&lt;br&gt;
&lt;span style="color: #800080;"&gt;$SvcName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000080;"&gt;$Args&lt;/span&gt;&lt;span style="color: #000000;"&gt;[0] &lt;br&gt;
&lt;/span&gt;&lt;span style="color: #800080;"&gt;$ServerName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000080;"&gt;$Args&lt;/span&gt;&lt;span style="color: #000000;"&gt;[1] &lt;br&gt; &lt;br&gt;

&lt;/span&gt;&lt;span style="color: #000080;"&gt;$ErrorActionPreference&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;SilentlyContinue&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br&gt; &lt;br&gt;

&lt;/span&gt;&lt;span style="color: #800080;"&gt;$RegPath&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;SYSTEM\\CurrentControlSet\\Services\\&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$SvcName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br&gt; &lt;br&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #800080;"&gt;$ServerName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;-like&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;*.txt*&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br&gt;
    {&lt;/span&gt;&lt;span style="color: #800080;"&gt;$Servers&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;Get-Content&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$ServerName&lt;/span&gt;&lt;span style="color: #000000;"&gt;} &lt;br&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;br&gt;
    {&lt;/span&gt;&lt;span style="color: #800080;"&gt;$Servers&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$ServerName&lt;/span&gt;&lt;span style="color: #000000;"&gt;} &lt;br&gt; &lt;br&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ForEach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #800080;"&gt;$Computer&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$Servers&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br&gt;
{ &lt;br&gt;
    &lt;/span&gt;&lt;span style="color: #800080;"&gt;$Reg&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [&lt;/span&gt;&lt;span style="color: #008080;"&gt;Microsoft.Win32.RegistryKey&lt;/span&gt;&lt;span style="color: #000000;"&gt;]::&lt;/span&gt;&lt;span style="color: #8B4513;"&gt;OpenRemoteBaseKey&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;LocalMachine&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;$Computer&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br&gt;
    &lt;/span&gt;&lt;span style="color: #800080;"&gt;$RegKey&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$Reg&lt;/span&gt;&lt;span style="color: #000000;"&gt;.OpenSubKey(&lt;/span&gt;&lt;span style="color: #800080;"&gt;$RegPath&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #800080;"&gt;$RegKey&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;-eq&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$null&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br&gt;
        {&lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;new-object&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;psobject&lt;/span&gt;&lt;span style="color: #000000;"&gt; |  &lt;br&gt;
            &lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;add-member&lt;/span&gt;&lt;span style="color: #000000;"&gt; -pass &lt;/span&gt;&lt;span style="color: #800000;"&gt;NoteProperty&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;Computer&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$Computer&lt;/span&gt;&lt;span style="color: #000000;"&gt;.ToUpper() | &lt;br&gt;
            &lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;add-member&lt;/span&gt;&lt;span style="color: #000000;"&gt; -pass &lt;/span&gt;&lt;span style="color: #800000;"&gt;NoteProperty&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;Installed&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        } &lt;br&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br&gt;
        {&lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;new-object&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;psobject&lt;/span&gt;&lt;span style="color: #000000;"&gt; |  &lt;br&gt;
            &lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;add-member&lt;/span&gt;&lt;span style="color: #000000;"&gt; -pass &lt;/span&gt;&lt;span style="color: #800000;"&gt;NoteProperty&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;Computer&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$Computer&lt;/span&gt;&lt;span style="color: #000000;"&gt;.ToUpper() | &lt;br&gt;
            &lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;add-member&lt;/span&gt;&lt;span style="color: #000000;"&gt; -pass &lt;/span&gt;&lt;span style="color: #800000;"&gt;NoteProperty&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;Installed&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$RegKey&lt;/span&gt;&lt;span style="color: #000000;"&gt;.GetValue(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;DisplayName&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #800000;"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        } &lt;br&gt;
}&lt;/span&gt;&lt;br&gt;&lt;br&gt;

The Code (using gwmi &amp; service)...&lt;br&gt;
&lt;span style="color: #800080;"&gt;$SvcName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000080;"&gt;$Args&lt;/span&gt;&lt;span style="color: #000000;"&gt;[0] &lt;BR&gt;
&lt;/span&gt;&lt;span style="color: #800080;"&gt;$ServerName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000080;"&gt;$Args&lt;/span&gt;&lt;span style="color: #000000;"&gt;[1] &lt;BR&gt; &lt;BR&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #800080;"&gt;$ServerName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;-like&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;*.txt*&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;BR&gt;
    {&lt;/span&gt;&lt;span style="color: #800080;"&gt;$Servers&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;Get-Content&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$ServerName&lt;/span&gt;&lt;span style="color: #000000;"&gt;} &lt;BR&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;BR&gt;
    {&lt;/span&gt;&lt;span style="color: #800080;"&gt;$Servers&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$ServerName&lt;/span&gt;&lt;span style="color: #000000;"&gt;} &lt;BR&gt; &lt;BR&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ForEach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #800080;"&gt;$Computer&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$Servers&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;BR&gt;
{ &lt;BR&gt;
    &lt;/span&gt;&lt;span style="color: #800080;"&gt;$Svc&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;Get-WmiObject&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;win32_service&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #5F9EA0; font-style: italic;"&gt;-ComputerName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$Computer&lt;/span&gt;&lt;span style="color: #000000;"&gt; | &lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;where&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;/span&gt;&lt;span style="color: #000080;"&gt;$_&lt;/span&gt;&lt;span style="color: #000000;"&gt;.name &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;-eq&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$SvcName&lt;/span&gt;&lt;span style="color: #000000;"&gt;} &lt;/span&gt;&lt;span style="color: #5F9EA0; font-style: italic;"&gt;-ErrorAction&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;SilentlyContinue&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&lt;BR&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #800080;"&gt;$Svc&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;-eq&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$null&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;BR&gt;
        {&lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;new-object&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;psobject&lt;/span&gt;&lt;span style="color: #000000;"&gt; |  &lt;BR&gt;
            &lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;add-member&lt;/span&gt;&lt;span style="color: #000000;"&gt; -pass &lt;/span&gt;&lt;span style="color: #800000;"&gt;NoteProperty&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;Computer&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$Computer&lt;/span&gt;&lt;span style="color: #000000;"&gt;.ToUpper() | &lt;BR&gt;
            &lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;add-member&lt;/span&gt;&lt;span style="color: #000000;"&gt; -pass &lt;/span&gt;&lt;span style="color: #800000;"&gt;NoteProperty&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;Installed&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&lt;BR&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        } &lt;BR&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;BR&gt;
        {&lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;new-object&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;psobject&lt;/span&gt;&lt;span style="color: #000000;"&gt; |  &lt;BR&gt;
            &lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;add-member&lt;/span&gt;&lt;span style="color: #000000;"&gt; -pass &lt;/span&gt;&lt;span style="color: #800000;"&gt;NoteProperty&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;Computer&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$Computer&lt;/span&gt;&lt;span style="color: #000000;"&gt;.ToUpper() | &lt;BR&gt;
            &lt;/span&gt;&lt;span style="color: #5F9EA0; font-weight: bold;"&gt;add-member&lt;/span&gt;&lt;span style="color: #000000;"&gt; -pass &lt;/span&gt;&lt;span style="color: #800000;"&gt;NoteProperty&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;Installed&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;$Svc&lt;/span&gt;&lt;span style="color: #000000;"&gt;.DisplayName &lt;/span&gt;&lt;span style="color: #800000;"&gt;&lt;BR&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        } &lt;BR&gt;
}
&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-4963605669784584626?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/4963605669784584626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/05/checking-for-service-in-powershell.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/4963605669784584626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/4963605669784584626'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/05/checking-for-service-in-powershell.html' title='Checking for a Service in Powershell'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-4372496577693252926</id><published>2009-05-14T13:23:00.006-04:00</published><updated>2009-05-14T14:12:12.504-04:00</updated><title type='text'>Determining Duration</title><content type='html'>Recently I had the need to determine the duration of a peice of code. After playing around with a few methods I came up with the below. I did a search &amp;amp; didn't see a lot out on the net regarding determining duration so thought I'd post this.
&lt;br&gt;&lt;br&gt;

&lt;span style="font-family:courier new;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;declare&lt;/span&gt; @startdt &lt;span style="color:blue;"&gt;datetime&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;br&gt;
@enddt &lt;span style="color:blue;"&gt;datetime&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;br&gt;
@diff &lt;span style="color:blue;"&gt;int&lt;/span&gt;&lt;br&gt;&lt;br&gt;

&lt;span style="color:blue;"&gt;set&lt;/span&gt; @enddt = &lt;span style="color:red;"&gt;'2009-05-12 15:27:29.560'&lt;/span&gt;&lt;br&gt;
&lt;span style="color:blue;"&gt;set&lt;/span&gt; @startdt = &lt;span style="color:red;"&gt;'2009-05-12 15:27:26.560'&lt;/span&gt;&lt;br&gt;&lt;br&gt;

&lt;span style="color:blue;"&gt;set&lt;/span&gt; @diff = &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;datediff&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;s&lt;span style="color:gray;"&gt;,&lt;/span&gt; @startdt&lt;span style="color:gray;"&gt;,&lt;/span&gt; @enddt&lt;span style="color:gray;"&gt;))&lt;/span&gt;&lt;br&gt;&lt;br&gt;

&lt;span style="color:blue;"&gt;select&lt;/span&gt; &lt;span style="color:gray;"&gt;right&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'00'&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;convert&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;30&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;@diff&lt;span style="color:gray;"&gt;/&lt;/span&gt;3600&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;2&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:red;"&gt;':'&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:gray;"&gt;right&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'00'&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;convert&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;30&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@diff&lt;span style="color:gray;"&gt;%&lt;/span&gt;3600&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:gray;"&gt;/&lt;/span&gt;60&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;2&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:red;"&gt;':'&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:gray;"&gt;right&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'00'&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;convert&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;30&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;@diff&lt;span style="color:gray;"&gt;%&lt;/span&gt;60&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;2&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;as&lt;/span&gt; [Duration]&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-4372496577693252926?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/4372496577693252926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/05/determining-duration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/4372496577693252926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/4372496577693252926'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/05/determining-duration.html' title='Determining Duration'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-1973269774624893515</id><published>2009-04-29T12:20:00.007-04:00</published><updated>2009-04-29T12:45:56.216-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='sql security patch'/><category scheme='http://www.blogger.com/atom/ns#' term='ms09-feb'/><category scheme='http://www.blogger.com/atom/ns#' term='Cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='ms08-jul'/><title type='text'>More fun with the February 2009 SQL Security Patch</title><content type='html'>On one of our clustered instances, we had to leave the services running for the February 2009 SQL Security Patch install to initiate successfully. We did not investigate the root cause since it was in the middle of a very busy period of work &amp;amp; we unfortunately didn't have the time. After applying the patch, we started getting complaints from users that their application was unable to login to the DB. Looking at the SQL error logs we saw the following errors...
&lt;br&gt;&lt;br&gt;
&lt;span style="color:#000000;"&gt;Login failed for user 'Fake_User'. The user is not associated with a trusted SQL Server connection. [CLIENT: 127.0.0.1]
&lt;br&gt;
Error: 18452, Severity: 14, State: 1.&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
The login in question is a SQL login not Windows so this made no sense to us, on parsing the SQL error logs we noticed this (the instance had been running in MIXED mode)...
&lt;br&gt;&lt;br&gt;
&lt;span style="color:#000000;"&gt;Authentication mode is WINDOWS-ONLY.
&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
We changed the instance back to MIXED (SQL Server and Windows Authentication) mode &amp;amp; that resolved the issue. Thought I'd share this since it made for an interesting few minutes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-1973269774624893515?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/1973269774624893515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/04/more-fun-with-february-2009-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/1973269774624893515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/1973269774624893515'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/04/more-fun-with-february-2009-sql.html' title='More fun with the February 2009 SQL Security Patch'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-5618825853424120917</id><published>2009-04-03T11:47:00.005-04:00</published><updated>2009-04-03T13:23:27.371-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><title type='text'>Searching for a peice of text across a DB</title><content type='html'>Awhile back I had the need to search for a specific peice of text across a database. After playing with the code I came up with the below stored proc. I placed the SP in our "Scripting/Administation" DB. It takes a param of database &amp;amp; the value to find, you can use wildcards in the value to find. The SP returns the table, column &amp;amp; number of occurences of the searched value.

&lt;pre style='color:#000000;background:#ffffff;'&gt;USE DBAScriptDB
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

CREATE PROC dbo.usp_SearchTextAcrossDB
    @DBToSearch VARCHAR(512),
    @ValToFind VARCHAR(512)
AS
&lt;span style='color:#696969; '&gt;/*    --------------------------------------------------------&lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;Author  :    &lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;Date    : &lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;Purpose : Search across all Tables/Columns in any DB for a text value. &lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;Wildcards may be used in @ValToFind.&lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;DB(s)        : DBAScriptDB, all DBs&lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;Modification History&lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;Date        Programmer         Description&lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;--------    -------------     ----------------   &lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;
&lt;span style='color:#696969; '&gt;*/&lt;/span&gt;    ---------------------------------------------------------
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
    
    SET NOCOUNT ON
    
    DECLARE @errTxt VARCHAR(256),
                    @objName VARCHAR(192),
                    @own VARCHAR(384), 
                    @tbl VARCHAR(384), 
                    @col VARCHAR(384),
                    @sqlSrch VARCHAR(8000),
                    @sqlFld VARCHAR(8000)
    
    CREATE TABLE #Results
        (
            Table_Name VARCHAR(384),
            Column_Name VARCHAR(384),
            Occurrence_Count INT      
        )

    CREATE TABLE #TblFlds
        (
            TblOwner VARCHAR(384),
            TblName VARCHAR(384),
            ColName VARCHAR(384)
        )

    SELECT    @objName = 'dbo.usp_SearchTextAcrossDB'

    SELECT @sqlFld = 
        'INSERT INTO #TblFlds (TblOwner, TblName, ColName)' + CHAR(10) +
        '    SELECT u.name, o.name, ''['' + c.name + '']''' + CHAR(10) +
        '    FROM ' + @DBToSearch + '.dbo.syscolumns c (NOLOCK)' + CHAR(10) +
        '        INNER JOIN ' + @DBToSearch + '.dbo.sysobjects o (NOLOCK) ON c.id = o.id' + CHAR(10) +
        '        INNER JOIN ' + @DBToSearch + '.dbo.sysusers u (NOLOCK) ON o.uid = u.uid' + CHAR(10) +
        '        INNER JOIN ' + @DBToSearch + '.dbo.systypes t (NOLOCK) ON c.xusertype = t.xusertype' + CHAR(10) +
        '    WHERE o.type = ''U''' + CHAR(10) +
        '                AND (t.name = ''varchar'' OR t.name = ''char'' OR t.name = ''nvarchar'' OR t.name = ''nchar'' OR t.name = ''text'' OR t.name = ''ntext'' OR t.name = ''sysname'')' + CHAR(10) +
        '    ORDER BY 1, 2'

    EXEC (@sqlFld)
    
    WHILE EXISTS (SELECT TblOwner FROM #TblFlds)
        BEGIN
            SELECT @own = (SELECT TOP 1 TblOwner FROM #TblFlds)
            
            SELECT @tbl = (SELECT TOP 1 TblName FROM #TblFlds WHERE TblOwner = @own)
            
            SELECT @col = (SELECT TOP 1 ColName FROM #TblFlds WHERE TblOwner = @own AND TblName = @tbl)
            
            DELETE #TblFlds 
            WHERE TblOwner = @own
                AND TblName = @tbl 
                AND ColName = @col
        
            IF @col IS NOT NULL
                BEGIN
                    SET @sqlSrch = 'SELECT ''' + @own + '.' + @tbl + ''', ''' + @col + ''', COUNT(*) FROM ' + @DBToSearch + '.' + @own + '.' + @tbl + ' (NOLOCK) WHERE ' + @col + ' LIKE ''' + @ValToFind + ''''
                    
                    INSERT INTO #Results (Table_Name, Column_Name, Occurrence_Count)
                        EXEC (@sqlSrch)
                END
            
            IF (SELECT COUNT(TblOwner) FROM #TblFlds) &amp;lt;= 0
                BREAK
        END

    IF @@ERROR &amp;lt;&gt; 0
        BEGIN
            SET @errTxt = 'Exception: ' + @objName + ' occured in SELECT Statement'
            RAISERROR(@errTxt, 1, 2)
        END

    SELECT Table_Name, Column_Name, Occurrence_Count 
    FROM #Results 
    WHERE Occurrence_Count &gt; 0 
    ORDER BY 1

    DROP TABLE #TblFlds, #Results
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-5618825853424120917?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/5618825853424120917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/04/searching-for-peice-of-text-across-db.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/5618825853424120917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/5618825853424120917'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/04/searching-for-peice-of-text-across-db.html' title='Searching for a peice of text across a DB'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-1849964353794021227</id><published>2009-03-10T08:44:00.003-04:00</published><updated>2009-03-10T13:38:48.743-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powershell'/><category scheme='http://www.blogger.com/atom/ns#' term='file deletion'/><category scheme='http://www.blogger.com/atom/ns#' term='maintenance'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Proactive File Deletion</title><content type='html'>One of the things I've been trying to accomplish lately is automating more of the repetative "DBA 101" type tasks as much as possible. Among other things, freeing up this time allows me to concentrate your efforts in areas where there a greater value is added from a DBA's input like performance tuning or security auditing. It also greatly reduces the chance of making mistakes, I'm sure we've all had those "execute... whoops!" moments that just make you feel like a fool, or even worse, make you &lt;strong&gt;look&lt;/strong&gt; like a fool in front of your boss.

Recently I took a look at our drives &amp;amp; noticed 2 main areas where I thought a scripted solution made sense and was safe (this will vary according to your environment's needs). The areas I decided to focus on were deleting old Red-Gate SQLBackup log files &amp;amp; deleting old backup files.

I'm a big fan of Reg-Gate so I don't want this taken as a jab against them in any way. That being said, the Red-Gate GUI places log files in "C:\Documents and Settings\All Users\Application Data\Red Gate\SQL Backup\Log\" by default with no retention policy, you can set a retention on these logs, but you have to do it on a case by case basis &amp;amp; frankly I'm too efficient (read: lazy) to do it this way, plus I tend to forget to change the setting.

We store all our backups in a specific directory named sqlbu (name changed to protect the innocent) so my backup deletion script is geared to look for that directory on all drives &amp;amp; only delete from that location. The backup delete script also has a few filters that will allow backup files to be kept longer than the days to keep indicated. Specifically it will not delete the file if it has "goldcopy" or "donotdelete" in the name or has "do_not_delete" in the path.

I created a SQL Agent job on all our servers that runs 2 powershell scripts that do the actual work, the scripts also return how many files were deleted. The scripts both take a param for the days to keep.

SQL Agent Job...
&lt;DIV class=dp-highlighter id=hlDiv&gt;
&lt;DIV class=bar&gt;&lt;/DIV&gt;
&lt;OL class=dp-sql&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN&gt;USE&amp;nbsp;[msdb] &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;GO &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;EXEC&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;msdb.dbo.sp_add_operator&amp;nbsp;@&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;name&lt;/SPAN&gt;&lt;SPAN&gt;=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'DBA'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@enabled=1,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@weekday_pager_start_time=90000,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@weekday_pager_end_time=180000,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@saturday_pager_start_time=90000,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@saturday_pager_end_time=180000,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@sunday_pager_start_time=90000,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@sunday_pager_end_time=180000,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@pager_days=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@email_address=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'dba@yourcomp.com'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@category_name=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'[Uncategorized]'&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;GO &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;BEGIN&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;TRANSACTION&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;INT&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;SELECT&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;=&amp;nbsp;0 &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@jobId&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;BINARY&lt;/SPAN&gt;&lt;SPAN&gt;(16) &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;EXEC&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;=&amp;nbsp;&amp;nbsp;msdb.dbo.sp_add_job&amp;nbsp;@job_name=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'00&amp;nbsp;Old&amp;nbsp;File&amp;nbsp;Cleanup'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@enabled=1,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@notify_level_eventlog=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@notify_level_email=2,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@notify_level_netsend=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@notify_level_page=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@delete_level=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@description=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'The&amp;nbsp;job&amp;nbsp;will&amp;nbsp;delete&amp;nbsp;all&amp;nbsp;*.bak&amp;nbsp;&amp;amp;&amp;nbsp;*.sqb&amp;nbsp;files&amp;nbsp;older&amp;nbsp;than&amp;nbsp;3&amp;nbsp;days&amp;nbsp;that&amp;nbsp;do&amp;nbsp;not&amp;nbsp;have&amp;nbsp;“goldcopy”&amp;nbsp;or&amp;nbsp;“donotdelete”&amp;nbsp;in&amp;nbsp;the&amp;nbsp;name&amp;nbsp;&amp;amp;&amp;nbsp;do&amp;nbsp;not&amp;nbsp;have&amp;nbsp;“do_not_delete”&amp;nbsp;in&amp;nbsp;the&amp;nbsp;path.&amp;nbsp;&amp;nbsp;The&amp;nbsp;job&amp;nbsp;will&amp;nbsp;also&amp;nbsp;delete&amp;nbsp;all&amp;nbsp;RG&amp;nbsp;log&amp;nbsp;files&amp;nbsp;that&amp;nbsp;are&amp;nbsp;older&amp;nbsp;than&amp;nbsp;7&amp;nbsp;days&amp;nbsp;in&amp;nbsp;the&amp;nbsp;“C:\Documents&amp;nbsp;and&amp;nbsp;Settings\All&amp;nbsp;Users\Application&amp;nbsp;Data\Red&amp;nbsp;Gate\SQL&amp;nbsp;Backup\Log\”&amp;nbsp;folder.'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@category_name=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'[Uncategorized&amp;nbsp;(Local)]'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@owner_login_name=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'sa'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@notify_email_operator_name=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'DBA'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp;@job_id&amp;nbsp;=&amp;nbsp;@jobId&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;IF&amp;nbsp;(@@ERROR&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=op&gt;OR&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;GOTO&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;QuitWithRollback &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;/******&amp;nbsp;Object:&amp;nbsp;&amp;nbsp;Step&amp;nbsp;[Backup&amp;nbsp;Files]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Script&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;Date&lt;/SPAN&gt;&lt;SPAN&gt;:&amp;nbsp;02/25/2009&amp;nbsp;15:38:25&amp;nbsp;******/ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;EXEC&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;=&amp;nbsp;msdb.dbo.sp_add_jobstep&amp;nbsp;@job_id=@jobId,&amp;nbsp;@step_name=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'Backup&amp;nbsp;Files'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@step_id=1,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@cmdexec_success_code=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@on_success_action=3,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@on_success_step_id=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@on_fail_action=2,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@on_fail_step_id=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@retry_attempts=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@retry_interval=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@os_run_priority=0,&amp;nbsp;@subsystem=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'CmdExec'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@command=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'powershell&amp;nbsp;"&amp;amp;&amp;nbsp;C:\WINDOWS\Script\del-oldbackups-single.ps1&amp;nbsp;3"'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@flags=0 &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;IF&amp;nbsp;(@@ERROR&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=op&gt;OR&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;GOTO&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;QuitWithRollback &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;/******&amp;nbsp;Object:&amp;nbsp;&amp;nbsp;Step&amp;nbsp;[RG&amp;nbsp;Logs]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Script&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;Date&lt;/SPAN&gt;&lt;SPAN&gt;:&amp;nbsp;02/25/2009&amp;nbsp;15:38:25&amp;nbsp;******/ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;EXEC&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;=&amp;nbsp;msdb.dbo.sp_add_jobstep&amp;nbsp;@job_id=@jobId,&amp;nbsp;@step_name=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'RG&amp;nbsp;Logs'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@step_id=2,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@cmdexec_success_code=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@on_success_action=1,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@on_success_step_id=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@on_fail_action=2,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@on_fail_step_id=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@retry_attempts=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@retry_interval=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@os_run_priority=0,&amp;nbsp;@subsystem=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'CmdExec'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@command=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'powershell&amp;nbsp;"&amp;amp;&amp;nbsp;C:\WINDOWS\Script\del-rglogs-single.ps1&amp;nbsp;7"'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@flags=0 &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;IF&amp;nbsp;(@@ERROR&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=op&gt;OR&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;GOTO&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;QuitWithRollback &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;EXEC&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;=&amp;nbsp;msdb.dbo.sp_update_job&amp;nbsp;@job_id&amp;nbsp;=&amp;nbsp;@jobId,&amp;nbsp;@start_step_id&amp;nbsp;=&amp;nbsp;1 &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;IF&amp;nbsp;(@@ERROR&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=op&gt;OR&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;GOTO&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;QuitWithRollback &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;EXEC&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;=&amp;nbsp;msdb.dbo.sp_add_jobschedule&amp;nbsp;@job_id=@jobId,&amp;nbsp;@&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;name&lt;/SPAN&gt;&lt;SPAN&gt;=N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'Sat-Weekly'&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@enabled=1,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@freq_type=8,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@freq_interval=64,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@freq_subday_type=1,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@freq_subday_interval=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@freq_relative_interval=0,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@freq_recurrence_factor=1,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@active_start_date=20090225,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@active_end_date=99991231,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@active_start_time=30000,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@active_end_time=235959 &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;IF&amp;nbsp;(@@ERROR&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=op&gt;OR&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;GOTO&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;QuitWithRollback &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;EXEC&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;=&amp;nbsp;msdb.dbo.sp_add_jobserver&amp;nbsp;@job_id&amp;nbsp;=&amp;nbsp;@jobId,&amp;nbsp;@server_name&amp;nbsp;=&amp;nbsp;N&lt;/SPAN&gt;&lt;SPAN class=string&gt;'(local)'&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;IF&amp;nbsp;(@@ERROR&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=op&gt;OR&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;@ReturnCode&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;GOTO&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;QuitWithRollback &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;COMMIT&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;TRANSACTION&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;GOTO&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;EndSave &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;QuitWithRollback: &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IF&amp;nbsp;(@@TRANCOUNT&amp;nbsp;&amp;gt;&amp;nbsp;0)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;ROLLBACK&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;TRANSACTION&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;EndSave: &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;GO &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;

Del-OldBackups-Single.ps1...
&lt;DIV class=dp-highlighter id=hlDiv&gt;
&lt;DIV class=bar&gt;&lt;/DIV&gt;
&lt;OL class=dp-rb&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=variable&gt;$factor&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Args&lt;/SPAN&gt;&lt;SPAN&gt;[0] &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$disks&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=builtin&gt;Get-WmiObject&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Win32_Volume&amp;nbsp;-filter&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=string&gt;"DriveType&amp;nbsp;=&amp;nbsp;3"&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$cutoff&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;=&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN class=builtin&gt;Get-Date&lt;/SPAN&gt;&lt;SPAN&gt;).AddDays(-&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$factor&lt;/SPAN&gt;&lt;SPAN&gt;) &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;ForEach&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$drv&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;in&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$disks&lt;/SPAN&gt;&lt;SPAN&gt;) &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;{ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$path&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$drv&lt;/SPAN&gt;&lt;SPAN&gt;.Name&amp;nbsp;+&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=string&gt;"sqlbu\" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((Test-Path&amp;nbsp;$path)&amp;nbsp;-eq&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;True&lt;/SPAN&gt;&lt;SPAN class=string&gt;") &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$count&amp;nbsp;=&amp;nbsp;(Get-ChildItem&amp;nbsp;$path&amp;nbsp;-include&amp;nbsp;*.sqb,*.bak&amp;nbsp;-Exclude&amp;nbsp;*goldcopy*,*donotdelete*&amp;nbsp;-recurse&amp;nbsp;|&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?{$_.LastWriteTime&amp;nbsp;-lt&amp;nbsp;$cutoff&amp;nbsp;-and&amp;nbsp;!$_.PSIsContainer&amp;nbsp;-and&amp;nbsp;$_.PSPath&amp;nbsp;-notlike&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;*do_not_delete*&lt;/SPAN&gt;&lt;SPAN class=string&gt;"}).Count &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($count&amp;nbsp;-eq&amp;nbsp;$null)&amp;nbsp;{$count&amp;nbsp;=&amp;nbsp;0} &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Get-ChildItem&amp;nbsp;$path&amp;nbsp;-include&amp;nbsp;*.sqb,*.bak&amp;nbsp;-Exclude&amp;nbsp;*goldcopy*,*donotdelete*&amp;nbsp;-recurse&amp;nbsp;| &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?{$_.LastWriteTime&amp;nbsp;-lt&amp;nbsp;$cutoff&amp;nbsp;-and&amp;nbsp;!$_.PSIsContainer&amp;nbsp;-and&amp;nbsp;$_.PSPath&amp;nbsp;-notlike&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;*do_not_delete*&lt;/SPAN&gt;&lt;SPAN class=string&gt;"}&amp;nbsp;| &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Remove-Item &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Write-Host&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;There&amp;nbsp;were&lt;/SPAN&gt;&lt;SPAN class=string&gt;"&amp;nbsp;$count&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;backup&amp;nbsp;files&amp;nbsp;deleted&amp;nbsp;from"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$path&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;}&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;

Del-RGLogs-Single.ps1...
&lt;!-- Stylesheet link --&gt;
&lt;link href="http://www.thecomplex.plus.com/styles/SyntaxHighlighter.css" rel="stylesheet" type="text/css"/&gt;

&lt;!-- Code --&gt;
&lt;DIV class=dp-highlighter id=hlDiv&gt;
&lt;DIV class=bar&gt;&lt;/DIV&gt;
&lt;OL class=dp-rb&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=variable&gt;$factor&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$Args&lt;/SPAN&gt;&lt;SPAN&gt;[0] &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$cutoff&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;=&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN class=builtin&gt;Get-Date&lt;/SPAN&gt;&lt;SPAN&gt;).AddDays(-&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$factor&lt;/SPAN&gt;&lt;SPAN&gt;) &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=variable&gt;$path&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=string&gt;"C:\Documents&amp;nbsp;and&amp;nbsp;Settings\All&amp;nbsp;Users\Application&amp;nbsp;Data\Red&amp;nbsp;Gate\SQL&amp;nbsp;Backup\Log\" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;if&amp;nbsp;((Test-Path&amp;nbsp;$path)&amp;nbsp;-eq&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;True&lt;/SPAN&gt;&lt;SPAN class=string&gt;") &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;{ &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$count&amp;nbsp;=&amp;nbsp;(Get-ChildItem&amp;nbsp;$path&amp;nbsp;-include&amp;nbsp;*.log&amp;nbsp;-recurse&amp;nbsp;|&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?{$_.LastWriteTime&amp;nbsp;-lt&amp;nbsp;$cutoff&amp;nbsp;-and&amp;nbsp;!$_.PSIsContainer}).Count &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($count&amp;nbsp;-eq&amp;nbsp;$null)&amp;nbsp;{$count&amp;nbsp;=&amp;nbsp;0} &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Get-ChildItem&amp;nbsp;$path&amp;nbsp;-include&amp;nbsp;*.log&amp;nbsp;-recurse&amp;nbsp;| &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?{$_.LastWriteTime&amp;nbsp;-lt&amp;nbsp;$cutoff&amp;nbsp;-and&amp;nbsp;!$_.PSIsContainer}&amp;nbsp;| &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Remove-Item &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Write-Host&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;There&amp;nbsp;were&lt;/SPAN&gt;&lt;SPAN class=string&gt;"&amp;nbsp;$count&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;files&amp;nbsp;deleted&lt;/SPAN&gt;&lt;SPAN class=string&gt;" &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;} &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=""&gt;&lt;SPAN&gt;&lt;SPAN class=string&gt;else&amp;nbsp;{Write-Host&amp;nbsp;"&lt;/SPAN&gt;&lt;SPAN&gt;There&amp;nbsp;are&amp;nbsp;no&amp;nbsp;files&amp;nbsp;to&amp;nbsp;be&amp;nbsp;deleted"} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-1849964353794021227?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/1849964353794021227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/03/proactive-file-deletion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/1849964353794021227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/1849964353794021227'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/03/proactive-file-deletion.html' title='Proactive File Deletion'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-9221610527859673591</id><published>2009-02-23T11:36:00.000-05:00</published><updated>2009-02-23T12:43:17.885-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLAgent subsystem dll msdb syssubsystems'/><title type='text'>SQL Agent job fails with xXx subsystem failed to load</title><content type='html'>We had a SQLAgent job that runs cmdexec fail. Looking at the job history, the following error was present &lt;span style="font-size:85%;"&gt;"The CmdExec subsystem failed to load [see the SQLAGENT.OUT file for details]; The job has been suspended). The step failed."&lt;/span&gt;.

Looking in the SQLAgent log the below errors were reported at startup
&lt;span style="font-size:85%;"&gt;[125] Subsystem 'SSIS' could not be loaded (reason: The specified module could not be found)&lt;/span&gt;
&lt;span style="font-size:85%;"&gt;[125] Subsystem 'ANALYSISCOMMAND' could not be loaded (reason: The specified module could not be found)&lt;/span&gt;
&lt;span style="font-size:85%;"&gt;[125] Subsystem 'ANALYSISQUERY' could not be loaded (reason: The specified module could not be found)&lt;/span&gt;
&lt;span style="font-size:85%;"&gt;[125] Subsystem 'QueueReader' could not be loaded (reason: The specified module could not be found)&lt;/span&gt;
&lt;span style="font-size:85%;"&gt;[125] Subsystem 'Merge' could not be loaded (reason: The specified module could not be found)&lt;/span&gt;
&lt;span style="font-size:85%;"&gt;[125] Subsystem 'Distribution' could not be loaded (reason: The specified module could not be found)&lt;/span&gt;
&lt;span style="font-size:85%;"&gt;[125] Subsystem 'LogReader' could not be loaded (reason: The specified module could not be found)&lt;/span&gt;
&lt;span style="font-size:85%;"&gt;[125] Subsystem 'Snapshot' could not be loaded (reason: The specified module could not be found)&lt;/span&gt;
&lt;span style="font-size:85%;"&gt;[125] Subsystem 'CmdExec' could not be loaded (reason: The specified module could not be found)&lt;/span&gt;
&lt;span style="font-size:85%;"&gt;[125] Subsystem 'ActiveScripting' could not be loaded (reason: The specified module could not be found)&lt;/span&gt;

After a little research we found that the subsystems (a collection of DLLs) loaded by SQLAgent are stored in a table named "dbo.syssubsystems" in msdb. The entries in dbo.syssubsystems pointed to a location that did not exist. A search for one of the DLLs quickly revealed the actual location of the "missing" DLLs, in our case same drive, but a different folder. Once we had the true location, we updated dbo.syssubsystems.subsystem_dll to reflect to correct location (see script below). After restarting SQLAgent the previously logged errors were not present &amp;amp; the job was able to complete successfully.

&lt;span style="font-family:courier new;font-size:85%;color:black;"&gt;&lt;span style="color:green;"&gt;/* Allow updates to system tables */&lt;/span&gt;
&lt;span style="color:maroon;"&gt;sp_configure&lt;/span&gt; &lt;span style="color:red;"&gt;'allow updates'&lt;/span&gt;, 1
&lt;span style="color:blue;"&gt;RECONFIGURE WITH OVERRIDE&lt;/span&gt;

&lt;span style="color:green;"&gt;/* Update to correct path */&lt;/span&gt;
&lt;span style="color:blue;"&gt;UPDATE&lt;/span&gt; msdb.dbo.syssubsystems
&lt;span style="color:blue;"&gt;SET&lt;/span&gt; subsystem_dll = &lt;span style="color:fuchsia;"&gt;REPLACE&lt;/span&gt;(subsystem_dll,&lt;span style="color:red;"&gt;'C:\Program Files\Microsoft SQL Server\MSSQL.1'&lt;/span&gt;,&lt;span style="color:red;"&gt;'C:\Program Files\Microsoft SQL Server\MSSQL.2'&lt;/span&gt;)
&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; msdb.dbo.syssubsystems
&lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; subsystem_dll &lt;span style="color:gray;"&gt;LIKE&lt;/span&gt; &lt;span style="color:red;"&gt;'C:\Program Files\Microsoft SQL Server\MSSQL.1%'&lt;/span&gt;

&lt;span style="color:green;"&gt;/* Dis-allow updates to system tables */&lt;/span&gt;
&lt;span style="color:maroon;"&gt;sp_configure&lt;/span&gt; &lt;span style="color:red;"&gt;'allow updates'&lt;/span&gt;, 0
&lt;span style="color:blue;"&gt;RECONFIGURE WITH OVERRIDE&lt;/span&gt;

&lt;span style="color:green;"&gt;/* Verify update */&lt;/span&gt;
&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; *
&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; msdb.dbo.syssubsystems
&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-9221610527859673591?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/9221610527859673591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/02/sql-agent-job-fails-with-xxx-subsystem.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/9221610527859673591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/9221610527859673591'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/02/sql-agent-job-fails-with-xxx-subsystem.html' title='SQL Agent job fails with xXx subsystem failed to load'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-3971961736623674200</id><published>2009-02-13T12:59:00.002-05:00</published><updated>2009-09-10T11:52:26.706-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='sql security patch'/><category scheme='http://www.blogger.com/atom/ns#' term='ms09-feb'/><category scheme='http://www.blogger.com/atom/ns#' term='Cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='ms08-jul'/><title type='text'>July 2008/Febuary 2009 SQL Security Patch – Known Issues and Resolutions</title><content type='html'>After going through the last few SQL Patches, I thought it would be usefull to compile a list of the top errors encountered and their fixes.&lt;br&gt;
&lt;strong&gt;&lt;/strong&gt;
&lt;strong&gt;Error # in Summary.txt:&lt;/strong&gt; 29506
&lt;strong&gt;Description:&lt;/strong&gt; MSP Error: 29506 SQL Server Setup failed to modify security permissions on file xxx.xxx for user xxx. To proceed, verify that the account and domain running SQL Server Setup exist, that the account running SQL Server Setup has administrator privileges, and that exists on the destination drive.&lt;br&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; See the following MS Article &lt;a href="http://support.microsoft.com/kb/916766"&gt;KB916766&lt;/a&gt;. Notes: check on the file level, look for oddly named or abnormal modified dates as a starting place. Security must be granted at the individual file level.
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Error # in Summary.txt:&lt;/strong&gt; 11032
&lt;strong&gt;Description:&lt;/strong&gt; Unable to install Windows Installer MSP file&lt;br&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; A folder named FTData is not in the expected path, a search of the patch install log for "ERROR: FTE: InstallFTERef: Fail to create FTERef file:" (no quotes) will reveal the expected path. Create the folder in this pattern “F:\MSSQL.1\MSSQL\FTData” changing the path to match your install &amp;amp; what shows in the patch install log, when install complete copy all files to the existing FTData folder (for example) “F:\Microsoft SQL Server\MSSQL.1\MSSQL\FTData” and delete the path\folder you created.
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Error #:&lt;/strong&gt; N/A
&lt;strong&gt;Description:&lt;/strong&gt; User has lost custom permissions to SSIS after patching. i.e. “Connect to SSIS Service on machine &lt;machinename&gt;failed: Access is denied”
&lt;br&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Patch hjorks the custom perms we have setup for SSIS. Recreate the perms according to the following post &lt;a href="http://sqlpowershell.blogspot.com/2009/02/connecting-to-remote-ssis-server-with.html"&gt;Connecting to a Remote SSIS Server with Access Is Denied Error&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Error #:&lt;/strong&gt; N/A
&lt;strong&gt;Description:&lt;/strong&gt; Patch installs &amp;amp; reports success, but, one or more nodes in the cluster are un-patched (i.e. still on previous build)&lt;br&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; The problem occurs when the "Windows Installer" service is set to manual &amp;amp; is not running.  Start the service &amp;amp; re-run the patch on the un-patched node(s).  You should be prompted to reboot, if not, reboot manually.  After reboot check @@version on the node(s) in question.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-3971961736623674200?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/3971961736623674200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/02/july-2008febuary-2009-sql-security.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/3971961736623674200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/3971961736623674200'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/02/july-2008febuary-2009-sql-security.html' title='July 2008/Febuary 2009 SQL Security Patch – Known Issues and Resolutions'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-2784972589910187495</id><published>2009-02-13T11:21:00.000-05:00</published><updated>2009-02-13T13:57:06.934-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='permissions'/><title type='text'>Connecting to a Remote SSIS Server with Access Is Denied Error</title><content type='html'>If you are getting the dreaded “Connect to SSIS Service on machine failed: Access is denied” error when you connect as follows:
&lt;a href="http://3.bp.blogspot.com/_xhyp2IZfN3c/SZWilCoT4yI/AAAAAAAAACY/s2m8cyFojNs/s1600-h/1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5302322893543432994" style="WIDTH: 400px; CURSOR: hand; HEIGHT: 164px" alt="" src="http://3.bp.blogspot.com/_xhyp2IZfN3c/SZWilCoT4yI/AAAAAAAAACY/s2m8cyFojNs/s400/1.jpg" border="0" /&gt;&lt;/a&gt;

For Windows 2003 Server (SP1)
&lt;ul&gt;&lt;li&gt;If the user running under non-admin account it needs to be added to Distributed COM Users group&lt;/li&gt;&lt;li&gt;Run %windir%\system32\Com\comexp.msc to launch Component Services&lt;/li&gt;&lt;li&gt;Expand Component Services\Computers\My Computer\DCOM Config&lt;/li&gt;&lt;li&gt;Right click on MsDtsServer node and choose properties&lt;/li&gt;&lt;li&gt;In MsDtsServer Properties dialog go to Security page&lt;/li&gt;&lt;li&gt;Configure your settings as described bellow&lt;/li&gt;&lt;li&gt;Restart SSIS Service &lt;/li&gt;&lt;/ul&gt;In the Security page we are interested in “Launch and Activation Permissions” section. Click Edit button to see “Launch Permissions” dialog.
“Launch Permissions” dialog allows you to configure SSIS server access per user/group. In the bottom of the dialog you can select:
&lt;ul&gt;&lt;li&gt;Local &amp;amp; Remote Launch permissions if you allow to a user/group to start service locally and remotely (they will need both).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/_xhyp2IZfN3c/SZWh2tDovAI/AAAAAAAAACQ/6nm6O3olr1M/s1600-h/8.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5302322097478482946" style="WIDTH: 332px; CURSOR: hand; HEIGHT: 400px" alt="" src="http://2.bp.blogspot.com/_xhyp2IZfN3c/SZWh2tDovAI/AAAAAAAAACQ/6nm6O3olr1M/s400/8.jpg" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Local &amp;amp; Remote Activation permissions if you allow to a user/group to connect to SSIS server locally and remotely (they will need both).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_xhyp2IZfN3c/SZWh2S_uuyI/AAAAAAAAACI/bx6Vi0BaOk4/s1600-h/7.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5302322090482776866" style="WIDTH: 333px; CURSOR: hand; HEIGHT: 400px" alt="" src="http://3.bp.blogspot.com/_xhyp2IZfN3c/SZWh2S_uuyI/AAAAAAAAACI/bx6Vi0BaOk4/s400/7.jpg" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Read permissions on Change Configuration&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://4.bp.blogspot.com/_xhyp2IZfN3c/SZWhwkqS3uI/AAAAAAAAACA/liU215IkXt4/s1600-h/6.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5302321992145493730" style="WIDTH: 347px; CURSOR: hand; HEIGHT: 400px" alt="" src="http://4.bp.blogspot.com/_xhyp2IZfN3c/SZWhwkqS3uI/AAAAAAAAACA/liU215IkXt4/s400/6.jpg" border="0" /&gt;&lt;/a&gt;
&lt;ul&gt;&lt;li&gt;And also, add those users to “Distributed COM Users” group.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://1.bp.blogspot.com/_xhyp2IZfN3c/SZWhwQcMu8I/AAAAAAAAAB4/q0NTobCdK4Q/s1600-h/5.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5302321986717662146" style="WIDTH: 361px; CURSOR: hand; HEIGHT: 400px" alt="" src="http://1.bp.blogspot.com/_xhyp2IZfN3c/SZWhwQcMu8I/AAAAAAAAAB4/q0NTobCdK4Q/s400/5.jpg" border="0" /&gt;&lt;/a&gt;

If the users continue to experience errors, there is final set of permissions to check on the DCOM application, controlled by the Access Limits on the "COM Security" tab.
&lt;div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_xhyp2IZfN3c/SZWhwDC8fKI/AAAAAAAAABw/mJFbusyBzwA/s1600-h/4.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5302321983122078882" style="WIDTH: 332px; CURSOR: hand; HEIGHT: 400px" alt="" src="http://4.bp.blogspot.com/_xhyp2IZfN3c/SZWhwDC8fKI/AAAAAAAAABw/mJFbusyBzwA/s400/4.jpg" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Access Permissions&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_xhyp2IZfN3c/SZWhv_NzGSI/AAAAAAAAABo/j1i9xFMGwkI/s1600-h/3.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5302321982093859106" style="WIDTH: 333px; CURSOR: hand; HEIGHT: 400px" alt="" src="http://2.bp.blogspot.com/_xhyp2IZfN3c/SZWhv_NzGSI/AAAAAAAAABo/j1i9xFMGwkI/s400/3.jpg" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Launch Permissions&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_xhyp2IZfN3c/SZWhvY-BzSI/AAAAAAAAABg/FEXjGR_OGEo/s1600-h/2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5302321971827166498" style="WIDTH: 332px; CURSOR: hand; HEIGHT: 400px" alt="" src="http://2.bp.blogspot.com/_xhyp2IZfN3c/SZWhvY-BzSI/AAAAAAAAABg/FEXjGR_OGEo/s400/2.jpg" border="0" /&gt;&lt;/a&gt;

&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-2784972589910187495?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/2784972589910187495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/02/connecting-to-remote-ssis-server-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/2784972589910187495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/2784972589910187495'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/02/connecting-to-remote-ssis-server-with.html' title='Connecting to a Remote SSIS Server with Access Is Denied Error'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xhyp2IZfN3c/SZWilCoT4yI/AAAAAAAAACY/s2m8cyFojNs/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-5509642323626055927</id><published>2009-02-06T13:08:00.000-05:00</published><updated>2009-02-13T13:58:00.583-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mscs'/><category scheme='http://www.blogger.com/atom/ns#' term='Cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='best practice'/><category scheme='http://www.blogger.com/atom/ns#' term='configurations'/><title type='text'>Microsoft Best Practices for SQL</title><content type='html'>Recently we had a Microsoft SQL resource onsite to troubleshoot issues we were having with adding a node to a cluster. While he was onsite we did an assesment of our cluster configurations &amp;amp; came up with several best practices for clustered nodes running SQL.

&lt;div align="center"&gt;&lt;strong&gt;MSCS Specific&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;Heartbeat NIC&lt;/strong&gt;: HEARTBEAT should be 1st in Network Priority (Cluster Admin &gt; Properties &gt; Network Priority).
&lt;a href="http://4.bp.blogspot.com/_xhyp2IZfN3c/SYx-8v13qkI/AAAAAAAAAAo/jplOMGTpLUQ/s1600-h/ms1.jpg"&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_xhyp2IZfN3c/SYx_SFF7caI/AAAAAAAAAAw/R5Q6REq0_pk/s1600-h/ms1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5299750810089648546" style="WIDTH: 400px; CURSOR: hand; HEIGHT: 366px" alt="" src="http://2.bp.blogspot.com/_xhyp2IZfN3c/SYx_SFF7caI/AAAAAAAAAAw/R5Q6REq0_pk/s400/ms1.jpg" border="0" /&gt;&lt;/a&gt;


&lt;strong&gt;Heartbeat NIC&lt;/strong&gt;: Private Heartbeat address should not be registered in DNS (NIC Properties &gt; Advanced TCP/IP Settings &gt; DNS &gt; "Register this connections' addresses in DNS" checkbox).
&lt;a href="http://1.bp.blogspot.com/_xhyp2IZfN3c/SYx_od59xXI/AAAAAAAAAA4/VbmuQdcfxj4/s1600-h/ms2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5299751194707477874" style="WIDTH: 337px; CURSOR: hand; HEIGHT: 400px" alt="" src="http://1.bp.blogspot.com/_xhyp2IZfN3c/SYx_od59xXI/AAAAAAAAAA4/VbmuQdcfxj4/s400/ms2.jpg" border="0" /&gt;&lt;/a&gt;


&lt;strong&gt;Heartbeat NIC&lt;/strong&gt;: NetBIOS over TCP/IP should be disabled (NIC Properties &gt; Advanced TCP/IP Settings &gt; WINS &gt; NetBIOS Setting &gt; "Disable NetBIOS over TCP/IP" checkbox).
&lt;a href="http://2.bp.blogspot.com/_xhyp2IZfN3c/SYx_orxpO6I/AAAAAAAAABA/zGnOqQAk0CM/s1600-h/ms3.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5299751198430673826" style="WIDTH: 336px; CURSOR: hand; HEIGHT: 400px" alt="" src="http://2.bp.blogspot.com/_xhyp2IZfN3c/SYx_orxpO6I/AAAAAAAAABA/zGnOqQAk0CM/s400/ms3.jpg" border="0" /&gt;&lt;/a&gt;


&lt;div align="center"&gt;&lt;strong&gt;All SQL&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;File/Print Sharing&lt;/strong&gt;: Change maximize data throughput to Network Application (NIC Properties &gt; File &amp;amp; Printer Sharing for Microsoft &gt; Properties &gt; "Maximize data throughput for network applications" radio button).
&lt;a href="http://4.bp.blogspot.com/_xhyp2IZfN3c/SYx_pF9JvVI/AAAAAAAAABI/NiiE6rkr9fU/s1600-h/ms4.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5299751205458263378" style="WIDTH: 359px; CURSOR: hand; HEIGHT: 400px" alt="" src="http://4.bp.blogspot.com/_xhyp2IZfN3c/SYx_pF9JvVI/AAAAAAAAABI/NiiE6rkr9fU/s400/ms4.jpg" border="0" /&gt;&lt;/a&gt;


&lt;strong&gt;Processor Scheduling&lt;/strong&gt;: Adjust for best performance to Programs (My Computer &gt; Properties &gt; Advanced &gt; Performance &gt; Settings &gt; Advanced &gt; Processor Scheduling &gt; "Programs" radio button).
&lt;strong&gt;Memory Usage&lt;/strong&gt;: Adjust for best performance to Programs (My Computer &gt; Properties &gt; Advanced &gt; Performance &gt; Settings &gt; Advanced &gt; Memory Usage &gt; "Programs" radio button).
&lt;a href="http://2.bp.blogspot.com/_xhyp2IZfN3c/SYx_pCvLPCI/AAAAAAAAABQ/Jf7idhj0G2c/s1600-h/ms5.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5299751204594334754" style="WIDTH: 277px; CURSOR: hand; HEIGHT: 400px" alt="" src="http://2.bp.blogspot.com/_xhyp2IZfN3c/SYx_pCvLPCI/AAAAAAAAABQ/Jf7idhj0G2c/s400/ms5.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-5509642323626055927?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/5509642323626055927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/02/recently-we-had-microsoft-sql-resource.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/5509642323626055927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/5509642323626055927'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/02/recently-we-had-microsoft-sql-resource.html' title='Microsoft Best Practices for SQL'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xhyp2IZfN3c/SYx_SFF7caI/AAAAAAAAAAw/R5Q6REq0_pk/s72-c/ms1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2252997773360746596.post-6537481015928351207</id><published>2009-01-28T08:39:00.000-05:00</published><updated>2009-01-28T09:12:04.807-05:00</updated><title type='text'>Service Account Changes - Known Issues</title><content type='html'>&lt;div align="left"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;When changing service accounts you may encounter the following scenarios.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;div align="center"&gt;
&lt;strong&gt;1. SQL Agent fails to start on SQL2005 Clustered Instance&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;div align="left"&gt;This was due to an incorrect or missing delegation permission on the account (&lt;/span&gt;&lt;a href="http://support.microsoft.com/kb/956378"&gt;&lt;span style="font-size:85%;"&gt;http://support.microsoft.com/kb/956378&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;). The fix was to set the account in Active Directory to "Trust this user for delegation for any service (Kerberos Only)"&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;div align="center"&gt;
&lt;strong&gt;2. SSIS fails to start&lt;/strong&gt;
&lt;/div&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;Set an SPN for the instance with no port number, this is in addition to the SPN with port specified. For example MYSERVER\SQLXXXX5 (assume it’s using port 45678) should have 2 SPN's set "MSSQLSvc/MYSERVER.rjf.com" &amp;amp; "MSSQLSvc/MYSERVER.rjf.com:45678".&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;
&lt;strong&gt;3. Users are unable to connect with "unable to generate SSPI context" error&lt;/strong&gt;
&lt;/div&gt;&lt;/span&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;This is most probably a missing SPN. You can check the SPN's register to a specific account (MyAccount in this case) using this syntax in a CMD prompt "setspn -L MyAccount". The fix is to add appropriate SPN. SPN is in the following pattern "MSSQLSvc/FQDN:Port" so MYSERVER\SQLXXX2 (assume it’s using port 45678) would look like this "MSSQLSvc/MYSERVER.rjf.com:45678".&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;div align="center"&gt;
&lt;strong&gt;4. SQL service fails to start with the errors below (Error list A)&lt;/strong&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;The fix we received from MS was to create a local profile for the service account by logging on to the machine as the service account.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;div align="center"&gt;

&lt;strong&gt;Error List A&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;Event Type: Error&lt;/div&gt;&lt;div align="left"&gt;Event Source: MSSQL$SQLXXXX5&lt;/div&gt;&lt;div align="left"&gt;Event Category: (2)&lt;/div&gt;&lt;div align="left"&gt;Event ID: 17190&lt;/div&gt;&lt;div align="left"&gt;Date: 11/15/2008&lt;/div&gt;&lt;div align="left"&gt;Time: 12:31:04 PM&lt;/div&gt;&lt;div align="left"&gt;User: N/A&lt;/div&gt;&lt;div align="left"&gt;Computer: MYSERVER&lt;/div&gt;&lt;div align="left"&gt;Description:FallBack certificate initialization failed with error code: 1.For more information, see Help and Support Center at &lt;a href="http://go.microsoft.com/fwlink/events.asp"&gt;http://go.microsoft.com/fwlink/events.asp&lt;/a&gt;.&lt;/div&gt;&lt;div align="left"&gt;Data:&lt;/div&gt;&lt;div align="left"&gt;0000: 26 43 00 00 10 00 00 00 &amp;amp;C......&lt;/div&gt;&lt;div align="left"&gt;0008: 11 00 00 00 4c 00 45 00 ....M.Y.&lt;/div&gt;&lt;div align="left"&gt;0010: 4f 00 50 00 41 00 52 00 S.E.R.V.&lt;/div&gt;&lt;div align="left"&gt;0018: 44 00 5c 00 53 00 51 00 E.R.\.S.Q.&lt;/div&gt;&lt;div align="left"&gt;0020: 4c 00 50 00 52 00 4f 00 L.X.X.X.&lt;/div&gt;&lt;div align="left"&gt;0028: 44 00 35 00 00 00 00 00 X.5.....&lt;/div&gt;&lt;div align="left"&gt;0030: 00 00 .. &lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;
&lt;div align="left"&gt;Event Type: Information&lt;/div&gt;&lt;div align="left"&gt;Event Source: MSSQL$SQLXXXX5&lt;/div&gt;&lt;div align="left"&gt;Event Category: (2)&lt;/div&gt;&lt;div align="left"&gt;Event ID: 26017&lt;/div&gt;&lt;div align="left"&gt;Date: 11/15/2008&lt;/div&gt;&lt;div align="left"&gt;Time: 12:31:04 PM&lt;/div&gt;&lt;div align="left"&gt;User: N/A&lt;/div&gt;&lt;div align="left"&gt;Computer: MYSERVER&lt;/div&gt;&lt;div align="left"&gt;Description:Unable to initialize SSL encryption because a valid certificate could not be found, and it is not possible to create a self-signed certificate.For more information, see Help and Support Center at &lt;a href="http://go.microsoft.com/fwlink/events.asp"&gt;http://go.microsoft.com/fwlink/events.asp&lt;/a&gt;.&lt;/div&gt;&lt;div align="left"&gt;Data:&lt;/div&gt;&lt;div align="left"&gt;0000: a1 65 00 00 0a 00 00 00 ¡e......&lt;/div&gt;&lt;div align="left"&gt;0008: 11 00 00 00 4c 00 45 00 ....M.Y.&lt;/div&gt;&lt;div align="left"&gt;0010: 4f 00 50 00 41 00 52 00 S.E.R.V.&lt;/div&gt;&lt;div align="left"&gt;0018: 44 00 5c 00 53 00 51 00 E.R.\.S.Q.&lt;/div&gt;&lt;div align="left"&gt;0020: 4c 00 50 00 52 00 4f 00 L.X.X.X.&lt;/div&gt;&lt;div align="left"&gt;0028: 44 00 35 00 00 00 00 00 X.5.....&lt;/div&gt;&lt;div align="left"&gt;0030: 00 00 .. &lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;
&lt;div align="left"&gt;Event Type: Error&lt;/div&gt;&lt;div align="left"&gt;Event Source: MSSQL$SQLXXXX5&lt;/div&gt;&lt;div align="left"&gt;Event Category: (2)&lt;/div&gt;&lt;div align="left"&gt;Event ID: 17182&lt;/div&gt;&lt;div align="left"&gt;Date: 11/15/2008&lt;/div&gt;&lt;div align="left"&gt;Time: 12:31:04 PM&lt;/div&gt;&lt;div align="left"&gt;User: N/A&lt;/div&gt;&lt;div align="left"&gt;Computer: MYSERVER&lt;/div&gt;&lt;div align="left"&gt;Description:TDSSNIClient initialization failed with error 0x80092004, status code 0x80.For more information, see Help and Support Center at &lt;a href="http://go.microsoft.com/fwlink/events.asp"&gt;http://go.microsoft.com/fwlink/events.asp&lt;/a&gt;.&lt;/div&gt;&lt;div align="left"&gt;Data:&lt;/div&gt;&lt;div align="left"&gt;0000: 1e 43 00 00 10 00 00 00 .C......&lt;/div&gt;&lt;div align="left"&gt;0008: 11 00 00 00 4c 00 45 00 ....M.Y.&lt;/div&gt;&lt;div align="left"&gt;0010: 4f 00 50 00 41 00 52 00 S.E.R.V.&lt;/div&gt;&lt;div align="left"&gt;0018: 44 00 5c 00 53 00 51 00 E.R.\.S.Q.&lt;/div&gt;&lt;div align="left"&gt;0020: 4c 00 50 00 52 00 4f 00 L.X.X.X.&lt;/div&gt;&lt;div align="left"&gt;0028: 44 00 35 00 00 00 00 00 X.5.....&lt;/div&gt;&lt;div align="left"&gt;0030: 00 00 .. &lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;
&lt;div align="left"&gt;Event Type: Error&lt;/div&gt;&lt;div align="left"&gt;Event Source: MSSQL$SQLXXXX5&lt;/div&gt;&lt;div align="left"&gt;Event Category: (2)&lt;/div&gt;&lt;div align="left"&gt;Event ID: 17182&lt;/div&gt;&lt;div align="left"&gt;Date: 11/15/2008&lt;/div&gt;&lt;div align="left"&gt;Time: 12:31:04 PM&lt;/div&gt;&lt;div align="left"&gt;User: N/A&lt;/div&gt;&lt;div align="left"&gt;Computer: MYSERVER&lt;/div&gt;&lt;div align="left"&gt;Description:TDSSNIClient initialization failed with error 0x80092004, status code 0x1.For more information, see Help and Support Center at &lt;a href="http://go.microsoft.com/fwlink/events.asp"&gt;http://go.microsoft.com/fwlink/events.asp&lt;/a&gt;.&lt;/div&gt;&lt;div align="left"&gt;Data:&lt;/div&gt;&lt;div align="left"&gt;0000: 1e 43 00 00 10 00 00 00 .C......&lt;/div&gt;&lt;div align="left"&gt;0008: 11 00 00 00 4c 00 45 00 ....M.Y.&lt;/div&gt;&lt;div align="left"&gt;0010: 4f 00 50 00 41 00 52 00 S.E.R.V.&lt;/div&gt;&lt;div align="left"&gt;0018: 44 00 5c 00 53 00 51 00 E.R.\.S.Q.&lt;/div&gt;&lt;div align="left"&gt;0020: 4c 00 50 00 52 00 4f 00 L.X.X.X.&lt;/div&gt;&lt;div align="left"&gt;0028: 44 00 35 00 00 00 00 00 X.5.....&lt;/div&gt;&lt;div align="left"&gt;0030: 00 00 .. &lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;
&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;Event Type: Error&lt;/div&gt;&lt;div align="left"&gt;Event Source: MSSQL$SQLXXXX5&lt;/div&gt;&lt;div align="left"&gt;Event Category: (2)&lt;/div&gt;&lt;div align="left"&gt;Event ID: 17826&lt;/div&gt;&lt;div align="left"&gt;Date: 11/15/2008&lt;/div&gt;&lt;div align="left"&gt;Time: 12:31:04 PM&lt;/div&gt;&lt;div align="left"&gt;User: N/A&lt;/div&gt;&lt;div align="left"&gt;Computer: MYSERVER&lt;/div&gt;&lt;div align="left"&gt;Description:Could not start the network library because of an internal error in the network library. To determine the cause, review the errors immediately preceding this one in the error log.For more information, see Help and Support Center at &lt;a href="http://go.microsoft.com/fwlink/events.asp"&gt;http://go.microsoft.com/fwlink/events.asp&lt;/a&gt;.&lt;/div&gt;&lt;div align="left"&gt;Data:&lt;/div&gt;&lt;div align="left"&gt;0000: a2 45 00 00 12 00 00 00 ¢E......&lt;/div&gt;&lt;div align="left"&gt;0008: 11 00 00 00 4c 00 45 00 ....M.Y.&lt;/div&gt;&lt;div align="left"&gt;0010: 4f 00 50 00 41 00 52 00 S.E.R.V.&lt;/div&gt;&lt;div align="left"&gt;0018: 44 00 5c 00 53 00 51 00 E.R.\.S.Q.&lt;/div&gt;&lt;div align="left"&gt;0020: 4c 00 50 00 52 00 4f 00 L.X.X.X.&lt;/div&gt;&lt;div align="left"&gt;0028: 44 00 35 00 00 00 00 00 X.5.....&lt;/div&gt;&lt;div align="left"&gt;0030: 00 00 .. &lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;
&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;Event Type: Error&lt;/div&gt;&lt;div align="left"&gt;Event Source: MSSQL$SQLXXXX5&lt;/div&gt;&lt;div align="left"&gt;Event Category: (2)&lt;/div&gt;&lt;div align="left"&gt;Event ID: 17120&lt;/div&gt;&lt;div align="left"&gt;Date: 11/15/2008&lt;/div&gt;&lt;div align="left"&gt;Time: 12:31:04 PM&lt;/div&gt;&lt;div align="left"&gt;User: N/A&lt;/div&gt;&lt;div align="left"&gt;Computer: MYSERVER&lt;/div&gt;&lt;div align="left"&gt;Description:SQL Server could not spawn FRunCM thread. Check the SQL Server error log and the Windows event logs for information about possible related problems.For more information, see Help and Support Center at &lt;a href="http://go.microsoft.com/fwlink/events.asp"&gt;http://go.microsoft.com/fwlink/events.asp&lt;/a&gt;.&lt;/div&gt;&lt;div align="left"&gt;Data:&lt;/div&gt;&lt;div align="left"&gt;0000: e0 42 00 00 10 00 00 00 àB......&lt;/div&gt;&lt;div align="left"&gt;0008: 11 00 00 00 4c 00 45 00 ....M.Y.&lt;/div&gt;&lt;div align="left"&gt;0010: 4f 00 50 00 41 00 52 00 S.E.R.V.&lt;/div&gt;&lt;div align="left"&gt;0018: 44 00 5c 00 53 00 51 00 E.R.\.S.Q.&lt;/div&gt;&lt;div align="left"&gt;0020: 4c 00 50 00 52 00 4f 00 L.X.X.X.&lt;/div&gt;&lt;div align="left"&gt;0028: 44 00 35 00 00 00 00 00 X.5.....&lt;/div&gt;&lt;div align="left"&gt;0030: 00 00 ..
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2252997773360746596-6537481015928351207?l=sqlpowershell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlpowershell.blogspot.com/feeds/6537481015928351207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlpowershell.blogspot.com/2009/01/service-account-changes-known-issues.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/6537481015928351207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2252997773360746596/posts/default/6537481015928351207'/><link rel='alternate' type='text/html' href='http://sqlpowershell.blogspot.com/2009/01/service-account-changes-known-issues.html' title='Service Account Changes - Known Issues'/><author><name>John O'Shea</name><uri>http://www.blogger.com/profile/01675795648700035848</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_xhyp2IZfN3c/Snc7vJfbvWI/AAAAAAAAADQ/1WygyZwCVEc/S220/John+O%27Shea.jpg'/></author><thr:total>0</thr:total></entry></feed>
