<?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>Cranky DBA &#187; sql server</title>
	<atom:link href="http://crankydba.com/tag/sql-server/feed/" rel="self" type="application/rss+xml" />
	<link>http://crankydba.com</link>
	<description>Mike Hillwig thinks you&#039;re entitled to his opinion.</description>
	<lastBuildDate>Fri, 03 Feb 2012 13:00:47 +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>Crystal Reports Formula for MSDB Dates and Times</title>
		<link>http://crankydba.com/2009/09/10/crystal-reports-formula-for-msdb-dates-and-times/</link>
		<comments>http://crankydba.com/2009/09/10/crystal-reports-formula-for-msdb-dates-and-times/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 17:27:03 +0000</pubDate>
		<dc:creator>Mike Hillwig</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[crystal reports]]></category>
		<category><![CDATA[msdb]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[sysjobhistory]]></category>

		<guid isPermaLink="false">http://thecrankydba.com/?p=82</guid>
		<description><![CDATA[As a DBA, I find myself spelunking through data and often having to present it in a somewhat human-friendly format. This is where my skills with Crystal Reports come in quite handy. I joke that I&#8217;m a Crystal Reports Jedi Master. Truth be told, I&#8217;ve just been working with the product entirely way too long. [...]]]></description>
			<content:encoded><![CDATA[<p>As a DBA, I find myself spelunking through data and often having to present it in a somewhat human-friendly format. This is where my skills with Crystal Reports come in quite handy. I joke that I&#8217;m a Crystal Reports Jedi Master. Truth be told, I&#8217;ve just been working with the product entirely way too long.</p>
<p>One of my biggest annoyances with SQL Server is how it stores dates and times in some of the MSDB tables. In this case, I&#8217;m looking at sysjobhistory. SQL Server stores these as integers. Worse yet, the date and time are in different columns. Crystal Reports has no idea that these are actually date and time values.   You get something that looks like this.</p>
<div id="attachment_83" class="wp-caption alignnone" style="width: 166px"><img class="size-full wp-image-83" title="Screenshot: Date and Time in different columns" src="http://thecrankydba.com/wp-content/uploads/2009/09/formulafromhell_before.jpg" alt="Screenshot: Date and Time in different columns" width="156" height="332" /><p class="wp-caption-text">Screenshot: Date and Time in different columns</p></div>
<p>It&#8217;s hard to do calculations on this, let alone have it look presentable. To fix that problem, I give you the Crystal Reports formula from hell.</p>
<p><span style="color: #0000ff;">datetime</span>(<br />
<span style="color: #0000ff;">tonumber</span>(<span style="color: #0000ff;">left</span>(<span style="color: #0000ff;">cstr</span>({sysjobhistory.run_date},0,&#8221;"),4)),<br />
<span style="color: #0000ff;">tonumber</span>(<span style="color: #0000ff;">left</span>(<span style="color: #0000ff;">right</span>(<span style="color: #0000ff;">cstr</span>({sysjobhistory.run_date},0,&#8221;"),4),2)),<br />
<span style="color: #0000ff;">tonumber</span>(<span style="color: #0000ff;">right</span>(<span style="color: #0000ff;">cstr</span>({sysjobhistory.run_date},0,&#8221;"),2)),</p>
<p><span style="color: #0000ff;">IF len</span>(<span style="color: #0000ff;">cstr</span>({sysjobhistory.run_time},0,&#8221;")) =6<br />
<span style="color: #0000ff;">THEN </span><span style="color: #0000ff;">tonumber</span>(<span style="color: #0000ff;">left</span>(<span style="color: #0000ff;">cstr</span>({sysjobhistory.run_time},0,&#8221;"),2))<br />
<span style="color: #0000ff;">ELSE </span><span style="color: #0000ff;">IF </span><span style="color: #0000ff;">len</span>(<span style="color: #0000ff;">cstr</span>({sysjobhistory.run_time},0,&#8221;")) =5<br />
<span style="color: #0000ff;">THEN </span><span style="color: #0000ff;">tonumber</span>(<span style="color: #0000ff;">left</span>(<span style="color: #0000ff;">cstr</span>({sysjobhistory.run_time},0,&#8221;"),1))<br />
<span style="color: #0000ff;">ELSE </span>0,<br />
<span style="color: #0000ff;">IF </span>(<span style="color: #0000ff;">len </span>(<span style="color: #0000ff;">cstr</span>({sysjobhistory.run_time}))) &lt; 3 <span style="color: #0000ff;">THEN </span>0 <span style="color: #0000ff;">ELSE</span> <span style="color: #0000ff;">tonumber</span>(<span style="color: #0000ff;">left</span>(<span style="color: #0000ff;">right</span>(<span style="color: #0000ff;">cstr</span>({sysjobhistory.run_time},0,&#8221;"),4),2)),</p>
<p><span style="color: #0000ff;">tonumber</span>(<span style="color: #0000ff;">right</span>(<span style="color: #0000ff;">cstr</span>({sysjobhistory.run_time},0,&#8221;"),2))<br />
)</p>
<p>Is it ugly? Yes.<br />
Does it look hacked together? Yes.<br />
Is it messy? Absolutely.<br />
Is there a better way? Probably.<br />
Does this work? Hell yeah!</p>
<p>So now we have something that looks much more presentable in a report.</p>
<div id="attachment_84" class="wp-caption alignnone" style="width: 333px"><img class="size-full wp-image-84" title="Screenshot: After the formula" src="http://thecrankydba.com/wp-content/uploads/2009/09/formulafromhell_after.jpg" alt="Screenshot: After the formula" width="323" height="269" /><p class="wp-caption-text">Screenshot: After the formula</p></div>
<p>I like this much better. By putting the date and time into a formula that is in a datetime format, it allow us to do things like sort, group, and calculate.</p>
<p>To be honest, as great as this works, I want to find a better way, without all of those type conversions. If I find it, I&#8217;ll let you know.</p>
]]></content:encoded>
			<wfw:commentRss>http://crankydba.com/2009/09/10/crystal-reports-formula-for-msdb-dates-and-times/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Backing Up for my Primary/Secondary Environments</title>
		<link>http://crankydba.com/2009/09/08/backing-up-for-my-primarysecondary-environments/</link>
		<comments>http://crankydba.com/2009/09/08/backing-up-for-my-primarysecondary-environments/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 23:15:29 +0000</pubDate>
		<dc:creator>Mike Hillwig</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[restore]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sql server]]></category>

		<guid isPermaLink="false">http://thecrankydba.com/?p=52</guid>
		<description><![CDATA[Every environment is different, and that means everyone does backups differently. I thought I&#8217;d talk about how I do it in my environment. For most of our key business applications, we have two sets of servers, a primary and secondary. The secondary servers are in a different data center. Fortunately, bandwidth isn&#8217;t a problem. I [...]]]></description>
			<content:encoded><![CDATA[<p>Every environment is different, and that means everyone does backups differently. I thought I&#8217;d talk about how I do it in my environment.</p>
<p>For most of our key business applications, we have two sets of servers, a primary and secondary. The secondary servers are in a different data center. Fortunately, bandwidth isn&#8217;t a problem.</p>
<p>I need to keep my secondary servers current in case the primary data center becomes unavailable. This is the perfect place to implement log shipping or database mirroring. Unfortunately, we also use the secondary servers for testing. That means we do it the old fashioned way, backup the primary and restore to the secondary. I&#8217;m not saying it&#8217;s right, but it&#8217;s the environment I have.</p>
<p>I&#8217;m a complete nut for consistency. When I inherited this environment, we had network shares and copy scripts for database backups. No two applications did their backups the same way. One day, I ripped it apart and put it back together. Since all of my database servers use the same domain service account and that service account has administrative rights on all database servers, security isn&#8217;t a problem. It also means I can write to the administrative shares on other servers without the need to create shares or users.</p>
<p>First, I wrote a single script that gets used across every primary server. With a few parameter changes, my script works for every system. Basically, I build a list of databases and then back them up to the file system on the local file server. That&#8217;s the one that gets sent to long-term storage. Next, I write the backup file to the secondary server.</p>
<p>My script is on <a href="http://thecrankydba.com/scripts/backupscript.sql" target="_blank">my site</a>. I&#8217;m really proud of this and it has served us well. As you&#8217;ll see in the comments, this works well in our small environment with lots of small databases.  This won&#8217;t scale well after we double our current size.</p>
<p>Of course, I still back up my transaction logs. I would love to hear some feedback from other DBAs who can help me make this better.</p>
<p>My next step is to write a consistent recovery process.</p>
]]></content:encoded>
			<wfw:commentRss>http://crankydba.com/2009/09/08/backing-up-for-my-primarysecondary-environments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using sysjobhistory to Find What&#8217;s Running Longer than Usual</title>
		<link>http://crankydba.com/2009/09/08/using-sysjobhistory-to-find-whats-running-longer-than-usual/</link>
		<comments>http://crankydba.com/2009/09/08/using-sysjobhistory-to-find-whats-running-longer-than-usual/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 15:25:23 +0000</pubDate>
		<dc:creator>Mike Hillwig</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sql agent]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[sysjobhistory]]></category>

		<guid isPermaLink="false">http://thecrankydba.com/?p=32</guid>
		<description><![CDATA[We all have SQL Agent jobs that run periodically. Wouldn&#8217;t it be nice to know that something ran longer than average last night? When something runs longer than average, this could indicate a looming problem. I love finding these things before they cause serious problems because that prevents my phone from ringing in the middle [...]]]></description>
			<content:encoded><![CDATA[<p>We all have SQL Agent jobs that run periodically. Wouldn&#8217;t it be nice to know that something ran longer than average last night? When something runs longer than average, this could indicate a looming problem. I love finding these things before they cause serious problems because that prevents my phone from ringing in the middle of the night.</p>
<p>In larger environments, monitoring software can do this for you. I bet this could be done in System Center Operations Manager. In the meantime, though, I&#8217;m doing this the old-fashioned way.</p>
<p>The MSDB database has a vault of information that I&#8217;m just starting to explore. I&#8217;m sure somebody else has figured this out somewhere else. I figured this one out on my own and thought it was worth sharing.</p>
<p>The sysjobhistory table shows the execution of all of your SQL Agent jobs, broken down by step. If the step_id is 0, that means it&#8217;s the job as a whole. I filter those out. By getting an average of the run_duration, we can see how long things usually take.</p>
<p><span style="color: #0000ff;">select</span> job_id, step_id, <span style="color: #ff00ff;">avg</span>(run_duration) average<br />
<span style="color: #0000ff;">into</span> #recentaverages<br />
<span style="color: #0000ff;">from </span>sysjobhistory<br />
<span style="color: #0000ff;">where </span>run_date &gt; @historydate<br />
<span style="color: #999999;">and </span>step_id &gt; 0<br />
<span style="color: #0000ff;">group by</span> job_id, step_id<br />
<span style="color: #0000ff;">order by</span> job_id, step_id</p>
<p>There is a @historydate variable that I use to hold a date of 30 days ago.</p>
<div id="attachment_34" class="wp-caption alignnone" style="width: 377px"><img class="size-full wp-image-34  " title="Screenshot: Job history average execution times" src="http://thecrankydba.com/wp-content/uploads/2009/09/jobhistoryaverage1.jpg" alt="Job history average execution times" width="367" height="307" /><p class="wp-caption-text">Screenshot: Job history average execution times</p></div>
<p>Next I took that temp table and joined it back to sysjobhistory, filtering out anything that runs in less than ten seconds. I also use @analysisdate for everything since yesterday.</p>
<p><span style="color: #0000ff;">select</span> sjh.job_id, sjh.step_id, sjh.run_date, sjh.run_time, sjh.run_duration, ra.average<br />
<span style="color: #0000ff;">from</span> sysjobhistory sjh<br />
<span style="color: #888888;">inner join</span> #recentaverages ra<br />
<span style="color: #0000ff;">on</span> sjh.job_id = ra.job_id<br />
<span style="color: #888888;">and</span> sjh.step_id = ra.step_id<br />
<span style="color: #0000ff;">where</span> run_date &gt;= @analysisdate<br />
<span style="color: #888888;">and</span> sjh.run_duration &gt; ra.average<br />
<span style="color: #888888;">and</span> sjh.run_duration &gt; 10</p>
<div id="attachment_36" class="wp-caption alignnone" style="width: 566px"><img class="size-full wp-image-36 " title="jobhistoryaverage2" src="http://thecrankydba.com/wp-content/uploads/2009/09/jobhistoryaverage2.jpg" alt="Shows Job executions running above average execution times" width="556" height="155" /><p class="wp-caption-text">Screenshot: Job executions running above average execution times</p></div>
<p>Already, I can see one job that has several executions that are running longer than usual. This appears to be a job that runs hourly and six runs in the past 24 hours ran longer than usual. This could be a problem and warrants investigation.</p>
<p>Finally, I join this data to be sysjobs and sysjobsteps to find out who the culprits are.</p>
<p><span style="color: #0000ff;">select</span> sj.name, sjs.step_id, sjs.step_name, run_date, run_time, sjh.run_duration, ra.average<br />
<span style="color: #0000ff;">from</span> sysjobhistory sjh<br />
<span style="color: #888888;">inner join</span> #recentaverages ra<br />
<span style="color: #0000ff;">on </span>sjh.job_id = ra.job_id<br />
<span style="color: #888888;">and</span> sjh.step_id = ra.step_id<br />
<span style="color: #888888;">inner join</span> sysjobsteps sjs<br />
<span style="color: #0000ff;">on </span>sjh.job_id = sjs.job_id<br />
<span style="color: #888888;">and </span>sjh.step_id = sjs.step_id<br />
<span style="color: #888888;">inner join</span> sysjobs sj<br />
<span style="color: #0000ff;">on</span> sj.job_id = sjs.job_id<br />
<span style="color: #0000ff;">where </span>run_date &gt;= @analysisdate<br />
<span style="color: #888888;">and </span>sjh.run_duration &gt; ra.average<br />
<span style="color: #888888;">and </span>sjh.run_duration &gt; 10<br />
<span style="color: #0000ff;">order by</span> sj.name, sjs.step_id</p>
<div id="attachment_39" class="wp-caption alignnone" style="width: 558px"><img class="size-full wp-image-39 " title="jobhistoryaverage3" src="http://thecrankydba.com/wp-content/uploads/2009/09/jobhistoryaverage3.jpg" alt="Shows the job and step names for jobs that are taking longer than average" width="548" height="158" /><p class="wp-caption-text">Screenshot: Shows the job and step names for jobs that are taking longer than average</p></div>
<p>I now know my jobs and steps that may need to be investigated. Unfortunately, I had to block out some proprietary info, but you certainly get the idea of what&#8217;s going on here.</p>
<p>This could certainly be tweaked to look at the job as a whole instead of steps. Do that simply by looking only at step_id = 0 in the first query. Another option is to add a threshold that looks at anything like 10% above average.</p>
<p>Drop this into a SQL job that e-mails you when this script finds data, and you have a pretty powerful tool in your arsenal. You can find my entire script on <a href="http://thecrankydba.com/scripts/jobhistoryaverage.sql" target="_blank">my site</a>. In the meantime, I have a longer-than-average running job to investigate.</p>
]]></content:encoded>
			<wfw:commentRss>http://crankydba.com/2009/09/08/using-sysjobhistory-to-find-whats-running-longer-than-usual/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>An Object by Any Other Name</title>
		<link>http://crankydba.com/2009/09/08/an-object-by-any-other-name/</link>
		<comments>http://crankydba.com/2009/09/08/an-object-by-any-other-name/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 12:29:08 +0000</pubDate>
		<dc:creator>Mike Hillwig</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[objects]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://thecrankydba.com/?p=29</guid>
		<description><![CDATA[In my career, I&#8217;ve seen a lot of database objects. And I&#8217;ve seen a lot of names, both good and bad. It seems that every shop I&#8217;ve worked in talks about naming standards. Unfortuately, those standards aren&#8217;t always followed. I&#8217;ve read some of the following ideas about naming standards: Tables should be prefixed with tbl [...]]]></description>
			<content:encoded><![CDATA[<p>In my career, I&#8217;ve seen a lot of database objects. And I&#8217;ve seen a lot of names, both good and bad. It seems that every shop I&#8217;ve worked in talks about naming standards. Unfortuately, those standards aren&#8217;t always followed.</p>
<p style="margin-bottom: 0in;">I&#8217;ve read some of the following ideas about naming standards:</p>
<ul>
<li>
<p style="margin-bottom: 0in;">Tables should be prefixed with tbl</p>
</li>
<li>
<p style="margin-bottom: 0in;">Views should be prefixed v_</p>
</li>
<li>
<p style="margin-bottom: 0in;">Stored procedures should be 	prefixed with usp_</p>
</li>
<li>
<p style="margin-bottom: 0in;">Objects should be all UPPERCASE</p>
</li>
<li>
<p style="margin-bottom: 0in;">Objects should be all lowercase</p>
</li>
<li>
<p style="margin-bottom: 0in;">Objects should use camelCase.</p>
</li>
<li>
<p style="margin-bottom: 0in;">Objects should use ProperCase.</p>
</li>
<li>
<p style="margin-bottom: 0in;">Tables should reference singular 	items (order vs orders)</p>
</li>
</ul>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">There are a lot of different rules here, and to be honest, I think they&#8217;re all crap. What works in your environment probably won&#8217;t work in my environment. Rules for a new project may be different than rules for an existing project. Systems developed in-house will probably have different rules for off-the-shelf software that gets customized.</p>
<p style="margin-bottom: 0in;">From my perspective, there are four things that actually matter with naming standards.</p>
<ol>
<li>
<p style="margin-bottom: 0in;"><strong>Choose a standard that works 	for your environment and stick with it. </strong>It needs to work in your environment, and everybody needs to use it. This includes developers, DBAs, report writers, and even managers. As a DBA, we have to enforce those standards. And if it means sending something back to a developer because the standard wasn&#8217;t followed, it may mean playing the bad guy. At the same time, we have to lead by example when we put objects in place ourselves.</p>
</li>
<li>
<p style="margin-bottom: 0in;"><strong>Object names must make sense.</strong> I used to work for a guy who loved to call his temp tables names like #temp, #temp1, and #temp2. What the hell is in that table? If we had a naming standard to enforce, it would have been an awful lot easier to manage this situation. In my current environment, an off-the-shelf product has a table that stores customer orders. Naming this table something like CustomerOrders, customer_orders, or even OrdersCustomer would make perfect sense to me. I know by looking at the name that the table stores customer orders. However, this particular vendor decided that co would be a perfectly valid object name. Yes, the table name is co. It&#8217;s hard to yell at a developer you&#8217;ve never met.</p>
</li>
<li>
<p style="margin-bottom: 0in;"><strong>SQL Server allows your object 	names to be upto 30 characters. Don&#8217;t be afraid to use them.</strong> I&#8217;ve already ranted about calling the customer orders table co. Other names that are too brief would be custord or custordr. I once had a developer tell me that he preferred to abbreviate object names because it was less work for him when writing code. It&#8217;s one of the few times I will advocate physical abuse of a developer. That&#8217;s just being lazy. Now that most editors have some form of code completion, I just don&#8217;t buy that.</p>
</li>
<li>
<p style="margin-bottom: 0in;"><strong>Object Names should not use reserved words or variations of them.</strong> This should be a given. Not everyone gets it, though.</p>
</li>
</ol>
<p style="margin-bottom: 0in;">No two environments are the same. Use what works for you. When everybody follows the standard, the standard works for everybody.</p>
]]></content:encoded>
			<wfw:commentRss>http://crankydba.com/2009/09/08/an-object-by-any-other-name/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Giving Microsoft Access a Seat at the Table</title>
		<link>http://crankydba.com/2009/09/02/giving-microsoft-access-a-seat-at-the-table/</link>
		<comments>http://crankydba.com/2009/09/02/giving-microsoft-access-a-seat-at-the-table/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 14:27:07 +0000</pubDate>
		<dc:creator>Mike Hillwig</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[dba]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sql server]]></category>

		<guid isPermaLink="false">http://thecrankydba.com/?p=14</guid>
		<description><![CDATA[Ask any DBA what they think of Microsoft Access, and you&#8217;ll rarely see a smile. Perhaps you&#8217;ll get a laugh, but most DBAs will turn up their nose. What I&#8217;m about to say is probably blashphemy in the DBA community, but when used properly, Access can have a place in some environments. I pray that [...]]]></description>
			<content:encoded><![CDATA[<p>Ask any DBA what they think of Microsoft Access, and you&#8217;ll rarely see a smile. Perhaps you&#8217;ll get a laugh, but most DBAs will turn up their nose. What I&#8217;m about to say is probably blashphemy in the DBA community, but when used properly, Access can have a place in some environments. I pray that none of the developers with whom I&#8217;ve worked ever read this.</p>
<p>Let me preface this discussion by reminding you that most of my experience as a DBA is in smaller environments. If you&#8217;re in a large enterprise, Access shouldn&#8217;t even be an option. Most of the DBA bloggers deal with terabytes of data and thousands of user connections. I&#8217;d never tolerate an Access database in those environments, either.</p>
<p>But lets say we have a small application for a workgroup that only has a few hundred megabytes of data with no more than a hundred users. Access can be entirely practical, provided one simple rule is followed&#8211;<strong>no local Access tables</strong>. When you pair Access as a front end with a SQL database backend, this can be an incredibly powerful combination.</p>
<p>In this combination, you can leverage the power of the SQL DBMS with the ease of use of an Access database. Better yet, this combination allows you to enforce security, constraints, and backups on the back end, where they should be. One of the biggest complaints about Access is that it&#8217;s security features don&#8217;t measure up to SQL Server. Instead, we can leverage the power of SQL Server&#8217;s security features.</p>
<p>Access backups are restricted to that one file that holds everything. SQL Server handles backups much better. The best part of this is that if the Access database gets corrupted, we can recover from ANY recent backup without data loss. As the DBA, I&#8217;m responsible for backing up the data, and nothing in this scenario changes that.</p>
<p>Don&#8217;t get me wrong. I rarely advocate the creation of an Access database. In fact, I&#8217;ll be the first one to point the user to Sharepoint for small applications. Still, Access should have a seat at some tables, even mine.</p>
]]></content:encoded>
			<wfw:commentRss>http://crankydba.com/2009/09/02/giving-microsoft-access-a-seat-at-the-table/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

