<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>tenbulls.co.uk</title>
	<atom:link href="http://tenbulls.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://tenbulls.co.uk</link>
	<description>attaining enlightenment with sql server, .net, biztalk, windows and linux</description>
	<lastBuildDate>Thu, 23 May 2013 08:08:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='tenbulls.co.uk' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>tenbulls.co.uk</title>
		<link>http://tenbulls.co.uk</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://tenbulls.co.uk/osd.xml" title="tenbulls.co.uk" />
	<atom:link rel='hub' href='http://tenbulls.co.uk/?pushpress=hub'/>
		<item>
		<title>See you in Charlotte!</title>
		<link>http://tenbulls.co.uk/2013/05/22/see-you-in-charlotte/</link>
		<comments>http://tenbulls.co.uk/2013/05/22/see-you-in-charlotte/#comments</comments>
		<pubDate>Wed, 22 May 2013 15:27:36 +0000</pubDate>
		<dc:creator>retracement</dc:creator>
				<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[personaldevelopment]]></category>
		<category><![CDATA[publicspeaking]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sqlpass]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[summit]]></category>

		<guid isPermaLink="false">http://tenbulls.co.uk/?p=3816</guid>
		<description><![CDATA[Well it is that time of year again where the results of the PASS Summit 2013 session selections become public. This year was of course a very difficult one to get selected since (I believe) a record number of submissions &#8230; <a href="http://tenbulls.co.uk/2013/05/22/see-you-in-charlotte/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3816&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Well it is that time of year again where the results of the PASS Summit 2013 session selections become public. This year was of course a very difficult one to get selected since (I believe) a record number of submissions were received -but thankfully I still managed to knock one session (out of four) into the back of the net. I would also like to take this opportunity to congratulate all the other selected Speakers (especially if this is your first time at the Summit) and commiserations to all those who were not successful on this occasion. I know the usual inquests and finger pointing will naturally ensue by a small handful of people who feel personally aggrieved that they weren&#8217;t successful, but believe me when I say that the process is as fair as I could expect, but not without room for improvement (more on this very soon in a follow up post).</p>
<p>Essentially you should take heart in the fact that whilst the selected schedule *might* have been better by your inclusion (yes we know you are awesome and have written a gazillion books and are a respected MVP/ MCM and Certified Guru), but at least someone else will get the opportunity to shine (and hopefully be awesome too). Ultimately (in my opinion) the Summit is about a team effort so we should be nothing but pleased for them and take our failures in good grace.</p>
<p><img class="alignnone size-full wp-image-3822" alt="speakersuccess" src="http://retracement.files.wordpress.com/2013/05/speakersuccess.jpg?w=640"   /></p>
<p>The Summit 2013 marks my third year at the biggest SQL Server Conference in the World as a speaker in any capacity, my second appearance giving a regular session and is the third regular session in total that I will have presented there (I gave two last year). It will also be my fourth as an attendee. I have been very grateful to have presented two lightning talks in total at the last two Conferences and I am always very humbled to get chosen in any capacity and grateful to the people who make this happen. I would also like to give a very quick shout out to my good friend Niko Neugebauer who I was hoping to co-present a Personal Development session with. Unfortunately this session was not chosen which is a big loss for the Summit in my humble opinion since (for me at least) Niko oozes #awesomesauce and I think our session would have ROCKED! Still perhaps another time and I keep my fingers eternally crossed that Niko (<a title="Niko Blog" href="http://www.nikoport.com/" target="_blank">blog</a>|<a title="Niko Twitter" href="https://twitter.com/NikoNeugebauer" target="_blank">twitter</a>) is successful at next years Summit if not sooner. If anyone deserves payback for all his HARD community efforts and major recognition for his abilities, he is your man!</p>
<p>I shall be presenting on one of my favorite subjects -SQL Server Concurrency. Those of you who follow me a little closer than is healthy <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  will already be aware, last year I presented a session titled &#8220;<a title="READPAST &amp; Furious: Transactions, Locking, and Isolation (DBA-309)" href="http://www.sqlpass.org/summit/2012/Sessions/ConferenceSessions.aspx?spid=100&amp;p=1" target="_blank">READPAST &amp; Furious: Transactions, Locking, and Isolation (DBA-309)</a>&#8221; which focussed on some of SQL Server&#8217;s crazy behaviors and concurrency basics. My session this year is called &#8220;<strong>Lock, Block and Two Smoking Barrels &#8211; SQL Server Concurrency</strong>&#8221; and will follow along similar lines looking at even more SQL Server crazy behaviors but focus in a little bit more depth on transactional processing theory and contrast SQL Server&#8217;s Pessimistic and Optimistic isolation levels and how they may help/ hinder/ make no difference to the concurrency of your environment. The &#8220;Two Smoking Barrels&#8221; referred to in the title is of course a direct reference to SNAPSHOT Isolation Level and READ COMMITTED Snapshot Isolation -the optimistic implementation of READ COMMITTED Isolation Level. Yes we are sure to focus more on these two optimistic bad boys. I hope you can manage to come to my session, I think we will have a blast!</p>
<p>If you are interested, the following is the session abstract:-</p>
<blockquote><p>SQL Server is a high performance relational engine and provides a highly scalable database platform but due to its complexity and bad programming practices can be prone to serious concurrency problems, unexpected behaviors, lost updates and much more!<br />
In SQL Server 2005, two optimistic concurrency mechanisms were introduced and touted as the solution to all our problems. Now in SQL Server 2012 (and beyond) even more have followed, but many challenges and problems still remain.</p>
<p>Let’s take a long look into the world of SQL Server concurrency and investigate Pessimistic and Optimistic isolation understanding how they work, when you should use them, and more importantly when they can go very wrong.</p>
<p>Don&#8217;t be staring down the wrong end of SQL Server&#8217;s two Smoking Barrels and join me for this revealing and thought provoking presentation.</p></blockquote>
<br />Filed under: <a href='http://tenbulls.co.uk/category/concurrency/'>Concurrency</a>, <a href='http://tenbulls.co.uk/category/networking/'>networking</a>, <a href='http://tenbulls.co.uk/category/personaldevelopment/'>personaldevelopment</a>, <a href='http://tenbulls.co.uk/category/publicspeaking/'>publicspeaking</a>, <a href='http://tenbulls.co.uk/category/sql/'>sql</a>, <a href='http://tenbulls.co.uk/category/sqlpass/'>sqlpass</a>, <a href='http://tenbulls.co.uk/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a>, <a href='http://tenbulls.co.uk/category/summit/'>summit</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/retracement.wordpress.com/3816/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/retracement.wordpress.com/3816/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3816&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tenbulls.co.uk/2013/05/22/see-you-in-charlotte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/3d4134010f571c843d45f3fc1dfeca3a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">retracement</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2013/05/speakersuccess.jpg" medium="image">
			<media:title type="html">speakersuccess</media:title>
		</media:content>
	</item>
		<item>
		<title>T-SQL Tuesday #41 &#8211; I ♥ SQLBits</title>
		<link>http://tenbulls.co.uk/2013/04/09/t-sql-tuesday-41-i-%e2%99%a5-sqlbits/</link>
		<comments>http://tenbulls.co.uk/2013/04/09/t-sql-tuesday-41-i-%e2%99%a5-sqlbits/#comments</comments>
		<pubDate>Tue, 09 Apr 2013 21:55:44 +0000</pubDate>
		<dc:creator>retracement</dc:creator>
				<category><![CDATA[learning]]></category>
		<category><![CDATA[personaldevelopment]]></category>
		<category><![CDATA[publicspeaking]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sqlbits]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[t-sql tuesday]]></category>
		<category><![CDATA[t]]></category>

		<guid isPermaLink="false">http://tenbulls.co.uk/?p=3782</guid>
		<description><![CDATA[It&#8217;s been a long time since I last wrote a T-SQL Tuesday post but the combination of a great topic along with a spare 5 minutes of downtime has resulted in my contribution to the mix this month. This time &#8230; <a href="http://tenbulls.co.uk/2013/04/09/t-sql-tuesday-41-i-%e2%99%a5-sqlbits/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3782&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.bobpusateri.com/archive/2013/04/invitation-to-t-sql-tuesday-41-presenting-and-loving-it/"><img class="size-full wp-image-3788 alignright" alt="TSQL2sDay150x150" src="http://retracement.files.wordpress.com/2013/04/tsql2sday150x150.jpg?w=640"   /></a>It&#8217;s been a long time since I last wrote a T-SQL Tuesday post but the combination of a great topic along with a spare 5 minutes of downtime has resulted in my contribution to the mix this month.</p>
<p>This time around T-SQL Tuesday is hosted by Bob Pusateri (<a title="bob pusateri blog" href="http://www.bobpusateri.com/" target="_blank">blog</a>|<a title="bob twitter" href="https://twitter.com/SQLBob" target="_blank">twitter</a>) and his chosen topic is <strong>&#8220;how did you come to love presenting?&#8221;</strong>. So here goes&#8230;</p>
<p>In 2010 I had traveled to my very first conference as a presenter. So there I was, stood on the stage in front of a motley collection of SQL professionals, realizing the enormity of what was about to happen.</p>
<p>For many years I had been one of the guys in the crowd of a sea of attendees who had come to listen to awesome presentations from awesome professionals. From time to time I would wonder what it must be like talking in front of all those people -and more importantly whether I could be capable of such a feat. Did I have anything to say? Yes absolutely, but these guys were (of course) in a different league from me, and a league in which I could never hope to emulate. <strong>Ever</strong>. Then a funny thing happened one day&#8230; I decided to submit a presentation to <a title="SQLBits 7" href="http://sqlbits.com/events/event7/SQLBitsVII.aspx" target="_blank">SQLBits 7</a> really out of curiosity more than anything.</p>
<div id="attachment_3791" class="wp-caption alignright" style="width: 310px"><a href="http://retracement.files.wordpress.com/2013/04/fear.jpg"><img class="size-full wp-image-3791 " alt="Oh Flip!" src="http://retracement.files.wordpress.com/2013/04/fear.jpg?w=640"   /></a><p class="wp-caption-text">Oh Flip!</p></div>
<p>Months later, oh joy of joys&#8230; I got selected!</p>
<p>Finally when the euphoria faded, the reality set in. <strong>OH MY GOD&#8230; I&#8217;VE BEEN SELECTED!!! WHAT AM I GOING TO DO!!!</strong> This presentation was going to be my first ever presentation to my first ever audience anywhere <span style="text-decoration:underline;">ever</span> and I knew it wasn&#8217;t going to be a walk in the park. There was also an extra element of excitement/ fear in that SQLBits always recorded their presentations, hosted them publicly for free on the internet, and (if that wasn&#8217;t enough) used picture in picture recordings of the presenter in sync with the slidedeck.</p>
<p>Yes people, even back then SQLBits was a very slick conference, and if you are going to fail at presenting, it is perhaps not the place to start <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>And let&#8217;s not forget the leap of faith that the SQLBits committee had shown by selecting me for this event. Whilst I was not entirely unknown from a social media perspective (I had been a active blogger and twitter user for several years by then) the fact remains that as a presenter I was (shall we say) a little inexperienced!</p>
<p>So moving back to stage where I was delivering my first ever session&#8230;</p>
<p>I remember looking at the audience quite early on around 5 minutes into the presentation and I clearly remember thinking <strong>I AM ACTUALLY DOING THIS!!!</strong> After composing myself, I continued the session and think it went quite well. Not only was it one of the most frightening, exhilarating, scary and rewarding experiences that I have ever had, the months and months of preparation leading up to the event improved my technical skills exponentially from where they had been before.</p>
<p>Now with every presentation I deliver, I always learn hugely from each experience.</p>
<p>After SQLBits 7 I decided that I wanted <span style="text-decoration:underline;"><strong>more</strong> </span>and have gone on to present at every SQLBits since (to date). I have also delivered sessions to many major SQL conferences and community events around the world, seen places I would have never seen, have met people I would have never met and embraced the SQL Community in ways that I had never realized possible.</p>
<p>So to the SQLBits Committee who made it all this possible and started my enormously rewarding journey, I would like to say a special thank you!</p>
<p>SQLBits I think I ♥ you!</p>
<br />Filed under: <a href='http://tenbulls.co.uk/category/learning/'>learning</a>, <a href='http://tenbulls.co.uk/category/personaldevelopment/'>personaldevelopment</a>, <a href='http://tenbulls.co.uk/category/publicspeaking/'>publicspeaking</a>, <a href='http://tenbulls.co.uk/category/sql/'>sql</a>, <a href='http://tenbulls.co.uk/category/sqlbits/'>sqlbits</a>, <a href='http://tenbulls.co.uk/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a>, <a href='http://tenbulls.co.uk/category/t-sql-tuesday/'>t-sql tuesday</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/retracement.wordpress.com/3782/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/retracement.wordpress.com/3782/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3782&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tenbulls.co.uk/2013/04/09/t-sql-tuesday-41-i-%e2%99%a5-sqlbits/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/3d4134010f571c843d45f3fc1dfeca3a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">retracement</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2013/04/tsql2sday150x150.jpg" medium="image">
			<media:title type="html">TSQL2sDay150x150</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2013/04/fear.jpg" medium="image">
			<media:title type="html">Oh Flip!</media:title>
		</media:content>
	</item>
		<item>
		<title>How to run SQL Server 2012 on the Kindle Fire HD</title>
		<link>http://tenbulls.co.uk/2013/04/01/how-to-run-sql-server-2012-on-the-kindle-fire-hd/</link>
		<comments>http://tenbulls.co.uk/2013/04/01/how-to-run-sql-server-2012-on-the-kindle-fire-hd/#comments</comments>
		<pubDate>Mon, 01 Apr 2013 12:44:33 +0000</pubDate>
		<dc:creator>retracement</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[humour]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>

		<guid isPermaLink="false">http://tenbulls.co.uk/?p=3753</guid>
		<description><![CDATA[Warning! Please do not attempt to perform any of the following steps on production systems. This information is provided purely for reference and any attempt to replicate these actions on your own hardware will be purely at your own risk! &#8230; <a href="http://tenbulls.co.uk/2013/04/01/how-to-run-sql-server-2012-on-the-kindle-fire-hd/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3753&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em><strong><span style="color:#ff0000;"><span style="text-decoration:underline;">Warning!</span> Please do not attempt to perform any of the following steps on production systems. This information is provided purely for reference and any attempt to replicate these actions on your own hardware will be purely at your own risk!</span></strong></em></p>
<p>One of the biggest benefits to the latest release of SQL Server (and reasons to upgrade) is that Windows Server Core is now a supported option. For those of you who are not yet familiar with Server Core, it could be best described as a reduced GUI version of Microsoft Windows. In other words, if you like the command line then you are in for a very big treat! Regular visitors to these pages will most likely be very aware of my passion for Windows Server Core and more to the point running SQL Server on it.</p>
<p>I digress slightly, but the point is that because SQL Server can now run on within a reduced graphical interface environment, one large beneficial side effect to this is the portability of the database engine. More specifically we can &#8220;hack&#8221; SQL Server to run on more and more types of hardware and software. The following is a closely guarded secret by <a title="Microsoft" href="http://www.microsoft.com/en-us/default.aspx" target="_blank">Microsoft</a>, but with with a few simple hacks, re-compilations and know how, we can spoof SQL Server to run on several other Operating Systems.</p>
<div id="attachment_3777" class="wp-caption alignnone" style="width: 610px"><a href="http://retracement.files.wordpress.com/2013/04/screen1.jpg"><img class="size-full wp-image-3777" alt="Let's get to this!!!" src="http://retracement.files.wordpress.com/2013/04/screen1.jpg?w=640"   /></a><p class="wp-caption-text">Let&#8217;s get to this!!!</p></div>
<p>Now is probably a good time to stress that whilst I will reveal some of the magic involved in fooling SQL to run elsewhere other than Windows, I am currently bound into a Non-Disclosure Agreement with Microsoft and will therefore be careful not to break it. Therefore any information that I have compiled within these pages are public domain and can be found from various sources elsewhere. It is also important to stress that as of this time of writing, only the SQL Server features supported by Windows Server Core can be &#8220;ported&#8221; across to other environments -so if you are wanting to use Master Data Services elsewhere other than &#8220;full-fat&#8221; Windows, then unfortunately you are out of luck.<br />
For a list of all the SQL Server features currently supported on Server Core you should visit &#8220;<a title="SQL Server features supported on Server Core" href="http://msdn.microsoft.com/en-gb/library/hh231669.aspx" target="_blank">Install SQL Server 2012 on Server Core</a>&#8220;.</p>
<p>Several months ago I came into possession of a lovely new Kindle Fire HD and as you may know, this tablet runs a customized version of Google&#8217;s Android Operating System. Having had some recent (but limited) success with running SQL Server on some other Android based Hardware I decided to try my luck on this nice bit of kit, and the following is how I did it.</p>
<h2>Install Server Core</h2>
<p>Probably one of the most time consuming parts of this whole exercise is the installation of the Server Core Operating System. This can be especially bewildering if you have never done so before, but a very good source of information is the MSDN article &#8221;<a title="Install and Deploy Windows Server 2012" href="http://technet.microsoft.com/en-gb/library/hh831620.aspx" target="_blank">Install and Deploy Windows Server 2012</a>&#8220;. One reason I chose Windows 2012 as opposed to Windows 2008R2 was simply to eliminate any possible backwards compatibility issues with Android when we come to port SQL Server. For instance there is a well known bug in <a title="Android 1.6 Platform" href="http://developer.android.com/about/versions/android-1.6.html" target="_blank">Android 1.6 Donut</a> where a port of SQL Server from Windows 2008 will cause erratic buffer pool memory corruption.</p>
<h2>Install SQL Server onto Server Core</h2>
<p>Installation of SQL Server onto Server Core is relatively straight forward (see the previous link provided) as long as you are comfortable with performing a command line installation -either through using a configuration file or a full  set of command line options. Unfortunately (and perhaps understandibly) GUI based installation will not work, however I did identify a &#8220;bug&#8221; which allows a workaround which I detailed in the following post &#8220;<a title="Using the SQL Server Installation Wizard on Server Core!" href="http://tenbulls.co.uk/2012/09/19/using-the-sql-server-installation-wizard-on-server-core/" target="_blank">Using the SQL Server Installation Wizard on Server Core!</a>&#8220;.</p>
<h2>Dump the SQL Server Process to disk</h2>
<p>There are lots of ways to dump a process working set (the memory a process is consuming) to disk. On Server Core, it is no more difficult to do so since the Task Manager is (partially) supported and works as you would expect. You simply need to locate the SQL Server Service process, right click it and select the Create Dump File option.</p>
<p><a href="http://retracement.files.wordpress.com/2013/04/dump_process.jpg"><img class="alignnone size-full wp-image-3773" alt="dump_process" src="http://retracement.files.wordpress.com/2013/04/dump_process.jpg?w=640"   /></a></p>
<p>Once this is successful you will see a message telling you where the dump file has been created. One very important consideration for you is to make sure that you have set a fairly low <a title="Memory Options" href="http://msdn.microsoft.com/en-gb/library/ms178067.aspx" target="_blank">maximum memory</a> cap for SQL Server&#8217;s buffer pool otherwise it the dump file will be much larger (and take longer to output) in addition it will make your ported SQL Server application to run faster.</p>
<p><a href="http://retracement.files.wordpress.com/2013/04/dumped-process.jpg"><img class="alignnone size-full wp-image-3772" alt="dumped process" src="http://retracement.files.wordpress.com/2013/04/dumped-process.jpg?w=640"   /></a></p>
<h2>Rename the dump file to .src</h2>
<p>A fairly simple but necessary step to perform is the renaming of the dump file that we have just created. The reason for doing so is so that we can recompile the assembly in the next step and target our assembly for Operating System of choice. Simply right click the dump file and rename its extension to .src.</p>
<h2>Recompile the source file using the .NET Native Image Generator</h2>
<p>The Native Image Generator tool (<a title="ngen" href="http://msdn.microsoft.com/en-GB/library/6t9t5wcf(v=vs.110).aspx" target="_blank">ngen.exe</a>) is an often overlooked and ignored utility for the .NET Framework but is very useful for improving the performance of our .NET applications and avoiding JIT compilation. There are several undocumented options for ngen and we shall use them to port our application. Since SQL Server is not a full .NET application and only uses parts of the .NET Framework (for optimization reasons) we can use the undocumented &#8220;/partial&#8221; switch which will recompile all necessary IL code sections of the dump file and will translate all other machine code sections into one complete assembly. Since we are also moving to a different Operating System we must also use the undocumented &#8220;/architecture:ux64&#8243; switch to target a 64 bit Android environment.</p>
<p><a href="http://retracement.files.wordpress.com/2013/04/ngen.jpg"><img class="alignnone size-full wp-image-3775" alt="ngen" src="http://retracement.files.wordpress.com/2013/04/ngen.jpg?w=640"   /></a></p>
<p>Once we have created our native Android image of SQL Server there are only a few final steps remaining!</p>
<h2>Install FSExplorer on your Kindle</h2>
<p>In order to copy our SQL Server Assembly across to our Kindle Fire HD, navigate to the root and create a new folder we need a decent file explorer application. Probably the best I have come across on the Android Operating System is a nice little free app called FSExplorer. Open the Kindle App Store, search for and install FSExplorer.</p>
<h2>Move the SQL Server image to your Kindle</h2>
<p>Using FSExplorer, navigate to the file system root and create a folder called SQLSrvr where you will stored the Android SQL Server assembly. Copy the recompiled SQL Server image to your Kindle under this folder.</p>
<h2>Set SQL Server to auto-load</h2>
<p>In order to auto-load SQL Server as a daemon process you should first create an auto loader file under the root calling it startp (if one does not already exist). Make sure the file has the execute permission assigned and within it enter one simple line start /SQLSrvr/sqlsrvr.d.</p>
<div id="attachment_3771" class="wp-caption alignnone" style="width: 375px"><a href="http://retracement.files.wordpress.com/2013/04/create_file_and_folder.jpg"><img class="size-full wp-image-3771" alt="Don't forget to edit the startp file and copy the SQL assembly!" src="http://retracement.files.wordpress.com/2013/04/create_file_and_folder.jpg?w=640"   /></a><p class="wp-caption-text">Don&#8217;t forget to edit the startp file and copy the SQL assembly!</p></div>
<p>After you have made this last change, reboot your Kindle Fire HD and SQL Server should launch successfully.</p>
<p>Enjoy!</p>
<br />Filed under: <a href='http://tenbulls.co.uk/category/android/'>android</a>, <a href='http://tenbulls.co.uk/category/humour/'>humour</a>, <a href='http://tenbulls.co.uk/category/linux/'>linux</a>, <a href='http://tenbulls.co.uk/category/sql/'>sql</a>, <a href='http://tenbulls.co.uk/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/retracement.wordpress.com/3753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/retracement.wordpress.com/3753/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3753&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tenbulls.co.uk/2013/04/01/how-to-run-sql-server-2012-on-the-kindle-fire-hd/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/3d4134010f571c843d45f3fc1dfeca3a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">retracement</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2013/04/screen1.jpg" medium="image">
			<media:title type="html">Let&#039;s get to this!!!</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2013/04/dump_process.jpg" medium="image">
			<media:title type="html">dump_process</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2013/04/dumped-process.jpg" medium="image">
			<media:title type="html">dumped process</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2013/04/ngen.jpg" medium="image">
			<media:title type="html">ngen</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2013/04/create_file_and_folder.jpg" medium="image">
			<media:title type="html">Don&#039;t forget to edit the startp file and copy the SQL assembly!</media:title>
		</media:content>
	</item>
		<item>
		<title>Upload files to your Azure VM instance</title>
		<link>http://tenbulls.co.uk/2013/03/20/upload-files-to-your-azure-vm-instance/</link>
		<comments>http://tenbulls.co.uk/2013/03/20/upload-files-to-your-azure-vm-instance/#comments</comments>
		<pubDate>Wed, 20 Mar 2013 17:19:53 +0000</pubDate>
		<dc:creator>retracement</dc:creator>
				<category><![CDATA[azure]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://tenbulls.co.uk/?p=3739</guid>
		<description><![CDATA[Sometimes some of the simplest tips are the best, and recently I was trying to figure out just how to upload SQL Server 2012 Enterprise/ Developer Edition installation files to my Windows Azure Virtual Machine since my pre-provisioned copy of &#8230; <a href="http://tenbulls.co.uk/2013/03/20/upload-files-to-your-azure-vm-instance/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3739&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Sometimes some of the simplest tips are the best, and recently I was trying to figure out just how to upload SQL Server 2012 Enterprise/ Developer Edition installation files to my Windows Azure Virtual Machine since my pre-provisioned copy of SQL Server (Evaluation Edition) had expired.</p>
<p>As it turned out I realized pretty quickly that I didn&#8217;t need to bother since the VM also comes with a copy of SQL Server 2012 Evaluation Edition media pre-loaded at the root of the C:\ drive. All I had to do therefore was to grab an existing Developer Edition license key and run the Evaluation Edition media setup and step through the Edition Upgrade to &#8220;convert&#8221; my existing instance.</p>
<p>However, I also knew that there were other utilities and tools (and possibly other installation media) that I would want to bring into my Azure VM and it all felt slightly restrictive. After checking out the <a title="Windows Azure Dashboard" href="https://manage.windowsazure.com" target="_blank">Windows Azure Management Dashboard</a> I could not find any options whatsoever to upload files to my VM.<br />
<img class="alignnone size-full wp-image-3740" alt="manage_console" src="http://retracement.files.wordpress.com/2013/03/manage_console.jpg?w=640"   /></p>
<p>Even after a little digging around in the usual search engines, the most useful suggestion I managed to locate was to download and install an FTP server onto the VM itself and play around a little with port settings! Whilst feasible, that level of tinkering was surely ridiculous. After a few moments of frustration I had an idea. Since I was connecting to my Windows Azure VM over RDP (and knowing that my RDP client is able to provide remote access to certain local resources such as the clipboard I decided to try taking the easy route and simply copy and paste an executable after enabling this option. To do so, you simply have to:-</p>
<ul>
<li><span style="line-height:1.5;">Launch your RDP client (mstsc.exe in Windows) and expand the details button to reveal the remote computer access to local resources checkboxes.</span></li>
<li><span style="line-height:1.5;">Ensure that the Clipboard option is checked and connect and log into your Azure VM.</span></li>
<li>Copy the files, folders or ISO from on your local host.</li>
<li>Paste into your Azure VM.</li>
</ul>
<div id="attachment_3743" class="wp-caption alignnone" style="width: 610px"><img class=" wp-image-3743" alt="remote" src="http://retracement.files.wordpress.com/2013/03/remote.jpg?w=600&#038;h=233" width="600" height="233" /><p class="wp-caption-text">Remote Desktop can provide access to local resources!</p></div>
<p>Whilst I have seen this fail in certain restrictive network configurations, to my delight SUCCESS. I know this operation is hardly rocket science, but sometimes the most simplest things are the hardest to figure out. Now my Azure VMs suddenly seem to be far more useful and I can&#8217;t wait to play further!</p>
<br />Filed under: <a href='http://tenbulls.co.uk/category/azure/'>azure</a>, <a href='http://tenbulls.co.uk/category/cloud/'>cloud</a>, <a href='http://tenbulls.co.uk/category/sql/'>sql</a>, <a href='http://tenbulls.co.uk/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a>, <a href='http://tenbulls.co.uk/category/virtualization/'>virtualization</a>, <a href='http://tenbulls.co.uk/category/windows/'>windows</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/retracement.wordpress.com/3739/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/retracement.wordpress.com/3739/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3739&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tenbulls.co.uk/2013/03/20/upload-files-to-your-azure-vm-instance/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/3d4134010f571c843d45f3fc1dfeca3a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">retracement</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2013/03/manage_console.jpg" medium="image">
			<media:title type="html">manage_console</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2013/03/remote.jpg" medium="image">
			<media:title type="html">remote</media:title>
		</media:content>
	</item>
		<item>
		<title>Santa comes early</title>
		<link>http://tenbulls.co.uk/2012/12/23/santa-comes-early/</link>
		<comments>http://tenbulls.co.uk/2012/12/23/santa-comes-early/#comments</comments>
		<pubDate>Sun, 23 Dec 2012 09:31:38 +0000</pubDate>
		<dc:creator>retracement</dc:creator>
				<category><![CDATA[personaldevelopment]]></category>
		<category><![CDATA[publicspeaking]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>

		<guid isPermaLink="false">https://retracement.wordpress.com/?p=3663</guid>
		<description><![CDATA[With days to go before Santa boards his sleigh and pulls back on the reigns tethering his trusty magical flying reindeer to perform what is probably the most incredible feat of logistical planning and execution the world has ever seen, &#8230; <a href="http://tenbulls.co.uk/2012/12/23/santa-comes-early/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3663&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img class=" wp-image-3671 alignright" alt="kumar_christmas_smaller" src="http://retracement.files.wordpress.com/2012/12/kumar_christmas_smaller.jpg?w=324&#038;h=247" width="324" height="247" />With days to go before Santa boards his sleigh and pulls back on the reigns tethering his trusty magical flying reindeer to perform what is probably the most incredible feat of logistical planning and execution the world has ever seen, I can look back on the last few months with surprise, satisfaction and appreciation and thank those people who have helped to make my run up to Christmas an extremely rewarding and happy affair.</p>
<p>After a very busy start to November in which I delivered a presentation to my 2nd US SQLSaturday (and my 5th SQLSaturday of the year) in Portland, I then flew back up to Seattle to present two regular sessions and a lightning talk. Whilst 101 things could have gone horribly wrong with the whole affair, I think that I not only managed to pull it off, but also enjoyed the experience of doing so. Along the way I have not only met some fabulous new people but have also got reacquainted with many old friends.</p>
<p>Normally, all of this alone would have been a fantastic end to the year but there was lots more to come on my return back to the UK.</p>
<p>Within a week or so of arriving back in Cambridge from Seattle I received the results of the <a title="MCM Knowledge Exam" href="http://www.microsoft.com/learning/en/us/exam.aspx?id=88-970" target="_blank">MCM Knowledge exam</a> that I&#8217;d taken prior to leaving for the States. I had hoped that my results were going to be received prior to setting off for the PASS Summit so that I could take advantage of being there and scheduling in my Lab exam, but sadly this wasn&#8217;t to be. Still, I was very pleased that when they did arrive, to find that (joy of joys I&#8217;d managed to pass the Knowledge exam first time).</p>
<p><img class="wp-image-3675 alignnone" alt="exam" src="http://retracement.files.wordpress.com/2012/12/exam.jpg?w=640&#038;h=107" width="640" height="107" /></p>
<p>Whilst I didn&#8217;t think the questions were particularly hard, they were a little bit of a surprise (and truth be told I could have been a bit more prepared). In my opinion, the questions seemed to be not quite as polished as I had expected and a little unrefined or ambiguous (just my opinion -not necessarily fact).</p>
<div id="attachment_3683" class="wp-caption alignleft" style="width: 208px"><a href="http://tenbulls.co.uk/2012/12/23/santa-comes-early/passpink/" rel="attachment wp-att-3683"><img class="size-full wp-image-3683 " alt="passpink" src="http://retracement.files.wordpress.com/2012/12/passpink.png?w=640"   /></a><p class="wp-caption-text">Pretty in Pink</p></div>
<p>A week later I then received an email from PASS HQ stating that I was the recipient of their <a title="Outstanding Volunteer" href="http://www.sqlpass.org/Community/Volunteers/OutstandingVolunteers.aspx" target="_blank">Outstanding Volunteer Award</a> which is sparing given to just one (or a very small handful of individuals) every month GLOBALLY! This really was a very big honor for me and it was very gratefully received. Now would probably be a good time to state that the award is really something that I feel has been made possible by not just my efforts, but the efforts and sacrifices of those close to me (i.e. family and friends). To be allowed to spend a week in Amsterdam simply to help represent PASS at <a title="TechEd Europe 2012" href="http://europe.msteched.com/" target="_blank">TechEd Europe</a> this year is no small ask (and especially hard on the kids) but when you realize that this was simply just one of a multitude of trips away this year that contributed to being awarded (which have been very hard to professionally and financially justify), then you will probably agree that the award is more for them than for me. To top it off, my wife had been fundamental to the success of <a title="SQLSaturday #162 Cambridge" href="http://www.sqlsaturday.com/162/eventhome.aspx" target="_blank">SQLSaturday #162 Cambridge</a> in the UK this year having expertly project managed it to success amongst filling a thousand other roles. So a HUGE big-up to her.</p>
<p>Finally, the last Christmas cracker to arrive on my doorstep was the confirmation that I am now officially taking over the role as PASS UK Regional Mentor from Community good guy, <a title="SQLBits" href="http://sqlbits.com/" target="_blank">SQLBits </a>organiser and <a title="Chris MVP" href="https://mvp.support.microsoft.com/profile=A42D5BED-1C61-44A4-9247-AD3EAE3D99A5" target="_blank">SQL Server MVP </a>Mr. Chris Testa-O&#8217;Neill (<a title="Chris Testa-O'Neill Blog" href="http://sqlblogcasts.com/blogs/testas/default.aspx" target="_blank">blog</a>|<a title="Chris Testa-O'Neill Twitter" href="https://twitter.com/ctesta_oneill" target="_blank">twitter</a>). Yes, his are very big boots to fill but I shall try my hardest and will always do so with the interests of the Community at the forefront of my thinking. Chris will of course continue to support the community efforts (as he has always done) so I would just like to say a huge thank you to him for his contribution so far. His efforts also highlight the fact that in order to contribute towards anything, all we need is a desire to do so -and this desire is something which I believe I have in spades.</p>
<p><img class=" wp-image-3687 alignleft" alt="catbert" src="http://retracement.files.wordpress.com/2012/12/catbert.gif?w=168&#038;h=120" width="168" height="120" />Obviously the decision for the Regional Mentor position has not come out of the blue and has been thought about and discussed for a very long time; and with a number of other worthy candidates here in the UK I can only be humbled by PASS&#8217; choice of myself to work alongside (the other UK RM) Jonathan Allen (<a title="Jonathan Blog" href="http://www.simple-talk.com/blogs/author/13359-jonathan-allen/" target="_blank">blog</a>|<a title="Jonathan Twitter" href="https://twitter.com/fatherjack" target="_blank">twitter</a>). Hopefully we can deliver exactly what is expected and much MORE!</p>
<p>So thanks to everyone who has contributed to all these things and more (a special mention should go to Karla and Niko). Hope you all have a fantastic Christmas!</p>
<br />Filed under: <a href='http://tenbulls.co.uk/category/personaldevelopment/'>personaldevelopment</a>, <a href='http://tenbulls.co.uk/category/publicspeaking/'>publicspeaking</a>, <a href='http://tenbulls.co.uk/category/sql/'>sql</a>, <a href='http://tenbulls.co.uk/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/retracement.wordpress.com/3663/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/retracement.wordpress.com/3663/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3663&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tenbulls.co.uk/2012/12/23/santa-comes-early/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/3d4134010f571c843d45f3fc1dfeca3a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">retracement</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/12/kumar_christmas_smaller.jpg" medium="image">
			<media:title type="html">kumar_christmas_smaller</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/12/exam.jpg" medium="image">
			<media:title type="html">exam</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/12/passpink.png" medium="image">
			<media:title type="html">passpink</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/12/catbert.gif" medium="image">
			<media:title type="html">catbert</media:title>
		</media:content>
	</item>
		<item>
		<title>Baby baby baby, where did our love/ data go?</title>
		<link>http://tenbulls.co.uk/2012/10/23/baby-baby-baby-where-did-our-love-data-go/</link>
		<comments>http://tenbulls.co.uk/2012/10/23/baby-baby-baby-where-did-our-love-data-go/#comments</comments>
		<pubDate>Tue, 23 Oct 2012 22:51:46 +0000</pubDate>
		<dc:creator>retracement</dc:creator>
				<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sqlbits]]></category>
		<category><![CDATA[sqlpass]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[tsql]]></category>

		<guid isPermaLink="false">http://tenbulls.co.uk/?p=3544</guid>
		<description><![CDATA[Possibly one of the very first things we learn as fledgling DBA&#8217;s is that transactions are used to provide &#8220;all or nothing&#8221; operations. If you ever go for a SQL Server job interview, you are almost guaranteed to be asked &#8230; <a href="http://tenbulls.co.uk/2012/10/23/baby-baby-baby-where-did-our-love-data-go/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3544&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img class="size-full wp-image-3572 alignright" title="frankiesays" alt="" src="http://retracement.files.wordpress.com/2012/10/frankiesays.jpg?w=640"   />Possibly one of the very first things we learn as fledgling DBA&#8217;s is that transactions are used to provide &#8220;<em>all or nothing</em>&#8221; operations. If you ever go for a SQL Server job interview, you are almost guaranteed to be asked exactly what constitutes the ACID properties (<strong>*groan*</strong>). The A in ACID is of course Atomicity and basically represents the fact that a given set of operations within a transaction either succeeds as an atomic unit OR it doesn&#8217;t.</p>
<p>What I am about to discuss is probably not the biggest secret to many of the &#8220;more informed&#8221; of you, and over the years many fantastic speakers (such as Kalen Delaney <a title="Kalen Blog" href="http://sqlblog.com/blogs/kalen_delaney/" target="_blank">blog</a>|<a title="Kalen Twitter" href="https://twitter.com/sqlqueen" target="_blank">twitter</a>) have revealed the truth about SQL Server&#8217;s transactional behavior.</p>
<p>I first presented this subject (and this behavior) at <a title="SQLBits READPAST &amp; Furious" href="http://sqlbits.com/Sessions/Event9/READPAST__Furious_Transactions_Locking_and_Isolation" target="_blank">SQLBits 9 (Liverpool) in 2011</a>, and have subsequently presented the subject a few other times elsewhere (most recently at <a title="sqlsaturday cambridge" href="http://www.sqlsaturday.com/162/eventhome.aspx" target="_blank">SQLSaturday #162 Cambridge</a>), and each time never usually fails to spark the alarm of at least one person in the audience.</p>
<p>When I was a relatively new DBA (and I do have to go back a considerable time) I struggled for a very long time to understand exactly what was the point of SQL Server&#8217;s <a title="XACT_ABORT ON" href="http://msdn.microsoft.com/en-us/library/ms188792.aspx" target="_blank">SET XACT_ABORT ON</a> statement&#8230;</p>
<p>&#8230;I mean, as I understood it, if transactions failed (and therefore aborted) everything was rolled back anyway wasn&#8217;t it? So what would be the point of setting <a title="XACT_ABORT ON" href="http://msdn.microsoft.com/en-us/library/ms188792.aspx" target="_blank">XACT_ABORT ON </a>then? This statement just didn&#8217;t make any sense to me.</p>
<p>Then one day an incident happened at a company I was working for at the time, in which a massive amount of data had gone missing whilst it was being processed by an in-house application. The application would collect the data from a third party vendor, shred it and do funky things to it, before finally placing the data into a SQL database. Upon committing this data, the application would send an acknowledgement message to the third party vendor to provide a confirmation the data had been successfully received and could be removed from their queue.</p>
<p>When the missing data was detected by the application developers, the predictable finger pointing ensued. They blamed us for OUR crummy database and <em>obviously</em> misconfiguration server, and we blamed them for THEIR atrociously written application that was somehow (incorrectly) deleting data.</p>
<h2>A typical transactional scenario</h2>
<p>We have an orders table in which we wish to remove a record that needs to be fulfilled and insert the (fulfilled) record into the fulfilled table. If the insert fails, it is important that the delete is rolled back and if the delete fails it is important that the insert is rolled back.</p>
<p>The code for this is as follows:</p>
<pre class="brush: sql; highlight: [5]; title: ; notranslate">
DECLARE @orderid INT
SELECT @orderid = MAX(id) FROM orders
BEGIN TRAN
   DELETE FROM orders WHERE id = @orderid
   INSERT INTO orders_fulfilled VALUES(@orderid, 4, @@SPID)
COMMIT
</pre>
<p>So in the code snippet above you can see that we are deleting the top orderid from the orders table and inserting it into the orders_fulfilled table. If we execute this code, it does exactly what it says on the tin &#8211; deletes the record from orders table and adds it into orders_fulfilled table all within a transactional context. Pretty basic huh?</p>
<p>Now if we rerun the code above, simply changing line 5 as below:</p>
<pre class="brush: sql; gutter: false; title: ; notranslate">
INSERT INTO orders_fulfilled VALUES(@orderid, 5, @@SPID)
</pre>
<p>The following error occurs&#8230;</p>
<blockquote><p>(1 row(s) affected)<br />
<span style="color:#ff0000;">Msg 547, Level 16, State 0, Line 5</span><br />
<span style="color:#ff0000;"> The INSERT statement conflicted with the CHECK constraint &#8220;status&#8221;. The conflict occurred in database &#8220;READPAST &amp; Furious&#8221;, table &#8220;dbo.orders_fulfilled&#8221;, column &#8216;status&#8217;.</span><br />
The statement has been terminated.</p></blockquote>
<p>So the error message itself is remarkably explanatory. It has told us that our insert statement failed due to the presence of a <a title="CHECK Constraint" href="http://msdn.microsoft.com/en-us/library/ms190377.aspx" target="_blank">CHECK constraint</a> on the orders_fulfilled table. Upon checking for open transactions, we note that there are none. Great, this must mean of course that our transaction will have automatically rolled back and undone our delete -right? WRONG!</p>
<p>Upon further inspection we note that not only did the insert not complete and that the transaction is no longer open, we observe that the delete did actually occur! The result if you were not expecting it is lost data.</p>
<p>Going back to our in-house application, the developers had introduced some code which was shredding vast volumes of data and performing a similar transactional delete and insert, but had not accounted for the fact that the constraint might be broken by the vendor data OR what would happen if it was. Because the application was acknowledging the receipt and commit of this data to the third party, not only was the data failing to insert into the database, but was also being removed from the vendor&#8217;s transmission queue.</p>
<h2>Why is this happening?</h2>
<p>This is not a bug in SQL Server, far from it. In fact this behavior is by design and occurs only when certain errors are raised within transactions. As you have seen, constraint errors are one such situation and the others that you may run into are (as far as I know still not documented in one single place).</p>
<p>I believe the thinking behind this behavior is to avoid unnecessarily undoing work performed by all the successful statements, which could come in useful in certain expensive transactional loading operations. Besides&#8230;if you didn&#8217;t want this to happen, then you would have implemented an alternative right? <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>What is the solution?</h2>
<p>Well I&#8217;ve already mentioned the <a title="XACT_ABORT ON" href="http://msdn.microsoft.com/en-us/library/ms188792.aspx" target="_blank">XACT_ABORT ON</a> statement, and now it suddenly makes sense doesn&#8217;t it? Since we have shown that transactions are not truly &#8220;all or nothing&#8221; operations by default, we need a way to direct SQL Server to make them atomic. <a title="XACT_ABORT ON" href="http://msdn.microsoft.com/en-us/library/ms188792.aspx" target="_blank">XACT_ABORT ON</a> informs SQL Server that it absolutely <strong>*must*</strong> rollback any transactions if there are ANY errors during their lifetime or commit everything.</p>
<p>There is a second and more common way of making transactions behave as expected and this is by using error handling. SQL Server 2005 introduced the <a title="TRY CATCH FINALLY" href="http://msdn.microsoft.com/en-us/library/ms175976.aspx" target="_blank">BEGIN TRY and BEGIN CATCH</a> syntax which hugely simplified our transaction management. Within our catch-block we can simply perform any clean up actions that we want and <a title="ROLLBACK" href="http://msdn.microsoft.com/en-us/library/ms181299.aspx" target="_blank">ROLLBACK </a>our transaction should we so desire.</p>
<h2>So what happens if we use both methods together?</h2>
<p>There is a particular problem to be aware of when using error handling in conjunction with <a title="XACT_ABORT ON" href="http://msdn.microsoft.com/en-us/library/ms188792.aspx" target="_blank">XACT_ABORT ON</a> and this is really due to the implications of setting this behavior on. By doing so, as we have already discussed, you have told SQL Server to <a title="COMMIT" href="http://msdn.microsoft.com/en-us/library/ms190295.aspx" target="_blank">COMMIT</a> everything or roll everything back. When using error handling you are enabling functionality to take custom actions within your transactions. One such action could be a rollback to a <a title="savepoints" href="http://msdn.microsoft.com/en-us/library/ms188378.aspx" target="_blank">savepoint</a>, or perhaps to insert logging information to another table.</p>
<p>Let&#8217;s see what happens with the following code snippet:</p>
<pre class="brush: sql; gutter: false; title: ; notranslate">
SET XACT_ABORT ON
DECLARE @orderid INT
SELECT @orderid = MAX(id) FROM orders
BEGIN TRY
   BEGIN TRAN
      SAVE TRAN savetohere
      DELETE FROM orders WHERE id = @orderid
      INSERT INTO orders_fulfilled VALUES(@orderid,5,@@SPID)
   COMMIT
END TRY
BEGIN CATCH
   ROLLBACK TRAN savetohere
END CATCH
</pre>
<p>The following error occurs&#8230;</p>
<blockquote><p><span style="color:#ff0000;">Msg 3931, Level 16, State 1, Line 15</span><br />
<span style="color:#ff0000;"> The current transaction cannot be committed and cannot be rolled back to a savepoint. Roll back the entire transaction.</span></p></blockquote>
<p>The error we are experiencing here is known as an &#8220;uncommitable transaction&#8221; and occurs because <a title="XACT_ABORT ON" href="http://msdn.microsoft.com/en-us/library/ms188792.aspx" target="_blank">XACT_ABORT</a> is explicit in requiring that the whole transaction is rolled back on error. Performing ANY operation that causes log writes (such as an insert, delete, update or even rollbacks to savepoints) will result in error. It is not obvious from the error above, but rollback is automatic and no transactions are left open when this condition is hit.</p>
<p>So should we ever use <a title="XACT_ABORT ON" href="http://msdn.microsoft.com/en-us/library/ms188792.aspx" target="_blank">XACT_ABORT ON</a> then?</p>
<p>There are a couple of situations that using <a title="XACT_ABORT ON" href="http://msdn.microsoft.com/en-us/library/ms188792.aspx" target="_blank">XACT_ABORT ON</a> is the right or necessary thing to do (with or without additional error handling). One such situation is when you have unskilled (or lesser skilled) labour executing and promoting SQL scripts into your environments. You (or your developers) want to ensure that the scripts either work OR they do not. If you use distributed transactions then you will be required to use <a title="XACT_ABORT ON" href="http://msdn.microsoft.com/en-us/library/ms188792.aspx" target="_blank">XACT_ABORT ON</a>.</p>
<p>In the scenario that you do use both techniques, it is important that within your catch-block you detect any uncommitable transactions before attempting to perform any logging operations. This is performed by detecting the transaction state and the <a title="XACT_STATE()" href="http://msdn.microsoft.com/en-us/library/ms189797.aspx" target="_blank">XACT_STATE()</a> function enables us to programatically do this.</p>
<p>For instance:</p>
<pre class="brush: sql; gutter: false; title: ; notranslate">
IF XACT_STATE() &lt;&gt; 0 ROLLBACK TRAN --if there is an open transaction, roll it back!
--if tran state is -1, then tran uncommittable, if 0 then no tran open, else if 1 tran is committable
</pre>
<h2>Final Thoughts</h2>
<p>Understanding SQL Server transaction management is far more difficult than you may realise and it is important that you know the implications of how your developers implement them. In the scenario presented here, we have demonstrated that if they/ you get things wrong then your database may be losing data without you even realizing it. The use of good T-SQL error handling and transaction state detection can be the difference and very simple to implement in the right hands.</p>
<p>Whilst it is common in organizations for Developers and DBA&#8217;s to point fingers at each other when problems are experienced in your environment, it is important to understand that this usually happens due to poor communications between the two parties and most importantly because you both care. It is YOUR job as a DBA not only to protect your data but also ensure that you educate Developers where possible. Likewise it is the Developer&#8217;s job to ensure performant and accurate application code and educate DBAs. Understanding each other&#8217;s worlds better and communicating more efficiently can avoid some of the largest (and sometimes more costly) problems with very little effort.</p>
<br />Filed under: <a href='http://tenbulls.co.uk/category/concurrency/'>Concurrency</a>, <a href='http://tenbulls.co.uk/category/error/'>error</a>, <a href='http://tenbulls.co.uk/category/sql/'>sql</a>, <a href='http://tenbulls.co.uk/category/sqlbits/'>sqlbits</a>, <a href='http://tenbulls.co.uk/category/sqlpass/'>sqlpass</a>, <a href='http://tenbulls.co.uk/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a>, <a href='http://tenbulls.co.uk/category/development/tsql/'>tsql</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/retracement.wordpress.com/3544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/retracement.wordpress.com/3544/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3544&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tenbulls.co.uk/2012/10/23/baby-baby-baby-where-did-our-love-data-go/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/3d4134010f571c843d45f3fc1dfeca3a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">retracement</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/10/frankiesays.jpg" medium="image">
			<media:title type="html">frankiesays</media:title>
		</media:content>
	</item>
		<item>
		<title>The Curious Case of the Non-Escalating transaction locks</title>
		<link>http://tenbulls.co.uk/2012/10/17/the-curious-case-of-the-non-escalating-transaction-locks/</link>
		<comments>http://tenbulls.co.uk/2012/10/17/the-curious-case-of-the-non-escalating-transaction-locks/#comments</comments>
		<pubDate>Wed, 17 Oct 2012 13:40:19 +0000</pubDate>
		<dc:creator>retracement</dc:creator>
				<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>

		<guid isPermaLink="false">http://tenbulls.co.uk/?p=3519</guid>
		<description><![CDATA[SQL Server has many facets and behaviors that are often misunderstood and do not always work quite as we may have expected. At first you may believe that you understand the mechanics, only to realize after a little bit of &#8230; <a href="http://tenbulls.co.uk/2012/10/17/the-curious-case-of-the-non-escalating-transaction-locks/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3519&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>SQL Server has many facets and behaviors that are often misunderstood and do not always work quite as we may have expected. At first you may believe that you understand the mechanics, only to realize after a little bit of delving deeper that your comprehension was wrong.</p>
<p>SQL Server Lock Escalation is one of these commonly misunderstood topics, and most recently after doing a little investigation into a few subjects related to escalation I was shocked and surprised in equal measure to find that things were not working quite as I expected.</p>
<p>As most of you will know, the reason SQL Server has an escalation mechanism is to provide a balance between concurrency and efficiency. On 64-bit SQL Server, since each lock consumes 128 bytes of memory and lock owner block (process holding the lock) consumes 64 bytes of memory, locking can start to consume an awful lot of memory and have an impact on system performance if escalation did not exist.</p>
<p>By default, there are really two reasons why escalation will occur:</p>
<ol>
<li>A result of too many locks taken out on a resource by a statement (the ball-park figure is just over 5000).</li>
<li>The second is due to the amount of lock memory consumption (roughly just over 40% of the current SQL Server working set).</li>
</ol>
<p>So let us assume that we have a transaction where we are making updates to many rows in a table.</p>
<p>For example:</p>
<pre class="brush: sql; gutter: false; title: ; notranslate">
BEGIN TRAN
UPDATE database1.dbo.table1
SET C2=1 WHERE C1 &lt; 1000;
</pre>
<p>Now I don&#8217;t think it will be a huge surprise to anyone when we see that we have taken 1000 Exclusive (X) locks and 3 Intent-Exclusive (IX) locks.<br />
<a href="http://retracement.files.wordpress.com/2012/10/lock1.jpg"><img class="size-full wp-image-3527 alignnone" title="lock1" alt="" src="http://retracement.files.wordpress.com/2012/10/lock1.jpg?w=640"   /></a></p>
<p>So now what happens if you run the following statement inside the same transaction:</p>
<pre class="brush: sql; gutter: false; title: ; notranslate">
UPDATE database1.dbo.table1
SET C2=1 WHERE C1 &gt;= 1000 AND C1 &lt; 2000;
UPDATE database1.dbo.table1
SET C2=1 WHERE C1 &gt;= 2000 AND C1 &lt; 3000;
UPDATE database1.dbo.table1
SET C2=1 WHERE C1 &gt;= 3000 AND C1 &lt; 4000;
UPDATE database1.dbo.table1
SET C2=1 WHERE C1 &gt;= 4000 AND C1 &lt; 5000;
UPDATE database1.dbo.table1
SET C2=1 WHERE C1 &gt;= 5000 AND C1 &lt; 6000;
</pre>
<p>Just looking at the whole transaction statement you would assume that since around 6000 locks are being taken on the same resource we would get escalation occurring. Let&#8217;s take a look:<br />
<a href="http://retracement.files.wordpress.com/2012/10/locks2.jpg"><img class="alignnone size-full wp-image-3529" title="locks2" alt="" src="http://retracement.files.wordpress.com/2012/10/locks2.jpg?w=640"   /></a><br />
As you can seem, escalation hasn&#8217;t happened. This can however be explained by the statement I made earlier, that escalation will occur if the threshold is exceeded for a single statement on a single resource. I have performed tests and found that there does not appear to be any upper limited on the number of locks you can take on a single resource as long as each statement does not break the threshold and the memory threshold is not broken.</p>
<p>So now let us try to get escalation occurring. We shall first execute the following in the same transaction:</p>
<pre class="brush: sql; gutter: false; title: ; notranslate">
UPDATE database1.dbo.table1
SET C2=1 WHERE C1 &lt; 6000; </pre>
<p>Clearly you can see that we have &#8220;broken&#8221; the number of locks limit. However the results are identical as before. Since the locks have already been taken by this process within the context of the same transaction, the threshold is not broken and therefore escalation does not occur. This is an important point to raise in that the threshold test is evaluated once the decision to acquire locks has been made. Finally I shall run the following statement (again within the same transaction):</p>
<pre class="brush: sql; gutter: false; title: ; notranslate">
UPDATE database1.dbo.table1
SET C2=1 WHERE C1 &gt;= 6000 AND C1 &lt; 12000;
</pre>
<p>We have now issued a statement to update 6000 (new) rows, this statement is still being run within the same transaction on the same resource and as such we would expect it to trigger an escalation.<br />
<a href="http://retracement.files.wordpress.com/2012/10/locks3.jpg"><img class="alignnone size-full wp-image-3532" title="locks3" alt="" src="http://retracement.files.wordpress.com/2012/10/locks3.jpg?w=640"   /></a></p>
<p>This time escalation of all the Exclusive key locks and Intent-Exclusive page locks have been successfully escalated to a single object level Exclusive lock as expected.</p>
<h2>Conclusion</h2>
<p>When I first saw this escalation behavior I was of the opinion that it was indeed a bug that I had uncovered. Over time and reflection I believe that it is not so much a bug as it is an oddity. The stated behavior of SQL Server to escalate due to the number of locks on the same resource by the same statement is being adhered to, although as I pointed out, if the locks have already been acquired, then these do not count towards the final threshold evaluation.</p>
<p>You could argue that perhaps SQL Server should have an optimization to cumulatively add the total number of locks owned by a SPID on a resource and compare this figure against the threshold limit, but I assume the Database Engine team must have ruled that out for concurrency optimization.</p>
<p>Can you use this oddity in a useful way? Perhaps&#8230;<br />
Lets assume you need to perform a large data set change on a very large table or partition which is highly active. The data must be changed and performed whilst your environment is live, but you wish to minimize the impact to the table&#8217;s concurrency. (I should also add here as an aside that escalation is not guaranteed if incompatible locks exist when it is attempted, but do you really want to run the risk that it could happen in this proposed scenario?)</p>
<p>Your first thought may be to change the data in batches, but perhaps you require that the whole operation is transitionally consistent? All of the dataset is updated OR it is not.</p>
<p>In this situation you could break down the updates into logical statement batches, ensuring that the number of locks taken by each does not cross the threshold. These statements can then be run inside an explicit transaction and escalation will not occur (or be attempted) due to thresholds not being crossed. Therefore you will only lose concurrency to those rows themselves and not require or attempt exclusive partition or object locks. And whilst it is possible to turn off escalation completely due to the number of locks (TF1224) or on the specific table itself (as of SQL 2008), this is not always possible or desirable in certain environments and this method could prove to be a far more satisfactory way around the problem.</p>
<h2>One Final Note</h2>
<p>Hopefully this post has demonstrated that SQL Server mechanisms do not always work the way you expect (or have read in a book). With a little bit of testing and observation, it is usually possible to understand what is really going on. So don&#8217;t delay and dive into your test environment!</p>
<br />Filed under: <a href='http://tenbulls.co.uk/category/concurrency/'>Concurrency</a>, <a href='http://tenbulls.co.uk/category/database/'>database</a>, <a href='http://tenbulls.co.uk/category/sql/'>sql</a>, <a href='http://tenbulls.co.uk/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/retracement.wordpress.com/3519/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/retracement.wordpress.com/3519/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3519&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tenbulls.co.uk/2012/10/17/the-curious-case-of-the-non-escalating-transaction-locks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/3d4134010f571c843d45f3fc1dfeca3a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">retracement</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/10/lock1.jpg" medium="image">
			<media:title type="html">lock1</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/10/locks2.jpg" medium="image">
			<media:title type="html">locks2</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/10/locks3.jpg" medium="image">
			<media:title type="html">locks3</media:title>
		</media:content>
	</item>
		<item>
		<title>Memoirs of SQLSaturday #162 Part II: Speaker Dinner</title>
		<link>http://tenbulls.co.uk/2012/10/01/memoirs-of-sqlsaturday-162-part-ii-speaker-dinner/</link>
		<comments>http://tenbulls.co.uk/2012/10/01/memoirs-of-sqlsaturday-162-part-ii-speaker-dinner/#comments</comments>
		<pubDate>Mon, 01 Oct 2012 18:11:15 +0000</pubDate>
		<dc:creator>retracement</dc:creator>
				<category><![CDATA[personaldevelopment]]></category>
		<category><![CDATA[publicspeaking]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sqlsaturday]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>

		<guid isPermaLink="false">http://tenbulls.co.uk/?p=3483</guid>
		<description><![CDATA[Probably one of the most over-looked parts of any big or small SQL Event can sometimes be the speaker dinner -which essentially boils down to one thing&#8230; the organisers way of showing their appreciation to the speakers who have traveled &#8230; <a href="http://tenbulls.co.uk/2012/10/01/memoirs-of-sqlsaturday-162-part-ii-speaker-dinner/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3483&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Probably one of the most over-looked parts of any big or small SQL Event can sometimes be the speaker dinner -which essentially boils down to one thing&#8230; the organisers way of showing their appreciation to the speakers who have traveled far and wide usually at their own expense to present expert technical content at no cost to the attendees.</p>
<p>As a fairly regular speaker myself, I have experienced many events who have either made very little effort with the dinner, poorly handled its organization (meaning many speakers aren&#8217;t even informed that it is happening) or simply don&#8217;t bother arranging one at all. And whilst I don&#8217;t want to suggest that by organizing an event you absolutely MUST provide a speaker dinner in order for the event to be regarded as a success, I do personally feel that the speaker meal helps define your event and give it a <em>feel</em> or <span style="text-decoration:underline;">your stamp</span> -and hopefully one along the lines that you were aiming for.</p>
<div id="attachment_3511" class="wp-caption alignleft" style="width: 226px"><a href="http://retracement.files.wordpress.com/2012/10/dublin-humor.jpg"><img class=" wp-image-3511  " title="dublin humor" src="http://retracement.files.wordpress.com/2012/10/dublin-humor.jpg?w=216&#038;h=288" alt="" width="216" height="288" /></a><p class="wp-caption-text">A great sense of humor to be had in Dublin!</p></div>
<p>A very good example of this can be found by contrasting a couple of the SQL Saturday events I have attended as a speaker this year -specifically SQLSaturday #115 Lisbon and SQLSaturday #105 Dublin. On the Friday evening in Dublin, they hired a barge that sailed the length and breadth of the Canal whilst serving up the meal. We all ate and drank merrily, chatting as the banks slowly passed by. It was not only a novel and unique idea, but was great fun and made us all feel quite special. This extravagant touch reflected the <em>professional </em>and <em>expensive </em>polish of the Dublin event, and whilst I do not normally enjoy too much fuss I confess I did enjoy it enormously.</p>
<p>In Lisbon, having experienced an incredible attentive touch from the organizers on arrival, and leading up to the Saturday, we effectively had not one but TWO speaker meals! The first was held in a rather incredible ornate building -which as I understand it was once a Palace owned by Portuguese Royalty. Amusingly it had so many dining rooms, myself and Rob Volk (<a title="Rob Volk Twitter" href="https://twitter.com/sql_r" target="_blank">twitter</a>|<a title="Rob Volk Blog" href="http://weblogs.sqlteam.com/robv/default.aspx" target="_blank">blog</a>) could not find Niko (<a title="Niko Twitter" href="https://twitter.com/NikoNeugebauer" target="_blank">twitter</a>|<a title="Niko Blog" href="http://www.nikoport.com/" target="_blank">blog</a>) and Crew at first and wandered aimlessly between each room until Niko came hurtling out of one of them to call us in. The second meal was hosted during Saturday lunchtime in a very traditional Seafood restaurant where upon finding out I was presenting directly after, Allan Mitchell (<a title="Allan Twitter" href="https://twitter.com/allanSQLIS" target="_blank">twitter</a>|<a title="Allan Blog" href="http://www.sqlis.com/" target="_blank">blog</a>) relentlessly tried to encourage me to drink lots of Red Wine to &#8220;<em>settle my nerves</em>&#8221; as he put it <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<div id="attachment_3512" class="wp-caption alignright" style="width: 310px"><a href="http://retracement.files.wordpress.com/2012/10/ilovelisbon.jpg"><img class="size-full wp-image-3512" title="ilovelisbon" src="http://retracement.files.wordpress.com/2012/10/ilovelisbon.jpg?w=640" alt=""   /></a><p class="wp-caption-text">Lisbon was an incredibly beautiful city</p></div>
<p>Both meals were enjoyable and each had a very authentic ambiance. So which event meal was best (Dublin or Lisbon)? For me each one of them had its merits and each one <em>set the scene</em> for the SQLSaturday to come. Dublin demonstrated that you were speaking at a very professional well run event and provided a hint and feel of Ireland. Lisbon immersed you into the proud and welcoming Portuguese culture making you feel not only very honored to be there and in the company of friends, but to also gave the impression of <em>being on holiday</em>.</p>
<p>It was with these two events in mind that we would go onto organize and shape our own speaker meal. We wanted to provide a mixture of a relaxed down to earth friendly atmosphere and a very well run organized (and well attended) speaker meal. During the last four weeks leading up to SQLSaturday #162 Cambridge, myself and the event PM (Lorraine) decided that if we were going to provide an evening meal to 30-40 people, we had better make sure we knew beforehand if it will be any good. Initially (and ideally) we wanted to have a very English style meal and ambiance, but the first few restaurants we had <em>tested </em>had not really come up to the bar that we had set. <a title="La Strada, Cambridge" href="http://www.strada.co.uk/italian-restaurant/cambridge" target="_blank">La Strada</a>, our third restaurant, and I am sure you can guess by the name was anything but traditional English gave us a fantastic meal one lunchtime and had been very attentive. They also had the perfect area that could be reserved for us all which was slightly tucked away from the other restaurant goers but not entirely. This meant that we had the best of both worlds in this respect. After chatting with the restaurant manager we knew that this was definitely the best choice for our dinner and booked it up.</p>
<div id="attachment_3509" class="wp-caption alignnone" style="width: 610px"><a href="http://retracement.files.wordpress.com/2012/10/mrwoodyrestaurant.jpg"><img class="size-full wp-image-3509" title="mrwoodyrestaurant" src="http://retracement.files.wordpress.com/2012/10/mrwoodyrestaurant.jpg?w=640" alt=""   /></a><p class="wp-caption-text">Bond: Mr. Woody, do you expect me to talk?<br />Woody: No Mr. Bond, I *expect* you to eat your pie!</p></div>
<p>We were very pleased that out of all the speakers, nearly every single one confirmed (apart from one I believe). We did have a couple of speakers coming from Portugal (yep that guy Niko again &#8230;and the excellent Bruno Basto) that had indicated that they may be very late and might not be able to attend, but that aside we had an excellent turn out. We had also decided that every Gold and Silver sponsor (should they not already have speakers at the meal) would be given up to two invites for their representatives. We were really happy that every single sponsor took up the invite boosting the numbers further. Finally we were very honored and proud to be able to invite and include a couple of VIP guests (Marjorie, Christina, Magda &amp; Co!). These were friends, family and partners of a few of our dinner guests and I believe this really helped make the atmosphere even more relaxed and friendly.</p>
<p>Myself and Lorraine had discussed at great length about producing a seating plan for everyone, but at the last minute decided to &#8220;go with the flow&#8221; and let people sit with the people they really wanted to. Again I think this generally worked really well and contributed to the atmosphere.</p>
<p><span style="text-decoration:underline;">So what went wrong?</span><br />
Personally I felt that the evening meal was a huge success. There were however, a couple of points of note. The first problem was that we delayed the order until everybody had arrived. Whilst we had given around 30 minutes gap between seating and serving the order, we still had several people arriving slightly later. After another 10 minutes we decided that we couldn&#8217;t wait any longer and gave the word for the Chef to get his groove on. Thankfully by this stage, we were only around three people down (and two of those were the expected delays). At the time I was really conscious that the delay was slightly longer than people would have liked but it did give them time to chat, relax and drink wine -and certainly nobody had revolted at this point. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Another area of difficulty was encountered when the food was being served up. Since no one was sat in allocated seats, somebody needed to direct the (pretty!) waitresses to the right people/ tables. Yes it was a dirty job, but someone had to do it, so I volunteered. <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Despite my ineffective direction, they did a fantastic job of serving up, and learnt very quickly to ignore my help. Once the dishes started rolling, they kept coming at a pace and everyone seemed to be very happy with the food.</p>
<div id="attachment_3510" class="wp-caption alignnone" style="width: 610px"><a href="http://retracement.files.wordpress.com/2012/10/mark-and-lorraine.jpg"><img class="size-full wp-image-3510" title="mark and lorraine" src="http://retracement.files.wordpress.com/2012/10/mark-and-lorraine.jpg?w=640" alt=""   /></a><p class="wp-caption-text">Bleary eyed and bushy tailed, Moi and PM Lorraine starting to think about tomorrow and an early start!</p></div>
<p>My two Portuguese buddies arrived just as desert was being served and I asked Bruno whether they wanted something to eat to which he replied &#8220;of course!&#8221;. So after I managed to get them both seated, the restaurant staff did an excellent job serving them with vigor so that they were not waiting too long between courses.</p>
<p>Finally by the end of the night, the time came to settle the bill. Whilst it was rather large (four figures) it was almost exactly what I had expected and what we had budgeted for. Just as I was settling up, Lorraine reminded me about a tip. I&#8217;d totally forgotten about that, but they had certainly earned it. She told me that she probably had £10 in her purse, completely forgetting the size of the bill! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  After instructing the waitress to add on the correct percentage (yes it was much larger than £10), we departed for a relatively early night in preparation for the UK&#8217;s FIRST EVER SQLSATURDAY the following day!</p>
<p>The next post in this series will be &#8220;Memoirs of SQLSaturday #162 Part III: The SQLSaturday&#8221;. The previous post &#8220;<a title="Memoirs of SQLSaturday #162 Part I: Pre-Cons" href="http://tenbulls.co.uk/2012/09/12/memoirs-of-sqlsaturday-162-part-i-pre-cons/" target="_blank">Memoirs of SQLSaturday #162 Part I: Pre-Cons</a>&#8221; can be found by clicking on that url.</p>
<br />Filed under: <a href='http://tenbulls.co.uk/category/personaldevelopment/'>personaldevelopment</a>, <a href='http://tenbulls.co.uk/category/publicspeaking/'>publicspeaking</a>, <a href='http://tenbulls.co.uk/category/sql/'>sql</a>, <a href='http://tenbulls.co.uk/category/sqlsaturday/'>sqlsaturday</a>, <a href='http://tenbulls.co.uk/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/retracement.wordpress.com/3483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/retracement.wordpress.com/3483/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3483&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tenbulls.co.uk/2012/10/01/memoirs-of-sqlsaturday-162-part-ii-speaker-dinner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/3d4134010f571c843d45f3fc1dfeca3a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">retracement</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/10/dublin-humor.jpg" medium="image">
			<media:title type="html">dublin humor</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/10/ilovelisbon.jpg" medium="image">
			<media:title type="html">ilovelisbon</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/10/mrwoodyrestaurant.jpg" medium="image">
			<media:title type="html">mrwoodyrestaurant</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/10/mark-and-lorraine.jpg" medium="image">
			<media:title type="html">mark and lorraine</media:title>
		</media:content>
	</item>
		<item>
		<title>Using the SQL Server Installation Wizard on Server Core!</title>
		<link>http://tenbulls.co.uk/2012/09/19/using-the-sql-server-installation-wizard-on-server-core/</link>
		<comments>http://tenbulls.co.uk/2012/09/19/using-the-sql-server-installation-wizard-on-server-core/#comments</comments>
		<pubDate>Wed, 19 Sep 2012 18:47:25 +0000</pubDate>
		<dc:creator>retracement</dc:creator>
				<category><![CDATA[automation]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://tenbulls.co.uk/?p=3430</guid>
		<description><![CDATA[Ever heard the phrase &#8220;just because you can, doesn&#8217;t mean you should?&#8221;. Yep me too -many times, and what I am about to say comes with that caveat in mind although as I shall explain, I see absolutely no reason &#8230; <a href="http://tenbulls.co.uk/2012/09/19/using-the-sql-server-installation-wizard-on-server-core/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3430&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Ever heard the phrase &#8220;just because you can, doesn&#8217;t mean you should?&#8221;. Yep me too -many times, and what I am about to say comes with that caveat in mind although as I shall explain, I see absolutely no reason why you shouldn&#8217;t -certainly not in a development environment OR using this technique to produce a configuration installation file. But I&#8217;m getting ahead of myself, first let me describe our scenario.</p>
<p>With SQL server 2012, Windows Server Core became a supported option (on versions 2008 R2 and above) and whilst not every single component of SQL Server is supported on Core, there is now a very strong argument to move to that flavour of the Windows Operating System should your scenario warrant it. In fact for the last 12 months or so (and in particular when I am presenting my &#8220;<a title="Enter the Dragon" href="http://www.sqlpass.org/sqlrally/2012/dallas/Agenda/Session.aspx?sid=2190" target="_blank">Enter the Dragon: SQL 2012 on Server Core</a>&#8221; presentation, I always like to try and make a point to the audience that if they do not yet know what Server Core is, then they very much will do in 2 years time. Love it or loathe it, in my opinion, they <strong>*will*</strong> be using it by then. I predict a massive shift to what I like to call &#8220;<em>Skinny</em>&#8221; (or &#8220;<em>Low Fat</em>&#8220;) Windows as opposed to &#8220;<em>Full Fat Windows</em>&#8220;.</p>
<p>For those of you reading this article who are not entirely familiar with exactly <strong>*what*</strong> Windows Server Core is, I shall describe it simply as &#8220;<em>a reduced graphical interface version of Windows</em>&#8220;. Essentially what this means to you as an IT Professional or DBA is, that certain applications may or may not work on Core -especially if they use a Windows based GUI. This does not mean that all GUI based apps will not work, just the majority. Simple GUI driven applications such as <em>Notepad.exe</em> or <em>Taskman.exe</em> have full, or in the case of <em>Taskman</em> -partial support. <em>There are a couple of technical reasons why many GUI driven applications many not work on Server Core, but this is outside the scope of this post and perhaps I shall write about that another time.</em></p>
<p>We move nicely onto the subject of SQL Server and its related technologies and functionalities that it provides -which are supported on core. By and large there is a number to choose from so running SQL Server on Core is a very real proposition. Essentially, if you are thinking of moving to Skinny Windows, then I suggest you take a look at the MSDN page &#8220;<a title="Install SQL Server 2012 from the Command Prompt" href="http://msdn.microsoft.com/en-us/library/hh231669.aspx" target="_blank">Install SQL Server 2012 from the Command Prompt</a>&#8221; that lists the supported SQL Server features on Server Core.</p>
<p>By the time you are ready to install SQL Server on your Server Core Operating system, you will probably realize very early on that you have a little bit of a problem. Attempting to launch <em>setup.exe</em> will result in a fairly self explanatory error message.</p>
<div id="attachment_3436" class="wp-caption alignnone" style="width: 610px"><a href="http://retracement.files.wordpress.com/2012/09/servercoreerror.png"><img class="size-full wp-image-3436" title="servercoreerror" src="http://retracement.files.wordpress.com/2012/09/servercoreerror.png?w=640" alt=""   /></a><p class="wp-caption-text">Oh flip!</p></div>
<p>In fact I am sure you probably won&#8217;t have ever got to that error message because being the type of person I know you probably are, you will have read all the necessary literature and have noticed in the MSDN article &#8220;<a title="Install SQL Server 2012 on Server Core" href="http://msdn.microsoft.com/en-us/library/hh231669.aspx" target="_blank">Install SQL Server 2012 on Server Core</a>&#8221; it explicitly states &#8220;<span style="text-decoration:underline;"><em>SQL Server 2012 does not support setup by using the installation wizard on the Server Core operating system. When installing on Server Core, SQL Server Setup supports full quiet mode by using the /Q parameter, or Quiet Simple mode by using the /QS parameter</em></span>&#8220;.</p>
<p>There is a rather interesting parameter that you may see mentioned in the error message in the previous screen shot called <strong>UIMODE</strong>. Essentially if we pass in the switch and parameter of <em>/UIMODE=EnableUIOnServerCore</em> to <em>setup.exe</em>, this time we DO get the Installation Wizard. But (and this is a big BUT) none of the installation options will work.</p>
<div id="attachment_3438" class="wp-caption alignnone" style="width: 610px"><a href="http://retracement.files.wordpress.com/2012/09/dont-work.png"><img class="size-full wp-image-3438" title="dont work" src="http://retracement.files.wordpress.com/2012/09/dont-work.png?w=640" alt=""   /></a><p class="wp-caption-text">Who needs working installation options anyway?</p></div>
<p>By now you are probably starting to curse, and wondering what is the point of that option then? Looking back at the error you will also see the hint about using the <em>/QS</em> (or <em>/QUIETSIMPLE</em>) switch which shows progress but does not allow input. So if you try to use <em>/UIMODE=EnableUIOnServerCore</em> to bypass the Server Core restriction and specify <em>/QUIETSIMPLE</em> to show progress you will surprisingly receive an error message stating that these options are incompatible with each other!</p>
<p>Ironically we can simply specify the <em>QUIETSIMPLE</em> parameter without <em>UIMODE</em> set and now see the installation progress but only for unattended installs using a configuration file.<br />
e.g. <em>D:\&gt;setup.exe /IACCEPTSQLSERVERLICENSETERMS /CONFIGURATIONFILE=&#8221;ConfigurationFile.ini&#8221; /QUIETSIMPLE</em><br />
<a href="http://retracement.files.wordpress.com/2012/09/installing-core-with-quietsimple.png"><img class="alignnone size-full wp-image-3449" title="installing core with quietsimple" src="http://retracement.files.wordpress.com/2012/09/installing-core-with-quietsimple.png?w=640" alt=""   /></a></p>
<p>We will return to the <em>UIMODE</em> shortly but it is worth highlighting that we are still no closer to using the SQL Server Installation Wizard on Server Core! We have proved that the GUI does seem to work (albeit in unattended mode) and you will be wondering why *<strong>if*</strong> the GUI appears to work without error on Server Core in unattended mode, doesn&#8217;t it work in Wizard based attended mode. The truth of the matter is that the SQL installer is blocking itself on the Server Core OS and I assume Microsoft are gently trying to nudge you away from this type of deployment and that way of thinking on Server Core.</p>
<p>Now what if I told you that you <em>can</em>?</p>
<p>I first stumbled upon this bug (for want of a better word) whilst heavily involved in a SQL Server 2012 writing project earlier in the year -it was loosely related to another problem and bug caused through the very same issue. For more details on the other issue you can read my <a title="QS command line parameter does not override configuration file QUIETSIMPLE" href="http://connect.microsoft.com/SQLServer/feedback/details/713497/qs-command-line-parameter-does-not-override-configuration-file-quietsimple" target="_blank">Connect 713497</a>. If you are performing a command line based installation of SQL Server (and Core will force you through the command line), there are essentially two ways in which you can configure the SQL Server installation. The first is through parameters passed via <em>setup.exe</em> (as we have seen above) and the second is through the use of a configuration file -the location of which must be passed through the <em>/CONFIGURATIONFILE </em>parameter from the command line.</p>
<p>Now consider the situation where we have one parameter passed through the command line and one configuration file setting for the same parameter, both with different inputs. The expected behaviour is for the command line parameter to override any configuration file setting, and this is exactly how it works and is very useful for what I refer to as &#8220;<em>templated deployments</em>&#8220;. Specifically, you template standard configuration settings in configuration files and override them where your deployment necessitates so that your builds only deviate depending upon their requirements.</p>
<div id="attachment_3459" class="wp-caption alignnone" style="width: 456px"><a href="http://retracement.files.wordpress.com/2012/09/lady.png"><img class="size-full wp-image-3459" title="lady" src="http://retracement.files.wordpress.com/2012/09/lady.png?w=640" alt=""   /></a><p class="wp-caption-text">some bugs can be useful</p></div>
<p>In the aforementioned connect item, you will notice that I discovered the bug in which specifying the short-cut equivalent of <em>QUIETSIMPLE</em> (<em>QS</em>) on the command line and providing an alternative configuration file setting using the long syntax, the short-cut does not override the long syntax in the configuration file. In contrast, the short-cut equivalent of <em>QUIET</em> (<em>Q</em>) <strong>DOES</strong> (correctly) override the long syntax in the configuration file.</p>
<p>One behaviour that I did not mention when I raised that connect item was that by using the <em>/QS</em> (command line) and <em>QUIETSIMPLE</em> (configuration file) setting is that we can confuse <em>setup.exe</em> to believe we have specified a unattended installation through the <em>/QS</em> switch. Because it fails to override the <em>QUIETSIMPLE</em> setting (we have set it to False in the configuration file) -we manage to fool the SQL installation, skip the block for Core and enable the Wizard deployment through that configuration file setting.</p>
<p><big>Cool eh?!</big></p>
<p><a href="http://retracement.files.wordpress.com/2012/09/wizard-based-installation-on-core.png"><img class="alignnone size-full wp-image-3457" title="Wizard based installation on core" src="http://retracement.files.wordpress.com/2012/09/wizard-based-installation-on-core.png?w=640" alt=""   /></a></p>
<p>Now I have to confess that through my connect item you will note that it has been marked as fixed in the next Service Pack&#8230;. I might have single handily caused the demise of the most useful SQL Server 2012 bug (for Server Core deployments) by raising that connect. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8230;Just call me badassss!</p>
<p>But have no fear. Whilst writing this post and performing a little testing I came across another bypass. Whilst I demonstrated earlier the relative uselessness of the <em>UIMODE</em> switch, and it is worth pointing out that according to <a title="Connect 706799" href="http://connect.microsoft.com/SQLServer/feedback/details/706799/rc0-core-install-with-enableuionservercore-not-functional" target="_blank">Connect 706799</a> it seems the switch is not even a supported feature, we can actually use it to perform a similar piece of magic as before. If you remember earlier, when we used the switch and parameter of <em>/UIMODE=EnableUIOnServerCore</em>, we did not need to specify an unattended installation switch such as <em>/QUIETSIMPLE</em> or <em>/QUIET</em>. Unfortunately, when we performed this operation we essentially entered the rather useless setup screen. <strong>HOWEVER</strong> all we need to do is provide a switch to a configuration file ensuring that within it, we have set <em>QUIET=&#8221;False&#8221;</em> and <em>QUIETSIMPLE=&#8221;False&#8221;</em>. By doing so you will also skip the installation block and viola enter a fully functional SQL Server Installation Wizard on Server Core!</p>
<p>Enjoy.</p>
<p>p.s. Remember that Server Core does not support every single SQL Server feature, so it is important that you only select the supported features as documented by MSDN, otherwise the installation is likely to fail.</p>
<br />Filed under: <a href='http://tenbulls.co.uk/category/automation/'>automation</a>, <a href='http://tenbulls.co.uk/category/bug/'>bug</a>, <a href='http://tenbulls.co.uk/category/gui/'>gui</a>, <a href='http://tenbulls.co.uk/category/setup/'>setup</a>, <a href='http://tenbulls.co.uk/category/sql/'>sql</a>, <a href='http://tenbulls.co.uk/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a>, <a href='http://tenbulls.co.uk/category/windows/'>windows</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/retracement.wordpress.com/3430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/retracement.wordpress.com/3430/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3430&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tenbulls.co.uk/2012/09/19/using-the-sql-server-installation-wizard-on-server-core/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/3d4134010f571c843d45f3fc1dfeca3a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">retracement</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/09/servercoreerror.png" medium="image">
			<media:title type="html">servercoreerror</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/09/dont-work.png" medium="image">
			<media:title type="html">dont work</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/09/installing-core-with-quietsimple.png" medium="image">
			<media:title type="html">installing core with quietsimple</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/09/lady.png" medium="image">
			<media:title type="html">lady</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/09/wizard-based-installation-on-core.png" medium="image">
			<media:title type="html">Wizard based installation on core</media:title>
		</media:content>
	</item>
		<item>
		<title>Memoirs of SQLSaturday #162 Part I: Pre-Cons</title>
		<link>http://tenbulls.co.uk/2012/09/12/memoirs-of-sqlsaturday-162-part-i-pre-cons/</link>
		<comments>http://tenbulls.co.uk/2012/09/12/memoirs-of-sqlsaturday-162-part-i-pre-cons/#comments</comments>
		<pubDate>Wed, 12 Sep 2012 11:26:24 +0000</pubDate>
		<dc:creator>retracement</dc:creator>
				<category><![CDATA[personaldevelopment]]></category>
		<category><![CDATA[publicspeaking]]></category>
		<category><![CDATA[sqlsaturday]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>

		<guid isPermaLink="false">http://tenbulls.co.uk/?p=3412</guid>
		<description><![CDATA[Days have passed since we closed the first ever SQLSaturday to hit the shores of the UK and I write with an element of sadness that it is over, relief that my time can start to be more of my &#8230; <a href="http://tenbulls.co.uk/2012/09/12/memoirs-of-sqlsaturday-162-part-i-pre-cons/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3412&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Days have passed since we closed the first ever SQLSaturday to hit the shores of the UK and I write with an element of sadness that it is over, relief that my time can start to be more of my own again for other projects, and optimism of what may come.</p>
<p>When I first set out on the path of recording what I view as very much a mixture of personal and technical journal in the pages of this blog (and hopefully at times a good resource for others), I always intended to write at least one post per month. I always viewed it as a cardinal sin to let things slip, but unfortunately I truly underestimated the enormity of the work involved in planning, implementing and executing a major IT event. Now it is almost over (there are still many small administrative issues to complete) I think it is fair to say that Team <a title="SQLSaturday #162 Cambridge" href="http://www.sqlsaturday.com/162/eventhome.aspx" target="_blank">SQLSaturday #162 Cambridge</a> are able to take a deep breath and be proud of what we did.</p>
<div id="attachment_3425" class="wp-caption alignnone" style="width: 610px"><a href="http://retracement.files.wordpress.com/2012/09/buck.jpg"><img class="size-full wp-image-3425" title="buck" src="http://retracement.files.wordpress.com/2012/09/buck.jpg?w=640" alt=""   /></a><p class="wp-caption-text">Buck Woody giving some sage career advice</p></div>
<p>In my last post &#8220;<a title="Change and make a difference" href="http://tenbulls.co.uk/2012/05/04/change-and-make-a-difference/" target="_blank">Change and make a difference</a>&#8220;  I told my story of how I first had the idea of bringing SQLSaturday&#8217;s to the UK -which could so easily have been missed had I not made the effort to improve my social self and turn up to one single social evening at the PASS Summit in 2010. It demonstrates if anything ever could, that through the help and knowledge of others we can do beautiful things.</p>
<p>In this post I really want to start to review and celebrate the two days of this momentous event and we shall first begin by looking at the fantastic pre-cons on the Friday. I believed that if we were going to host a Friday training day as a pre cursor to the main Saturday community day, it was important to get some very talented people to present them.</p>
<p>We were first fortunate enough to land the services of one of the most well known and highly respected Microsoft employees -a certain Mr. Buck Woody (<a title="Buck Blog" href="http://buckwoody.com/" target="_blank">blog</a>|<a title="Buck Twitter" href="https://twitter.com/buckwoody" target="_blank">twitter</a>). After a lot of discussion with Buck about which pre-con to choose (yes he has several!) we decided to go with a rather fun idea and called it &#8220;Buck Woody&#8217;s Ragtime DBA Workshop&#8221;. I wanted this to be aimed not just at novice SQL Server DBAs, but wished to corner the market for Developers and Oracle DBAs who want to learn more SQL and perhaps even to help more experienced SQL DBAs. This really was a tall order to fill since we were trying to span a very wide audience skill range, but if anyone could manage it, Buck could.</p>
<p><img class="alignnone" style="border:1px solid black;" title="SQLSaturday #162 needs you!" src="http://retracement.files.wordpress.com/2012/05/buck162.jpg?w=400&#038;h=528" alt="" width="400" height="528" /></p>
<p>My next choice for a pre-con was a very clever speaker from Denmark called Mark Rasmussen (<a title="Mark Blog" href="http://improve.dk/" target="_blank">blog</a>|<a title="Mark Twitter" href="https://twitter.com/#!/improvedk" target="_blank">twitter</a>) who has reverse engineered the SQL Server Storage format for a SQL Server MDF File Parser called OrcaMDF -it can read and query the data files without SQL Server! I have been privileged to get to know Mark quite well over the last 12 months or more having spent a lot of time with him at SQLBits and SQLPASS and knew from the very beginning of pre-con planning that he was someone I wanted to present. Whilst the topic is quite specialised and knew the market for the material was perhaps smaller than other more &#8220;in demand&#8221; mainstream subjects, it was really due to my desire to sit in his pre-con (having already missed at least one opportunity to do so) and interest in the subject matter, that convinced me. If I wanted to attend, there would be many others -and that proved to be the case.</p>
<p>My final choice for a pre-con session is someone who has rapidly gained a very high reputation for her Data Visualisation knowledge and DataViz tool expertise. I am of course talking about Jen Stirrup (<a title="Jen Blog" href="http://www.jenstirrup.com/" target="_blank">blog</a>|<a title="Jen Twitter" href="https://twitter.com/jenstirrup" target="_blank">twitter</a>) -a friend I have known for a good few years. Having sat in many presentations she has given before, I have always been impressed by her ability to quote both popular and less popular authors on a vast range of subjects loosely related to DataViz and am never disappointed by what I see. This selection really wasn&#8217;t a difficult choice and provided a unique alternative to the other two offerings.</p>
<p>The feel of <a title="SQLSaturday #162 Cambridge" href="http://www.sqlsaturday.com/162/eventhome.aspx" target="_blank">SQLSaturday #162</a> was always aimed at being very much an inclusive community affair and I was very happy that all pre-con speakers told me from the start that being part of the event was the most important thing.</p>
<div id="attachment_3420" class="wp-caption alignnone" style="width: 610px"><a href="http://retracement.files.wordpress.com/2012/09/sadmarco.jpg"><img class="size-full wp-image-3420" title="sadmarco" src="http://retracement.files.wordpress.com/2012/09/sadmarco.jpg?w=640" alt=""   /></a><p class="wp-caption-text">Marco was sad he missed the Pre-Cons</p></div>
<p>One the day itself, I had a few minor hiccups with the venue, which with the help of two of our team and like me, fellow pre-con registrants John Martin (<a title="sqlservermonkey blog" href="http://sqlservermonkey.wordpress.com/" target="_blank">blog</a>|<a title="SQLServerMonkey Twitter" href="https://twitter.com/SQLSERVERMONKEY" target="_blank">twitter</a>) and Mark Pryce-Maher (<a title="Mark Blog" href="http://tsqltidy.blogspot.co.uk/" target="_blank">blog</a>|<a title="Mark Twitter" href="https://twitter.com/tsqltidy" target="_blank">twitter</a>) we resolved these problems very quickly before people started attending. I think without John and Mark we would have struggled and I was very grateful to them for getting so involved when they had also paid to attend the sessions. I was also disappointed and surprised that we had three people who did not turn up to the pre-cons having fully paid up. I did not receive any advance notification, and strangely enough have still not received any word of what happened -but it introduced a problem in that I felt someone needed to wait on the registration desk for several hours to make sure that they were not coming. That person obviously had to be me (missing a large part of Mark&#8217;s session). I also needed to oversee a few minor administrative issues during the afternoon and I had to miss the last part of his pre-con. Whilst that was personally disappointing, it was probably no big surprise.</p>
<p>On the whole, the day went really well and everybody that spoke to me were very pleased with the Friday pre-cons and personally thanked us for putting them on.</p>
<p>In the next post of this series I will talk about the successful SQLSaturday #162 speaker dinner&#8230;</p>
<br />Filed under: <a href='http://tenbulls.co.uk/category/personaldevelopment/'>personaldevelopment</a>, <a href='http://tenbulls.co.uk/category/publicspeaking/'>publicspeaking</a>, <a href='http://tenbulls.co.uk/category/sqlsaturday/'>sqlsaturday</a>, <a href='http://tenbulls.co.uk/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/retracement.wordpress.com/3412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/retracement.wordpress.com/3412/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tenbulls.co.uk&#038;blog=14026365&#038;post=3412&#038;subd=retracement&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tenbulls.co.uk/2012/09/12/memoirs-of-sqlsaturday-162-part-i-pre-cons/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/3d4134010f571c843d45f3fc1dfeca3a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">retracement</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/09/buck.jpg" medium="image">
			<media:title type="html">buck</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/05/buck162.jpg" medium="image">
			<media:title type="html">SQLSaturday #162 needs you!</media:title>
		</media:content>

		<media:content url="http://retracement.files.wordpress.com/2012/09/sadmarco.jpg" medium="image">
			<media:title type="html">sadmarco</media:title>
		</media:content>
	</item>
	</channel>
</rss>
