<?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>codegumbo</title>
	<atom:link href="http://codegumbo.com/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://codegumbo.com</link>
	<description>Laissez Les Bon Code Roulez!</description>
	<lastBuildDate>Mon, 16 Apr 2012 16:05:56 +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>#SQLSat111 is a wrap&#8230;</title>
		<link>http://codegumbo.com/index.php/2012/04/16/sqlsat111-is-a-wrap/</link>
		<comments>http://codegumbo.com/index.php/2012/04/16/sqlsat111-is-a-wrap/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 13:05:00 +0000</pubDate>
		<dc:creator>stuart</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>

		<guid isPermaLink="false">http://codegumbo.com/?p=563</guid>
		<description><![CDATA[I’ve tried to do these wrap-up posts over the years to give advice to the upcoming SQLSaturdays based on our experience, but I wanted to do this one a little differently.&#160; Before I go too much further, let me do two things: State the obvious:&#160; SQLSATURDAY 111&#160; ROCKED!!!! Thank a whole bunch of people: Audrey [...]]]></description>
			<content:encoded><![CDATA[<p align="left">I’ve tried to do these wrap-up posts over the years to give advice to the upcoming <a href="http://www.sqlsaturday.com/" target="_blank">SQLSaturdays</a> based on our experience, but I wanted to do this one a little differently.&#160; Before I go too much further, let me do two things:</p>
<ol>
<li>State the obvious:&#160; <strong><font size="4">SQLSATURDAY 111&#160; ROCKED!!!!</font></strong> </li>
<li>Thank a whole bunch of people: Audrey Hammonds, Aaron Nelson, Tim Radney, Julie Smith, Rob Volk, Kristina Mishra, Erin Hicks, Lorra Newton, the AtlantaMDF leadership team, and a whole bunch of speakers and volunteers who helped make this show work (far too many to thank here; it was inspiring to see the people who gave their time to make this work).&#160; </li>
</ol>
<p>This was the second year that I served as a member of the team, rather than trying to pull it off.&#160; Audrey did an amazing job of pulling everything together.&#160;&#160; We may have had a few bumpy spots along the way, but from all of the feedback we got, the event ran extremely smoothly for the attendees (all 460 out of the 650 registered).&#160; However, as I was reviewing the <a href="https://twitter.com/search/%23sqlsat111" target="_blank">twitter feed</a>, one tweet in particular stood out for me:</p>
<p><a href="http://codegumbo.com/images/SQLSat111-is-a-wrap_64E6/image.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://codegumbo.com/images/SQLSat111-is-a-wrap_64E6/image_thumb.png" width="472" height="74" /></a></p>
<p>This is what it’s all about; an attendee at our event left wanting more.&#160; It made me think about the nature of this post; I usually write up some practical advice on HOW to do something (and lessons learned).&#160; This time I wanted to focus on WHY you should do something.&#160; I guess this is my attempt at inspirational writing, so breathe deep, assume the lotus position, and read on.</p>
<h2>First, it’s the people.</h2>
<p>SQLSaturday’s are a big party, and there’s enough of them going on around the <strike>country</strike> world now that we’re starting to become a traveling band of gypsies.&#160; Many of the people who speak at these events speak at a whole bunch of events, and this becomes a little family reunion at every event.&#160; I love that, but what I loved even more was the fact that I got to see a bunch of my local database people “get their learn on”.&#160; It’s really easy to get caught up in the moment of working at the event, but at the end of the day, the point of this event was that you should inspire somebody to learn something new, to change the way they approach a problem.</p>
<h2>Second, you are people.</h2>
<p>If you’re hosting a SQLSaturday, don’t neglect yourself.&#160; I went into this event tired, grumpy, and a little worried because I knew there were some last minute issues that I had neglected.&#160; Guess what; nobody cared.&#160; The party rolled on.&#160; I spent a great deal of time running around trying to make sure that I touched base with people, and I didn’t attend a single session (other than my own).&#160; That was a mistake.&#160; I should have totally taken advantage of the great training opportunities that were there, and learned something myself.</p>
<p>I’m pointing the finger square at myself on this: <strong>I need to invest more in me</strong>.&#160; Not that I should neglect others, but I’ve neglected studying and learning because I’ve let other things take away my time.&#160; When I was a kid, I used to always hear the mantra of “Faith, Family, and Work”; I still believe that, and for the most part, I’ve done that.&#160; What I’ve forgotten is that Learning=Work!&#160; If I’m not investing in my own education, and not investing in putting my own ideas to digital paper, I’m starving the creative process, and thus starving my own career.</p>
<p>To that end, I guess the person that left this event the most inspired was me.&#160;&#160; If you’re thinking about hosting one of these events, don’t forget to learn something yourself. </p>
]]></content:encoded>
			<wfw:commentRss>http://codegumbo.com/index.php/2012/04/16/sqlsat111-is-a-wrap/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>#SQLSat111 &#8220;Biggish Data&#8221;</title>
		<link>http://codegumbo.com/index.php/2012/04/13/sqlsat111-biggish-data/</link>
		<comments>http://codegumbo.com/index.php/2012/04/13/sqlsat111-biggish-data/#comments</comments>
		<pubDate>Fri, 13 Apr 2012 19:05:52 +0000</pubDate>
		<dc:creator>stuart</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>

		<guid isPermaLink="false">http://codegumbo.com/?p=561</guid>
		<description><![CDATA[Trying not to be to obnoxious about this, but I’m presenting on “Biggish Data” at SQL Saturday 111 in Atlanta tomorrow; if you’re there, swing by and see me.&#160; I presented this on Monday at AtlantaMDF, and am attempting to incorporate the feedback from that presentation into this one.&#160; Should be good, but I’m still [...]]]></description>
			<content:encoded><![CDATA[<p>Trying not to be to obnoxious about this, but I’m presenting on “Biggish Data” at SQL Saturday 111 in Atlanta tomorrow; if you’re there, swing by and see me.&#160; I presented this on Monday at <a href="http://atlantamdf.com" target="_blank">AtlantaMDF</a>, and am attempting to incorporate the feedback from that presentation into this one.&#160; Should be good, but I’m still working on the slides.</p>
<p>However, if you attend my session, you’ll get a free koozie!</p>
<p><a href="http://codegumbo.com/images/SQLSat111-Biggish-Data_D2AF/koozie.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="koozie" border="0" alt="koozie" src="http://codegumbo.com/images/SQLSat111-Biggish-Data_D2AF/koozie_thumb.jpg" width="646" height="484" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://codegumbo.com/index.php/2012/04/13/sqlsat111-biggish-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#TSQL2sDay 28&#8211;Jack of All Trades, Master of None</title>
		<link>http://codegumbo.com/index.php/2012/03/13/tsql2sday-28jack-of-all-trades-master-of-none/</link>
		<comments>http://codegumbo.com/index.php/2012/03/13/tsql2sday-28jack-of-all-trades-master-of-none/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 17:59:59 +0000</pubDate>
		<dc:creator>stuart</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[TSQL2sDay]]></category>

		<guid isPermaLink="false">http://codegumbo.com/?p=559</guid>
		<description><![CDATA[This month’s topic was chosen by Argenis Fernandez (blog &#124; twitter): &#34;Jack of All Trades, Master of None?&#34;.&#160; It’s interesting to me lately because I seem to keep encountering blog posts and articles that ask some variant of this question.&#160; I’m not sure if it’s spurred in part by the recent release of SQL Server [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sqlblog.com/blogs/argenis_fernandez/default.aspx" target="_blank"><img style="margin: 1px 5px 5px 0px; display: inline; float: left" alt="" align="left" src="http://sqlblog.com/blogs/argenis_fernandez/TSQL2sDay150x150_thumb_2AA4EA0F.jpg" /></a></p>
<p>This month’s topic was chosen by Argenis Fernandez (<a href="http://sqlblog.com/blogs/argenis_fernandez/default.aspx">blog </a>| <a href="https://twitter.com/#!/DBArgenis">twitter</a>): &quot;Jack of All Trades, Master of None?&quot;.&#160; It’s interesting to me lately because I seem to keep encountering blog posts and articles that ask some variant of this question.&#160; I’m not sure if it’s spurred in part by the recent release of SQL Server 2012 (which is going to change a lot of the ways we manage data), or if it’s something in the collective waters bubbling under the Internet.&#160; Or perhaps, it’s just the fact that I’m trying to define myself in a new role at my work.&#160; Don’t know.&#160; </p>
<p>I’ve always been a data person; one of my first jobs in IT was working for a forestry agent doing data entry; my job was to take the handwritten note cards from the tree counter, translate their coding system into digits, and enter it into an old Macintosh computer (this was the late 80’s, and Macs were super sophisticated at the time).&#160; These numbers were important; they represented an estimate of how much timber (and what kind) was on a property, so that the value of that property could be accurately assessed.&#160; It had nothing to do with SQL; wasn’t really even any sort of programming.&#160; Just look at a card, mentally transform the code into a number and tree type, and punch it in.</p>
<p>Later, in college, I got involved in doing social science research; this eventually led to a position as in <a href="http://academic.research.microsoft.com/Author/5932096.aspx" target="_blank">public health &amp; communication research</a>.&#160; Still digging on numbers; I was using SPSS at the time.&#160; I went to bed at night dreaming of statistical relationships and discovering new stuff.&#160; When our department encountered resistance from the IT department for managing one our studies, I started hacking into Microsoft Access to build a contact management platform.&#160; This was a transition point for me; I went from entering numbers to evaluating numbers to finally programming.&#160; However, it was always data.</p>
<p>I made a career change and dove into true IT work shortly after that; my job title said “<a href="http://finance.dir.groups.yahoo.com/group/FourthShiftUsers/message/729" target="_blank">Access Report Developer</a>”, but I became the DBA (because there wasn’t one).&#160; I loved SQL 2000, but when the IT department at that company shrank, I became not only a programmer, a report developer, and the DBA, but also the guy that fixed printers.&#160; When I had an opportunity to jump ship to another company to become strictly a DBA, I took it.</p>
<p>I’ve been here for 9 years, now.&#160; In that 9 years, I’ve been the DBA, a database developer, a data architect, and now a manager.&#160; Although I’ve primarily worked with SQL Server, I’ve dabbled in mySQL, XML and Visual Basic.&#160; I’ve looked at backup jobs and maintenance plans, DTS and SSIS (and other solutions); my T-SQL is strong.&#160; I used to think I was a specialist in database development, but I’ve come to realize that there’s people that are a lot more specialized than me.&#160; I’ve also come to realize that data without context is meaningless.</p>
<p>I guess I’m growing up a little; when I was kid counting trees, I didn’t really care about how efficient the system was.&#160; I was just earning spending money at a job that was better than mowing the lawn.&#160;&#160; When I was doing research, I realized how important my work was, but even then there was little that I could do to change long-term outcomes; I was just an analyst.&#160; In IT, I could finally get to a point where I could take the numbers that I saw and do something about it.&#160; I’m just not collecting data for a reason; I’m using that data to help make decisions that make my company more profitable (which ultimately leads to more money in my pocket). I collect, I analyze, I interpret, and I react.</p>
<p>So what does this little trip down my history mean in terms of the post topic? For me it means that I’ve got a niche, but it’s a pretty big one.&#160; Most of work is done with a certain tool, but the skills I’ve learned along the way don’t restrict me to that tool.&#160; I’ve worked with people who get the specifics of the platform a lot better than I do, but miss the big picture; I’ve also worked with visionaries who get lost when I discuss normalization and efficiencies.&#160;&#160; I’m neither a Jack of All Trades, nor a Master of just One.&#160; I’m just a data guy, and I like it.</p>
]]></content:encoded>
			<wfw:commentRss>http://codegumbo.com/index.php/2012/03/13/tsql2sday-28jack-of-all-trades-master-of-none/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Database Administration</title>
		<link>http://codegumbo.com/index.php/2012/03/07/agile-database-administration/</link>
		<comments>http://codegumbo.com/index.php/2012/03/07/agile-database-administration/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 13:57:40 +0000</pubDate>
		<dc:creator>stuart</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Professional Development]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>

		<guid isPermaLink="false">http://codegumbo.com/?p=557</guid>
		<description><![CDATA[Last night, I had the pleasure of presenting at the Greenville SSIG; my topic was Agile Database Administration, and it was a presentation that I had pulled together at the last minute.&#160; It still needs some refinement, but overall I thought it went pretty well.&#160; However, I was surprised at a couple of things: 1.&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Last night, I had the pleasure of presenting at the Greenville SSIG; my topic was Agile Database Administration, and it was a presentation that I had pulled together at the last minute.&#160; It still needs some refinement, but overall I thought it went pretty well.&#160; However, I was surprised at a couple of things:</p>
<p>1.&#160; Out of my (admittedly) small sample of attendees, only about 2% had encountered Agile methodologies (like Scrum) in their work, and </p>
<p>2.&#160; Even fewer of them understood the challenges that Agile is supposed to solve.</p>
<p>I decided that in order to improve the presentation, I would try to do a little more research; since I own a blog, this seems like the perfect place to synthesize some of my thoughts on the subject.&#160; As I did in my presentation, I’ll try to skew the discussion toward data people, but there may be some challenges along the way (since much of Agile focuses on management of development tasks, not administration or service-oriented tasks). </p>
<h1>Begin at the beginning….</h1>
<p>The Agile movement begins with the <a href="http://www.agilemanifesto.org/" target="_blank">Agile Manifesto</a>, a short statement of belief written by 17 software developers during a weekend at a resort in Utah.&#160; The entire manifesto reads as follows:</p>
<blockquote><p>We are uncovering better ways of developing     <br />software by doing it and helping others do it.      <br />Through this work we have come to value:</p>
<p>Individuals and interactions over processes and tools     <br />Working software over comprehensive documentation      <br />Customer collaboration over contract negotiation      <br />Responding to change over following a plan</p>
<p>That is, while there is value in the items on     <br />the right, we value the items on the left more.</p>
</blockquote>
<p>There are twelve basic principles associated with the manifesto; I’ll tackle those at a later post.&#160; The concept of the manifesto is clear, however, in that the goal is to manage tasks through a focus on relationships and the business environment as opposed to strictly moving from point A to point B.</p>
<p><em>As a sidebar, I do find it quite funny that the Agile Manifesto webpage appears as if it was thrown together after a weekend of drinking and philosophical conversations at a ski resort; it hasn’t changed in 12 years.&#160; I’m not sure if that’s intended as a silent testament to the longevity of agile code or not.</em></p>
<p>It should be noted that many agile methods actually began before the manifesto; the manifesto was not intended to spawn new methodologies, but rather to provide a common framework for several existing methods.&#160; It’s a philosophy, not a method; you have to think agile before you can be agile (<em>I’ll pause for a minute to let that sink in… ready to move on?)</em></p>
<p>Let me try to define the agile movement by what it is not:</p>
<ul>
<li>Agile does not mean a particular method of development; rather, it’s an umbrella for several different methods.</li>
<li>Agile is not represented by a set of tools; but you should use tools in an agile way.</li>
<li>Agile is not an excuse for sloppy work; instead, it’s an attempt to focus on quality throughout development.</li>
<li>Agile is not a solution for every organization; the agile philosophy represents a change in process which must be endorsed by the organization in order for it to be successful.</li>
</ul>
<h1>Jumping the candlestick…</h1>
<p>The term agile means “nimble”; it’s the ability to quickly respond to a changing environment.&#160; Most agile adherents recognize that processes such as lengthy requirement gathering sessions can cripple the development process; if your organization spends a lot of time defining what it needs up front, the business environment can change before you get it developed.</p>
<p>But what about database administrators?&#160; Most admins I know have mild cases of ADHD; database professionals are the master of change.&#160; Need a query to see what’s happened over the last year?&#160; No problem.&#160; Backups not working? We’ll look into it.&#160; Server overloaded?&#160; We’ll deal with it.&#160; Printer not working?&#160; Not my department, but sure.&#160; Developers too slow in getting a report to you?&#160; I can do it.&#160;&#160; We’re already agile, right?</p>
<p>Wrong. To be agile doesn’t mean you leap over one flame to another; it’s finding a method of getting things done that is responsive to business changes while solving business problems.&#160; If you’re constantly hopping from one issue to the next without figuring out how to keep the fires from occurring, you’re eventually going to get burned <em>(see what I did there?)</em>.&#160; If your servers can’t handle the queries your users are throwing at it, you can tune the queries but you may need to look at a hardware solution.&#160; If your boss keeps asking you for the latest numbers, it may be faster to run the query for her, but writing a report (or showing her how to write a report) will minimize the long-term problem.</p>
<p>Thinking agile means thinking strategically; be nimble (solve the immediate problem), but be clever (address the root cause).</p>
<h1></h1>
<h1>Where do we go from here?</h1>
<p>I hope to start pulling together a few blog posts on various agile methods and how they relate to the agile philosophy over the next few weeks; specifically, I hope to talk about how the agile philosophy is influencing my database administration management style.&#160; Until then, here’s some links for you to consider:</p>
<p><a title="http://en.wikipedia.org/wiki/Agile_software_development" href="http://en.wikipedia.org/wiki/Agile_software_development">http://en.wikipedia.org/wiki/Agile_software_development</a></p>
<p><a title="http://www.agilemanifesto.org/" href="http://www.agilemanifesto.org/">http://www.agilemanifesto.org/</a> (Be sure to read the principles on the next page).</p>
<p><a title="http://www.agiledata.org/essays/dbaSkills.html" href="http://www.agiledata.org/essays/dbaSkills.html">http://www.agiledata.org/essays/dbaSkills.html</a> (lots of material here; I need to revisit it</p>
]]></content:encoded>
			<wfw:commentRss>http://codegumbo.com/index.php/2012/03/07/agile-database-administration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presenting at Greenville SSIG on Tuesday, March 6, 2012</title>
		<link>http://codegumbo.com/index.php/2012/03/02/presenting-at-greenville-ssig-on-tuesday-march-6-2012/</link>
		<comments>http://codegumbo.com/index.php/2012/03/02/presenting-at-greenville-ssig-on-tuesday-march-6-2012/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 18:09:28 +0000</pubDate>
		<dc:creator>stuart</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[User Groups]]></category>

		<guid isPermaLink="false">http://codegumbo.com/?p=555</guid>
		<description><![CDATA[Just a quick note: I&#8217;m presenting next Tuesday at the Greenville SSIG. Kind of a last minute deal, I&#8217;m still writing the presentation in fact. Details below: Please register at http://ssig201203.eventbrite.com/ . If you forget to register, and want to come to the meeting, please do. 6:00 – 6:30 Food and Networking Sponsored by FGP [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick note:  I&#8217;m presenting next Tuesday at the Greenville SSIG. Kind of a last minute deal, I&#8217;m still writing the presentation in fact.  Details below:</p>
<p>Please register at http://ssig201203.eventbrite.com/ .  If you forget to register, and want to come to the meeting, please do.</p>
<p>6:00 – 6:30 Food and Networking Sponsored by FGP<br />
6:30 – 6:45 Announcements<br />
6:45 – 8:15 Stuart R Ainsworth: Agile Database Administration<br />
8:15 – 8:30 Closing remarks and give-a-ways.  </p>
<p>Agile Database Administration<br />
Agile development is all the rage, but how do the principles apply to database administrators?  This presentation will introduce the basics of the Agile Manifesto, and explain how they can be applied to non-development IT work, such as database administration, maintenance, and support.  We&#8217;ll cover scrum (one of the most popular development methodologies) and kanban, and identify some of the common struggles with implementing them in an organization.  This is an interactive discussion; please bring your tales of success and your horror stories.</p>
<p>Stuart R. Ainsworth is a database architect and a manager of database administration for a financial security company. He&#8217;s also a chapter leader for AtlantaMDF (the Atlanta SQL Server User Group), and blogs (infrequently, but hopes to do better) at http://codegumbo.com.</p>
]]></content:encoded>
			<wfw:commentRss>http://codegumbo.com/index.php/2012/03/02/presenting-at-greenville-ssig-on-tuesday-march-6-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stuff in the FROM Clause: Interfaces</title>
		<link>http://codegumbo.com/index.php/2012/03/01/stuff-in-the-from-clause-interfaces/</link>
		<comments>http://codegumbo.com/index.php/2012/03/01/stuff-in-the-from-clause-interfaces/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 14:01:46 +0000</pubDate>
		<dc:creator>stuart</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>

		<guid isPermaLink="false">http://codegumbo.com/?p=553</guid>
		<description><![CDATA[Finally wrapping up this blog series (while standing at my mobile office waiting on my daughter to finish track practice); I’ve previously discussed four different categories of database objects that can be used as the source of various SQL statements: Base Structures Virtual Structures Temporary &#38; Semi-Temporary structures I want to wrap up with the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://codegumbo.com/images/d2521c54d6a8_F096/IMG_03231.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMG_0323[1]" border="0" alt="IMG_0323[1]" align="left" src="http://codegumbo.com/images/d2521c54d6a8_F096/IMG_03231_thumb.jpg" width="136" height="181" /></a>Finally wrapping up this blog series (while standing at my mobile office waiting on my daughter to finish track practice); I’ve previously discussed four different categories of database objects that can be used as the source of various SQL statements:</p>
<p><a href="http://codegumbo.com/index.php/2011/10/17/stuff-in-the-from-clause-table/" target="_blank">Base Structures</a></p>
<p><a href="http://codegumbo.com/index.php/2011/10/31/stuff-in-the-from-clause-virtual-structures/" target="_blank">Virtual Structures</a></p>
<p><a href="http://codegumbo.com/index.php/2012/02/28/stuff-in-the-from-clause-temporary-semi-temporary-structures/" target="_blank">Temporary &amp; Semi-Temporary structures</a></p>
<p>I want to wrap up with the following category: Interfaces.&#160; Interfaces are methods by which queries can be executed on a remote server (and I use that term to mean remote to SQL Server, not necessarily remote to the host). and the results returned for consumption by a SQL statement.&#160;&#160; There are basically three interfaces supported by SQL Server.</p>
<h2></h2>
<h2>OPENDATASOURCE</h2>
<p>OPENDATASOURCE is an ad-hoc method of connecting to any OLEDB provider; below is a bit of sample code from <a href="http://msdn.microsoft.com/en-us/library/ms179856.aspx" target="_blank">MSDN</a>:</p>
<blockquote><p>SELECT *      <br />FROM OPENDATASOURCE(&#8216;SQLNCLI&#8217;, &#8216;Data Source=London\Payroll;Integrated Security=SSPI&#8217;) .AdventureWorks2008R2.HumanResources.Employee </p>
</blockquote>
<p>If you’re familiar at all with server naming notations for SQL Server, you can easily identify the four-part schema above (Server.Database.Schema.Object).&#160; Note that OPENDATASOURCE is intended for limited use; heavy connections should consider using linked servers to take advantage of security management (particularly in the case of SQL Authentication).</p>
<h2>OPENROWSET</h2>
<p>OPENROWSET is similar to OPENDATASOURCE; it’s an ad-hoc method of calling data from an OLEDB provider.&#160; The primary difference is that OPENROWSET supports a querystring, as well as pulling data from a single object.&#160; This allows you a great deal of flexibility because you execute complicated queries using remote resources, and then only return the data that you need.&#160; <a href="http://msdn.microsoft.com/en-us/library/ms190312.aspx" target="_blank">OPENROWSET</a> can also be used for BULK insertion of data</p>
<h2>OPENQUERY</h2>
<p><a href="http://msdn.microsoft.com/en-us/library/ms188427.aspx" target="_blank">OPENQUERY</a> is intended for use with linked servers; the purpose is to allow code to be executed on a remote server first, and then the affected result sets being used on the local server.&#160; In order to use the OPENQUERY method, you must first define a linked server, and then use a query string to do the actual heavy lifting on the other box.</p>
<p>Interfaces are relatively easy to understand and use, but they need to be carefully evaluated for each situation.&#160; For example, OPENDATASOURCE allows you to quickly retrieve data from a single object on a remote server, but that means that all of the data is retrieved to the local instance.&#160; If the remote server is across a network, then you have to deal with network latency.&#160; OPENROWSET and OPENQUERY provide a work-around (through the use of a querystring), but the querystring can not be parameterized, so it’s a bit clunky to work with.&#160; However, for quick and dirty movement of data from within T-SQL, interfaces can be a valuable tool at the right time. </p>
]]></content:encoded>
			<wfw:commentRss>http://codegumbo.com/index.php/2012/03/01/stuff-in-the-from-clause-interfaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stuff in the FROM clause: Temporary &amp; Semi-Temporary structures</title>
		<link>http://codegumbo.com/index.php/2012/02/28/stuff-in-the-from-clause-temporary-semi-temporary-structures/</link>
		<comments>http://codegumbo.com/index.php/2012/02/28/stuff-in-the-from-clause-temporary-semi-temporary-structures/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 16:31:21 +0000</pubDate>
		<dc:creator>stuart</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>

		<guid isPermaLink="false">http://codegumbo.com/?p=551</guid>
		<description><![CDATA[So way back in October, I started a blog series on Stuff in the FROM clause; I never finished it.&#160; I’m trying to return to writing, so I thought it would be best if I completed the remaining two posts (so I can tick one more item off my to-do list).&#160; If you really want [...]]]></description>
			<content:encoded><![CDATA[<p>So way back in October, I started a blog series on Stuff in the FROM clause; I never finished it.&#160; I’m trying to return to writing, so I thought it would be best if I completed the remaining two posts (so I can tick one more item off my to-do list).&#160; If you really want to catch up, here’s the links to the first two posts:</p>
<p><a href="http://codegumbo.com/index.php/2011/10/17/stuff-in-the-from-clause-table/">Stuff in the FROM clause: Base Structures</a></p>
<p><a href="http://codegumbo.com/index.php/2011/10/31/stuff-in-the-from-clause-virtual-structures/">Stuff in the FROM clause: Virtual Structures</a></p>
<p>Today’s post is touching on two different categories of database objects used in the FROM clause: temporary and semi-temporary structures.&#160; Temporary structures are database objects which are used within the context of a single scope or session in SQL Server; after their use, they are destroyed.&#160; Semi-temporary structures can be used across multiple scopes or sessions, but they are destroyed when the server is restarted.</p>
<h1>TEMPORARY STRUCTURES</h1>
<h2>INLINE SUBQUERIES</h2>
<p>An inline subquery is much like a view; it’s a method of encapsulating a SELECT statement inside another piece of SQL code for performance gains or simplification of the outer SQL statement.&#160; Inline subqueries exist only within the context of the outer SQL statement; they are not reusable from one statement to the next.</p>
<blockquote><p>SELECT columnlist      <br />FROM (SELECT columnlist       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; FROM table) a</p>
</blockquote>
<p>Inline subqueries must have be referenced by an alias (in the above example, “a” is the alias).&#160; They can be used like any other object in the FROM clause.</p>
<h2>COMMON TABLE EXPRESSIONS</h2>
<p>A common table expression (CTE) is similar to an inline subquery; it’s a method of encapsulating a SELECT statement for reuse within another SQL statement; they are not reusable from one statement to the next.</p>
<blockquote><p>; WITH a AS (SELECT columnlist FROM table)      <br />SELECT columnlist       <br />FROM a</p>
</blockquote>
<p>CTE’s are very powerful piece of coding logic that deserves far more attention than this brief write-up; below are a couple of examples for additional reading (including how to do recursion in a CTE):</p>
<p><a title="http://datachix.com/2010/02/10/use-a-common-table-expression-and-the-row_number-function-to-eliminate-duplicate-rows-3/" href="http://datachix.com/2010/02/10/use-a-common-table-expression-and-the-row_number-function-to-eliminate-duplicate-rows-3/" target="_blank">http://datachix.com/2010/02/10/use-a-common-table-expression-and-the-row_number-function-to-eliminate-duplicate-rows-3/</a></p>
<p><a title="http://msdn.microsoft.com/en-us/library/ms186243.aspx" href="http://msdn.microsoft.com/en-us/library/ms186243.aspx">http://msdn.microsoft.com/en-us/library/ms186243.aspx</a></p>
<h2>TABLE VARIABLES</h2>
<p>Table Variables are another powerful temporary structure for managing data in SQL Server; a table variable is destroyed when it falls out of scope, which is more limited than the session of a temp table.&#160; Although there might be some slight performance gains associated with using small table variables (since they are created in memory first), the real benefit stems form their use as building blocks inside user-defined functions and table valued parameters (both to be introduced soon).&#160; The syntax for building a table variable is as follows:</p>
<blockquote><p>DECLARE @t TABLE (ID int)</p>
</blockquote>
<p>A note of caution: table variables are expected to be small (limited rows) by the SQL Server optimizer; execution plans may be negatively impacted if the amount of data being stored in a table variable is larger than <em>x</em> rows (and estimates for <em>x</em> varies greatly from 10 rows to 1000 rows).&#160; Note that table variables can only have one index; a clustered primary key that is created on request during the declaration.</p>
<h2>TABLE-VALUED PARAMETERS</h2>
<p>Table-valued parameters are related to table variables; they are primarily used to pass entire result sets from one stored procedure to the next.&#160; To be honest, I find the syntax a bit clunky, so I’m borrowing the sample code from Books Online to explain it:</p>
<p> <code style="font-size: 12px"><span style="color: black">     <br /></span><span style="color: blue">USE </span><span style="color: black">AdventureWorks2008R2</span><span style="color: gray">;     <br /></span><span style="color: black">GO     </p>
<p></span><span style="color: green">/* Create a table type. */     <br /></span><span style="color: blue">CREATE TYPE </span><span style="color: black">LocationTableType </span><span style="color: blue">AS TABLE      <br /></span><span style="color: gray">( </span><span style="color: black">LocationName </span><span style="color: blue">VARCHAR</span><span style="color: gray">(</span><span style="color: black">50</span><span style="color: gray">)     <br />, </span><span style="color: black">CostRate </span><span style="color: blue">INT </span><span style="color: gray">);     <br /></span><span style="color: black">GO     </p>
<p></span><span style="color: green">/* Create a procedure to receive data for the table-valued parameter. */     <br /></span><span style="color: blue">CREATE PROCEDURE </span><span style="color: black">usp_InsertProductionLocation     <br />&#160;&#160;&#160; </span><span style="color: #434343">@TVP </span><span style="color: black">LocationTableType READONLY     <br />&#160;&#160;&#160; </span><span style="color: blue">AS      <br />&#160;&#160;&#160; SET NOCOUNT ON      <br />&#160;&#160;&#160; INSERT INTO </span><span style="color: black">[AdventureWorks2008R2].[Production].[Location]     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: gray">(</span><span style="color: black">[Name]     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: gray">,</span><span style="color: black">[CostRate]     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: gray">,</span><span style="color: black">[Availability]     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: gray">,</span><span style="color: black">[ModifiedDate]</span><span style="color: gray">)     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">SELECT </span><span style="color: gray">*, </span><span style="color: black">0</span><span style="color: gray">, </span><span style="color: magenta">GETDATE</span><span style="color: gray">()     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">FROM&#160; </span><span style="color: #434343">@TVP</span><span style="color: gray">;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: black">GO     </p>
<p></span><span style="color: green">/* Declare a variable that references the type. */     <br /></span><span style="color: blue">DECLARE </span><span style="color: #434343">@LocationTVP      <br /></span><span style="color: blue">AS </span><span style="color: black">LocationTableType</span><span style="color: gray">;     </p>
<p></span><span style="color: green">/* Add data to the table variable. */     <br /></span><span style="color: blue">INSERT INTO </span><span style="color: #434343">@LocationTVP </span><span style="color: gray">(</span><span style="color: black">LocationName</span><span style="color: gray">, </span><span style="color: black">CostRate</span><span style="color: gray">)     <br />&#160;&#160;&#160; </span><span style="color: blue">SELECT </span><span style="color: black">[Name]</span><span style="color: gray">, </span><span style="color: black">0.00     <br />&#160;&#160;&#160; </span><span style="color: blue">FROM      <br />&#160;&#160;&#160; </span><span style="color: black">[AdventureWorks2008R2].[Person].[StateProvince]</span><span style="color: gray">;     </p>
<p></span><span style="color: green">/* Pass the table variable data to a stored procedure. */     <br /></span><span style="color: blue">EXEC </span><span style="color: black">usp_InsertProductionLocation </span><span style="color: #434343">@LocationTVP</span><span style="color: gray">;     <br /></span><span style="color: black">GO     <br /></span></code>
<p>&#160;</p>
<p>Basically, you declare a type to hold your result set, and then create a variable to reference that result set; since types are scope- and session-safe, you can then move data around as a variable (as opposed to using a global temporary table).</p>
<h2>LOCAL TEMP TABLEs</h2>
<p>Local Temp Tables are a temporary structure; they are stored in tempdb, and look and act very similarly to base tables.&#160; You can create indexes on them, you can ALTER their structure after creation, and you can use them exactly like a standard base table.&#160; The primary difference between a local temp table and a standard table is that the temp table is available only to the session in which it was created, and it’s destroyed after that session is over.&#160; </p>
<p>Syntactically, the CREATE statement for a local temp table is nearly identical to the CREATE statement for a base table; the only difference is that temp tables must have a single hash mark at the beginning of their name, i.e.:</p>
<blockquote><p>CREATE TABLE #temp (ID int)</p>
</blockquote>
<p>or </p>
<blockquote><p>SELECT 1 as ID      <br />INTO #temp</p>
</blockquote>
<h1>SEMI-TEMPORARY STRUCTURES</h1>
<h2>GLOBAL TEMP TABLEs</h2>
<p>Global Temp Tables are a variation of&#160; the local temp table; the same basic rules apply, except that global temp tables are not automatically destroyed at the end of a session.&#160; Thus, they can be reused across multiple scopes and sessions just like a base table; however, if the server is restarted, the global temp tables are destroyed.&#160; </p>
<p>Syntactically, the CREATE statement for a local temp table is nearly identical to the CREATE statement for a base table; the only difference is that global temp tables must have two hash marks at the beginning of their name, i.e.:</p>
<blockquote><p>CREATE TABLE ##temp (ID int)</p>
</blockquote>
<p>or </p>
<blockquote><p>SELECT 1 as ID      <br />INTO ##temp</p>
</blockquote>
<p>&#160;</p>
<p>Alright; one more to go: Interfaces.</p>
]]></content:encoded>
			<wfw:commentRss>http://codegumbo.com/index.php/2012/02/28/stuff-in-the-from-clause-temporary-semi-temporary-structures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A day with Andy (and Matt..)  #SQLSAT111 #SQLPASS</title>
		<link>http://codegumbo.com/index.php/2012/02/17/a-day-with-andy-and-matt-sqlsat111-sqlpass/</link>
		<comments>http://codegumbo.com/index.php/2012/02/17/a-day-with-andy-and-matt-sqlsat111-sqlpass/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 15:12:21 +0000</pubDate>
		<dc:creator>stuart</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[PASS]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[The Social Web]]></category>

		<guid isPermaLink="false">http://codegumbo.com/?p=547</guid>
		<description><![CDATA[I first met Andy Leonard at my first PASS Summit (2008); he was sitting at the back of the room in the Chapter Leaders meeting.&#160; At the time, there was this newfangled social technology called Twitter (perhaps you’ve heard of it), and everybody was live tweeting during the meeting (shades of things to come).&#160; I [...]]]></description>
			<content:encoded><![CDATA[<p>I first met Andy Leonard at my first PASS Summit (2008); he was sitting at the back of the room in the Chapter Leaders meeting.&#160; At the time, there was this newfangled social technology called Twitter (perhaps you’ve heard of it), and everybody was live tweeting during the meeting (shades of things to come).&#160; I had been following his twitter stream for some time, and I saw a tweet of his go by.&#160; I responded with something clever like “I’m watching you tweet <a href="http://twitter.com/#!/AndyLeonard" target="_blank">@AndyLeonard</a>”.&#160; Immediately his head popped up, and looked around the room.&#160; After the meeting, I walked over and introduced myself.&#160; </p>
<p>Talking to Andy is probably one of the easiest things to do in the world; there have been time throughout my association with the SQL community where I’ve bumped into him at some event or another, and he always seems to remember who I am, and what’s going on with me.&#160; I’m nowhere near the prolific writer that he is, and neither am I as plugged in to what’s going on, but yet he always seems to slide into a conversation with me like an old friend.&#160; Andy is just a good guy to know, and I’m glad he’s a friend of mine.</p>
<p>Now, we haven’t always agreed on things; during the PASS elections of 2010, Andy and I looked at the process from two very different perspectives.&#160; Some of our discussions got heated online, and going back and reading those posts today makes me a little sad.&#160; But then I have to pause and think about the face-to-face conversations Andy and I had regarding the same subject, and it’s clear that he really does have a heart for the SQL community; even though I don’t always agree with him, I know that he’s trying to encourage people to do the right thing.&#160; Again, he’s a good guy.</p>
<p>Why do I bring this up? Well, it’s because I’m on the team to bring <a href="http://www.sqlsaturday.com/111/eventhome.aspx" target="_blank">SQL Saturday 111</a> to Atlanta on April 14.&#160; We’ve invited Andy Leonard to do a <a href="http://dayofssis.eventbrite.com/" target="_blank">precon</a> for us on April 13; $100 to spend a day with Andy (and Matt Masson).&#160; I know that Andy brings that same outlook to his teaching that he does to his community activities; with a certain amount of encouragement, people can do better.&#160; If you’re not already registered for his class, you should.&#160; You’ll learn something about SSIS, and maybe a little bit about friendship.</p>
]]></content:encoded>
			<wfw:commentRss>http://codegumbo.com/index.php/2012/02/17/a-day-with-andy-and-matt-sqlsat111-sqlpass/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Quick and Easy SQL Script</title>
		<link>http://codegumbo.com/index.php/2012/02/02/quick-and-easy-sql-script/</link>
		<comments>http://codegumbo.com/index.php/2012/02/02/quick-and-easy-sql-script/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 00:43:59 +0000</pubDate>
		<dc:creator>stuart</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>

		<guid isPermaLink="false">http://codegumbo.com/?p=545</guid>
		<description><![CDATA[I haven’t been blogging enough lately, so I’m going to try something new to get past this mild case of writer’s block.&#160; Instead of trying to do a long, in-depth post on some esoteric subject, I’m going to just put out a simple SQL script.&#160; This one’s a bit of a hack, but you’ll see [...]]]></description>
			<content:encoded><![CDATA[<p>I haven’t been blogging enough lately, so I’m going to try something new to get past this mild case of writer’s block.&#160; Instead of trying to do a long, in-depth post on some esoteric subject, I’m going to just put out a simple SQL script.&#160; This one’s a bit of a hack, but you’ll see a lot of variations on it: <strong>Coalescing rows using for XML</strong>.&#160; For example, here’s a few questions from StackOverflow:</p>
<p><a href="http://stackoverflow.com/questions/7872507/cursor-in-stored-procedure">Cursor in stored procedure</a></p>
<p><a href="http://stackoverflow.com/questions/5536754/how-to-comma-separate-multiple-rows-obtained-from-a-sql-query">How to Comma separate multiple rows obtained from a SQL Query</a></p>
<p><a href="http://stackoverflow.com/questions/887628/convert-multiple-rows-into-one-with-comma-as-separator">Convert multiple rows into one with comma as separator</a></p>
<p>The basic challenge is to denormalize your resultset so that multiple rows get returned as a single delimited string; while there are several methods for solving this problem, the one that I like (as of SQL 2005) is to use FOR XML PATH, like so:</p>
<p> <code style="font-size: 12px"><span style="color: blue">BEGIN TRAN      </p>
<p>DECLARE </span><span style="color: #434343">@t </span><span style="color: blue">TABLE </span><span style="color: gray">( </span><span style="color: black">fruit </span><span style="color: blue">VARCHAR</span><span style="color: gray">(</span><span style="color: black">10</span><span style="color: gray">) )      </p>
<p></span><span style="color: blue">INSERT&#160; INTO </span><span style="color: #434343">@t      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: gray">( </span><span style="color: black">fruit      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: gray">)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">SELECT&#160; </span><span style="color: red">'apple'      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">UNION </span><span style="color: gray">ALL      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">SELECT&#160; </span><span style="color: red">'banana'      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">UNION </span><span style="color: gray">ALL      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">SELECT&#160; </span><span style="color: red">'tomato'      </p>
<p></span><span style="color: blue">SELECT&#160; </span><span style="color: red">',' </span><span style="color: gray">+ </span><span style="color: black">fruit      <br /></span><span style="color: blue">FROM&#160;&#160;&#160; </span><span style="color: #434343">@t      <br /></span><span style="color: blue">FOR&#160;&#160;&#160;&#160; XML </span><span style="color: black">PATH      </p>
<p></span><span style="color: blue">SELECT&#160; </span><span style="color: red">',' </span><span style="color: gray">+ </span><span style="color: black">fruit      <br /></span><span style="color: blue">FROM&#160;&#160;&#160; </span><span style="color: #434343">@t      <br /></span><span style="color: blue">FOR&#160;&#160;&#160;&#160; XML </span><span style="color: black">PATH</span><span style="color: gray">(</span><span style="color: red">''</span><span style="color: gray">)      </p>
<p></span><span style="color: blue">SELECT&#160; </span><span style="color: magenta">STUFF</span><span style="color: gray">(( </span><span style="color: blue">SELECT&#160; </span><span style="color: red">',' </span><span style="color: gray">+ </span><span style="color: black">fruit      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">FROM&#160;&#160;&#160; </span><span style="color: #434343">@t      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="color: blue">FOR      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; XML </span><span style="color: black">PATH</span><span style="color: gray">(</span><span style="color: red">''</span><span style="color: gray">)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ), </span><span style="color: black">1</span><span style="color: gray">, </span><span style="color: black">1</span><span style="color: gray">, </span><span style="color: red">''</span><span style="color: gray">) </span><span style="color: blue">AS </span><span style="color: black">fruits      </p>
<p></span><span style="color: blue">ROLLBACK      <br /></span></code>
<p>&#160;</p>
<p>The multiple results sets are there to illustrate each step in the process; for example, the first output shows what happens when you specify FOR XML PATH with no indicators; SQL Server automatically assigns each row in the resultset to a node named &lt;row&gt;:</p>
<blockquote><p>&lt;row&gt;,apple&lt;/row&gt;      <br />&lt;row&gt;,banana&lt;/row&gt;       <br />&lt;row&gt;,tomato&lt;/row&gt;</p>
</blockquote>
<p>If you specify a tag name in the PATH function, each row will be replaced with that tag name; in the above example, we want an empty tag (‘’).&#160; The result is an XML fragment with no tags:</p>
<blockquote><p>,apple,banana,tomato</p>
</blockquote>
<p>That&#8217;s almost what we want, except we need to get rid of the leading comma.&#160; The STUFF command basically replaces the characters in the string supplied (the first parameter; our query FOR XML PATH) starting at a certain position (1 in the example above) and moving forward the specified number of character places (1, the third parameter) with the value of the last parameter (an empty space; the fourth parameter).&#160; The final output is a comma delimited string:</p>
<blockquote><p>apple,banana,tomato</p>
</blockquote>
<p>Straightforward; gotta return to writing.</p>
]]></content:encoded>
			<wfw:commentRss>http://codegumbo.com/index.php/2012/02/02/quick-and-easy-sql-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Year&#8217;s Post 2012 (the where-have-YOU-been post)</title>
		<link>http://codegumbo.com/index.php/2012/01/09/new-years-post-2012-the-where-have-you-been-post/</link>
		<comments>http://codegumbo.com/index.php/2012/01/09/new-years-post-2012-the-where-have-you-been-post/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 17:36:00 +0000</pubDate>
		<dc:creator>stuart</dc:creator>
				<category><![CDATA[Blogging is FUN!]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>

		<guid isPermaLink="false">http://codegumbo.com/?p=540</guid>
		<description><![CDATA[OK, so around November last year, I fell off the grid.&#160; Stopped posting in the middle of a series.&#160; Just walked away.&#160; And now, like a bad high school relationship, I’ve popped back up and begged you to start reading my blog again.&#160; I swear I had good intentions, and I promise I didn’t cheat [...]]]></description>
			<content:encoded><![CDATA[<p>OK, so around November last year, I fell off the grid.&#160; Stopped posting in the middle of a series.&#160; Just walked away.&#160; And now, like a bad high school relationship, I’ve popped back up and begged you to start reading my blog again.&#160; I swear I had good intentions, and I promise I didn’t cheat on you with that other set of readers; you know, the ones with the short skirts and the car…&#160; I digress.</p>
<p>November and December were a career-changing period for me; things happened that were good, but left me extremely busy at work.&#160; I chose to spend my free time focusing on family time, and I let other things (like my blog and my contributions to the SQL Server community) slide.&#160; Since it’s now a week into January, I thought I would start anew, and try to kick off the year on a good foot.&#160;&#160; Instead of making specific resolutions (which I’ll probably break), let me pick a direction and head that way.</p>
<p><strong>First, I want to continue to focus on my family. </strong> Last year was an amazing year for me; I got married during the summer, and I had to relearn some things about a healthy family structure.&#160; The first rule is that it takes more than just time; it takes an effort to communicate about things, including those things that are not always easy to say.&#160; If you’ve followed my blog at all, you know that this is my second marriage; my first marriage ended in part because I stopped participating.&#160; Hopefully, I’ve learned from that.</p>
<p>However, I didn’t just bring me into this new union of souls; I have two teenage daughters that I’ve brought along with me.&#160;&#160; They need time to get to know their new extended family as well (they now have 10 grandparents, and uncles, aunts, and cousins), and I need to make sure that I keep investing my time in them as well as my wife.&#160;&#160; I love these three women very much, and I need to do everything I can to make sure that they know that.&#160;&#160; I guess I’m just stating that to lay out the framework for the principles that are following.</p>
<p><strong>Second, I need to focus on my new career.</strong>&#160; I got promoted to a management position in mid-November.&#160; I’ve worked for this company for 9 years, and although I’ve been the senior member of the development team for most of that time, this is my first management position ever; I’m now the manager of a newly-formed team of Database Administrators, which means it’s a strange new world for me.&#160; I’ve got to learn to do things a little differently; my goal is not to solve problems, but rather to empower others to solve problems. </p>
<p><strong>Third, I want to be more diligent about my contributions to the community.</strong>&#160;&#160; This means that I need to lay out specific time for blogging, and other community activities (I’m the treasurer for <a href="http://atlantamdf.com">AtlantaMDF</a>, as well as the organizer for the <a href="http://www.sqlsaturday.com/111/default.aspx">Eleventy-First SQL Saturday</a>).&#160; I also need to be more focused in my activities; I’ve spent a lot of time recently on <a href="http://stackoverflow.com/users/184112/stuart-ainsworth">StackOverflow</a>, and I probably need to be less obsessive about that; I need scheduled activities, not hit-or-miss.</p>
<p>&#160;</p>
<p>So there you have it; my simple return to blogging and my New Year’s “resolutions” all wrapped up in a simple package.&#160; I’m still going to have to find time to finish the last series I started, but I’m hoping to find some time in the next few days.&#160; Take me back, just one more time. Please?</p>
]]></content:encoded>
			<wfw:commentRss>http://codegumbo.com/index.php/2012/01/09/new-years-post-2012-the-where-have-you-been-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

