<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Arnie Rowland: Ramblings of a Harried Technogeek</title><link>http://sqlblog.com/blogs/arnie_rowland/default.aspx</link><description>Discussion of issues related to SQL Server, the MSDN SQL Support Forums, the complex interplay between Developers and SQL Server Administrators, and our sometimes futile attempts to have a 'normal' life.</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>It doesn't matter, it's just data...</title><link>http://sqlblog.com/blogs/arnie_rowland/archive/2009/12/14/it-doesn-t-matter-it-s-just-data.aspx</link><pubDate>Tue, 15 Dec 2009 01:03:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:19968</guid><dc:creator>ArnieRowland</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/arnie_rowland/comments/19968.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/arnie_rowland/commentrss.aspx?PostID=19968</wfw:commentRss><description>Database Design. Sounds simple, and at the same time, demanding. I mean, what's to design. You just need a few tables to hold the data for the application you are creating. You just can't really take the time to design -the entire project is agile and...(&lt;a href="http://sqlblog.com/blogs/arnie_rowland/archive/2009/12/14/it-doesn-t-matter-it-s-just-data.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=19968" width="1" height="1"&gt;</description></item><item><title>Marketing Mistakes and Poor Customer Service can Hurt Your Business</title><link>http://sqlblog.com/blogs/arnie_rowland/archive/2009/11/15/marketing-mistakes-and-poor-customer-service-can-hurt-your-business.aspx</link><pubDate>Sun, 15 Nov 2009 16:17:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:18861</guid><dc:creator>ArnieRowland</dc:creator><slash:comments>6</slash:comments><comments>http://sqlblog.com/blogs/arnie_rowland/comments/18861.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/arnie_rowland/commentrss.aspx?PostID=18861</wfw:commentRss><description>Yesterday, I was able to cause a potential customer to buy a competing product. In fact, according to my tally sheet, it was the 43rd time that I am aware of where my dissatisfaction with this company's customer service directly translated into loss of...(&lt;a href="http://sqlblog.com/blogs/arnie_rowland/archive/2009/11/15/marketing-mistakes-and-poor-customer-service-can-hurt-your-business.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=18861" width="1" height="1"&gt;</description></item><item><title>You Bet Your Life</title><link>http://sqlblog.com/blogs/arnie_rowland/archive/2009/10/22/you-bet-your-life.aspx</link><pubDate>Thu, 22 Oct 2009 15:16:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:18149</guid><dc:creator>ArnieRowland</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/arnie_rowland/comments/18149.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/arnie_rowland/commentrss.aspx?PostID=18149</wfw:commentRss><description>Yesterday, Jonathan Kehayias wrote in his blog post " Have you got air in your spare.." about dealing with a flat time. He went on to compare spare tires to HA/DR planning. An excellent article and recommended reading. I wish to expand on Jonathan's discourse...(&lt;a href="http://sqlblog.com/blogs/arnie_rowland/archive/2009/10/22/you-bet-your-life.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=18149" width="1" height="1"&gt;</description></item><item><title>Do You Have What It Takes?</title><link>http://sqlblog.com/blogs/arnie_rowland/archive/2009/05/02/do-you-have-what-it-takes.aspx</link><pubDate>Sat, 02 May 2009 16:19:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:13716</guid><dc:creator>ArnieRowland</dc:creator><slash:comments>4</slash:comments><comments>http://sqlblog.com/blogs/arnie_rowland/comments/13716.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/arnie_rowland/commentrss.aspx?PostID=13716</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;FONT face=Calibri size=3&gt;I was engaged in a conversation recently where the topic under discussion was "&lt;STRONG&gt;What defines an "A" class player?&lt;/STRONG&gt;" Others in the conversation were trying to get a handle on 'greatness', because they desire to create an "A" class Team in their work environment. They want to lead their organization to the 'top of the heap', so they wish to purposefully seek out and hire "A" class players. So it seemed important to try and understand how we go about determining 'greatness'; how do we know when we meet, or when we see, or when we interview, or even when we work with an "A" class player. I'm going to expand on that discussion and attempt to outline what seems to be some of the obvious discriminators. And of course, I invite you, the reader, to add your insights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;FONT face=Calibri size=3&gt;First, let’s start at the beginning. Some say that the "A" class player is born with whatever it takes. Others think that it can be learned and nurtured. That brings into question the concept of 'talent'. Is talent an inherent quality, something one is born with -or can it be considered a ‘skill’ that can be learned? I contend that it goes even deeper than talent. Talent and skill alone doesn't make the "A" class player. You have probably known talented or skilled people -perhaps in the top of his/her talent or skill, yet unable to rise in the work environment to be a truly "A" class player. There is something at the 'root' of an "A" class player that allows them to focus their natural talent and focus their learned 'skills' and rise to greatness in the work environment.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;FONT face=Calibri size=3&gt;Let's accept that there may be 'talent' and that there may be 'skills'. The "A" class player hones his/her talent, learns 'skills' –practices both, expands his/her knowledge, and in general is 'prepared'. Most definitely there will be preparation. Lots of preparation: practice, skill building, learning, even observing other "A" class players. The "A" class player has a lot of desire and a lot of drive to be an "A" class player. The "A" class player will discover and truly 'know' his/her strengths and weaknesses. He or she will have a strong 'work ethic' –taking pride in his/her accomplishments. He or she will be able to concentrate on the task as hand, exhibiting intense 'staying power', even while maintaining&amp;nbsp;the 'larger picture'. The "A" class player will be more attuned to seeing how all the parts fit together. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;FONT face=Calibri size=3&gt;The "A" class player desires to that his/her work be significant, be noteworthy, and make a tangible contribution to the overall effort. The "A" class player can be counted on to give more that the minimum required –they understand that excellence requires exceptional effort. He or she constantly exhibits passion for the endeavor and will take pride in making the ‘last effort’ to push the objective to completion. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;FONT face=Calibri size=3&gt;The “A” class player has ‘charisma’ –everyone around him/her actually ‘feels’ better and contributes more as a result. He or she leads by doing, leads by example. The “A” class player does not engage in demeaning or humiliating actions or behaviors towards others. The "A" class player has a keen sense of right and wrong,&amp;nbsp;a highly developed&amp;nbsp;ethical map, and a strong moral compass. The “A” class player will often show a deep respect for his/her competitors –for those competitors are often his/her peers. The “A” class player easily handles the high level of attention and stress –and actually seems to enjoy it.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;FONT face=Calibri size=3&gt;The “A” class player understands that it is necessary to take ‘risks’ –yet attempts to understand and mitigate all known risks. And the “A” class player will learn from his/her mistakes. The “A” class player is capable of adjusting goals and objectives, exhibiting flexibility, and delivering the expected end product.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;FONT face=Calibri size=3&gt;The "A" class player will have a passion for their work -and they will have passion for their play, their non-work life. The “A” class player will have a strong, vibrant, and invigorating family and social life. The "A" class player will know and understand balance.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;FONT face=Calibri size=3&gt;It was mentioned above that the "A" class player observes other "A" class players to learn. They will also seek out other "A" class players for networking, socializing, and for friendship. They will gravitate towards others exhibiting greatness because they subconsciously understand that the bright light of another 'star' challenges them to improve –and it also illuminates them and causes them to shine brighter. The "A" class player desires to surround him/herself with greatness.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;The "A" class player desires to be on the winning 'team'. The “A” class player wants to be on the “A” Team.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;FONT face=Calibri size=3&gt;So, tell me, are you an "A" class player? &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;FONT face=Calibri size=3&gt;Do you work with one?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;FONT face=Calibri size=3&gt;(Next I will explore what does it take to create an "A" Team.) &lt;/FONT&gt;&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Do You Have What It Takes?&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Do You Have What It Takes?%0A%0Ahttp://sqlblog.com/blogs/arnie_rowland/archive/2009/05/02/do-you-have-what-it-takes.aspx" target="_blank" title = "Email Do You Have What It Takes?"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/05/02/do-you-have-what-it-takes.aspx&amp;amp;title=Do+You+Have+What+It+Takes%3f" target="_blank" title = "Submit Do You Have What It Takes? to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/05/02/do-you-have-what-it-takes.aspx&amp;amp;phase=2" target="_blank" title = "Submit Do You Have What It Takes? to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/05/02/do-you-have-what-it-takes.aspx&amp;amp;title=Do+You+Have+What+It+Takes%3f" target="_blank" title = "Submit Do You Have What It Takes? to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/05/02/do-you-have-what-it-takes.aspx&amp;amp;title=Do+You+Have+What+It+Takes%3f" target="_blank" title = "Submit Do You Have What It Takes? to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/05/02/do-you-have-what-it-takes.aspx&amp;amp;title=Do+You+Have+What+It+Takes%3f&amp;amp;;top=1" target="_blank" title = "Add Do You Have What It Takes? to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=13716" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/arnie_rowland/archive/tags/Excellence/default.aspx">Excellence</category><category domain="http://sqlblog.com/blogs/arnie_rowland/archive/tags/_2600_quot_3B00_Professional+Development_2600_quot_3B00_/default.aspx">&amp;quot;Professional Development&amp;quot;</category><category domain="http://sqlblog.com/blogs/arnie_rowland/archive/tags/Exceptional/default.aspx">Exceptional</category><category domain="http://sqlblog.com/blogs/arnie_rowland/archive/tags/Team/default.aspx">Team</category></item><item><title>Heads I win, Tails You Lose</title><link>http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/22/heads-i-win-tails-you-lose.aspx</link><pubDate>Sun, 22 Mar 2009 14:06:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:12853</guid><dc:creator>ArnieRowland</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/arnie_rowland/comments/12853.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/arnie_rowland/commentrss.aspx?PostID=12853</wfw:commentRss><description>&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;Imagine going to a casino with $100 dollars to gamble. As you enter, you notice a vending machine that sells gambling insurance policies. For a small price, the insurance policy will guarantee to replace any losses that you may incur while gambling. So being a prudent person, you buy one. Now you can’t lose anymore than the cost of the insurance. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;But that was so easy, why not buy two (or more) insurance policies –then if you lose, you get back more than the amount you lost. There is nothing that stops you from buying multiple policies. Now you will be better off financially if you lose all of your money –the more you lose, the more you gain. At least to a lot of really, really smart people, it seemed that way… But you have just now lost any incentive to win, in fact, perversely, you want to lose, you need to lose. And even more perversely, there is no requirement that you have an 'insurable interest', so you buy an insurance policy (or two)&amp;nbsp;against other folks losses. If they lose, you win. Maybe you even start betting against them, trying to help them&amp;nbsp;lose, knowing full well&amp;nbsp;that your&amp;nbsp;own loses&amp;nbsp;are insured. Sounds rather bizarre, doesn't it.&amp;nbsp;That is how five trillion dollars of worldwide debt ballooned to 60 trillion dollars in contractual obgligations. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;In conversations this week, and in a Twitter thread, I was reminded that the weekly program, 'This American Life', broadcast on National Public Radio, has presented a series of discussions/explanations about the underlying causes of the current global economic crisis. I know, that for me, it has been a struggle to understand how so many really 'smart' folks made such profoundly 'dumb' mistakes. I wanted to blame it all on avarice or greed, or illegal activities. Not discounting those factors, I now understand this is a problem of unintended consequences when folks attempt to remove 'risk' from financial life. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;If you would like to get a better understanding, and perhaps learn what is a CDO, or CDS, or why your tax dollars are going to be used for decades to 'clean up' this debacle, I highly recommend these episodes. You can listen to them streaming online for free, or you can purchase the podcasts and download to your pod device.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://www.thisamericanlife.org/Radio_Episode.aspx?episode=355"&gt;The Giant Pool of Money&lt;/A&gt;&amp;nbsp;(2008/05/09)&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-STYLE:italic;"&gt;This American Life&lt;/SPAN&gt; producer Alex Blumberg teams up with NPR's Adam Davidson for the entire hour to tell the story—the surprisingly entertaining story—of how the U.S. got itself into a housing crisis. They talk to people who were actually working in the housing, banking, finance and mortgage industries, about what they thought during the boom times, and why the bust happened. And they explain that a lot of it has to do with the giant global pool of money. &lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://www.thisamericanlife.org/Radio_Episode.aspx?episode=365"&gt;Another Frightening Show About the Economy&lt;/A&gt; (2008/10/03)&lt;BR&gt;&lt;SPAN class=text&gt;&lt;BR&gt;Alex Blumberg and Adam Davidson recount the 36-hour period, when the credit markets froze. Plus, what it’s like now for businesses to get short-term loans, and how the hardship is spreading to every sector of the economy.&amp;nbsp;One more confusing financial product that’s bringing down the global economy. And one of way to think about this product is this: If bad mortgages got the financial system sick, this next thing you’re about to hear about, helped spread the sickness into an epidemic. These are "credit default swaps."&amp;nbsp;Ira Glass talks with Michael Greenberger, a former commodities regulator, who tells the story of when it was decided not to regulate credit default swaps. And how that decision was emblematic of the way we didn’t regulate a lot of the toxic financial products we’re hearing about now. &lt;BR&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class=text&gt;&lt;A class="" href="http://www.thisamericanlife.org/Radio_Episode.aspx?episode=375"&gt;Bad Bank&lt;/A&gt;&amp;nbsp;(2009/02/27)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class=text&gt;The collapse of the banking system explained, in just 59 minutes. Alex Blumberg and NPR’s Adam Davidson—are back to help all of us understand the news. For instance, when we talk about an insolvent bank, what does it actually mean, and why are we giving hundreds of billions of dollars to rich bankers who screwed up their own businesses? &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class=text&gt;&amp;nbsp;&lt;/P&gt;&lt;/SPAN&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Heads I win, Tails You Lose&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Heads I win, Tails You Lose%0A%0Ahttp://sqlblog.com/blogs/arnie_rowland/archive/2009/03/22/heads-i-win-tails-you-lose.aspx" target="_blank" title = "Email Heads I win, Tails You Lose"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/22/heads-i-win-tails-you-lose.aspx&amp;amp;title=Heads+I+win%2c+Tails+You+Lose" target="_blank" title = "Submit Heads I win, Tails You Lose to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/22/heads-i-win-tails-you-lose.aspx&amp;amp;phase=2" target="_blank" title = "Submit Heads I win, Tails You Lose to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/22/heads-i-win-tails-you-lose.aspx&amp;amp;title=Heads+I+win%2c+Tails+You+Lose" target="_blank" title = "Submit Heads I win, Tails You Lose to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/22/heads-i-win-tails-you-lose.aspx&amp;amp;title=Heads+I+win%2c+Tails+You+Lose" target="_blank" title = "Submit Heads I win, Tails You Lose to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/22/heads-i-win-tails-you-lose.aspx&amp;amp;title=Heads+I+win%2c+Tails+You+Lose&amp;amp;;top=1" target="_blank" title = "Add Heads I win, Tails You Lose to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=12853" width="1" height="1"&gt;</description></item><item><title>Is it time for SQL Server to have Isolated Transactions?</title><link>http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/09/is-it-time-for-sql-server-to-have-isolated-transactions.aspx</link><pubDate>Tue, 10 Mar 2009 00:09:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:12513</guid><dc:creator>ArnieRowland</dc:creator><slash:comments>11</slash:comments><comments>http://sqlblog.com/blogs/arnie_rowland/comments/12513.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/arnie_rowland/commentrss.aspx?PostID=12513</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;SQL Server allows nesting of Transactions –in a sense. In truth, there is only one Transaction, with each ‘nested transaction’ serving to increase (and decrease) the @@TRANCOUNT indicator. The transaction can be committed or rolled back at any point that the @@TRANCOUNT value is equal to one. Error conditions may or may not cause the transaction to rollback –depending upon the specific nature of the error or the XACT_ABORT setting. (In this discussion, I am not going to address the situations where the @@TRANCOUNT is not properly decremented and also when commit or rollback is not accomplished –leaving a hung transaction.)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;And for many usages, the implementation works just fine. All of the work, or none of the work –at least that is what we hope for.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Sometimes it is necessary to jump through seemingly unnecessary ‘hoops’ in order to get it working as we wish.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;In the case of Logging, I need to log the activities and be assured that the log entries persist even if the parent transaction fails. With the current implementation, the activities of a ‘nested transaction’ are rolled back if the parent transaction rolls back, even when calls are made to stored procedures –all is lost if the parent transaction rolls back. Yes, there is a work-around. It is common to create a Table Variable prior to starting the parent transaction, populate it with values during the transaction scope, and then after the transaction is completed (either committed or rolled back) to then insert the rows of the Table Variable into the logging table. –BUT, if server power were to fail just before the inserts, any records of the transaction activity would be forever lost. And it makes it impossible to create a self contained logging procedure that can be executed with only one line of code in the transaction.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;I suggest that there is a need for a completely ‘&lt;B&gt;Isolated Transaction&lt;/B&gt;’. That is, a transaction that can be started in the midst of a ‘regular’ transaction (parent), and that will be durable regardless of the outcome of the parent transaction. Using this ‘Isolated Transaction’, once a commit occurs, even a rollback of the parent transaction will not undo the saved work. The activity log is properly persisted and durable.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;In some situations, it may be necessary to force the parent transaction to fail and rollback if entries to the log cannot be accomplished. (I’m thinking of a security implementation where any activity, even unsuccessful activity must be logged.) That can be accomplished by the parent transaction examining the error that caused code execution to fall into the CATCH block and taking appropriate action, or perhaps, proper specification of the XACT_ABORT option.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Consider the following:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;BEGIN TRANSACTION&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;TRY&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;{do some work}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;BEGIN ISOLATED TRANSACTION&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;{do some work}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;{Create Log Entries}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;END ISOLATED TRANSACTION&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;{do more work}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;END TRY&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;CATCH&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;ROLLBACK&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;RETURN&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;END CATCH&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;COMMIT&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;END TRANSACTION&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt 0.5in;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;I suggest that in the above scenario, the ISOLATED TRANSACTION should automatically commit (and persist) upon successful completion, or ABORT and exit upon any failure, reporting an error condition to the parent transaction. The parent transaction could (depending upon the XACT_ABORT setting) determine whether to continue or abort itself. IF the isolated transaction successfully completes, it is committed and durable regardless of the action taken by the parent transaction.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Now this scenario seems to satisfy my issues of being able to reliably log activities in a transaction, and have those log entries persist if the transaction is rolled back.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;But additional questions arise. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;B&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Stored Procedures&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;What should be done IF the isolated transaction exists within a stored procedure that is called from the parent transaction code? How should the procedure handle an error that causes the isolated transaction to rollback? The RAISERROR statement in SQL Server has various quirks and should not be relied upon to communicate with the parent transaction –RAISERROR may itself cause the parent transaction to rollback and not allow the parent transaction to evaluate the error condition in its CATCH block.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Should the procedure be totally autonomous and not attempt to communicate with the parent transaction? How would the procedure best communicate an error condition, either in the isolated transaction or not? Would it be enough if failure in the Isolated Transaction caused an XACT_ABORT error to be passed to the parent transaction?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;B&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Dynamic SQL&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;It is possible to make a compelling argument for an Isolated Transaction in dynamic SQL. How would/should the dynamic SQL communicate to the parent transaction if the Isolate Transaction were to fail and rollback? Should the parent transaction even care?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Service Broker&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Having an isolated transaction could solve some issues related to Service Broker implementations –such as starting a batch process, guaranteed messages, and/or mail delivery. Is this a use case scenario that makes sense for you?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;&lt;STRONG&gt;Additional Considerations&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Some have posited that the isolated transaction ‘should NOT’ automatically rollback on error, but instead require a specific ROLLBACK statement. Something like this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;BEGIN ISOLATED TRANSACTION&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;{do some work}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;IF {condition}&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ROLLBACK&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{do some other work}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;END ISOLATED TRANSACTION&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN style="COLOR:#1f497d;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;But this raises all sorts of questions and issues. What happens after the ROLLBACK if there is an attempt to INSERT/UPDATE/DELETE? Is a new isolated transaction started? Is it the same transaction? Is it an error condition? What happens if the ROLLBACK is omitted and an error condition occurs?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Personally, I’m in favor of a simple approach to the isolated transaction –not at all bound by any previous SQL Servfer transaction implementation. Automatic COMMIT on successful completion, automatic ROLLBACK on error, and appropriate error messaging down the call stack. What is your opinion?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;B&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Your help is needed!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;In order to best prepare and lobby for such a suggested ‘improvement’, it is important to have a clear understanding of the use case scenarios that we are attempting to solve with the isolated transactions. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;So I ask you, if you see benefit from having an ISOLATED TRANSACTION in SQL Server, what is your use case? How would you use it? What are the pitfalls?&lt;/FONT&gt;&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Is it time for SQL Server to have Isolated Transactions?&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Is it time for SQL Server to have Isolated Transactions?%0A%0Ahttp://sqlblog.com/blogs/arnie_rowland/archive/2009/03/09/is-it-time-for-sql-server-to-have-isolated-transactions.aspx" target="_blank" title = "Email Is it time for SQL Server to have Isolated Transactions?"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/09/is-it-time-for-sql-server-to-have-isolated-transactions.aspx&amp;amp;title=Is+it+time+for+SQL+Server+to+have+Isolated+Transactions%3f" target="_blank" title = "Submit Is it time for SQL Server to have Isolated Transactions? to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/09/is-it-time-for-sql-server-to-have-isolated-transactions.aspx&amp;amp;phase=2" target="_blank" title = "Submit Is it time for SQL Server to have Isolated Transactions? to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/09/is-it-time-for-sql-server-to-have-isolated-transactions.aspx&amp;amp;title=Is+it+time+for+SQL+Server+to+have+Isolated+Transactions%3f" target="_blank" title = "Submit Is it time for SQL Server to have Isolated Transactions? to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/09/is-it-time-for-sql-server-to-have-isolated-transactions.aspx&amp;amp;title=Is+it+time+for+SQL+Server+to+have+Isolated+Transactions%3f" target="_blank" title = "Submit Is it time for SQL Server to have Isolated Transactions? to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/09/is-it-time-for-sql-server-to-have-isolated-transactions.aspx&amp;amp;title=Is+it+time+for+SQL+Server+to+have+Isolated+Transactions%3f&amp;amp;;top=1" target="_blank" title = "Add Is it time for SQL Server to have Isolated Transactions? to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=12513" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/arnie_rowland/archive/tags/Transactions/default.aspx">Transactions</category></item><item><title>MVP Summit 2009 -A Most Excellent Adventure</title><link>http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/07/mvp-summit-2009-a-most-excellent-adventure.aspx</link><pubDate>Sat, 07 Mar 2009 18:10:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:12463</guid><dc:creator>ArnieRowland</dc:creator><slash:comments>4</slash:comments><comments>http://sqlblog.com/blogs/arnie_rowland/comments/12463.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/arnie_rowland/commentrss.aspx?PostID=12463</wfw:commentRss><description>&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;For many of us, one of the high points of being an MVP is attending the annual MVP Summit hosted in Seattle by Microsoft. Yes, there is a lot of flash and hoopla, good food, and a party or two. But the real value comes from connecting and re-connecting with MVPs from around the world. And then being given&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;'inside' information from members of the product groups. Product group members answer our questions and&amp;nbsp;give us insights into future developments for the product/technology that holds&amp;nbsp;our interest. And, to their credit, they put up with a fair amount of pushing and pulling from MVPs –which, thankfully, is accepted&amp;nbsp;in the spirit of 'the loyal opposition'. Everyone recognizes that we all have the same interests -the improvement of the products we use and support.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;So I guess that I could sum up the event as one of Relationships. Establishing, building and renewing relationships between MVPs, AND between MVPs and product group members. Relationships that will serve us well -now and in the future. Relationships that are as diverse and complex as the products we support. Relationships that are both intense and fleeting. Relationships that will persist even when only renewed at the next summit. Relationships that will strengthen our interactions in newsgroups, forums, blogs, and even Twitter. Relationships that continually improve the SQL Server community.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;A few MVPs were acknowledged for their outstanding participation in the SQL Server community over the past year.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;For finding and reporting Bugs –overall:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;1.&amp;nbsp;Aaron Bertrand &lt;BR&gt;2.&amp;nbsp;Steve Kass&lt;BR&gt;3.&amp;nbsp;Dan Guzman&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;The most ‘critical’ bug was found and reported by: &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;Teo Lachev&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;For Newsgroup participation:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-list:l3 level1 lfo4;tab-stops:list .5in;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;1.&amp;nbsp;Erland Summarskog&lt;BR&gt;2.&amp;nbsp;Plamen Ratchev&lt;BR&gt;3.&amp;nbsp;Uri Dimant&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;mso-list:l3 level1 lfo4;tab-stops:list .5in;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;For MSDN Forum participation:&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;1.&amp;nbsp;Jonathan Kehayias&lt;BR&gt;2.&amp;nbsp;Jacob Sebastian&lt;BR&gt;3.&amp;nbsp;Mangal Pardeshi&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;The 'MVP Choice Award' was presented&amp;nbsp;to give special recognition for MVP contributions to the SQL Server community over the past year. The SQL Server MVPs that attended the summit could offer five nominees each. Those selected received a plurality of nominations. Summit attendance was not required, and two folks were not eligible since they were previously acknowledged. (See above.) &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;The MVP Choice Award was awarded to:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;&lt;/OL&gt;&lt;/SPAN&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;1.&amp;nbsp;Paul Nielson&lt;BR&gt;2.&amp;nbsp;Arnie Rowland&lt;BR&gt;3.&amp;nbsp;Itzik Ben-Gan&lt;BR&gt;4.&amp;nbsp;Kalen Delany&lt;BR&gt;5.&amp;nbsp;Pinal Kumar Dave (tie)&lt;BR&gt;5.&amp;nbsp;Jessica Moss (tie)&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:'Times New Roman';"&gt;(I wish to humbly thank those MVPs that&amp;nbsp;thought I should be included in such great company.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=MVP Summit 2009 -A Most Excellent Adventure&amp;amp;body=Seen on SQLblog.com: %0A%0A%09MVP Summit 2009 -A Most Excellent Adventure%0A%0Ahttp://sqlblog.com/blogs/arnie_rowland/archive/2009/03/07/mvp-summit-2009-a-most-excellent-adventure.aspx" target="_blank" title = "Email MVP Summit 2009 -A Most Excellent Adventure"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/07/mvp-summit-2009-a-most-excellent-adventure.aspx&amp;amp;title=MVP+Summit+2009+-A+Most+Excellent+Adventure" target="_blank" title = "Submit MVP Summit 2009 -A Most Excellent Adventure to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/07/mvp-summit-2009-a-most-excellent-adventure.aspx&amp;amp;phase=2" target="_blank" title = "Submit MVP Summit 2009 -A Most Excellent Adventure to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/07/mvp-summit-2009-a-most-excellent-adventure.aspx&amp;amp;title=MVP+Summit+2009+-A+Most+Excellent+Adventure" target="_blank" title = "Submit MVP Summit 2009 -A Most Excellent Adventure to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/07/mvp-summit-2009-a-most-excellent-adventure.aspx&amp;amp;title=MVP+Summit+2009+-A+Most+Excellent+Adventure" target="_blank" title = "Submit MVP Summit 2009 -A Most Excellent Adventure to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/03/07/mvp-summit-2009-a-most-excellent-adventure.aspx&amp;amp;title=MVP+Summit+2009+-A+Most+Excellent+Adventure&amp;amp;;top=1" target="_blank" title = "Add MVP Summit 2009 -A Most Excellent Adventure to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=12463" width="1" height="1"&gt;</description></item><item><title>You HAVE to Trust, you MUST Verify -and that may still not be enough!</title><link>http://sqlblog.com/blogs/arnie_rowland/archive/2009/02/20/you-have-to-trust-you-must-verify-and-that-may-still-not-be-enough.aspx</link><pubDate>Fri, 20 Feb 2009 21:22:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:12046</guid><dc:creator>ArnieRowland</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/arnie_rowland/comments/12046.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/arnie_rowland/commentrss.aspx?PostID=12046</wfw:commentRss><description>&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;In Brian Kelly's recent&lt;A title="You Must Trust Someone" href="http://www.sqlservercentral.com/blogs/brian_kelley/archive/2009/02/20/you-must-trust-someone.aspx" target=_blank&gt; blog post&lt;/A&gt;,&amp;nbsp;he makes an excellent case outlining why there are few options but to 'Trust' SQL Server Administrators. And then he goes into excellent detail explaining that it may be impossible to completely 'prohibit' disruptive behavior, and that one should establish a robust auditing of security events.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;And it is not just the SQL Server Administrators, or the network administrators that require ‘trust’. It is anyone that has access to the ‘wire’.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;A while back I was working on a project that had to meet a HS/FIPS standards that mandated that all data in transit be encrypted. I recall&amp;nbsp;sitting in a meeting where, in response to my request for the establishment of encryption, (possibly IPSec) between the&amp;nbsp;web farm and the data&amp;nbsp;cluster, the director of the infrastructure teams bluntly stated that it would not happen because 'we trust our people'. There was continued resistance to finding any alternatives to meet the encryption requirement. The network administrators were firmly opposed to having packets on ‘their wires’ that they could not ‘look into’. There were attempts to find some manner of ‘waiver’ from the standards. My arguments about the difficulty involved in discovering passive sniffers, or that anyone with access inside the firewall could easily install an ‘unknown sniffer’ were summarily dismissed as ‘overly concerned’. My team continued moving ahead in preparation to the time when encryption deadline became inescapable.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Arial','sans-serif';"&gt;A few months later, all IT infrastructure staff were required to undergo new background security checks. I was not surprised that some of the 'trusted people' abruptly resigned or were&amp;nbsp;terminated. (I've noticed that about 15% of IT staff seem to either refuse to submit to, or fail security checks. Sometime termination is for issues that would not have prevented the initial hire, but became mandated since the issues were not disclosed on the application. Sometimes just 'youthful indiscretions'...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;And the data in transit was finally encrypted.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=You HAVE to Trust, you MUST Verify -and that may still not be enough!&amp;amp;body=Seen on SQLblog.com: %0A%0A%09You HAVE to Trust, you MUST Verify -and that may still not be enough!%0A%0Ahttp://sqlblog.com/blogs/arnie_rowland/archive/2009/02/20/you-have-to-trust-you-must-verify-and-that-may-still-not-be-enough.aspx" target="_blank" title = "Email You HAVE to Trust, you MUST Verify -and that may still not be enough!"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/02/20/you-have-to-trust-you-must-verify-and-that-may-still-not-be-enough.aspx&amp;amp;title=You+HAVE+to+Trust%2c+you+MUST+Verify+-and+that+may+still+not+be+enough!" target="_blank" title = "Submit You HAVE to Trust, you MUST Verify -and that may still not be enough! to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/02/20/you-have-to-trust-you-must-verify-and-that-may-still-not-be-enough.aspx&amp;amp;phase=2" target="_blank" title = "Submit You HAVE to Trust, you MUST Verify -and that may still not be enough! to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/02/20/you-have-to-trust-you-must-verify-and-that-may-still-not-be-enough.aspx&amp;amp;title=You+HAVE+to+Trust%2c+you+MUST+Verify+-and+that+may+still+not+be+enough!" target="_blank" title = "Submit You HAVE to Trust, you MUST Verify -and that may still not be enough! to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/02/20/you-have-to-trust-you-must-verify-and-that-may-still-not-be-enough.aspx&amp;amp;title=You+HAVE+to+Trust%2c+you+MUST+Verify+-and+that+may+still+not+be+enough!" target="_blank" title = "Submit You HAVE to Trust, you MUST Verify -and that may still not be enough! to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/arnie_rowland/archive/2009/02/20/you-have-to-trust-you-must-verify-and-that-may-still-not-be-enough.aspx&amp;amp;title=You+HAVE+to+Trust%2c+you+MUST+Verify+-and+that+may+still+not+be+enough!&amp;amp;;top=1" target="_blank" title = "Add You HAVE to Trust, you MUST Verify -and that may still not be enough! to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=12046" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/arnie_rowland/archive/tags/Security+Trust/default.aspx">Security Trust</category></item><item><title>What’s in a Name?</title><link>http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/23/what-s-in-a-name.aspx</link><pubDate>Thu, 23 Oct 2008 07:13:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9609</guid><dc:creator>ArnieRowland</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/arnie_rowland/comments/9609.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/arnie_rowland/commentrss.aspx?PostID=9609</wfw:commentRss><description>&lt;FONT face=Calibri&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT size=3&gt;Why do folks continue to use outdated and unnecessary naming conventions? Specifically, the ridiculous ‘&lt;STRONG&gt;tbl&lt;/STRONG&gt;’ prefix on tables, and the equally meaningless ‘&lt;STRONG&gt;usp&lt;/STRONG&gt;’ for stored procedures. I think that it is because that is what they see illustrated in books, magazines, white papers and on-line 'example' code. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=3&gt;So the real question is really: Why do authors continue to follow outmoded and wasteful practices? I mean,&amp;nbsp;if the characters (keystrokes) do not provide ‘value’, why invest the time and effort? Why continue demonstrating something that has little or no value? Are 'old habits' really that hard to change?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT size=3&gt;In my teaching, I often explain that all characters in an object name ‘should’ be meaningful; if a character does not add value, then it is a waste of time and effort.&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=3&gt;For example, if an object appears after the keyword FROM, it is very safe to assume that it is a data object (table, view, or table valued function.) Therefore, using the prefix ‘&lt;STRONG&gt;tbl&lt;/STRONG&gt;’ (or ‘&lt;STRONG&gt;tbl_&lt;/STRONG&gt;’) as a prefix to a table name is a complete waste of keystrokes (time and effort). However, It can be useful to use a suffix, such as '_vw' for VIEW, or '_tv' for a Table Valued Function. From context, it is almost always possible to identify the object being referred to as a data object. Three (or four) extra characters that have to be typed every time the table is referenced in both database and application code. What a waste.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT size=3&gt;The same goes for stored procedures. Contextually, it is possible to know that an object is a stored procedure, therefore using any prefix is a waste of keystokes (time and effort) that does not provide value. Granted, for code objects that are distributed with applications, it may be sagacious to have a somewhat unique prefix in order to reduce potential naming conflicts with the clients’ use of the database. But in the absence of a ‘third party' products, I contend that stored procedure prefixes, especially the somewhat lame ‘&lt;STRONG&gt;usp&lt;/STRONG&gt;’ is a complete waste of effort.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT size=3&gt;I often work with very large projects, with very large development teams. It is not at all unusual for a single database to have 1000, 2000, even more, stored procedures. Without a sensible naming convention, folks will unintentionally duplicate effort. In one project, as we were nearing deployment, I found as many as 14 stored procedures that had the exact same functionality –just variations in naming.&amp;nbsp;I ended up removing&amp;nbsp;over thirty percent (30%) of the stored procedures (and forcing application code changes). In the ‘morass’ of thousands of T-SQL code objects in the source store, developers simply gave up attempting to find and reuse existing code because there was no consistent naming policy that allowed ‘finding’ what was needed with reasonable effort.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT size=3&gt;In a later post, I will make a case for selective and succinct ‘suffixes’ on certain objects –but most definitely NOT prefixes. I will also delve into naming conventions that seem to really work in any size environment.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;What do you think about using naming 'prefixes'?&lt;/P&gt;&lt;/FONT&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=What’s in a Name?&amp;amp;body=Seen on SQLblog.com: %0A%0A%09What’s in a Name?%0A%0Ahttp://sqlblog.com/blogs/arnie_rowland/archive/2008/10/23/what-s-in-a-name.aspx" target="_blank" title = "Email What’s in a Name?"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/23/what-s-in-a-name.aspx&amp;amp;title=What%e2%80%99s+in+a+Name%3f" target="_blank" title = "Submit What’s in a Name? to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/23/what-s-in-a-name.aspx&amp;amp;phase=2" target="_blank" title = "Submit What’s in a Name? to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/23/what-s-in-a-name.aspx&amp;amp;title=What%e2%80%99s+in+a+Name%3f" target="_blank" title = "Submit What’s in a Name? to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/23/what-s-in-a-name.aspx&amp;amp;title=What%e2%80%99s+in+a+Name%3f" target="_blank" title = "Submit What’s in a Name? to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/23/what-s-in-a-name.aspx&amp;amp;title=What%e2%80%99s+in+a+Name%3f&amp;amp;;top=1" target="_blank" title = "Add What’s in a Name? to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=9609" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/arnie_rowland/archive/tags/Naming+Conventions/default.aspx">Naming Conventions</category></item><item><title>When Do You Know That You Know</title><link>http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/17/when-do-you-know-that-you-know.aspx</link><pubDate>Fri, 17 Oct 2008 08:01:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9536</guid><dc:creator>ArnieRowland</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/arnie_rowland/comments/9536.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/arnie_rowland/commentrss.aspx?PostID=9536</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Why,&amp;nbsp;when you&amp;nbsp;can help others, that's when!&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;In my role as a senior Moderator with the MSDN SQL Forums, I am often asked "How do I become a Moderator on the Forums?" &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;I am quite appreciative and heartened when folks indicate, and then&amp;nbsp;demonstrate, their interest in helping others. Volunteering to assist on the MSDN Forums is an excellent 'give-back' for all of those times when someone offered us a hand, gave a suggestion, helped us solve our pressing problems. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Participants typically arrive at the Forums the first time seeking help, and when they find the environment is supportive, and they are met with grace, they come back the next time they are stuck. After awhile, some begin offering suggestions to questions and problems that are posted. For many, it can become an exhilarating experience to help others that are in a difficult situation; it becomes a validation that we actually 'know' something. Many of us actually are 'pushed' to learn more, dig deeper, search for things we had not considered, re-consider solutions that we thought we had down pat, and reexamine nuances. For those that regularly visit and help on the Forums, the Forums become a source of self satisfaction -a place where we are 'validated', a place where we learn, and a place where we teach.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;So to the question of 'How to become a Forum Moderator?', let me offer the following:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;When you respond to a question, don't just provide an answer -help others understand why your suggestion works.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Make an effort to offer an explanation for your suggestion. Offer a demonstration. Provide enough demo code so that a reader can easily reproduce your suggestion; make it a 'teaching' moment. &lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;In any code that you provide, take a few extra seconds and follow 'Best Practices' -naming, formatting, etc. Remember, you are 'teaching' by example. How you do something often carries more long term significance than the specifics of what you do.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Many others will read the question and answers&amp;nbsp;so try to be as 'generic' as possible in your suggestion and demonstration so that those additional readers can easily extrapolate and adapt to their problems.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Beware of keeping a positive attitude. Remember that once you were a beginner too. Assume that everyone is doing the best that he/she can at that moment.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Sometimes folks will be unappreciative, perhaps even 'snippy' toward you. That happens. Don't take it personally, just ignore it and move on to a different thread. Let someone else handle the post and the attitude.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;If you find that you are annoyed by a post,&amp;nbsp;let it go, move on to a different thread, let someone else handle it.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;When someone offers a better suggestion than yours, complement them. Sometimes the&amp;nbsp;original poster&amp;nbsp;doesn’t know that it is a better suggestion and when you so indicate , they will more likely select the 'better' option.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;When someone adds to or clarifies your suggestion, positively acknowledge their contribution, for it really is a group effort.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;When it becomes obvious that you 'blew it', either from misreading the question, or responding before coffee, or just being in too much of a hurry in life, accept it and move on. It just seems petty to attempt to defend or offer excuses for our mistakes.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;And most importantly, keep posting, keep contributing, keep helping others.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;In the MSDN SQL Forums, we (Moderators) notice those that are actively and positively contributing to the Forums. We have developed a process where we invite folks to be a designated 'Answerer', where we then actively mentor those 'Answerers' and help them hone their presence and skills and may eventually acknowledge that persistence with promotion to Forum Moderator.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;And it is a lot of hoopla about little. We don't get paid. We don't get free passes. But we do feel good about helping others. And we have some public acknowledgement for our efforts. And let me tell you, reading those two words 'Thank You' can make my day!&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;So keep posting and helping ...&lt;/FONT&gt;&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=When Do You Know That You Know&amp;amp;body=Seen on SQLblog.com: %0A%0A%09When Do You Know That You Know%0A%0Ahttp://sqlblog.com/blogs/arnie_rowland/archive/2008/10/17/when-do-you-know-that-you-know.aspx" target="_blank" title = "Email When Do You Know That You Know"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/17/when-do-you-know-that-you-know.aspx&amp;amp;title=When+Do+You+Know+That+You+Know" target="_blank" title = "Submit When Do You Know That You Know to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/17/when-do-you-know-that-you-know.aspx&amp;amp;phase=2" target="_blank" title = "Submit When Do You Know That You Know to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/17/when-do-you-know-that-you-know.aspx&amp;amp;title=When+Do+You+Know+That+You+Know" target="_blank" title = "Submit When Do You Know That You Know to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/17/when-do-you-know-that-you-know.aspx&amp;amp;title=When+Do+You+Know+That+You+Know" target="_blank" title = "Submit When Do You Know That You Know to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/17/when-do-you-know-that-you-know.aspx&amp;amp;title=When+Do+You+Know+That+You+Know&amp;amp;;top=1" target="_blank" title = "Add When Do You Know That You Know to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=9536" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/arnie_rowland/archive/tags/MSDN+Forums/default.aspx">MSDN Forums</category></item><item><title>Through the Looking Glass: Elegant -or Not?</title><link>http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/03/through-the-looking-glass-elegant-or-not.aspx</link><pubDate>Fri, 03 Oct 2008 06:19:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9203</guid><dc:creator>ArnieRowland</dc:creator><slash:comments>7</slash:comments><comments>http://sqlblog.com/blogs/arnie_rowland/comments/9203.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/arnie_rowland/commentrss.aspx?PostID=9203</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT face=Calibri&gt;&lt;STRONG&gt;SQL Server as an EAV Database -Good Idea?&lt;/STRONG&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT face=Calibri&gt;It seems like I am getting more and more inquires from potential clients asking for help solving performance related issues with what, after some investigation, is using SQL Server as an EAV database. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT face=Calibri&gt;First, for those unfamiliar with the concept, an Entity-Attribute-Value (EAV) database seems disarmingly simple and seductive to many developers. In its simplest form, an EAV database requires only one table, and that table has only&amp;nbsp;four columns: an Identifier, the Entity, the Attribute, and the Value of the Attribute. The entity might be a Customer, the Attribute ‘&lt;I style="mso-bidi-font-style:normal;"&gt;Customer Name&lt;/I&gt;’, and the Value would be the actual customer's name. The same table could also contain Products, or Invoices, or Employees, etc. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT face=Calibri&gt;The beauty of the design is that the developer is free from ever having to consider a table schema. Need another column, that’s just another Attribute/Value pair. Need another table -just a different type of entity. Add as many new entities, or new columns as is desired. One never has to negotiate with a DBA again. There is never a need to have to write that &lt;I style="mso-bidi-font-style:normal;"&gt;messy&lt;/I&gt; and sometimes problematic ALTER TABLE code again. Wonderful concept if you have to distribute changes to the data model in situations where the user (or application) does not have permissions to &lt;I style="mso-bidi-font-style:normal;"&gt;muck around&lt;/I&gt; with the database, the schema, and all of that DBA&amp;nbsp;&lt;I style="mso-bidi-font-style:normal;"&gt;stuff&lt;/I&gt;. There is only one data model, and it is only one table that has four columns. What could go wrong with that?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT face=Calibri&gt;And, of course, it is possible to select the ATTRIBUTE/VALUE pairs for an ENTITY (or group of entities) and PIVOT the data to simulate a table. It seems simple enough –doesn’t it? (If you want more information, just search for &lt;I style="mso-bidi-font-style:normal;"&gt;Common Table&lt;/I&gt;, &lt;I style="mso-bidi-font-style:normal;"&gt;EAV Database&lt;/I&gt;, &lt;I style="mso-bidi-font-style:normal;"&gt;Table of Tables&lt;/I&gt;, etc.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT face=Calibri&gt;In fact, the beauty is in the elegance of the model. Frankly, before the advent of SPARSE columns, you could save a lot of storage when there was a long list of potential attributes (columns), and most entities would only use a small portion of the potential attributes. And it works wonderfully for many situations: obviously, property ‘bags’, somewhat small and static tables –you know, the types of data that will be used to populate various UI controls, or be used for data validation, or internal processes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face=Calibri&gt;I’m not going to address the issues of the increasing complex code required to pivot the &lt;I style="mso-bidi-font-style:normal;"&gt;faux&lt;/I&gt; tables –I’ll leave that to later discussions. Today, I’m interested in performance issues. One client has an EAV database that is approaching two billion rows in that single table –and the performance is starting to become quite troublesome. They really didn’t like my even broaching the subject of a data model redesign –too much ego involved in this &lt;I style="mso-bidi-font-style:normal;"&gt;elegant&lt;/I&gt; design.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face=Calibri&gt;I’m interested in your experiences, cautions, and concerns surrounding performance issues of using SQL Server as an EAV database. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face=Calibri&gt;So tell me, when does something that is elegant from one perspective become burdensome and inelegant from another?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Through the Looking Glass: Elegant -or Not?&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Through the Looking Glass: Elegant -or Not?%0A%0Ahttp://sqlblog.com/blogs/arnie_rowland/archive/2008/10/03/through-the-looking-glass-elegant-or-not.aspx" target="_blank" title = "Email Through the Looking Glass: Elegant -or Not?"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/03/through-the-looking-glass-elegant-or-not.aspx&amp;amp;title=Through+the+Looking+Glass%3a+Elegant+-or+Not%3f" target="_blank" title = "Submit Through the Looking Glass: Elegant -or Not? to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/03/through-the-looking-glass-elegant-or-not.aspx&amp;amp;phase=2" target="_blank" title = "Submit Through the Looking Glass: Elegant -or Not? to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/03/through-the-looking-glass-elegant-or-not.aspx&amp;amp;title=Through+the+Looking+Glass%3a+Elegant+-or+Not%3f" target="_blank" title = "Submit Through the Looking Glass: Elegant -or Not? to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/03/through-the-looking-glass-elegant-or-not.aspx&amp;amp;title=Through+the+Looking+Glass%3a+Elegant+-or+Not%3f" target="_blank" title = "Submit Through the Looking Glass: Elegant -or Not? to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/03/through-the-looking-glass-elegant-or-not.aspx&amp;amp;title=Through+the+Looking+Glass%3a+Elegant+-or+Not%3f&amp;amp;;top=1" target="_blank" title = "Add Through the Looking Glass: Elegant -or Not? to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=9203" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/arnie_rowland/archive/tags/_2600_quot_3B00_SQL+Server_2600_quot_3B00_+EAV+Developer+Performance/default.aspx">&amp;quot;SQL Server&amp;quot; EAV Developer Performance</category></item><item><title>To Blog or Not to Blog -Is that Really the Question?</title><link>http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/01/to-blog-or-not-to-blog-is-that-really-the-question.aspx</link><pubDate>Wed, 01 Oct 2008 14:47:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9158</guid><dc:creator>ArnieRowland</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/arnie_rowland/comments/9158.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/arnie_rowland/commentrss.aspx?PostID=9158</wfw:commentRss><description>&lt;P&gt;Over the past couple of years, the chorus of voices asking, requesting, even demanding that I present my thoughts in a blog has grown so loud I can no longer ignore. As a long time teacher and trainer, I have great respect for the 'written word' -and even more for personal presentation. I thrive on dialogue, I refine and clarify&amp;nbsp;my thoughts when challenged, I crave respectful debate. For I strongly believe that in debate, if we truly listen to each other, we both are changed. For too long, for&amp;nbsp;professional reasons, I have chosen to keep my public voice silent. That now stops.&lt;/P&gt;
&lt;P&gt;So dear reader (not to be confused with the&amp;nbsp;Dear Leader), expect to be challenged, to be cajoled, perhaps to even be confused as I open this pandora's box of exposition. My thoughts will certainly ramble at times, for I cannot easily function in an environment where technology exists free of worldly influences, where 'answers' and 'solutions' are the last word. The only answer to all questions is "It Depends". I freely acknowledge that I will never have 'the answer' -but I will often propose a potential solution in order to direct focus to a possible process that may lead to a temporal resolution.&lt;/P&gt;
&lt;P&gt;Life is not about obtaining 'the answer', but about learning to enjoy the journey. My wife, Carol, in the early days of our 'courtship', taught me an extremely valuable lesson. She seems to never get lost -often she is just having a different adventure than the one she set out on, discovering new things, experiencing life in all of it's spectacular beauty.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;I shall embark upon a journey where we shall have a 'most excellent adventure', so if you choose to accompany me, I welcome your presence.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=To Blog or Not to Blog -Is that Really the Question?&amp;amp;body=Seen on SQLblog.com: %0A%0A%09To Blog or Not to Blog -Is that Really the Question?%0A%0Ahttp://sqlblog.com/blogs/arnie_rowland/archive/2008/10/01/to-blog-or-not-to-blog-is-that-really-the-question.aspx" target="_blank" title = "Email To Blog or Not to Blog -Is that Really the Question?"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/01/to-blog-or-not-to-blog-is-that-really-the-question.aspx&amp;amp;title=To+Blog+or+Not+to+Blog+-Is+that+Really+the+Question%3f" target="_blank" title = "Submit To Blog or Not to Blog -Is that Really the Question? to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/01/to-blog-or-not-to-blog-is-that-really-the-question.aspx&amp;amp;phase=2" target="_blank" title = "Submit To Blog or Not to Blog -Is that Really the Question? to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/01/to-blog-or-not-to-blog-is-that-really-the-question.aspx&amp;amp;title=To+Blog+or+Not+to+Blog+-Is+that+Really+the+Question%3f" target="_blank" title = "Submit To Blog or Not to Blog -Is that Really the Question? to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/01/to-blog-or-not-to-blog-is-that-really-the-question.aspx&amp;amp;title=To+Blog+or+Not+to+Blog+-Is+that+Really+the+Question%3f" target="_blank" title = "Submit To Blog or Not to Blog -Is that Really the Question? to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/arnie_rowland/archive/2008/10/01/to-blog-or-not-to-blog-is-that-really-the-question.aspx&amp;amp;title=To+Blog+or+Not+to+Blog+-Is+that+Really+the+Question%3f&amp;amp;;top=1" target="_blank" title = "Add To Blog or Not to Blog -Is that Really the Question? to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=9158" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/arnie_rowland/archive/tags/Community+_2600_quot_3B00_SQL+Community_2600_quot_3B00_+Teaser+_2600_quot_3B00_Developer+Community_2600_quot_3B00_/default.aspx">Community &amp;quot;SQL Community&amp;quot; Teaser &amp;quot;Developer Community&amp;quot;</category></item></channel></rss>