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

<channel>
	<title>dougzuck.com &#187; doug</title>
	<atom:link href="http://dougzuck.com/author/doug/feed" rel="self" type="application/rss+xml" />
	<link>http://dougzuck.com</link>
	<description>A place to put some stuff...</description>
	<lastBuildDate>Wed, 18 Jan 2012 02:31:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Remote Reboot X &#8211; new version not too far away&#8230;</title>
		<link>http://dougzuck.com/remote-reboot-x-new-version-not-too-far-away</link>
		<comments>http://dougzuck.com/remote-reboot-x-new-version-not-too-far-away#comments</comments>
		<pubDate>Wed, 17 Nov 2010 04:02:03 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dougzuck.com/?p=812</guid>
		<description><![CDATA[Initiate the download and / or installation of Windows updates on MANY remote computers simultaneously from a single console (works with your own WSUS server or Microsoft’s server) Deploy standalone Microsoft or third-party patches such as Adobe or Java updates, as well as registry keys, scripts, and just about anything else to remote hosts: (.msi [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://batchpatch.com"><img class="aligncenter" title="BatchPatch" src="http://remoterebootx.com/wp-content/uploads/2011/12/BatchPatchFinalLogo201103041.png" alt="" width="438" height="111" /></a></p>
<ul>
<li>Initiate the download and / or installation of Windows updates on MANY remote computers simultaneously from a single console (works with your own WSUS server or Microsoft’s server)</li>
<li>Deploy standalone Microsoft or third-party patches such as Adobe or Java updates, as well as registry keys, scripts, and just about anything else to remote hosts: (.msi .msp .msu .exe .reg .vbs and more) See this <a href="http://batchpatch.com/how-to-push-net-to-remote-hosts" target="_blank">remote installation tutorial</a></li>
<li>Reboot or shutdown remote hosts and monitor status in real-time with integrated pinging</li>
<li>No remote agent installation required!  Simply launch BatchPatch and start patching.</li>
<li>Integrated job queues:  You can create a set of actions to execute sequentially on remote hosts, which allows you to run scripts before and/or after reboot, or string together multiple patch and reboot cycles etc.</li>
<li>Execute your own custom scripts locally or remotely or add them to job queues for full automation flexibility</li>
<li>Integrated task scheduler:  Launch any task or job queue on a specific date and time</li>
<li>Retrieve the last boot time from remote hosts (very handy when rebooting computers)</li>
<li>Retrieve the used/free C: disk space from remote hosts (make sure the remote hosts have enough space available for patch installations)</li>
<li>Retrieve the list of services that are set to “Automatic” but not currently running on the remote hosts (diagnose bootup issues)</li>
<li>Wake on LAN</li>
</ul>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p><a href="http://remoterebootx.com/remoterebootx"><img class="aligncenter" title="RemoteRebootX" src="http://remoterebootx.com/wp-content/uploads/2011/12/RemoteRebootX_Logo_20111218free.png" alt="" width="600" height="120" /></a></p>
<ul>
<li>Reboot or shutdown remote hosts and monitor status in real-time with integrated pinging</li>
<li>No remote agent installation required! Simply launch RemoteRebootX and start rebooting.</li>
<li>Integrated task scheduler: Launch any task on a specific date and time</li>
<li>Retrieve the last boot time from remote hosts (very handy when rebooting computers)</li>
<li>Retrieve the list of services that are set to “Automatic” but not currently running on the remote hosts (diagnose bootup issues)</li>
<li>Retrieve the MAC address from remote hosts (required for Wake On LAN)</li>
<li>Wake on LAN</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://dougzuck.com/remote-reboot-x-new-version-not-too-far-away/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Michael Buble is disgraceful for ripping off Sara Bareilles</title>
		<link>http://dougzuck.com/michael-buble-is-disgraceful-for-ripping-off-sara-bareilles</link>
		<comments>http://dougzuck.com/michael-buble-is-disgraceful-for-ripping-off-sara-bareilles#comments</comments>
		<pubDate>Sat, 13 Feb 2010 03:25:48 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[Pop]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Bareilles]]></category>
		<category><![CDATA[Buble]]></category>
		<category><![CDATA[Piano]]></category>
		<category><![CDATA[Ripoff]]></category>

		<guid isPermaLink="false">http://dougzuck.com/?p=787</guid>
		<description><![CDATA[Up until now it hasn&#8217;t been like me to just hop on the computer to blog about pop culture of any sort, but this morning I heard a horrible song on the radio while I was lying in bed, and I felt compelled now to share with you my disgust. A couple of years ago [...]]]></description>
			<content:encoded><![CDATA[<p>Up until now it hasn&#8217;t been like me to just hop on the computer to blog about pop culture of any sort, but this morning I heard a horrible song on the radio while I was lying in bed, and I felt compelled now to share with you my disgust.</p>
<p>A couple of years ago Sara Bareilles appeared on the scene with a super-catchy tune called <em>Love Song</em>.  One of the things that made it so catchy, and probably the defining quality of the song, is the main piano riff, which has a fun and unique sort-of jazzy cadence.</p>
<p>Fast forward to this morning when I woke up in bed to one of the worst radio stations in the country, <em>Mix 107.3 FM</em>.  It&#8217;s one of the local stations here in Washington DC, and they&#8217;ve got this guy who calls himself Jack Diamond and hosts the <em>Jack Diamond In The Morning</em> show.  I have the dial on my clock radio set to this station because as much as I hate it, every other station is even worse when it comes to the morning programming.  So, under protest, I continue to leave my 23 year-old clock radio set to<em> Mix 107.3</em> hoping that one of two things happen.  Either A, I wake up to a song instead of to the Jack Diamond morning talk show, or B, I wake up to a substitute show and host instead of Jack Diamond and his extremely lame sidekick Jimmy something-or-other.   Anyway, I digress.</p>
<p>Back to what I was saying&#8230;  A new song I had never heard before came on the radio while I was lying in bed this morning.  It&#8217;s called <em>Haven&#8217;t Met You Yet</em>, by Michael Buble.   Immediately it reminded me of <em>Love Song</em>, by Sara Bareilles, because it pretty much IS<em> Love Song</em>, but with a different melody.  I actually didn&#8217;t recognize the melody at all, which might mean that it&#8217;s original, but given how much I recognized the piano riff, I wouldn&#8217;t be surprised to find out that the melody was ripped off from another song too.</p>
<p>Who Michael Buble is, I couldn&#8217;t tell you.  I know nothing about him other than that he sucks, and that he blatantly ripped off Sara Bareilles.  If he had a brain he&#8217;d at least pick a song that wasn&#8217;t hugely popular so recently.  He could have ripped off some old song and no one would have known.</p>
<p>One item that I find interesting here is that under most circumstances in pop music, the melody is really the most important hooking factor, and the rhythm is generally a secondary component.  However, Sara Bareilles&#8217; <em>Love Song</em> hooked everyone with both a memorable melody <em>and</em> with an extremely catchy, rhythmic, syncopated piano riff.</p>
<p>Usually when one artist accuses another of ripping off a song, it&#8217;s the melody that&#8217;s the center of the debate.  However, in this case, Michael Buble&#8217;s melody is definitely very different from that of Sara Bareilles&#8217; <em>Love Song</em>.  Instead of stealing the melody, Buble and his co-writers apparently just took the catchy piano riff and changed the chords.  The riff in <em>Haven&#8217;t Met You Yet</em> still sounds like <em>Love Song, </em>but <em>Haven&#8217;t Met You Yet</em> as a whole song just plain sucks.  It&#8217;s ultra-mediocre with an unappealing melody, and there just isn&#8217;t a single thing about it that makes someone want to listen to it aside from the catchy piano riff.  And since he &#8220;borrowed&#8221; the catchy piano riff in the first place, what does he really have here with this song?  Why would any radio station ever consider playing it?</p>
<p>Here&#8217;s a quick comparison of the two piano riffs.  You decide:<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/_R7MDON2TkI?hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/_R7MDON2TkI?hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://dougzuck.com/michael-buble-is-disgraceful-for-ripping-off-sara-bareilles/feed</wfw:commentRss>
		<slash:comments>52</slash:comments>
		</item>
		<item>
		<title>BatchPatch and RemoteRebootX</title>
		<link>http://dougzuck.com/remote-reboot-x-new-release-coming-soon</link>
		<comments>http://dougzuck.com/remote-reboot-x-new-release-coming-soon#comments</comments>
		<pubDate>Tue, 26 Jan 2010 00:23:00 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dougzuck.com/?p=785</guid>
		<description><![CDATA[Initiate the download and / or installation of Windows updates on MANY remote computers simultaneously from a single console (works with your own WSUS server or Microsoft’s server) Deploy standalone Microsoft or third-party patches such as Adobe or Java updates, as well as registry keys, scripts, and just about anything else to remote hosts: (.msi [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://batchpatch.com"><img class="aligncenter" title="BatchPatch" src="http://remoterebootx.com/wp-content/uploads/2011/12/BatchPatchFinalLogo201103041.png" alt="" width="438" height="111" /></a></p>
<ul>
<li>Initiate the download and / or installation of Windows updates on MANY remote computers simultaneously from a single console (works with your own WSUS server or Microsoft’s server)</li>
<li>Deploy standalone Microsoft or third-party patches such as Adobe or Java updates, as well as registry keys, scripts, and just about anything else to remote hosts: (.msi .msp .msu .exe .reg .vbs and more) See this <a href="http://batchpatch.com/how-to-push-net-to-remote-hosts" target="_blank">remote installation tutorial</a></li>
<li>Reboot or shutdown remote hosts and monitor status in real-time with integrated pinging</li>
<li>No remote agent installation required!  Simply launch BatchPatch and start patching.</li>
<li>Integrated job queues:  You can create a set of actions to execute sequentially on remote hosts, which allows you to run scripts before and/or after reboot, or string together multiple patch and reboot cycles etc.</li>
<li>Execute your own custom scripts locally or remotely or add them to job queues for full automation flexibility</li>
<li>Integrated task scheduler:  Launch any task or job queue on a specific date and time</li>
<li>Retrieve the last boot time from remote hosts (very handy when rebooting computers)</li>
<li>Retrieve the used/free C: disk space from remote hosts (make sure the remote hosts have enough space available for patch installations)</li>
<li>Retrieve the list of services that are set to “Automatic” but not currently running on the remote hosts (diagnose bootup issues)</li>
<li>Wake on LAN</li>
</ul>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p><a href="http://remoterebootx.com/remoterebootx"><img class="aligncenter" title="RemoteRebootX" src="http://remoterebootx.com/wp-content/uploads/2011/12/RemoteRebootX_Logo_20111218free.png" alt="" width="600" height="120" /></a></p>
<ul>
<li>Reboot or shutdown remote hosts and monitor status in real-time with integrated pinging</li>
<li>No remote agent installation required! Simply launch RemoteRebootX and start rebooting.</li>
<li>Integrated task scheduler: Launch any task on a specific date and time</li>
<li>Retrieve the last boot time from remote hosts (very handy when rebooting computers)</li>
<li>Retrieve the list of services that are set to “Automatic” but not currently running on the remote hosts (diagnose bootup issues)</li>
<li>Retrieve the MAC address from remote hosts (required for Wake On LAN)</li>
<li>Wake on LAN</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://dougzuck.com/remote-reboot-x-new-release-coming-soon/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML Application &#8211; SQL Differential Backup Size Prediction</title>
		<link>http://dougzuck.com/html-application-sql-differential-backup-size-prediction</link>
		<comments>http://dougzuck.com/html-application-sql-differential-backup-size-prediction#comments</comments>
		<pubDate>Sun, 02 Aug 2009 20:50:01 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[HTML Applications]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[HTA]]></category>

		<guid isPermaLink="false">http://dougzuck.com/?p=645</guid>
		<description><![CDATA[You can find the full post here: http://dougzuck.com/hta]]></description>
			<content:encoded><![CDATA[<p>You can find the full post here: <a href="http://dougzuck.com/hta">http://dougzuck.com/hta</a></p>
<p style="text-align: center;"><a href="http://dougzuck.com/wp-content/uploads/2009/05/diffBackupPredictionHTA.png"><img class="aligncenter size-full wp-image-640" title="diffBackupPredictionHTA" src="http://dougzuck.com/wp-content/uploads/2009/05/diffBackupPredictionHTA.png" alt="diffBackupPredictionHTA" width="597" height="221" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dougzuck.com/html-application-sql-differential-backup-size-prediction/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL &#8211; Differential Backup Size Prediction</title>
		<link>http://dougzuck.com/sql-differential-backup-size-prediction</link>
		<comments>http://dougzuck.com/sql-differential-backup-size-prediction#comments</comments>
		<pubDate>Sun, 02 Aug 2009 20:22:32 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://dougzuck.com/?p=625</guid>
		<description><![CDATA[SQL Differential Backup Size Prediction]]></description>
			<content:encoded><![CDATA[<p>One of the tasks I regularly have to perform at my job involves moving multi-terabyte databases from one server to another.  The goal is to make these database moves happen with as little downtime as possible, so I always make use of differential backups and restores to keep the move times to a minimum.  I&#8217;ll do a full backup of the source database, then I&#8217;ll perform a restore of that database to the new server, specifying &#8216;with norecovery&#8217; in the restore command.  For a 2 terabyte database, this process will take many hours, but that&#8217;s ok because I&#8217;ll make sure it&#8217;s complete prior to the actual maintenance window.  Then when the maintenance window begins, I&#8217;ll disable access to the database and perform a differential backup of the database on the source server.  Then I restore the differential backup &#8216;with recovery&#8217; to the new server.  The process of doing a differential backup and restore is <em>much</em> less time consuming than the full backup and restore, and this allows the actual maintenance window to be much smaller since the full backup and restore is completed at an earlier time.  However, when I&#8217;m dealing with such large databases, it becomes extremely helpful to know how big the differential backup is going to be before I actually execute it.  This way I&#8217;m able to estimate how long the whole process will take.  When you have a 2 terabyte database, it&#8217;s not uncommon to have a several hundred gigabyte differential backup.  You could see why it might help to know in advance whether the differential is going to be 10GB or 200GB.</p>
<p>Darwin Hatheway wrote a <a href="http://www.sqlservercentral.com/articles/Administration/differentialbackupprediction/2306/">really nice article</a> explaining how the differential backup size can be estimated.  He gets all the credit for teaching me how to do this.  I have two implementations below.  One is a straight T-SQL script, and the other is a HTML Application (HTA) that utilizes the T-SQL script with a bit of vbscript.  On a 2TB database it generally only takes a handful of seconds for the script to complete.</p>
<p>T-SQL Version: <a href="http://dougzuck.com/downloads/SQL-Differential-Backup-Size-Prediction-dz.sql">SQL Differential Backup Size Prediction</a><br />
HTML Application: <a href="http://dougzuck.com/hta">http://dougzuck.com/hta</a></p>
<p><a href="http://dougzuck.com/wp-content/uploads/2009/08/diffPredictionResults.png"><img class="aligncenter size-full wp-image-631" title="diffPredictionResults" src="http://dougzuck.com/wp-content/uploads/2009/08/diffPredictionResults.png" alt="diffPredictionResults" width="349" height="36" /></a></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/*SQL Differential Backup Size Prediction - Doug Zuckerman, 2009 - http://dougzuck.com */</span>
&nbsp;
<span style="color: #993333; font-weight: bold;">IF</span> isNULL<span style="color: #66cc66;">&#40;</span>object_id<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'tempdb.dbo.##showFileStats'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&lt;&gt;</span> <span style="color: #cc66cc;">1</span>
	<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #808080; font-style: italic;">##showFileStats</span>
&nbsp;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #808080; font-style: italic;">##showFileStats (</span>
	fileID INT<span style="color: #66cc66;">,</span>
	fileGroup INT<span style="color: #66cc66;">,</span>
	totalExtents BIGINT<span style="color: #66cc66;">,</span>
	usedExtents BIGINT<span style="color: #66cc66;">,</span>
	logicalFileName VARCHAR <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">500</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>	
	filePath VARCHAR <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1000</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #993333; font-weight: bold;">IF</span> isNULL<span style="color: #66cc66;">&#40;</span>object_id<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'tempdb.dbo.##DCM'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&lt;&gt;</span> <span style="color: #cc66cc;">1</span>
	<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #808080; font-style: italic;">##DCM</span>
&nbsp;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #808080; font-style: italic;">##DCM (</span>
	parentObject VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">5000</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
	<span style="color: #66cc66;">&#91;</span>object<span style="color: #66cc66;">&#93;</span> VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">5000</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
	<span style="color: #993333; font-weight: bold;">FIELD</span> VARCHAR <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">5000</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
	value VARCHAR <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">5000</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/*we need to get a list of all the files in the database.  each file needs to be looked at*/</span>	
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #808080; font-style: italic;">##showFileStats EXEC('DBCC SHOWFILESTATS with tableresults')</span>
&nbsp;
DECLARE @currentFileID INT<span style="color: #66cc66;">,</span>
	@totalExtentsOfFile BIGINT<span style="color: #66cc66;">,</span>
	@dbname VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
	@SQL VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">200</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
	@currentDCM BIGINT<span style="color: #66cc66;">,</span>
	@step INT
&nbsp;
<span style="color: #993333; font-weight: bold;">SET</span> @dbname <span style="color: #66cc66;">=</span> db_name<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">SET</span> @step <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">511232</span>
&nbsp;
DECLARE myCursor SCROLL CURSOR <span style="color: #993333; font-weight: bold;">FOR</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> fileID<span style="color: #66cc66;">,</span> totalExtents 
<span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #808080; font-style: italic;">##showFileStats</span>
&nbsp;
OPEN myCursor
FETCH NEXT <span style="color: #993333; font-weight: bold;">FROM</span> myCursor <span style="color: #993333; font-weight: bold;">INTO</span> @currentFileID<span style="color: #66cc66;">,</span> @totalExtentsOfFile
&nbsp;
<span style="color: #808080; font-style: italic;">/*look at each differential change map page in each data file of the database and put the output into ##DCM*/</span>
WHILE @@FETCH_STATUS <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> 
BEGIN
&nbsp;
	<span style="color: #993333; font-weight: bold;">SET</span> @currentDCM <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">6</span>
	WHILE @currentDCM <span style="color: #66cc66;">&lt;=</span> @totalExtentsOfFile<span style="color: #66cc66;">*</span><span style="color: #cc66cc;">8</span>
	BEGIN	
		<span style="color: #993333; font-weight: bold;">SET</span> @SQL <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'dbcc page('</span><span style="color: #66cc66;">+</span> @dbname <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">', '</span> <span style="color: #66cc66;">+</span> CAST<span style="color: #66cc66;">&#40;</span>@currentFileID <span style="color: #993333; font-weight: bold;">AS</span> VARCHAR<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">', '</span> <span style="color: #66cc66;">+</span> CAST<span style="color: #66cc66;">&#40;</span>@currentDCM <span style="color: #993333; font-weight: bold;">AS</span> VARCHAR<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">', 3) WITH TABLERESULTS'</span>
		<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #808080; font-style: italic;">##DCM EXEC (@SQL)</span>
		<span style="color: #993333; font-weight: bold;">SET</span> @currentDCM <span style="color: #66cc66;">=</span> @currentDCM <span style="color: #66cc66;">+</span> @step
	END
&nbsp;
	FETCH NEXT <span style="color: #993333; font-weight: bold;">FROM</span> myCursor <span style="color: #993333; font-weight: bold;">INTO</span> @currentFileID<span style="color: #66cc66;">,</span> @totalExtentsOfFile
END
CLOSE myCursor
DEALLOCATE myCursor
&nbsp;
<span style="color: #808080; font-style: italic;">/*remove all unneeded rows from our results table*/</span>
<span style="color: #993333; font-weight: bold;">DELETE</span> <span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #808080; font-style: italic;">##DCM WHERE value = 'NOT CHANGED' OR parentObject NOT LIKE 'DIFF_MAP%'</span>
<span style="color: #808080; font-style: italic;">--SELECT * FROM ##DCM</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/*sum the extentTally column*/</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> SUM <span style="color: #66cc66;">&#40;</span>extentTally<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> totalChangedExtents<span style="color: #66cc66;">,</span> SUM<span style="color: #66cc66;">&#40;</span>extentTally<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">16</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">'diffPrediction(MB)'</span><span style="color: #66cc66;">,</span> SUM<span style="color: #66cc66;">&#40;</span>extentTally<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">16</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">1024</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">'diffPrediction(GB)'</span> 
<span style="color: #993333; font-weight: bold;">FROM</span>
	<span style="color: #808080; font-style: italic;">/*create extentTally column*/</span>
	<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> extentTally <span style="color: #66cc66;">=</span>
	CASE
		WHEN secondChangedExtent <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span> THEN CAST<span style="color: #66cc66;">&#40;</span>secondChangedExtent <span style="color: #993333; font-weight: bold;">AS</span> BIGINT<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">-</span> CAST<span style="color: #66cc66;">&#40;</span>firstChangedExtent <span style="color: #993333; font-weight: bold;">AS</span> BIGINT<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span>
		ELSE <span style="color: #cc66cc;">1</span>
	END
	<span style="color: #993333; font-weight: bold;">FROM</span>
		<span style="color: #808080; font-style: italic;">/*parse the 'field' column to give us the first and last extents of the range*/</span>
		<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#40;</span>SUBSTRING<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> CHARINDEX<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">':'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>CHARINDEX<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">')'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #66cc66;">&#40;</span>CHARINDEX<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">':'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">8</span> <span style="color: #993333; font-weight: bold;">AS</span> firstChangedExtent<span style="color: #66cc66;">,</span>
		secondChangedExtent <span style="color: #66cc66;">=</span> 
		CASE	
			WHEN CHARINDEX<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">':'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span> CHARINDEX<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">':'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span> THEN <span style="color: #66cc66;">&#40;</span>SUBSTRING<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>CHARINDEX<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">':'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span> CHARINDEX<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">':'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>CHARINDEX<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">')'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span>CHARINDEX<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">')'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #66cc66;">&#40;</span>CHARINDEX<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">':'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span> CHARINDEX<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">':'</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">8</span>
			ELSE <span style="color: #ff0000;">''</span>
		END 
		<span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #808080; font-style: italic;">##DCM)parsedFieldColumn)extentTallyColumn</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://dougzuck.com/sql-differential-backup-size-prediction/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>HTML Application &#8211; Retrieve SP_WHO2 and the Input Buffer from a SQL Server</title>
		<link>http://dougzuck.com/html-application-retrieve-sp_who2-and-the-input-buffer-from-a-sql-server</link>
		<comments>http://dougzuck.com/html-application-retrieve-sp_who2-and-the-input-buffer-from-a-sql-server#comments</comments>
		<pubDate>Sun, 05 Jul 2009 01:56:56 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[HTML Applications]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[HTA]]></category>

		<guid isPermaLink="false">http://dougzuck.com/?p=600</guid>
		<description><![CDATA[You can find the full post here: http://www.dougzuck.com/hta]]></description>
			<content:encoded><![CDATA[<p>You can find the full post here: <a href="http://www.dougzuck.com/hta" target="_self">http://www.dougzuck.com/hta</a></p>
<p style="text-align: center;"><a href="http://dougzuck.com/wp-content/uploads/2009/05/get_sql_spwho2_and_inputbuffer.png"><img class="aligncenter size-large wp-image-520" title="get_sql_spwho2_and_inputbuffer" src="http://dougzuck.com/wp-content/uploads/2009/05/get_sql_spwho2_and_inputbuffer-1024x676.png" alt="get_sql_spwho2_and_inputbuffer" width="614" height="406" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dougzuck.com/html-application-retrieve-sp_who2-and-the-input-buffer-from-a-sql-server/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Decrease Malware Infections Using Software Restriction Policies (SRP) to Strip Administrative Privileges from Internet-Facing Applications</title>
		<link>http://dougzuck.com/decrease-malware-infections-using-software-restriction-policies</link>
		<comments>http://dougzuck.com/decrease-malware-infections-using-software-restriction-policies#comments</comments>
		<pubDate>Fri, 03 Jul 2009 04:27:51 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Security Restriction Policies]]></category>
		<category><![CDATA[Systems Administration]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://dougzuck.com/?p=541</guid>
		<description><![CDATA[This information applies to Windows XP only.  It is NOT valid for Windows Vista or Windows 7 &#160; I know that many organizations do not put restrictions on their users&#8217; computers.  The users are often given full administrative privileges on their workstations, which means that they can not only mess around with all the settings [...]]]></description>
			<content:encoded><![CDATA[<h2 style="text-align: left;"><span style="color: #993366;">This information applies to Windows XP only.  It is NOT valid for Windows Vista or Windows 7</span></h2>
<p>&nbsp;</p>
<p style="text-align: left;">I know that many organizations do not put restrictions on their users&#8217; computers.  The users are often given full administrative privileges on their workstations, which means that they can not only mess around with all the settings on their computers, but they can also install and uninstall applications.  This includes accidental virus and malware installations.  While many <a href="http://en.wikipedia.org/wiki/System_administrator" target="_blank">Systems and Network Admins</a> consider this unacceptable, it&#8217;s still a reality in many working environments.  So rather than complain about how it&#8217;s not the ideal way to run a windows network, let&#8217;s focus on cool ways to mitigate the risks of this approach.  This is one VERY simple but effective method to limit malware infections on your network computers while still allowing users to be local administrators.  This approach can be used across an entire network with a group policy object, or it can simply be applied to a single computer by modifying the computer&#8217;s local security policy.</p>
<h3 style="text-align: left;">Overview&#8230;</h3>
<p style="text-align: left;">The idea here is that you apply a group policy object to the users or computers in your organization.   It prevents whatever applications you choose from launching with full admin privileges on the users&#8217; computers.  The users are still local administrators, but the particular applications that you pre-select get launched <em>without </em>administrative permissions.  If you apply this restriction to all of the applications that deal with typically untrusted, unsafe, or unknown content, then you dramatically decrease the likelihood that a virus or other malware can be installed because non-admin users are not able to install software on the computer.  Windows doesn&#8217;t let them.  I recommend applying it to all web browsers, all email clients, and all media players because these are the primary apps that deal with internet content.  You could alternatively apply it to the entire C:\Program Files folder, but if you do so you should be mindful of the fact that some apps might break as a result.</p>
<p style="text-align: left;">You can produce functionality that is similar to <a href="http://blogs.msdn.com/michael_howard/archive/2007/08/13/update-on-dropmyrights.aspx" target="_blank">DropMyRights</a> but <em>without </em>the annoyances that come along with it.  In my opinion this method is by far the easiest to deploy to a lot of users or computers, something which <a href="http://blogs.msdn.com/michael_howard/archive/2007/08/13/update-on-dropmyrights.aspx" target="_blank">DropMyRights </a>isn&#8217;t suited for (since any time an application is updated or a new one installed, the <a href="http://blogs.msdn.com/michael_howard/archive/2007/08/13/update-on-dropmyrights.aspx" target="_blank">DropMyRights </a>configuration has to be re-applied).  Using <a href="http://technet.microsoft.com/en-us/library/bb457006.aspx" target="_blank">Software Restriction Policies</a>, you can apply this functionality in a way that is virtually transparent to users.  However, Microsoft doesn&#8217;t publicize this particular usage of SRP for whatever reason (the functionality is actually hidden in XP by default &#8211; you need to add a registry DWORD to make it available), which is why I&#8217;m taking the time to mention it here.  When I embarked on setting this up today at my job I spent hours researching something that took only minutes to implement.  Hopefully I&#8217;m now saving you the hours of research.</p>
<h3 style="text-align: left;">Caveat&#8230;</h3>
<p style="text-align: left;">The only real caveat is that when an application is launched without admin privileges, if that application then launches another process or program, the program that it launches will also not have admin privileges.  This means that if a user wants to install software that he/she downloads from the web, he/she needs to be aware that launching the setup.exe file directly from browser&#8217;s &#8216;Downloads&#8217; window will generate an error and abort the installation.  In some cases it might not throw an error and instead will appear to install successfully, but when the app is launched it isn&#8217;t able to run because the installation was actually not successful.  Users have to be trained to save the application setup files to their desktops (or wherever) and then launch them from the desktops or through Windows Explorer.</p>
<p style="text-align: left;">Additionally, it is up to you test out any applications that you restrict.  While most of the time this is a transparent deployment, there is always the possibility that this restriction could hinder a custom application from working in the way that it was designed.  However, for most applications in most situations it works great and causes no issues.</p>
<h3 style="text-align: left;">Here&#8217;s the step by step:</h3>
<p style="text-align: left;">1. Expose the hidden &#8216;Basic User&#8217; option by opening the registry editor and adding a DWORD called &#8220;Levels&#8221; with a value of 20000 (hexadecimal) to</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">HKLM\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiers</pre></div></div>

<p style="text-align: center;"><a href="http://dougzuck.com/wp-content/uploads/2009/07/SRP4.png"><img class="size-medium wp-image-546 aligncenter" title="SRP4" src="http://dougzuck.com/wp-content/uploads/2009/07/SRP4-300x152.png" alt="SRP4" width="300" height="152" /></a></p>
<p style="text-align: left;">2. Open the domain Group Policy editor (or to apply to a single computer, open the local policy editor by going to Start &gt; Run &gt; gpedit.msc) and go to</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">Computer Configuration\Windows Settings\Security Settings\Software Restriction Policies</pre></div></div>

<p style="text-align: left;">If this is the first time you&#8217;ve looked at the Software Restriction Policies, the right hand pane will be empty.  To rectify this, click on Action &gt; Create New Policies.  Once you&#8217;ve done this you should see &#8216;Security Levels&#8217; and &#8216;Additional Rules.&#8217;  Now click on &#8216;Security Levels&#8217; and verify that you see 3 options (Disallowed, Basic User, and Unrestricted).</p>
<p style="text-align: left;">If you do <em>not </em>see the &#8216;Basic User&#8217; option on the right-hand pane, close the GPO editor, go back to step 1 and make sure you&#8217;ve properly created the registry DWORD, then re-open the GPO editor (Note that the Basic User option is hidden in Windows XP until you add the Levels DWORD value).</p>
<p style="text-align: center;"><a href="http://dougzuck.com/wp-content/uploads/2009/07/SRP1.png"><img class="size-medium wp-image-545 aligncenter" title="SRP1" src="http://dougzuck.com/wp-content/uploads/2009/07/SRP1-300x267.png" alt="SRP1" width="300" height="267" /></a></p>
<p style="text-align: left;">3.  At this point you&#8217;re going to highlight &#8216;Additional Rules&#8217; and right click to create a new path rule. Specify the path to the application that you want to limit.  In the path entry you can use the asterisk (*) as a wild card for multiple letters/words.  The question mark symbol can be used as a wild card for a single letter.</p>
<p style="text-align: left;">Set the security level drop-down menu to Basic User.  This is the key ingredient that makes the magic happen.  Now any executable file in the specified path or its subfolders will launch with limited user privileges on a computer that receives this GPO.</p>
<p style="text-align: center;"><a href="http://dougzuck.com/wp-content/uploads/2009/07/SRP2.png"><img class="size-medium wp-image-547 aligncenter" title="SRP2" src="http://dougzuck.com/wp-content/uploads/2009/07/SRP2-300x272.png" alt="SRP2" width="300" height="272" /></a></p>
<p style="text-align: center;"><a href="http://dougzuck.com/wp-content/uploads/2009/07/SRP3.png"><img class="size-medium wp-image-548 aligncenter" title="SRP3" src="http://dougzuck.com/wp-content/uploads/2009/07/SRP3-300x268.png" alt="SRP3" width="300" height="268" /></a></p>
<p style="text-align: left;">4.  When you&#8217;re done creating the policy, link it to your workstations OU and test it!  That&#8217;s it.  Pretty simple, eh?</p>
<p style="text-align: left;">In this example, I&#8217;ve limited Firefox so that it can only be launched as a Basic User with no admin rights. I&#8217;m able to verify this is the case by first closing all instances of Firefox, then launching it once again after the path rule has been created.  I browse to a website and download a software installation package. I then try to launch the software package from within Firefox&#8217;s &#8216;Downloads&#8217; window, but I can&#8217;t perform the installation, so I know it works!</p>
<p style="text-align: left;"><a href="http://dougzuck.com/wp-content/uploads/2009/07/srp5.png"><img class="aligncenter size-medium wp-image-584" title="srp5" src="http://dougzuck.com/wp-content/uploads/2009/07/srp5-300x201.png" alt="srp5" width="300" height="201" /></a><a href="http://dougzuck.com/wp-content/uploads/2009/07/srp6.png"><img class="aligncenter size-medium wp-image-585" title="srp6" src="http://dougzuck.com/wp-content/uploads/2009/07/srp6-300x194.png" alt="srp6" width="300" height="194" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dougzuck.com/decrease-malware-infections-using-software-restriction-policies/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The Truth about Fruit Allergies and How to Make them Go Away, for Good.  Really!</title>
		<link>http://dougzuck.com/the-truth-about-fruit-allergies-and-how-to-make-them-go-away</link>
		<comments>http://dougzuck.com/the-truth-about-fruit-allergies-and-how-to-make-them-go-away#comments</comments>
		<pubDate>Wed, 01 Jul 2009 03:12:18 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[Health and Diet]]></category>
		<category><![CDATA[diet]]></category>
		<category><![CDATA[Fruit allergies]]></category>

		<guid isPermaLink="false">http://dougzuck.com/?p=530</guid>
		<description><![CDATA[After about a year of being vegan, the allergy was 90% gone and I was back to eating every fruit that once caused problems for me!]]></description>
			<content:encoded><![CDATA[<h2>What&#8217;s the deal with fruit allergies?</h2>
<p>The whole fruit allergy thing is SO bothersome.  And I&#8217;m not talking about just <em>having </em>fruit allergies, which is annoying, to say the least, but I&#8217;m also talking about the mystery surrounding where they come from.  There are tons of postings all over the web, but none really point to any quality information about how to rid yourself of those darn allergies!  If you do a search for &#8220;Oral Allergy Syndrome,&#8221; you&#8217;ll end up with lots of posts and articles on the subject.  Pretty much every one of them says that fruit allergies are on the rise, in general, and that the cause isn&#8217;t known or understood.  The only suggestion they make is to stop eating the fruits that produce an allergic reaction.  Not too helpful.</p>
<p>I can&#8217;t make any promises to you about getting rid of your fruit allergies.  But what I <em>can</em> offer you is the hope of getting rid of them.  I was able to get rid of mine, and it makes me believe that there&#8217;s no reason that you can&#8217;t get rid of yours.  The hard part, of course, is figuring out how to go about doing it.</p>
<h2>A brief background of my history with fruit allergies</h2>
<p>Throughout junior high and high school I was one of those kids who took an apple to lunch with me every day.  I loved apples.  I liked other fruits too, but during that period of time, apples were my <em>thing</em>.  One day in high school I began to notice that after eating an apple my throat and mouth would get itchy, and I&#8217;d get some bumps and general swelling around and on my lips.  It got progressively worse over time, and <strong>I eventually stopped eating apples.</strong> <strong>The really sad part was that I had to stop eating pears, strawberries, cherries, peaches, nectarines, and plums too!</strong> Some people talk about pesticides as a possible cause for these allergies, but I would react equally to organic fruit, so I don&#8217;t think that had anything to do with it.  I should also note that people often tend to associate fruit allergies with people who get spring allergies, and I <em>do</em> deal with allergies in April and May, so that&#8217;s certainly a possible link.  However,</p>
<h2>The tide eventually turned&#8230;</h2>
<p>When I was in my mid-twenties I met a super-sweet vegetarian girl who&#8217;s diet soon rubbed off on me.  Admittedly I was never much of a red-meat eater.  I typically stuck mostly to chicken, turkey, pork, and fish, until <strong>I made a dramatic shift and stopped eating all animal products.</strong> After about 6 months of being vegetarian (vegan, technically), I had a piece of an apple and thought to myself that the allergic reaction it produced was much weaker than it used to be.  I didn&#8217;t think much of it at the time, but I did make a mental note for future reference.  <strong>After about a year of being vegan, the allergy was 90% gone and I was back to eating <em>every </em>fruit that once caused problems for me!</strong> It didn&#8217;t take too much longer before I was 100% back to normal with no allergic reactions to any fruits.  I can&#8217;t tell you how exciting this was, especially since I love fruit and wanted to eat so much more.  After all, I had become a vegan, and I needed to get my nutrition from somewhere!  These days I&#8217;m a raw foods enthusiast who eats probably about 50% of my diet as uncooked whole fruits and veggies, and I can&#8217;t tell you how much I enjoy eating fruits with no itchiness or swelling.</p>
<h2>Why I believe my fruit allergies disappeared</h2>
<p>First off, let me say that I&#8217;m not here to promote vegetarianism.  Really, that&#8217;s not my goal.  I can&#8217;t even say that I think animal products were necessarily the cause of my allergies.  Animal products <em>might</em> have caused my fruit allergies, or to be more specific, it&#8217;s possible that a <em>particular animal product </em>might have caused my fruit allergies.  However, I&#8217;m more inclined to think that it was something <em>in</em> one or more of the animal products I was eating.</p>
<p>When I initially shifted to being a vegetarian, the most dramatic change I made in my diet was to eliminate poultry and tuna.  Prior to making the switch, poultry and tuna were the two primary sources of protein in my diet.  I typically had one or the other on any given day.  Admittedly I made other changes during that time, but none was so pronounced.</p>
<p><strong>It seems ironic but it also makes perfect sense that the oral &#8220;allergy&#8221; that used to be triggered when I ate certain fruits, was actually caused by other foods in my diet.</strong>  The problem is I can&#8217;t say with 100% certainty, which food was the ultimate cause.  However, I feel extremely confident that it was a result of either the poultry or the tuna that I was eating during that time.  I ate both of them very frequently and in significant quantities during that time period.  I was a young teen, and I had begun to consume a lot more calories at that point in my life, and so tuna sandwiches, ground turkey sloppy joes, burgers, and chili, were pretty much my life-force.</p>
<h2>If I had to make one recommendation to a person suffering from fruit allergies&#8230;</h2>
<p>&#8230; Do you eat a lot of poultry?  Do you eat a lot of turkey or ground turkey products?  Do you eat a lot of tuna?  Cut it all out of your diet right away.  Ideally I think you should stop eating all non-organic meat, dairy, poultry for a period of 1 year.   If you eat tuna or any other fish, especially high mercury-content fish&#8211; you know, fish that are near the top of the food chain&#8211; you should stop eating that too.  You should also consider switching to all natural or organic meat and dairy products that contain no hormones, antibiotics, toxic metals or other chemicals.  See if this make an impact.  I was able to notice after only about 6 months that my allergies were going away, so I think 1 year should be sufficient for most people to detect a dramatic change.</p>
<p>Good luck.  I know how much allergies can put a damper on your ability to enjoy nature&#8217;s BEST food.  I&#8217;d love to hear your thoughts and comments on this one, especially if you make the dietary shift.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougzuck.com/the-truth-about-fruit-allergies-and-how-to-make-them-go-away/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>HTML Application &#8211; Retrieve the model, serial number, RAM amount, OS version, last boot time and more using WMI</title>
		<link>http://dougzuck.com/html-application-retrieve-model-serial-number-ram-os-last-boot-time-and-more</link>
		<comments>http://dougzuck.com/html-application-retrieve-model-serial-number-ram-os-last-boot-time-and-more#comments</comments>
		<pubDate>Thu, 25 Jun 2009 00:47:34 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[HTML Applications]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[HTA]]></category>
		<category><![CDATA[WMI]]></category>

		<guid isPermaLink="false">http://www.dougzuck.com/?p=474</guid>
		<description><![CDATA[You can find the full post here: http://www.dougzuck.com/hta]]></description>
			<content:encoded><![CDATA[<p>You can find the full post here: <a href="http://www.dougzuck.com/hta" target="_self">http://www.dougzuck.com/hta</a></p>
<p style="text-align: center;"><a href="http://dougzuck.com/wp-content/uploads/2009/06/Get_General_Info.png"><img class="aligncenter size-full wp-image-462" title="Get_General_Info" src="http://dougzuck.com/wp-content/uploads/2009/06/Get_General_Info.png" alt="Get_General_Info" width="584" height="404" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dougzuck.com/html-application-retrieve-model-serial-number-ram-os-last-boot-time-and-more/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML Application &#8211; Retrieve SQL Backup History</title>
		<link>http://dougzuck.com/html-application-retrieve-sql-backup-history</link>
		<comments>http://dougzuck.com/html-application-retrieve-sql-backup-history#comments</comments>
		<pubDate>Thu, 25 Jun 2009 00:46:11 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[HTML Applications]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[HTA]]></category>

		<guid isPermaLink="false">http://www.dougzuck.com/?p=472</guid>
		<description><![CDATA[You can find the full post here: http://www.dougzuck.com/hta]]></description>
			<content:encoded><![CDATA[<p>You can find the full post here: <a href="http://www.dougzuck.com/hta" target="_self">http://www.dougzuck.com/hta</a></p>
<p style="text-align: center;"><a href="http://dougzuck.com/wp-content/uploads/2009/05/get_sql_backup_history.png"><img class="aligncenter size-full wp-image-375" title="get_sql_backup_history" src="http://dougzuck.com/wp-content/uploads/2009/05/get_sql_backup_history.png" alt="get_sql_backup_history" width="602" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dougzuck.com/html-application-retrieve-sql-backup-history/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

