<?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>Search results matching tag 'sqlserver'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=sqlserver&amp;orTags=0</link><description>Search results matching tag 'sqlserver'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Bootstrapping SQL Server bloggers and blog readers with Twitter!</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2013/03/03/bootstrapping-sql-server-bloggers-and-blog-readers-with-twitter.aspx</link><pubDate>Sun, 03 Mar 2013 23:20:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48014</guid><dc:creator>jamiet</dc:creator><description>&lt;p&gt;On 17th December 2009 Aaron Nelson (you may know him as &lt;a href="https://twitter.com/sqlvariant" target="_blank"&gt;@sqlvariant&lt;/a&gt;) had a great idea – he invented the &lt;a href="https://twitter.com/search?q=sqlhelp" target="_blank"&gt;#SQLHelp hashtag&lt;/a&gt;; with &lt;a href="http://www.brentozar.com/archive/2009/12/i-need-sqlhelp/" target="_blank"&gt;a little kickstart from Brent Ozar&lt;/a&gt; the idea grew and #SQLHelp &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/12/17/archiving-sqlhelp-tweets.aspx" target="_blank"&gt;became a successful QnA channel&lt;/a&gt; in the SQL Server community and is today going from strength to strength.&lt;/p&gt;  &lt;p&gt;I’m a great advocate of SQLHelp and not just because it builds bridges between those needing help with the people that are able to provide that help. It is also a great exemplar of the power of Twitter and, more specifically, the power of coalescing open data around a shared interest. As I thought more about this I figured there must be a way that the SQL Server community could further leverage what I think is a nascent opportunity around hashtags and as my mind wandered I thought about Steve Gillmor’s post from 5th May 2009 &lt;a href="http://techcrunch.com/2009/05/05/rest-in-peace-rss/" target="_blank"&gt;Rest in Peace, RSS&lt;/a&gt; in which he opined that RSS (the syndication technology that bootstrapped the blogging craze in the first decade of this century) should be replaced by Twitter feeds. Here’s a choice quote:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;It’s time to get completely off RSS and switch to Twitter. RSS just doesn’t cut it anymore.&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Steve isn’t averse to &lt;a href="http://www.zdnet.com/blog/gillmor/office-still-dead/223" target="_blank"&gt;putting the cat among the pigeons with his blog posts&lt;/a&gt; and in this case I think he has a salient point. Whilst RSS isn’t a consumer technology (i.e. none of my none-techie friends have a clue what it is), Twitter &lt;a href="http://www.yoma.co.uk/twitter-to-reach-500-million-users/" target="_blank"&gt;most definitely is&lt;/a&gt;. One downside of RSS (in my opinion) is that most blog authors simply publish their outpourings then hope that it gets some &lt;a href="http://en.wikipedia.org/wiki/Google_juice" target="_blank"&gt;Google juice&lt;/a&gt; and catches people’s attention. On the other hand, there are still a lot of people that use RSS readers and those people have a problem too – where do they find good bloggers and good blog material?&lt;/p&gt;  &lt;p&gt;So, consider this:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Lots of people are blogging great stuff but don’t have a way of telling people about it &lt;/li&gt;    &lt;li&gt;Lots of people want to learn from great bloggers but might not know where to go and find that material &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Is there an opportunity to use Twitter to build bridges between bloggers and blog readers in a similar manner to how #SQLHelp has done between questioners and answerers? I think there is and that’s when I hit upon an idea – perhaps we as a community could (as &lt;a title="https://ifttt.com/" href="https://ifttt.com/"&gt;https://ifttt.com/&lt;/a&gt; expertly put it) &lt;i&gt;put the internet to work for us.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Here is my suggestion. If you as a blog author tweet a link to a newly published SQL Server related blog post and use the hashtags &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;#sqlserver&lt;/b&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;amp; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;#blogged&lt;/b&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;and also a hashtag to indicate the language then that tweet (and the all important link) will be available at &lt;a title="https://twitter.com/search?q=sqlserver%20blogged" href="https://twitter.com/search?q=sqlserver%20blogged"&gt;https://twitter.com/search?q=sqlserver%20blogged&lt;/a&gt;. One can then use Twitter’s ability to make search results available as an RSS feed and subscribe to that RSS feed in one’s RSS reader of choice.&lt;/p&gt;  &lt;p&gt;Is that a good idea? I think it is, but then again its my idea so I would, wouldn’t I? I hope a few people out there will get on board with this initiative (perhaps even blog and tweet about it) and hopefully if it can became a fraction as successful as SQLHelp.&lt;/p&gt;  &lt;hr /&gt;  &lt;h2&gt;Call to action for bloggers&lt;/h2&gt;  &lt;p&gt;If you as a blogger want to get involved with this initiative then its really very simple. Tweet a link to your SQL Server related blog posts along with a title and the following three hashtags&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;#sqlserver &lt;/li&gt;    &lt;li&gt;#blogged &lt;/li&gt;    &lt;li&gt;ISO 639-1 code indicating the language that the blog post is written in &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;i&gt;*ISO 639-1 is a standard for 2-digit language codes. You can view the complete list on the International Standards Organisations (ISOs) website at &lt;/i&gt;&lt;/font&gt;&lt;a title="http://www.loc.gov/standards/iso639-2/php/English_list.php" href="http://www.loc.gov/standards/iso639-2/php/English_list.php"&gt;&lt;font color="#0000ff"&gt;&lt;i&gt;http://www.loc.gov/standards/iso639-2/php/English_list.php&lt;/i&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt;&lt;i&gt; although here are a few to get you on your way:&lt;/i&gt;&lt;/font&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;font color="#0000ff"&gt;&lt;i&gt;en – English&lt;/i&gt;&lt;/font&gt; &lt;/li&gt;      &lt;li&gt;&lt;i&gt;&lt;font color="#0000ff"&gt;de – German&lt;/font&gt;&lt;/i&gt; &lt;/li&gt;      &lt;li&gt;&lt;font color="#0000ff"&gt;&lt;i&gt;fr – French&lt;/i&gt;&lt;/font&gt; &lt;/li&gt;      &lt;li&gt;&lt;font color="#0000ff"&gt;&lt;i&gt;es – SPanish&lt;/i&gt;&lt;/font&gt; &lt;/li&gt;      &lt;li&gt;&lt;font color="#0000ff"&gt;&lt;i&gt;zh – Chinese&lt;/i&gt;&lt;/font&gt; &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#000000"&gt;I would also encourage you to use other hashtags to more specifically define the subject matter as this might make for some interesting analysis later.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;As an example, here is a tweet that I just tweeted for my blog post &lt;a title="http://sqlblog.com/blogs/jamie_thomson/archive/2013/02/07/obtaining-rowcounts-when-using-composable-dml.aspx" href="http://sqlblog.com/blogs/jamie_thomson/archive/2013/02/07/obtaining-rowcounts-when-using-composable-dml.aspx" target="_blank"&gt;Obtaining rowcounts when using Composable DML [T-SQL]&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="https://twitter.com/jamiet/status/308351607924486144" target="_blank"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_5818F6E1.png" width="463" height="308" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;a title="https://twitter.com/jamiet/status/308351607924486144" href="https://twitter.com/jamiet/status/308351607924486144"&gt;&lt;i&gt;https://twitter.com/jamiet/status/308351607924486144&lt;/i&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Also, please blog about this yourselves (at the very least that gives you an opportunity to add your first tweet to the SQL Server twitter RSS stream).&lt;/p&gt;  &lt;h2&gt;Call to action for blog readers&lt;/h2&gt;  &lt;p&gt;If you are someone who enjoys reading SQL Server related blog posts wants to get involved in this initiative simply subscribe to the appropriate RSS feed in your RSS reader of choice and watch as (hopefully) great content flows into your RSS reader without you having to lift a finger. Here are a few such URLs:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23en%20-rt" href="http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23en%20-rt" target="_blank"&gt;http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23en%20-rt&lt;/a&gt; (SQL Server blog posts published in English) &lt;/li&gt;    &lt;li&gt;&lt;a title="http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23en%20-rt" href="http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23de%20-rt" target="_blank"&gt;http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23de%20-rt&lt;/a&gt;&amp;#160; (SQL Server blog posts published in German) &lt;/li&gt;    &lt;li&gt;&lt;a title="http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23en%20-rt" href="http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23fr%20-rt" target="_blank"&gt;http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23fr%20-rt&lt;/a&gt;&amp;#160; (SQL Server blog posts published in French) &lt;/li&gt;    &lt;li&gt;&lt;a title="http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23en%20-rt" href="http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23es%20-rt" target="_blank"&gt;http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23es%20-rt&lt;/a&gt;&amp;#160; (SQL Server blog posts published in Spanish) &lt;/li&gt;    &lt;li&gt;&lt;a title="http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23en%20-rt" href="http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23zh%20-rt" target="_blank"&gt;http://search.twitter.com/search.rss?q=%23sqlserver%20%23blogged%20%23zh%20-rt&lt;/a&gt;&amp;#160; (SQL Server blog posts published in Chinese) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Thanks to Dan English for pointing out in the comments that the search URL can be amended to remove retweets.&lt;/em&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;That’s all there is to it. Fingers crossed that this initiative catches on because there is a fantastic knowledge sharing opportunity here – let’s &lt;i&gt;put the internet to work for us&lt;/i&gt; to make it happen.&lt;/p&gt;  &lt;p&gt;I have one more thing to say, a line that I stole from my ex-colleague &lt;a href="http://howard.vanrooijen.co.uk/" target="_blank"&gt;Howard van Rooijen&lt;/a&gt;, one which I am a great believer in and which I believe is very pertinent here:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;Work smarter, not harder.&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;</description></item><item><title>A SQL Saturday in Cambridge – Buck Woody’s Ragtime Database Workshop</title><link>http://sqlblog.com/blogs/buck_woody/archive/2012/07/30/a-sql-saturday-in-cambridge-buck-woody-s-ragtime-database-workshop.aspx</link><pubDate>Mon, 30 Jul 2012 20:49:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:44506</guid><dc:creator>BuckWoody</dc:creator><description>&lt;p&gt;&lt;img style="margin:0px 12px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" border="0" align="left" src="http://s0.geograph.org.uk/geophotos/03/03/79/3037997_4fbc532b.jpg" width="143" height="191" /&gt;The SQL Server community is really engaged. They are an active bunch on Twitter, Facebook and LinkedIn, they help each other on forums, they attend conferences. But that isn&amp;rsquo;t enough interaction &amp;ndash; the community started a grass-roots effort to hold local conferences on a Saturday. Free conferences. Odds are there&amp;rsquo;s one near you&amp;hellip; &lt;a href="http://www.sqlsaturday.com/default.aspx"&gt;http://www.sqlsaturday.com/default.aspx&lt;/a&gt; &amp;hellip; and if not, you can start one.&lt;/p&gt;
&lt;p&gt;Sessions at SQL Saturdays are all over the map, and there&amp;rsquo;s something for (almost) everyone, from Business Intelligence to Database Administration and Development. Some of these events have &amp;ldquo;training days&amp;rdquo; associated with them &amp;ndash; longer, more in-depth training that has a fee. I&amp;rsquo;ve taught quite a few of these, and of course I&amp;rsquo;ve done my share of other presentations at the events as well.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m honored to be presenting at the Cambridge, UK SQL Saturday this year (&lt;a href="http://www.sqlsaturday.com/162/eventhome.aspx"&gt;http://www.sqlsaturday.com/162/eventhome.aspx&lt;/a&gt;) in September. For one thing, I used to live near there and plan to take the family with me to show them my old stomping grounds. For another, I&amp;rsquo;m excited about the sessions I get to present.&lt;/p&gt;
&lt;h1&gt;The Training Day&lt;/h1&gt;
&lt;p&gt;Friday I&amp;rsquo;ll be leading one of those training days &amp;ndash; and I&amp;rsquo;ll be delivering a very important workshop, where I&amp;rsquo;ll cover SQL Server &amp;ndash; all of it. OK, maybe not *all* of it, and maybe you won&amp;rsquo;t be a complete PhD after the class, but we&amp;rsquo;ll do a complete immersion in learning SQL Server as a product from the ground up. It&amp;rsquo;s a workshop format, so no sitting and listening to someone droning on and on for hours. You&amp;rsquo;ll be asked to bring a laptop, and do actual work on the product from the first few minutes of the 8-hour day to the last of the workshop. You&amp;rsquo;ll be jumping in from the very start, and in deep until the end of the day.&lt;/p&gt;
&lt;p&gt;&lt;img style="float:right;display:inline;" align="right" src="http://3.bp.blogspot.com/-puPgE6XkWD0/UAQG0UcefOI/AAAAAAAAAU4/ozJoS9m_vxQ/s320/bucks+ragtimescale.jpg" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;But wait &amp;ndash; this is kind of a &amp;ldquo;beginner&amp;rdquo; thing, isn&amp;rsquo;t it? Shouldn&amp;rsquo;t I be doing something on the internals of the locking mechanism of the hashing system in memory on x64 architectures, with complete code diagrams? Shouldn&amp;rsquo;t you be able to snatch the T-SQL pebble from the master&amp;rsquo;s hand when you&amp;rsquo;re done, or be able to shoot the wings off of an XML fly when you&amp;rsquo;re done?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We &lt;em&gt;need&lt;/em&gt; this kind of session. For one thing, you can get that depth in other sessions. For another, we need to have a place for someone that wants to learn SQL Server but doesn&amp;rsquo;t have a lot of time to do that. We need something relatively inexpensive that a boss can send a developer, administrator or new employee to learn how to take over the SQL Server, or augment the DBA team. We need a place where good habits are formed, and where someone can branch out into a new part of technology, into one of the best places in tech to be &amp;ndash; data.&lt;/p&gt;
&lt;p&gt;After you&amp;rsquo;re done with this session, stick around for Saturday &amp;ndash; now all those presentations will make more sense. And you&amp;rsquo;ll be able to network with a lot of folks that already do what you learn about on Friday, and who knows &amp;ndash; find out where to look for work in this amazing career field.&lt;/p&gt;
&lt;h1&gt;What will you learn?&lt;/h1&gt;
&lt;p&gt;You&amp;rsquo;ll start with knowing that SQL Server is a database product by Microsoft. That&amp;rsquo;s all the pre-requisite you need, other than being the technology industry. From there we&amp;rsquo;ll cover:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:'Arial','sans-serif';font-size:9pt;"&gt;The Data Professional Career &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:'Arial','sans-serif';font-size:9pt;"&gt;Installing, setting up and configuring the right Edition of SQL Server for the job (including SQL Azure)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:'Arial','sans-serif';font-size:9pt;"&gt;Database engine fundamentals &amp;ndash; How does the engine work, what are the components, what can you configure and tune&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:'Arial','sans-serif';font-size:9pt;"&gt;Transactions, Locking and Blocking&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:'Arial','sans-serif';font-size:9pt;"&gt;Creating and managing databases&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:'Arial','sans-serif';font-size:9pt;"&gt;Database options and their impact&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:'Arial','sans-serif';font-size:9pt;"&gt;Database Objects including Tables, Views, Stored Procedures, Functions and more&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:'Arial','sans-serif';font-size:9pt;"&gt;General maintenance including backups and recovery&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:'Arial','sans-serif';font-size:9pt;"&gt;Security fundamentals including users, roles, and object security&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:'Arial','sans-serif';font-size:9pt;"&gt;Performance tuning fundamentals including indexes and query research tools&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:'Arial','sans-serif';font-size:9pt;"&gt;Multiple resources to help you get to the next level&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;In 8-hours. Come ready to learn. You&amp;rsquo;ll need a laptop, and complete focus for a few hours. You&amp;rsquo;ll leave with the ability to manage and work with a SQL Server system &amp;ndash; and you&amp;rsquo;ll learn what to do next.&lt;/p&gt;
&lt;h1&gt;Who should go?&lt;/h1&gt;
&lt;p&gt;If you&amp;rsquo;re new to Relational Database Management Systems (RDBMS&amp;rsquo;s) but not technology, and you&amp;rsquo;re looking to expand your technical reach, coming from another platform (to be sure, there will be some repeat info here), want to explore a new tech career area, want to learn more about developing against an RDBMS or know someone who does.&lt;/p&gt;
&lt;p&gt;The registration for the training day is here: &lt;a href="https://www.regonline.co.uk/?eventID=1120017&amp;amp;rTypeID=242030"&gt;https://www.regonline.co.uk/?eventID=1120017&amp;amp;rTypeID=242030&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;What else are you doing whilst (I love saying whilst) there?&lt;/h1&gt;
&lt;p&gt;I&amp;rsquo;m also pleased to be providing the keynote on Saturday. (I can&amp;rsquo;t wait to see what I&amp;rsquo;m going to say), as well as two other sessions &amp;ndash; more on those soon. My daughter wants to be a Zoologist, so while we&amp;rsquo;re there we&amp;rsquo;ll be visiting the Zoology museum at one of the colleges, I&amp;rsquo;ll probably eat too much and potentially go punting. I&amp;rsquo;ll also mingle with you, my SQL Family, and we&amp;rsquo;ll just generally have a good time.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re not busy in September, and even if you are, make plans to come check all this out. It promises to be awesome. (Americans think everything is awesome)&lt;/p&gt;
&lt;p&gt;See you there.&lt;/p&gt;</description></item><item><title>Big Data and the Cloud - More Hype or a Real Workload?</title><link>http://sqlblog.com/blogs/buck_woody/archive/2011/10/18/big-data-and-the-cloud-more-hype-or-a-real-workload.aspx</link><pubDate>Tue, 18 Oct 2011 13:57:36 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:39156</guid><dc:creator>BuckWoody</dc:creator><description>&lt;p&gt;Last week Microsoft announced several new offerings for “Big Data” - and since I’m a stickler for definitions, I wanted to make sure I understood what that really means. What is “Big Data”? What size hard drive is that? After all, my laptop has 1TB of storage - is my laptop “Big Data”?&lt;/p&gt;  &lt;p&gt;There are actually a few definitions for this term, most notably those involving the &lt;a href="http://nosql.mypopescu.com/post/9621746531/a-definition-of-big-data" target="_blank"&gt;“Four V’s” Volume, Velocity, Variety and Variability&lt;/a&gt;. Others &lt;a href="http://nosql.mypopescu.com/post/10120087314/big-data-and-the-4-vs-volume-velocity-variety" target="_blank"&gt;disagree with this&lt;/a&gt; definition. I tend to try and get things into their simplest form, so I’m using this definition for myself:&lt;/p&gt;  &lt;p align="center"&gt;&lt;font color="#c0504d" size="3"&gt;Big data is defined as a &lt;em&gt;large set &lt;/em&gt;of &lt;em&gt;computationally expensive &lt;/em&gt;data that is &lt;em&gt;worked on simultaneously&lt;/em&gt;.&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;Let me flesh that out a&amp;#160; little. To be sure, “Big Data” has a larger size than say a few megabytes. The reason this is important is that it takes special hardware to be able to move large sets of data around, store it, process it and so on. (&lt;font color="#c0504d"&gt;large set&lt;/font&gt;)&lt;/p&gt;  &lt;p&gt;If you store a LOT of data, but only use a small portion of it at a time, that really isn’t super-hard to do. It’s mainly a storage issue at that point. But, if you do need to work with a large portion of the data at one time, then the memory, CPU and transfer components of the system have to adapt to be responsive - new ways to work with that data (game theory, knot-algorithms, map-reduce, etc.) need to be brought into play. (&lt;font color="#c0504d"&gt;computationally expensive&lt;/font&gt;)&lt;/p&gt;  &lt;p&gt;Once that data is loaded into the processing area (memory or whatever other mechanism is used) it must be worked on in parallel to come back in a reasonable time. You have two options here - you can scale the system up with more internal hardware (CPU’s, memory and so on) or you can scale it out to have multiple systems work on it at the same time using paradigms such as map/reduce and so on. Actually, when you lay this out in an architecture diagram, scale up or out doesn’t actually change the logical structure of the process - in scale out the network becomes the bus, and the nodes become more RAM and computing power. Of course, there are changes in code for how you stitch the workload back together. (&lt;font color="#c0504d"&gt;worked on simultaneously&lt;/font&gt;)&lt;/p&gt;  &lt;p&gt;So back to the original question. Is Big Data, as I have defined it here, a workload for Windows and SQL Azure? Absolutely! In fact, it’s probably one of the main workloads, and I believe it represents the latest, and perhaps also the earliest frontier of computing. Jim &lt;a href="http://research.microsoft.com/en-us/um/people/gray/" target="_blank"&gt;Gray, a former researcher here at Microsoft and a hero of mine, was working on this very topic.&lt;/a&gt; I believe as he did - all computing is simply an interface over data. &lt;/p&gt;  &lt;p&gt;Microsoft has multiple offerings on the topic of Big Data. In posts that follow from myself and my co-workers, we’ll explore when and where you use each one. Whether you are a data professional or a developer, this is the new frontier - &lt;a href="http://www.straightpathsql.com/archives/2011/10/microsoft-loves-your-big-data/" target="_blank"&gt;don’t wait to educate yourself&lt;/a&gt; on how to leverage Big Data for your organization. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Hadoop on Windows Azure and SQL Server&amp;#160; &lt;/strong&gt;- Microsoft’s &lt;a href="http://www.hortonworks.com/the-whys-behind-the-microsoft-and-hortonworks-partnership/" target="_blank"&gt;partnership to include Hadoop workloads on Windows Azure&lt;/a&gt; and &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27584" target="_blank"&gt;SQL Server/Parallel Data Warehouse (PDW)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;LINQ to HPC &lt;/strong&gt;- Microsoft’s High-Performance Computing SKU of &lt;a href="http://blogs.technet.com/b/windowshpc/archive/2011/05/20/dryad-becomes-linq-to-hpc.aspx" target="_blank"&gt;HPC is now in Azure&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Windows Azure Table Storage &lt;/strong&gt;- A &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh508997.aspx" target="_blank"&gt;key/value pair type storage with full partitioning&lt;/a&gt; that is immediately consistent, able to handle huge loads of data and works with any REST-compatible language&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;strong&gt;Other offerings &lt;/strong&gt;- Including the new &lt;a href="http://www.microsoft.com/en-us/sqlazurelabs/default.aspx" target="_blank"&gt;Data Explorer&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/news/headlines/daytona-071811.aspx" target="_blank"&gt;Project Daytona (with a Big Data Toolkit for Scientists and researchers)&lt;/a&gt;, &lt;a href="http://www.microsoft.com/sqlserver/en/us/future-editions/SQL-Server-2012-breakthrough-insight.aspx" target="_blank"&gt;Power View&lt;/a&gt; and more. &lt;/p&gt;  &lt;p&gt;The era of Big Data is here. And you can use Windows and SQL Azure to bring it to your organization. &lt;/p&gt;</description></item><item><title>Building a database installer with WiX, datadude and Visual Studio 2010</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2011/02/10/building-a-database-installer-with-wix-datadude-and-visual-studio-2010.aspx</link><pubDate>Thu, 10 Feb 2011 21:45:17 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:33387</guid><dc:creator>jamiet</dc:creator><description>&lt;p&gt;&lt;font size="3"&gt;Today I have been using Windows Installer XML (WiX) to build an installer (.msi file) that would install a SQL Server database on a server of my choosing; the source code for that database lives in datadude (a tool &lt;/font&gt;&lt;a href="http://www.sqlservercentral.com/questions/visual+studio/72236/" target="_blank"&gt;&lt;font size="3"&gt;which you may know by one of quite a few other names&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;). The basis for this work was a most excellent blog post by Duke Kamstra entitled &lt;/font&gt;&lt;a href="http://blogs.msdn.com/b/dukek/archive/2009/10/19/implementing-a-wix-installer-that-calls-the-gdr-version-of-vsdbcmd-exe.aspx" target="_blank"&gt;&lt;font size="3"&gt;Implementing a WIX installer that calls the GDR version of VSDBCMD.EXE&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt; which coves the delicate intricacies of doing this – particularly how to call &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd193283.aspx" target="_blank"&gt;&lt;font size="3"&gt;Vsdbcmd.exe&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt; in a &lt;/font&gt;&lt;a href="http://wix.sourceforge.net/manual-wix3/wix_xsd_customaction.htm" target="_blank"&gt;&lt;font size="3"&gt;CustomAction&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;. Unfortunately there are a couple of things wrong with Duke’s post:&lt;/font&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;font size="3"&gt;Searching for “datadude wix” didn’t turn it up in the first page of search results and hence it took me a long time to find it. And I knew that it existed. If someone else were after a post on using WiX with datadude its likely that they would never have come across Duke’s post and that would be a great shame because its the definitive post on the matter.&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font size="3"&gt;It was written in October 2009 and had not been updated for Visual Studio 2010.&lt;/font&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;font size="3"&gt;Well, this blog post is an attempt to solve those problems. Hopefully I’ve solved the first one just by following a few of &lt;/font&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/12/21/blogging-tips-for-sql-server-professionals.aspx" target="_blank"&gt;&lt;font size="3"&gt;my blogging SEO tips&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt; while writing this blog post, in the rest of it I will explain how I took Duke’s code and updated it to work in Visual Studio 2010.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;If you need to build a database installer using WiX, datadude and Visual Studio 2010 then you still need to follow Duke’s blog post so go and do that now. Below are the amendments that I made that enabled the project to get built in Visual Studio 2010:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;font size="3" face="Calibri"&gt;In VS2010 datadude’s output files have changed from being called Database.&amp;lt;suffix&amp;gt; to &amp;lt;ProjectName&amp;gt;_Database.&amp;lt;suffix&amp;gt;. Duke’s code was referencing the old file name formats.&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;Duke used $(var.SolutionDir) and relative paths to point to datadude artefacts I have replaced these with Votive Project References &lt;/font&gt;&lt;a href="http://wix.sourceforge.net/manual-wix3/votive_project_references.htm"&gt;&lt;font size="3"&gt;http://wix.sourceforge.net/manual-wix3/votive_project_references.htm&lt;/font&gt;&lt;/a&gt;&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font size="3" face="Calibri"&gt;I commented out all references to MicrosoftSqlTypesDbschema in DatabaseArtifacts.wxi. I don't think this is produced in VS2010 (I may be wrong about that but it wasn't in the output from my project)&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font size="3" face="Calibri"&gt;Similarly I commented out component MicrosoftSqlTypesDbschema in VsdbcmdArtifacts.wxi. It wasn't where Duke's code said it should have been so am assuming/hoping it isn't needed.&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font size="3" face="Calibri"&gt;Duke's &lt;font face="Consolas"&gt;?define&lt;/font&gt; block to work out appropriate SrcArchPath actually wasn't working for me (i.e. &lt;font face="Consolas"&gt;&amp;lt;?if $(var.Platform)=x64 ?&lt;/font&gt;&amp;gt; was evaluating to false)&amp;#160; so I just took out the conditional stuff and declared the path explicitly to the “Program Files (x86)” path. The old code is still there though if you need to put it back.&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font size="3" face="Calibri"&gt;None of the &lt;font face="Consolas"&gt;&amp;lt;RegistrySearch&amp;gt;&lt;/font&gt; stuff is needed for VS2010 - so I commented it all out!&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font size="3" face="Calibri"&gt;Changed to use &lt;font face="Consolas"&gt;/manifest &lt;/font&gt;option rather than &lt;font face="Consolas"&gt;/model&lt;/font&gt; option on vsdbcmd.exe command-line. Personal preference is all!&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font size="3" face="Calibri"&gt;Added a new component in order to bundle along the vsdbcmd.exe.config file&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font size="3" face="Calibri"&gt;Made the install of the Custom Action dependent on the relevant feature being selected for install. This one is actually really important – deselecting the database feature for installation does not, by default, stop the CustomAction from executing and so would cause an error - so that scenario needs to be catered for&lt;/font&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;font size="3"&gt;I have made my amended solution available for download at: &lt;/font&gt;&lt;a title="http://cid-550f681dad532637.office.live.com/self.aspx/Public/BlogShare/20110210/InstallMyDatabase.zip" href="http://cid-550f681dad532637.office.live.com/self.aspx/Public/BlogShare/20110210/InstallMyDatabase.zip"&gt;&lt;font size="3"&gt;http://cid-550f681dad532637.office.live.com/self.aspx/Public/BlogShare/20110210/InstallMyDatabase.zip&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt; It contains two projects: the WiX project and the datadude project that is the source to be deployed (for demo purposes it only contains one table).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_640907F6.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_4817D2FE.png" width="407" height="335" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;I have also made the .msi available although in order that it gets through file blockers I changed the name from InstallMyDatabase.msi to InstallMyDatabase.ms_ – simply rename the file back once you have downloaded it from: &lt;/font&gt;&lt;a title="http://cid-550f681dad532637.office.live.com/self.aspx/Public/BlogShare/20110210/InstallMyDatabase.ms%5E_" href="http://cid-550f681dad532637.office.live.com/self.aspx/Public/BlogShare/20110210/InstallMyDatabase.ms%5E_"&gt;&lt;font size="3"&gt;http://cid-550f681dad532637.office.live.com/self.aspx/Public/BlogShare/20110210/InstallMyDatabase.ms%5E_&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt; .You can try it out for yourself – the only thing it does is dump the files into %Program Files%\MyDatabase and uses them to install a database onto a server of your choosing with a name of your choosing - no damaging side-affects. I will caveat this by saying “it works on my machine” and, not having access to a plethora of different machines, I haven’t tested it anywhere else. One potential issue that I know of is that Vsdbcmd.exe has a &lt;a href="http://msdn.microsoft.com/en-us/library/dd193258.aspx" target="_blank"&gt;dependency on SQL Server CE&lt;/a&gt; although if you have SQL Server tools or Visual Studio installed you should be fine. Unfortunately its not possible to bundle along the SQL Server CE installer in the .msi because Windows will not allow you to call one installer from inside another – the recommended way to get around this problem is to build a bootstrapper to bundle the whole lot together but doing that is outside the scope of this blog post. If you discover any other issues then please let me know.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Here are the screenshots from the installer:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_1879B472.png"&gt;&lt;font size="3"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_7DCD1858.png" width="522" height="408" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_14ABE9D5.png"&gt;&lt;font size="3"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_2BF6EE46.png" width="522" height="408" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_029FA648.png"&gt;&lt;font size="3"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_15E05CE7.png" width="524" height="409" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_74148455.png"&gt;&lt;font size="3"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_322D9F07.png" width="524" height="410" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_7765F630.png"&gt;&lt;font size="3"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_0F1D2D97.png" width="524" height="409" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_141F6B46.png"&gt;&lt;font size="3"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_64814CB9.png" width="526" height="411" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;And once installed….&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_7CEF886A.png"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_109C71FF.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_2808D80F.png" width="322" height="191" /&gt;&lt;/a&gt;&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Hope this is useful!&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet"&gt;&lt;font size="3"&gt;@jamiet&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>TechEd 2010 Day Two – No SQL Server in Sight</title><link>http://sqlblog.com/blogs/buck_woody/archive/2010/06/08/teched-2010-day-two-no-sql-server-in-sight.aspx</link><pubDate>Tue, 08 Jun 2010 10:12:07 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:26017</guid><dc:creator>BuckWoody</dc:creator><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Today I worked the booth at TechEd 2010, manning the new &amp;ldquo;Surface&amp;rdquo; computer, which is just the coolest object on the planet. After that I didn&amp;rsquo;t attend a single SQL Server session &amp;ndash; instead I&amp;rsquo;ve been frequenting SharePoint, Microsoft Office, and even the High-Performance Computing sessions. The reason is that I get really high quality SQL Server presentations at PASS, SQL Saturdays, and online from Microsoft and other vendors. While there are SQL Server sessions here (after all, I&amp;rsquo;m giving one of them!) I tend to try and see things that I don&amp;rsquo;t normally get to learn about. And the cross-pollination between those technologies and mine is fantastic. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&lt;img height="305" width="417" src="http://sqlblog.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-79-79/0172.2010-TechEd-New-Orleans-D2-012.JPG" border="0" /&gt;&amp;nbsp; &lt;img height="305" width="413" src="http://sqlblog.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-79-79/5481.2010-TechEd-New-Orleans-D2-003.JPG" border="0" /&gt;&amp;nbsp;&lt;img height="306" width="405" src="http://sqlblog.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-79-79/8424.2010-TechEd-New-Orleans-D2-001.JPG" border="0" /&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;I&amp;rsquo;ve even managed to go to an Entity Framework presentation for the developers. I actually have (a little) more respect for that technology &amp;ndash; and I&amp;rsquo;ve modified my presentation to encompass more of that information.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;So whenever you have the chance, take a walk outside your comfort zone. Even at PASS and SQL Saturdays (and certainly online) you can investigate technologies other than the ones you know best.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;</description></item><item><title>It will happen on a spring day in May...</title><link>http://sqlblog.com/blogs/arnie_rowland/archive/2010/02/22/it-will-happen-on-a-spring-day-in-may.aspx</link><pubDate>Mon, 22 Feb 2010 16:20:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:22557</guid><dc:creator>ArnieRowland</dc:creator><description>&lt;P&gt;&lt;FONT color=#008000&gt;&lt;STRONG&gt;&lt;FONT size=4&gt;"The world's favorite season is the spring.&amp;nbsp;&lt;BR&gt;All things seem possible in May."&lt;BR&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size=3 face="Times New Roman"&gt;-&amp;nbsp;&amp;nbsp; Edwin Way Teale&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This spring, the Portland, Oregon, development community is coming together in a way never experienced before.&lt;/P&gt;
&lt;P&gt;Using the University of Portland campus, &lt;STRONG&gt;SQL Saturday and&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;Portland CodeCamp&lt;/STRONG&gt; are combining and coordinating efforts to bring 700-800 regional technology professionals together for the opportunity to immerse themselves in seminars, presentations, group exploration, and networking -using both the 'professional conference' and the 'unconference' models. Participants will be able to engage in their preferred technology, as well as to 'sample' other options&lt;/P&gt;
&lt;P&gt;Mark your calendar! &lt;STRONG&gt;Portland SQL Saturday and Code Camp&amp;nbsp;2010 is scheduled for May 22, 2010&lt;/STRONG&gt;, at the University of Portland campus. The event is &lt;STRONG&gt;scheduled from 8:00 AM until 10:00 PM&lt;/STRONG&gt;. The UP facility offers a great venue –including larger, fully equipped (and air conditioned) meeting rooms, excellent parking, access to public transportation, and easy bike commuting. Admittance to this event is free, all costs are covered by donations and sponsorships. Please register soon as seating is limited, and let friends and colleages know about the event. &lt;/P&gt;
&lt;P&gt;Register &lt;A title=Registration href="http://www.eventbrite.com/event/571806288"&gt;here&lt;/A&gt;&amp;nbsp;to attend.&lt;/P&gt;
&lt;P&gt;Portland SQLSaturday is encouraging presentations related to interoperability of any of the SQL platforms, including T-SQL (SQL Server), PostgreSQL, MySQL, and PL-SQL. Abstracts for Platform specific sessions are also encouraged. Most sessions are one hour fifteen minutes (1:15), and a few&amp;nbsp; 'deep dive' sessions will be longer (2.5 hour) in duration. The 'deep dive' sessions will be scheduled for 7:00 PM (after the snacks and refreshments.) Also, through out the day, there may be opportunities for 30 minute sessions. (Be sure to indicate your preferred session length.) Remember, in addition to folks working with a specific SQL platform, there will be a large number of developers seeking information about using one or more SQL variants to create solutions to their problems, as well as needing to work with multiple SQL platforms.&lt;/P&gt;
&lt;P&gt;Consider adding your presentation abstract &lt;A title="Submit Sessons" href="http://www.sqlsaturday.com/27/callforspeakers.aspx"&gt;here&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;If you are in the Pacific Northwest in May, don't miss this event!&lt;/STRONG&gt;&lt;/P&gt;</description></item><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><description>&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;" class=MsoNormal&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Database Design. Sounds simple, and at the same time, demanding. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;" class=MsoNormal&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;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 under continuous evolution.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;" class=MsoNormal&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Or, you are trying to support a database that someone else allegedly 'designed'. Yes, you know it is bad, held together with more of a wish than a demand. Yes, you would just love to take the time and 'do it right' -but let's get real, it's impossible. Too many moving parts, too many applications, too many folks depend on what is there right now. No way can you make 'design' changes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;" class=MsoNormal&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Help is now available in the form of a new Forum on the MSDN and TechNet Forums sites. The Database Design Forum is moderated by a group of MVPs from around the world. They have a lot of experience with database designs -good and not so good. Heck, even some of them have written books on the subject.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;" class=MsoNormal&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Sure there are other forums and newsgroups where you can get help, where you can ask questions, where you can seek 'work-a-rounds'. At the MSDN/TechNet Database Design Forum, you can ask the questions no one wants to hear, you can challenge the 'conventional wisdom' of database designers, and you can propose your design and ask folks to help you see if there are any flaws. At the MSDN/TechNet Database Design Forum you will not be berated, belittled, demeaned, or in any way dismissed just because you are diligently working to do something different, or support someone else's mistake. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;" class=MsoNormal&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;At the same time though, expect to be asked difficult questions, expect to explain and educate about your design decisions, expect to have your thoughts challenged. For it is through rigorous examination that your designs and your skills will improve. And everyone participating will learn from the process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;" class=MsoNormal&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;A title="MSDN Forum" href="http://social.msdn.microsoft.com/Forums/en-US/databasedesign" target=_blank&gt;&lt;SPAN style="COLOR:blue;"&gt;&lt;FONT size=3 face=Calibri&gt;MSDN&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp; or&amp;nbsp; &lt;/FONT&gt;&lt;A title="TechNet Forum" href="http://social.technet.microsoft.com/Forums/en-US/databasedesign"&gt;&lt;SPAN style="COLOR:blue;"&gt;&lt;FONT size=3 face=Calibri&gt;TechNet&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; -your choice.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 10pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;" class=MsoNormal&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Give it a try and let me know what you think...&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&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><description>&lt;P&gt;Yesterday, Jonathan Kehayias wrote in his blog post "&lt;A href="http://sqlblog.com/blogs/jonathan_kehayias/archive/2009/10/21/have-you-got-air-in-your-spare-tire-have-you-checked-your-dr-ha-plans.aspx"&gt;Have you got air in your spare.."&lt;/A&gt;&amp;nbsp;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 a bit. It strikes me that he opened the door for a fertile analogy.&lt;/P&gt;
&lt;P&gt;Consider that having a spare tire is like having a database back-up. Knowing that there is a spare tire in the car is similar to knowing that there is a backup 'plan' -perhaps even regularly scheduled database backups. But when was the last time you checked your spare tire? When was the last time you checked to see if you could easily change the flat tire? My wife's vehicle recently had a very low tire, and it took 15-20 minutes just to locate the the jack points and safely elevate the vehicle. It was a new vehicle, neither of us had changed a tire on it previously, so we had to learn a new process for new equipment.&lt;/P&gt;
&lt;P&gt;In Jonathan's situation, it was discovered that the spare tire was also 'flat'.&amp;nbsp;We constant talk about&amp;nbsp;regularly testing backups for reliability and validity. -But when was the last time your organization fully restored a backup and 'bet your life on it'. That is what you are doing when you start driving on a spare tire -betting your life, and/or the lives of your family. Of course restoring a backup isn't betting 'your life', but it could actually be someone else's -or your career. Have you ever restored a database and subjected it to a rigorous&amp;nbsp;test regimien?&lt;/P&gt;
&lt;P&gt;Imagine if your&amp;nbsp;family was in the car, and had a flat tire.&amp;nbsp;Could your wife (the junior DBA) properly and safely restore and get moving quickly?&amp;nbsp;She's taking your child to a needed medical appointment -how long before the 'business' is running again? Does she have a fall-back support contact, like in Jonathan's situation, the AAA membership? (or a PSS account.) Even then, there will most&amp;nbsp;certainly be additional waiting -will the appointment be missed?&lt;/P&gt;
&lt;P&gt;You could, of course, invest additional resources into a "High Availability' solution -for cars, buy 'run-flat' tires.How would you deal with knowing that your family was on the side of the road somewhere, perhaps in the dark, maybe even in a questionable area, waiting, and waiting, and waiting... PSS may be good, but they may also require some time to get back to you. You may wish to protect your family with redundancy -at a cost. Run-flat tires will cost about double the regular tire cost. Think clustered servers... No latency, no downtime, continue moving, repair as soon as possible without negatively impacting the schedule.. Who are you protecting by not investing in the proper solution?&lt;/P&gt;
&lt;P&gt;Some newer cars have builtin spare tire reporting -the car's monitoring system will alert you to low spare tire pressure. Do you have a plan/process where you regularly check your spare tire? How do you actively monitor the integrity of your backups? Do you just trust knowing that it is there? Do you actually test it on&amp;nbsp;occasion? When was the last time you tested it?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do you bet your career (or someone's life) on the Disaster Recovery Plan?&lt;/P&gt;
&lt;P&gt;Spare Tire = Database Backup&lt;BR&gt;Checking Spare Tire = Testing Backup&lt;BR&gt;Practice Jacking Up Car = Practice Restores&lt;BR&gt;AAA Membership = On Call Support&lt;/P&gt;
&lt;P&gt;Spare Tire + Checking Spare Tire + Practice Jacking Up Car&amp;nbsp;+ AAA = Disaster Recovery Plan&lt;BR&gt;&lt;BR&gt;Run-flat tires = High Availability&lt;/P&gt;
&lt;P&gt;What is your family worth?&lt;/P&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><description>&lt;p style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Consider the following:&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span&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 style="margin:0in 0in 0pt 0.5in;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;But additional questions arise. &lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt;" class="MsoNormal"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;strong&gt;Additional Considerations&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&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 style="margin:0in 0in 0pt;line-height:normal;" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;o:p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Personally, I’m in favor of a simple approach to the isolated transaction –not at all bound by any previous SQL Server 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 style="margin:0in 0in 10pt;" class="MsoNormal"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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 style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&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;</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><description>&lt;P&gt;&lt;SPAN style="FONT-FAMILY:'Arial','sans-serif';FONT-SIZE:10pt;"&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-FAMILY:'Arial','sans-serif';FONT-SIZE:10pt;"&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-FAMILY:'Arial','sans-serif';FONT-SIZE:10pt;"&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-FAMILY:'Arial','sans-serif';FONT-SIZE:10pt;"&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 style="MARGIN:0in 0in 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&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;</description></item></channel></rss>