<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>TRUNCATE TABLE master..sysdatabases</title>
        <link>http://weblogs.sqlteam.com/robv/Default.aspx</link>
        <description>...and other neat SQL Server tricks</description>
        <language>en-US</language>
        <copyright>Most Valuable Yak (Rob Volk)</copyright>
        <generator>Subtext Version 2.5.1.0</generator>
        <image>
            <title>TRUNCATE TABLE master..sysdatabases</title>
            <url>http://weblogs.sqlteam.com/images/RSS2Image.gif</url>
            <link>http://weblogs.sqlteam.com/robv/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>SQL Saturday #220 - Atlanta - Pre-Con Scholarship Winners!</title>
            <category>Coolness</category>
            <category>Hotness</category>
            <link>http://weblogs.sqlteam.com/robv/archive/2013/05/07/SQLSat220PreConScholarshipWinners.aspx</link>
            <description>&lt;p&gt;&lt;a target="_blank" href="http://weblogs.sqlteam.com/robv/archive/2013/04/22/SQLSat220PreConScholarships.aspx"&gt;A few weeks ago&lt;/a&gt;, &lt;a target="_blank" href="http://www.atlantamdf.com/"&gt;AtlantaMDF&lt;/a&gt; offered scholarships for each of our upcoming Pre-conference sessions at SQL Saturday #220. We would like to congratulate the &lt;span style="COLOR: #aa2222; FONT-WEIGHT: bold"&gt;winners!&lt;/span&gt;&lt;/p&gt;
&lt;table cellspacing="1" cellpadding="2"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="COLOR: #aa2222; FONT-WEIGHT: bold"&gt;David Thomas&lt;/td&gt;
            &lt;td style="FONT-WEIGHT: bold"&gt;SQL Server Security&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://sqlsecurity.eventbrite.com/"&gt;http://sqlsecurity.eventbrite.com/&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="COLOR: #aa2222; FONT-WEIGHT: bold"&gt;Vince Bible&lt;/td&gt;
            &lt;td style="FONT-WEIGHT: bold"&gt;Surfing the Multicore Wave: Processors, Parallelism, and Performance&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://surfmulticore.eventbrite.com/"&gt;http://surfmulticore.eventbrite.com/&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="COLOR: #aa2222; FONT-WEIGHT: bold"&gt;Mostafa Maged&lt;/td&gt;
            &lt;td style="FONT-WEIGHT: bold"&gt;Languages of BI&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://languagesofbi.eventbrite.com/"&gt;http://languagesofbi.eventbrite.com/&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="COLOR: #aa2222; FONT-WEIGHT: bold"&gt;Daphne Adams&lt;/td&gt;
            &lt;td style="FONT-WEIGHT: bold"&gt;Practical Self-Service BI with PowerPivot for Excel&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://selfservicebi.eventbrite.com/"&gt;http://selfservicebi.eventbrite.com/&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="COLOR: #aa2222; FONT-WEIGHT: bold"&gt;Tim Lawrence&lt;/td&gt;
            &lt;td style="FONT-WEIGHT: bold"&gt;The DBA Skills Upgrade Toolkit&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://dbatoolkit.eventbrite.com/"&gt;http://dbatoolkit.eventbrite.com/&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;p&gt;Thanks to everyone who applied! And &lt;a target="_blank" href="http://datachix.com/2012/03/28/the-sql-saturday-111-precon-scholarship-winners-are/"&gt;once again&lt;/a&gt; we must thank &lt;a target="_blank" href="http://www.idera.com/"&gt;Idera's&lt;/a&gt; generous sponsorship, and the time and effort made by Bobby Dimmick (&lt;a target="_blank" href="http://www.bobbydimmick.com/"&gt;w&lt;/a&gt;|&lt;a target="_blank" href="http://twitter.com/#!/kr4ster"&gt;t&lt;/a&gt;) and Brian Kelley (&lt;a href="http://gkdba.wordpress.com/"&gt;w&lt;/a&gt;|&lt;a href="http://twitter.com/#!/kbriankelley"&gt;t&lt;/a&gt;) of &lt;a target="_blank" href="http://midlands.sqlpass.org/"&gt;Midlands PASS&lt;/a&gt; for judging all the applicants. &lt;/p&gt;
&lt;p&gt;Don't forget, there's still time to attend the Pre-Cons on May 17, 2013! Click on the EventBrite links for more details and to register!&lt;/p&gt;
&lt;a target="_blank" href="http://www.atlantamdf.com/"&gt;&lt;img alt="" width="66" height="81" src="http://i.imgur.com/4xXXRu9.png" /&gt;&lt;/a&gt;    &lt;a target="_blank" href="http://www.idera.com/"&gt;&lt;img alt="" width="150" src="http://i.imgur.com/tSxVTEQ.png" /&gt;&lt;/a&gt;&lt;img src="http://weblogs.sqlteam.com/robv/aggbug/61459.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Most Valuable Yak (Rob Volk)</dc:creator>
            <guid>http://weblogs.sqlteam.com/robv/archive/2013/05/07/SQLSat220PreConScholarshipWinners.aspx</guid>
            <pubDate>Tue, 07 May 2013 19:18:36 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/robv/archive/2013/05/07/SQLSat220PreConScholarshipWinners.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/robv/comments/commentRss/61459.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/robv/services/trackbacks/61459.aspx</trackback:ping>
        </item>
        <item>
            <title>SQL Saturday #220 - Atlanta - Pre-Conference Scholarships!</title>
            <category>Coolness</category>
            <category>Hotness</category>
            <link>http://weblogs.sqlteam.com/robv/archive/2013/04/22/SQLSat220PreConScholarships.aspx</link>
            <description>&lt;p align="center"&gt; &lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="2" width="600" align="center"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="200"&gt;&lt;a target="_blank" href="http://www.atlantamdf.com/"&gt;&lt;img alt="" width="150" src="http://i.imgur.com/4xXXRu9.png" /&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="200"&gt;&lt;img alt="" width="150" src="http://i.imgur.com/EVeH2aG.jpg" /&gt;&lt;/td&gt;
            &lt;td valign="middle" width="200"&gt;&lt;a target="_blank" href="http://www.idera.com/"&gt;&lt;img alt="" width="150" src="http://i.imgur.com/tSxVTEQ.png" /&gt;&lt;/a&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="TEXT-ALIGN: center; FONT-SIZE: large" valign="top" colspan="3"&gt;We Want &lt;strong&gt;YOU&lt;/strong&gt;…To Learn!&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.atlantamdf.com/"&gt;AtlantaMDF&lt;/a&gt; and &lt;a target="_blank" href="http://www.idera.com/"&gt;Idera&lt;/a&gt; are teaming up to find a few good people. If you are: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;A student looking to work in the database or business intelligence fields &lt;/li&gt;
    &lt;li&gt;A database professional who is between jobs or wants a better one &lt;/li&gt;
    &lt;li&gt;A developer looking to step up to something new &lt;/li&gt;
    &lt;li&gt;On a limited budget and can’t afford professional SQL Server training &lt;/li&gt;
    &lt;li style="FONT-WEIGHT: bold"&gt;Able to attend training from 9 to 5 on May 17, 2013 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AtlantaMDF is presenting 5 Pre-Conference Sessions (pre-cons) for SQL Saturday #220! And thanks to Idera’s sponsorship, we can offer one free ticket to each of these sessions to eligible candidates! That means one scholarship per Pre-Con!&lt;/p&gt;
&lt;p&gt;One Recipient Each will Attend:&lt;/p&gt;
&lt;table cellspacing="1" cellpadding="2"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="TEXT-ALIGN: right"&gt;Denny Cherry:&lt;/td&gt;
            &lt;td style="FONT-WEIGHT: bold"&gt;SQL Server Security&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://sqlsecurity.eventbrite.com/"&gt;http://sqlsecurity.eventbrite.com/&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="TEXT-ALIGN: right"&gt;Adam Machanic:&lt;/td&gt;
            &lt;td style="FONT-WEIGHT: bold"&gt;Surfing the Multicore Wave: Processors, Parallelism, and Performance&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://surfmulticore.eventbrite.com/"&gt;http://surfmulticore.eventbrite.com/&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="TEXT-ALIGN: right"&gt;Stacia Misner:&lt;/td&gt;
            &lt;td style="FONT-WEIGHT: bold"&gt;Languages of BI&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://languagesofbi.eventbrite.com/"&gt;http://languagesofbi.eventbrite.com/&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="TEXT-ALIGN: right"&gt;Bill Pearson:&lt;/td&gt;
            &lt;td style="FONT-WEIGHT: bold"&gt;Practical Self-Service BI with PowerPivot for Excel&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://selfservicebi.eventbrite.com/"&gt;http://selfservicebi.eventbrite.com/&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="TEXT-ALIGN: right"&gt;Eddie Wuerch:&lt;/td&gt;
            &lt;td style="FONT-WEIGHT: bold"&gt;The DBA Skills Upgrade Toolkit&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://dbatoolkit.eventbrite.com/"&gt;http://dbatoolkit.eventbrite.com/&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;p&gt;If you are interested in attending these pre-cons &lt;strong&gt;send an email by April 30, 2013 to &lt;u&gt;&lt;a href="mailto:AtlantaMDFPrecons@gmail.com"&gt;AtlantaMDFPrecons@gmail.com&lt;/a&gt;&lt;/u&gt;&lt;/strong&gt; and tell us:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Why you are a good candidate to receive this scholarship &lt;/li&gt;
    &lt;li&gt;Which sessions you’d like to attend, and why (list multiple sessions in order of preference) &lt;/li&gt;
    &lt;li&gt;What the session will teach you and how it will help you achieve your goals &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The emails will be evaluated by the good folks at &lt;a href="http://midlands.sqlpass.org/" target="_blank"&gt;Midlands PASS&lt;/a&gt; in Columbia, SC. The recipients will be notified by email and announcements made on &lt;strong&gt;May 6, 2013.&lt;/strong&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE: large; FONT-WEIGHT: bold"&gt;GOOD LUCK!&lt;/p&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;P.S. - Don't forget that SQLSaturday #220 offers free* training in addition to the pre-cons!&lt;br /&gt;
You can find more information about SQL Saturday #220 at &lt;a target="_blank" href=" http://www.sqlsaturday.com/220/eventhome.aspx"&gt;http://www.sqlsaturday.com/220/eventhome.aspx&lt;/a&gt;.&lt;br /&gt;
View the scheduled sessions at &lt;a target="_blank" href="http://www.sqlsaturday.com/220/schedule.aspx"&gt;http://www.sqlsaturday.com/220/schedule.aspx&lt;/a&gt; and register for them at &lt;a target="_blank" href="http://www.sqlsaturday.com/220/register.aspx"&gt;http://www.sqlsaturday.com/220/register.aspx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;* Registration charges a $10 fee to cover lunch expenses.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/robv/aggbug/61458.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Most Valuable Yak (Rob Volk)</dc:creator>
            <guid>http://weblogs.sqlteam.com/robv/archive/2013/04/22/SQLSat220PreConScholarships.aspx</guid>
            <pubDate>Mon, 22 Apr 2013 19:59:56 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/robv/archive/2013/04/22/SQLSat220PreConScholarships.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/robv/comments/commentRss/61458.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/robv/services/trackbacks/61458.aspx</trackback:ping>
        </item>
        <item>
            <title>Database Mirroring on SQL Server Express Edition</title>
            <category>Coolness</category>
            <category>Stupidness</category>
            <category>Oddball</category>
            <link>http://weblogs.sqlteam.com/robv/archive/2013/04/01/database-mirroring-on-sql-server-express-edition.aspx</link>
            <description>&lt;p&gt;Like most SQL Server users I'm rather frustrated by Microsoft's insistence on making the really cool features only available in Enterprise Edition.  And it really doesn't help that they changed the licensing for SQL 2012 to be core-based, so now it's like 4 times as expensive!  It almost makes you want to go with Oracle.  That, and a desire to have Larry Ellison do things to your orifices.&lt;/p&gt;

&lt;p&gt;And since they've introduced Availability Groups, and marked database mirroring as deprecated, you'd think they'd make make mirroring available in all editions.  Alas…they don't…officially anyway.  Thanks to &lt;a href="http://weblogs.sqlteam.com/robv/archive/2012/08/14/t-sql-tuesday-33-trick-shots-undocumented-underdocumented-and-unknown.aspx" target="_blank"&gt;my constant poking around in places I'm not "supposed" to&lt;/a&gt;, I've discovered the low-level code that implements database mirroring, and found that it's available in all editions!&lt;/p&gt;

&lt;p&gt;It turns out that the query processor in all SQL Server editions prepends a simple check before every edition-specific DDL statement:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;IF &lt;/span&gt;&lt;span style="color: magenta"&gt;CAST&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: magenta"&gt;SERVERPROPERTY&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: red"&gt;'Edition'&lt;/span&gt;&lt;span style="color: gray"&gt;) &lt;/span&gt;&lt;span style="color: blue"&gt;as nvarchar&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: magenta"&gt;max&lt;/span&gt;&lt;span style="color: gray"&gt;)) NOT LIKE &lt;/span&gt;&lt;span style="color: red"&gt;'%e%e%e% Edition%'
&lt;/span&gt;&lt;span style="color: blue"&gt;print &lt;/span&gt;&lt;span style="color: red"&gt;'Lame'
&lt;/span&gt;&lt;span style="color: blue"&gt;else
print &lt;/span&gt;&lt;span style="color: red"&gt;'Cool'
&lt;/span&gt;&lt;/pre&gt;

&lt;br /&gt;

&lt;p&gt;If that statement returns true, it fails. (the print statements are just placeholders)  Go ahead and test it on Standard, Workgroup, and Express editions compared to an Enterprise or Developer edition instance (which support everything).&lt;/p&gt;

&lt;p&gt;Once again thanks to Argenis Fernandez (&lt;a title="He's gonna kill me for this some day..." href="http://sqlblog.com/blogs/argenis_fernandez/default.aspx" target="_blank"&gt;b&lt;/a&gt; | &lt;a href="http://twitter.com/DBArgenis" target="_blank"&gt;t&lt;/a&gt;) and his awesome sessions on &lt;a href="http://sqlblog.com/blogs/argenis_fernandez/archive/2011/10/11/regular-session-at-the-2011-pass-summit-troubleshooting-sql-server-with-sysinternals-tools.aspx" target="_blank"&gt;using Sysinternals&lt;/a&gt;, I was able to watch the exact process SQL Server performs when setting up a mirror.  Surprisingly, it's not actually implemented in SQL Server!  Some of it is, but that's something of a smokescreen, the real meat of it is simple filesystem primitives.&lt;/p&gt;

&lt;p&gt;The NTFS filesystem supports links, both hard links and symbolic, so that you can create two entries for the same file in different directories and/or different names.  You can create them using the &lt;a href="http://technet.microsoft.com/en-us/library/cc753194(v=ws.10).aspx" target="_blank"&gt;MKLINK&lt;/a&gt; command in a command prompt:&lt;/p&gt;

&lt;pre&gt;&lt;strong&gt;mklink /D D:\SkyDrive\Data D:\Data
mklink /D D:\SkyDrive\Log D:\Log&lt;/strong&gt;&lt;/pre&gt;

&lt;br /&gt;

&lt;p&gt;This creates a symbolic link from my data and log folders to my Skydrive folder.  Any file saved in either location will instantly appear in the other.  And since my Skydrive will be automatically synchronized with the cloud, any changes I make will be copied instantly (depending on my internet bandwidth of course).&lt;/p&gt;

&lt;p&gt;So what does this have to do with database mirroring?  Well, it seems that the mirroring endpoint that you have to create between mirror and principal servers is really nothing more than a Skydrive link.  Although it doesn't actually use Skydrive, it performs the same function.  So in effect, the following statement:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;ALTER DATABASE &lt;/span&gt;Mir &lt;span style="color: blue"&gt;SET PARTNER&lt;/span&gt;&lt;span style="color: gray"&gt;=&lt;/span&gt;&lt;span style="color: red"&gt;'TCP://MyOtherServer.domain.com:5022'&lt;/span&gt;&lt;/pre&gt;

&lt;br /&gt;

&lt;p&gt;Is turned into:&lt;/p&gt;

&lt;pre&gt;&lt;strong&gt;mklink /D "D:\Data" "\\MyOtherServer.domain.com\5022$"&lt;/strong&gt;&lt;/pre&gt;

&lt;br /&gt;

&lt;p&gt;The 5022$ "port" is actually a hidden system directory on the principal and mirror servers. I haven't quite figured out how the log files are included in this, or why you have to SET PARTNER on both principal and mirror servers, except maybe that mklink has to do something special when linking across servers.  I couldn't get the above statement to work correctly, but found that doing mklink to a local Skydrive folder gave me similar functionality.&lt;/p&gt;

&lt;p&gt;To wrap this up, all you have to do is the following:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Install Skydrive on both SQL Servers (principal and mirror) and set the local Skydrive folder (D:\SkyDrive in these examples) &lt;/li&gt;

  &lt;li&gt;On the principal server, run mklink /D on the data and log folders to point to SkyDrive: &lt;font face="Courier New"&gt;&lt;strong&gt;mklink /D D:\SkyDrive\Data D:\Data&lt;/strong&gt;&lt;/font&gt; &lt;/li&gt;

  &lt;li&gt;On the mirror server, run the complementary linking: &lt;font face="Courier New"&gt;&lt;strong&gt;mklink /D D:\Data D:\SkyDrive\Data&lt;/strong&gt;&lt;/font&gt; &lt;/li&gt;

  &lt;li&gt;Create your database and make sure the files map to the principal data and log folders (D:\Data and D:\Log) &lt;/li&gt;

  &lt;li&gt;Viola&lt;a title="Yeah, I know it's spelled wrong." href="#AprilFools" target="_blank"&gt;!&lt;/a&gt; Your databases are kept in sync on multiple servers! &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One wrinkle you will encounter is that the mirror server will show the data and log files, but you won't be able to attach them to the mirror SQL instance while they are attached to the principal. I think this is a bug in the Skydrive, but as it turns out that's fine: you can't access a mirror while it's hosted on the principal either.  So you don't quite get automatic failover, but you can attach the files to the mirror if the principal goes offline.  It's also not exactly synchronous, but it's better than nothing, and easier than either replication or log shipping with a lot less latency.&lt;/p&gt;

&lt;p&gt;I will end this with the obvious "not supported by Microsoft" and "Don't do this in production without an updated resume" spiel that you should by now assume with every one of my blog posts, especially considering the date.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/robv/aggbug/61456.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Most Valuable Yak (Rob Volk)</dc:creator>
            <guid>http://weblogs.sqlteam.com/robv/archive/2013/04/01/database-mirroring-on-sql-server-express-edition.aspx</guid>
            <pubDate>Mon, 01 Apr 2013 23:00:39 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/robv/archive/2013/04/01/database-mirroring-on-sql-server-express-edition.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/robv/comments/commentRss/61456.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/robv/services/trackbacks/61456.aspx</trackback:ping>
        </item>
        <item>
            <title>SQL Saturday #220 Atlanta May 2013!</title>
            <category>Coolness</category>
            <category>Hotness</category>
            <link>http://weblogs.sqlteam.com/robv/archive/2013/03/20/sql-saturday-220-atlanta-may-2013.aspx</link>
            <description>&lt;style type="text/css"&gt;&lt;![CDATA[
.bold { text-align: right; font-weight: bold; }
td { vertical-align: top; } ]]&gt;&lt;/style&gt;
&lt;p&gt;If you love SQL Server training and are near the Atlanta area, or just love us so much you're willing to travel here, please come join us for:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="6"&gt;SQL SATURDAY #220!&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The main event is &lt;strong&gt;Saturday, May 18&lt;/strong&gt;.  The event is &lt;strong&gt;free&lt;/strong&gt;, with a $10.00 lunch fee.  The main page has more details here: &lt;a target="_blank" href="http://www.sqlsaturday.com/220/eventhome.aspx"&gt;http://www.sqlsaturday.com/220/eventhome.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We are also offering &lt;strong&gt;pre-conference&lt;/strong&gt; sessions on &lt;strong&gt;Friday, May 17&lt;/strong&gt;, by 5 world-renowned presenters:&lt;/p&gt;
&lt;div&gt;
&lt;table style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid" border="0" cellspacing="2" cellpadding="2" align="left"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="TEXT-ALIGN: right; FONT-WEIGHT: bold"&gt;Denny Cherry:&lt;/td&gt;
            &lt;td&gt;&lt;a href="http://sqlsecurity.eventbrite.com/"&gt;SQL Server Security&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://sqlsecurity.eventbrite.com/"&gt;Register!&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://www.mrdenny.com"&gt;Site&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://twitter.com/mrdenny"&gt;Twitter&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="TEXT-ALIGN: right; FONT-WEIGHT: bold"&gt;Adam Machanic:&lt;/td&gt;
            &lt;td&gt;&lt;a href="http://surfmulticore.eventbrite.com/"&gt;Surfing the Multicore Wave: Processors, Parallelism, and Performance&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://surfmulticore.eventbrite.com/"&gt;Register!&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://sqlblog.com/blogs/adam_machanic"&gt;Site&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://twitter.com/AdamMachanic"&gt;Twitter&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="TEXT-ALIGN: right; FONT-WEIGHT: bold"&gt;Stacia Misner:&lt;/td&gt;
            &lt;td&gt;&lt;a href="http://languagesofbi.eventbrite.com/"&gt;Languages of BI&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://languagesofbi.eventbrite.com/"&gt;Register!&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://blog.datainspirations.com"&gt;Site&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://twitter.com/StaciaMisner"&gt;Twitter&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="TEXT-ALIGN: right; FONT-WEIGHT: bold"&gt;Bill Pearson:&lt;/td&gt;
            &lt;td&gt;&lt;a href="http://selfservicebi.eventbrite.com/"&gt;Practical Self-Service BI with PowerPivot for Excel&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://selfservicebi.eventbrite.com/"&gt;Register!&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://mvp.microsoft.com/en-US/findanmvp/Pages/profile.aspx?MVPID=02c5cd07-7511-4151-a678-3a4a3451f85e"&gt;Site&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://twitter.com/Bill_Pearson"&gt;Twitter&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="TEXT-ALIGN: right; FONT-WEIGHT: bold"&gt;Eddie Wuerch:&lt;/td&gt;
            &lt;td&gt;&lt;a href="http://dbatoolkit.eventbrite.com/"&gt;The DBA Skills Upgrade Toolkit&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://dbatoolkit.eventbrite.com/"&gt;Register!&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://www.indydba.com/"&gt;Site&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;&lt;a target="_blank" href="http://twitter.com/EddieW"&gt;Twitter&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;We have an early bird registration price of &lt;strong&gt;$119&lt;/strong&gt; until &lt;strong&gt;noon EST Friday, March 22&lt;/strong&gt;.  After that the price goes to &lt;strong&gt;$149&lt;/strong&gt;, a STEAL when you compare it to the PASS Summit price. :)&lt;/p&gt;
&lt;p&gt;Please click on the links to register and for more information.  You can also follow the hash tag &lt;strong&gt;#SQLSatATL&lt;/strong&gt; on Twitter for more news about this event.&lt;/p&gt;
&lt;p&gt;Can't wait to see you all there!&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/robv/aggbug/61455.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Most Valuable Yak (Rob Volk)</dc:creator>
            <guid>http://weblogs.sqlteam.com/robv/archive/2013/03/20/sql-saturday-220-atlanta-may-2013.aspx</guid>
            <pubDate>Wed, 20 Mar 2013 22:52:13 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/robv/archive/2013/03/20/sql-saturday-220-atlanta-may-2013.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/robv/comments/commentRss/61455.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/robv/services/trackbacks/61455.aspx</trackback:ping>
        </item>
        <item>
            <title>SQL Saturday #162 Cambridge</title>
            <category>Coolness</category>
            <link>http://weblogs.sqlteam.com/robv/archive/2012/09/10/sql-saturday-162-cambridge.aspx</link>
            <description>&lt;p&gt;Despite the efforts of American Airlines, this past weekend I attended the first &lt;a href="http://www.sqlsaturday.com/162/eventhome.aspx" target="_blank"&gt;SQL Saturday in the UK&lt;/a&gt;!  Hosted by the &lt;a href="http://sqlcambs.org.uk/" target="_blank"&gt;SQLCambs Chapter of PASS&lt;/a&gt; and organized by Mark (&lt;a href="http://tenbulls.co.uk/" target="_blank"&gt;b&lt;/a&gt;|&lt;a href="http://www.twitter.com/retracement" target="_blank"&gt;t&lt;/a&gt;) &amp;amp; Lorraine Broadbent, ably assisted by John Martin (&lt;a href="http://sqlservermonkey.wordpress.com/" target="_blank"&gt;b&lt;/a&gt;|&lt;a href="http://twitter.com/SQLServerMonkey" target="_blank"&gt;t&lt;/a&gt;), Mark Pryce-Maher (&lt;a href="http://www.tsqltidy.com/" target="_blank"&gt;b&lt;/a&gt;|&lt;a href="http://twitter.com/tsqltidy" target="_blank"&gt;t&lt;/a&gt;) and other folks whose names I've unfortunately forgotten, it was held at the Crowne Plaza Hotel, which is completely surrounded by &lt;a href="http://www.cam.ac.uk/" target="_blank"&gt;Cambridge University&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On Friday, they presented 3 pre-conference sessions given by the brilliant American Cloud &amp;amp; DBA Guru, Buck Woody (&lt;a href="http://blogs.msdn.com/b/buckwoody/" target="_blank"&gt;b&lt;/a&gt;|&lt;a href="http://www.twitter.com/buckwoody" target="_blank"&gt;t&lt;/a&gt;), the brilliant Danish SQL Server Internals Guru, Mark Rasmussen (&lt;a href="http://improve.dk/" target="_blank"&gt;b&lt;/a&gt;|&lt;a href="http://twitter.com/improvedk" target="_blank"&gt;t&lt;/a&gt;), and the brilliant Scottish Business Intelligence Guru and &lt;a href="http://www.jenstirrup.com/2012/09/ive-won-outstanding-sqlpass-volunteer.html" target="_blank"&gt;recent Outstanding Pass Volunteer&lt;/a&gt;, Jen Stirrup (&lt;a href="http://www.jenstirrup.com/" target="_blank"&gt;b&lt;/a&gt;|&lt;a href="http://twitter.com/jenstirrup" target="_blank"&gt;t&lt;/a&gt;).  While I would have loved to attend any of their pre-cons (having seen them present several times already), finances and American Airlines ultimately made that impossible.  But not to worry, I caught up with them during the regular sessions and at the speaker dinner.  And I got back the money they all owed me.  (Actually I owed Mark some money)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.sqlsaturday.com/162/schedule.aspx" target="_blank"&gt;The schedule&lt;/a&gt; was jam-packed even with only 4 tracks, there were 8 regular slots, a lunch session for sponsor presentations, and a 15 minute keynote given by Buck Woody, who besides giving an excellent history of SQL Server at Microsoft (and before), also explained the source of the "unknown contact" image that appears in Outlook.  Hint: it's &lt;a title="too much hair, not enough smile...and EVERYONE knows Buck anyway" href="http://arstechnica.com/information-technology/2010/09/bill-gates-staring-back-at-you-from-outlook-2010/" target="_blank"&gt;not Buck himself&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Amazingly, (and against all better judgment, ;) they allowed me to present at SQL Saturday 162!  I did a 5 minute Lightning Talk on Regular Expressions in SSMS.  I then did a &lt;a href="http://www.sqlsaturday.com/viewsession.aspx?sat=162&amp;amp;sessionid=9517" target="_blank"&gt;regular 50 minute session on Constraints&lt;/a&gt;.  You can download the content for the regular session at that link, and for the regular expression presentation &lt;a href="https://dl.dropbox.com/u/26648/Volk_Regex_SQLSat162.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I had a great time and had a great audience for both of my sessions.  You would never have guessed this was the first event for the organizers, everything went very smoothly, especially for the number of attendees and the relative smallness of the space.  The &lt;a href="http://www.sqlsaturday.com/162/sponsors.aspx" target="_blank"&gt;event sponsors&lt;/a&gt; also deserve a lot of credit for making themselves fit in a small area and for staying through the entire event until the giveaways at the very end.&lt;/p&gt;

&lt;p&gt;Overall this was one of the best SQL Saturdays I've ever attended and I have to congratulate Mark B, Lorraine, John, Mark P-M, and all the volunteers and speakers for making this an astoundingly hard act to follow!  Well done!&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/robv/aggbug/61434.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Most Valuable Yak (Rob Volk)</dc:creator>
            <guid>http://weblogs.sqlteam.com/robv/archive/2012/09/10/sql-saturday-162-cambridge.aspx</guid>
            <pubDate>Mon, 10 Sep 2012 22:21:38 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/robv/archive/2012/09/10/sql-saturday-162-cambridge.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/robv/comments/commentRss/61434.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/robv/services/trackbacks/61434.aspx</trackback:ping>
        </item>
        <item>
            <title>T-SQL Tuesday #34: Help! I Need Somebody!</title>
            <category>Coolness</category>
            <link>http://weblogs.sqlteam.com/robv/archive/2012/09/04/t-sql-tuesday-34-help-i-need-somebody-again.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://weblogs.sqlteam.com/robv/archive/2012/09/04/t-sql-tuesday-34-help-i-need-somebody-again.aspx"&gt;&lt;img style="float: left" src="http://i.imgur.com/Wmt0B.jpg" /&gt;&lt;/a&gt;Welcome everyone to T-SQL Tuesday Episode 34!  When last we tuned in, Mike Fal (&lt;a href="http://www.mikefal.net/" target="_blank"&gt;b&lt;/a&gt;|&lt;a href="http://twitter.com/Mike_Fal" target="_blank"&gt;t&lt;/a&gt;) hosted &lt;a href="http://www.mikefal.net/2012/08/07/invitation-to-t-sql-tuesday-33-trick-shots-tsql2sday/" target="_blank"&gt;Trick Shots&lt;/a&gt;.  These highlighted techniques or tricks that you figured out on your own which helped you understand SQL Server better.&lt;/p&gt;

&lt;p&gt;This month, I'm asking you to look back this past week, year, century, or hour...to a time when you COULDN'T figure it out.  When you were stuck on a SQL Server problem and you had to seek help.&lt;/p&gt;

&lt;h2&gt;In the beginning...&lt;/h2&gt;

&lt;p&gt;
  &lt;br /&gt;SQL Server has changed a lot since I started with it.  &lt;strong&gt;&amp;lt;Cranky Old Guy&amp;gt;&lt;/strong&gt; &lt;em&gt;Back in my day, &lt;a href="http://msdn.microsoft.com/en-us/library/ms130214.aspx" target="_blank"&gt;Books Online&lt;/a&gt; was neither.  There were no &lt;a href="http://weblogs.sqlteam.com/" target="_blank"&gt;blogs&lt;/a&gt;. &lt;a href="http://www.google.com" target="_blank"&gt;Google&lt;/a&gt; was the third-place search site. There were perhaps two or three &lt;a href="http://www.sqlteam.com/forums/default.asp" target="_blank"&gt;community&lt;/a&gt; &lt;a href="http://www.sqlservercentral.com/Forums/" target="_blank"&gt;forums&lt;/a&gt; where you could ask questions.  (Besides the &lt;a href="http://www.microsoft.com/communities/newsgroups/en-us/default.aspx" target="_blank"&gt;Microsoft newsgroups&lt;/a&gt;...which you had to access with &lt;a href="http://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CEoQFjAA&amp;amp;url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FUsenet&amp;amp;ei=iQpGUMzIIIPs9AS304HwAg&amp;amp;usg=AFQjCNGzlhULzaVSxjkqcltiZN8u2LekTw&amp;amp;sig2=M8v6N0QC8KDYDl9D1yTBGw" target="_blank"&gt;Usenet&lt;/a&gt;.  And endure the wrath of...&lt;a href="http://www.simple-talk.com/author/joe-celko/" target="_blank"&gt;Celko&lt;/a&gt;.)  Your "training" was reading a &lt;a title="RIP Ken Henderson" href="http://goo.gl/IZ1Pc" target="_blank"&gt;book&lt;/a&gt;, made from real dead trees, that you bought from your choice of brick-and-mortar bookstore. And except for your &lt;a href="http://www.atlantamdf.com/" target="_blank"&gt;local user groups&lt;/a&gt;, there were no &lt;a href="http://www.sqlpass.org/summit/2012" target="_blank"&gt;conferences&lt;/a&gt;, &lt;a href="http://dataeducation.com/" target="_blank"&gt;seminars&lt;/a&gt;, &lt;a href="http://www.sqlsaturday.com/" target="_blank"&gt;SQL Saturdays&lt;/a&gt;, or any &lt;a href="http://www.sqlpass.org/24hours/" target="_blank"&gt;online video hookups&lt;/a&gt; where you could interact with a person. You'd have to call &lt;a href="http://support.microsoft.com/" target="_blank"&gt;Microsoft Support&lt;/a&gt;...on the phone...a &lt;a href="http://i.imgur.com/jk1on.jpg" target="_blank"&gt;LANDLINE phone&lt;/a&gt;.  And none of this "&lt;a href="http://twitter.com/#!/search/%23sqlfamily" target="_blank"&gt;SQL Family&lt;/a&gt;" business!&lt;/em&gt;&lt;strong&gt;&amp;lt;/Cranky Old Guy&amp;gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Even now, with all these excellent resources available, it's still daunting for a beginner to seek help for SQL Server.  The product is roughly 1247.4523 times larger than it was 15 years ago, and it's simply impossible to know everything about it.&lt;a title="Unless you work here..." href="http://www.sqlskills.com/" target="_blank"&gt;*&lt;/a&gt;  So whether you are a beginner, or a seasoned pro of over a decade's experience, what do you do when you need help on SQL Server?&lt;/p&gt;

&lt;h2&gt;That's so meta...&lt;/h2&gt;

&lt;p&gt;
  &lt;br /&gt;In the spirit of offering help, here are some suggestions for your topic:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Tell us about a person or SQL Server community who have been helpful to you.  It can be about a technical problem, or not, e.g. someone who volunteered for your local SQL Saturday.  Sing their praises!  Let the world know who they are! &lt;/li&gt;

  &lt;li&gt;Do you have any tricks for using Books Online?  Do you use the locally installed product, or are you completely online with &lt;a href="http://msdn.microsoft.com/en-us/library/ms130214.aspx" target="_blank"&gt;BOL/MSDN/Technet&lt;/a&gt;, and why? &lt;/li&gt;

  &lt;li&gt;If you've been using SQL Server for over 10 years, how has your help-seeking changed? Are you using &lt;a href="http://twitter.com/#!/search/?q=%23sqlhelp" target="_blank"&gt;Twitter&lt;/a&gt;, &lt;a href="http://stackoverflow.com/" target="_blank"&gt;StackOverflow&lt;/a&gt;, &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/sqlserver" target="_blank"&gt;MSDN Forums&lt;/a&gt;, or another resource that didn't exist when you started? What made you switch? &lt;/li&gt;

  &lt;li&gt;Do you spend more time helping others than seeking help? What motivates you to help, and how do you contribute? &lt;/li&gt;

  &lt;li&gt;Structure your post along the &lt;a href="http://www.lyrics007.com/The%20Beatles%20Lyrics/Help!%20Lyrics.html" target="_blank"&gt;lyrics to The Beatles song &lt;em&gt;Help!&lt;/em&gt;&lt;/a&gt; Audio or &lt;a href="http://www.youtube.com/watch?v=3t8MeE8Ik4Y" target="_blank"&gt;video&lt;/a&gt; renditions are particularly welcome! Lyrics must include reference to SQL Server terminology or community, and performances must be in your voice or include you playing an instrument. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are just suggestions, you are free to write whatever you like.  Bonus points if you can incorporate ALL of these into a single post.  (Or you can do multiple posts, we're flexible like that.)  Help us help others by showing how others helped you!&lt;/p&gt;

&lt;h2&gt;Legalese, Your Rights, Yada yada...&lt;/h2&gt;

&lt;p&gt;
  &lt;br /&gt;If you would like to participate in T-SQL Tuesday please be sure to follow the rules below:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Your blog post must be published between Tuesday, September 11, 2012 00:00:00 GMT and Wednesday, September 12, 2012 00:00:00 GMT. &lt;/li&gt;

  &lt;li&gt;Include the &lt;a href="http://i.imgur.com/Wmt0B.jpg" target="_blank"&gt;T-SQL Tuesday logo&lt;/a&gt; (above) and hyperlink it &lt;a href="http://weblogs.sqlteam.com/robv/archive/2012/09/04/t-sql-tuesday-34-help-i-need-somebody-again.aspx"&gt;back to this post&lt;/a&gt;. &lt;/li&gt;

  &lt;li&gt;If you don’t see your post in trackbacks, add the link to the comments below.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are on Twitter please tweet your blog using the &lt;a href="http://twitter.com/#!/search/%23tsql2sday"&gt;#TSQL2sDay&lt;/a&gt; hashtag.  I can be contacted there as &lt;a href="http://twitter.com/sql_r" target="_blank"&gt;@sql_r&lt;/a&gt;, in case you have questions or problems with comments/trackback.  I'll have a follow-up post listing all the contributions as soon as I can.&lt;/p&gt;

&lt;p&gt;Thank you all for participating, and special thanks to Adam Machanic (&lt;a href="http://sqlblog.com/blogs/adam_machanic/" target="_blank"&gt;b&lt;/a&gt;|&lt;a href="http://twitter.com/AdamMachanic" target="_blank"&gt;t&lt;/a&gt;) for all his help and for continuing &lt;a href="http://sqlblog.com/blogs/adam_machanic/archive/tags/_2300_tsql2sday/default.aspx" target="_blank"&gt;this series&lt;/a&gt;!&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/robv/aggbug/61433.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Most Valuable Yak (Rob Volk)</dc:creator>
            <guid>http://weblogs.sqlteam.com/robv/archive/2012/09/04/t-sql-tuesday-34-help-i-need-somebody-again.aspx</guid>
            <pubDate>Tue, 04 Sep 2012 15:03:56 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/robv/archive/2012/09/04/t-sql-tuesday-34-help-i-need-somebody-again.aspx#feedback</comments>
            <slash:comments>10</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/robv/comments/commentRss/61433.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/robv/services/trackbacks/61433.aspx</trackback:ping>
        </item>
        <item>
            <title>T-SQL Tuesday #33: Trick Shots: Undocumented, Underdocumented, and Unknown Conspiracies!</title>
            <category>Coolness</category>
            <category>Hotness</category>
            <link>http://weblogs.sqlteam.com/robv/archive/2012/08/14/t-sql-tuesday-33-trick-shots-undocumented-underdocumented-and-unknown.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://www.mikefal.net/2012/08/07/invitation-to-t-sql-tuesday-33-trick-shots-tsql2sday/" target="_blank"&gt;&lt;img style="float: left" src="http://www.mikefal.net/wp-content/uploads/2011/04/TSQL2sDay150x150.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mike Fal (&lt;a href="http://www.mikefal.net/" target="_blank"&gt;b&lt;/a&gt; | &lt;a href="http://twitter.com/Mike_Fal" target="_blank"&gt;t&lt;/a&gt;) is &lt;a href="http://www.mikefal.net/2012/08/07/invitation-to-t-sql-tuesday-33-trick-shots-tsql2sday/" target="_blank"&gt;hosting this month's T-SQL Tuesday on Trick Shots&lt;/a&gt;.  I love this choice because I've been preoccupied with sneaky/tricky/evil SQL Server stuff for a long time and have been presenting on it for the past year.  Mike's directives were "Show us a cool trick or process you developed…It doesn’t have to be useful", which most of my blogging definitely fits, and "Tell us what you learned from this trick…tell us how it gave you insight in to how SQL Server works", which is definitely a new concept.  I've done a lot of &lt;a href="http://www.sqlskills.com/MCM.asp" target="_blank"&gt;reading&lt;/a&gt; and &lt;a href="http://www.sqlskills.com/T_MCMVideos.asp" target="_blank"&gt;watching&lt;/a&gt; on SQL Server Internals and even &lt;a href="http://www.sqlskills.com/T_ImmersionInternalsDesign.asp" target="_blank"&gt;attended training&lt;/a&gt;, but sometimes I need to go explore on my own, using my own tools and techniques.  It's an itch I get every few months, and, well, it sure beats workin'.&lt;/p&gt;

&lt;p&gt;I've found some people to be intimidated by SQL Server's internals, and I'll admit there are &lt;a href="http://www.amazon.com/Microsoft-SQL-Server-2012-Internals/dp/0735658560/ref=sr_1_2" target="_blank"&gt;A LOT&lt;/a&gt; of &lt;a href="http://www.amazon.com/Professional-Server-2012-Internals-Troubleshooting/dp/1118177657/ref=sr_1_1" target="_blank"&gt;internals&lt;/a&gt; to keep track of, but there are tons of excellent resources that clearly document most of them, and show how &lt;a title="Paul White is insanely smart." href="http://sqlblog.com/blogs/paul_white/archive/2011/02/23/Advanced-TSQL-Tuning-Why-Internals-Knowledge-Matters.aspx" target="_blank"&gt;knowing even the basics of internals can dramatically improve your database's performance&lt;/a&gt;.  It may seem like rocket science, or even brain surgery, but you don't have to be a genius to understand it.&lt;/p&gt;

&lt;p&gt;Although being an "&lt;a title="I can use my powers for good or evil.  I choose good.  I just keep evil in reserve." href="http://twitter.com/RonDBA/status/117686013207379968" target="_blank"&gt;evil genius&lt;/a&gt;" can help you learn some things they haven't told you about. ;)&lt;/p&gt;

&lt;p&gt;This blog post isn't a traditional "&lt;a href="http://manning.com/nielsen/" target="_blank"&gt;deep&lt;/a&gt; &lt;a href="http://www.manning.com/delaney/" target="_blank"&gt;dive&lt;/a&gt;" into internals, it's more of an approach to find out how a program works.  It utilizes an &lt;a title="STRINNNNNNNNGS!" href="http://technet.microsoft.com/en-us/sysinternals/bb897439" target="_blank"&gt;extremely handy tool&lt;/a&gt; from an even more extremely handy suite of tools, &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx" target="_blank"&gt;Sysinternals&lt;/a&gt;.  I'm not the only one who finds Sysinternals useful for SQL Server: Argenis Fernandez (&lt;a href="http://sqlblog.com/blogs/argenis_fernandez/default.aspx" target="_blank"&gt;b&lt;/a&gt; | &lt;a href="https://twitter.com/DBArgenis" target="_blank"&gt;t&lt;/a&gt;), Microsoft employee and former &lt;a href="http://sqlblog.com/blogs/argenis_fernandez/archive/2012/03/05/t-sql-tuesday-028-jack-of-all-trades-master-of-none.aspx" target="_blank"&gt;T-SQL Tuesday host&lt;/a&gt;, has an excellent presentation on &lt;a href="http://sqlblog.com/blogs/argenis_fernandez/archive/2011/10/11/regular-session-at-the-2011-pass-summit-troubleshooting-sql-server-with-sysinternals-tools.aspx" target="_blank"&gt;how to troubleshoot SQL Server using Sysinternals&lt;/a&gt;, and I highly recommend it.  Argenis didn't cover the Strings.exe utility, but I'll be using it to "hack" the SQL Server executable (DLL and EXE) files.&lt;/p&gt;

&lt;p&gt;Please note that I'm not promoting software piracy or applying these techniques to attack SQL Server via internal knowledge. This is strictly educational and doesn't reveal any proprietary Microsoft information.  And since Argenis works for Microsoft and demonstrated Sysinternals with SQL Server, I'll just let him take the blame for it. :P (The truth is I've used Strings.exe on SQL Server before I ever met Argenis.)&lt;/p&gt;

&lt;p&gt;Once you download and install Strings.exe you can run it from the command line.  For our purposes we'll want to run this in the Binn folder of your SQL Server instance (I'm referencing SQL Server 2012 RTM):&lt;/p&gt;

&lt;pre class="code"&gt;cd "C:\Program Files\Microsoft SQL Server\MSSQL11\MSSQL\Binn"
C:\Program Files\Microsoft SQL Server\MSSQL11\MSSQL\Binn&amp;gt; strings *sql*.dll &amp;gt; sqldll.txt
C:\Program Files\Microsoft SQL Server\MSSQL11\MSSQL\Binn&amp;gt; strings *sql*.exe &amp;gt; sqlexe.txt&lt;/pre&gt;

&lt;pre class="code"&gt; &lt;/pre&gt;

&lt;p&gt;I've limited myself to DLLs and EXEs that have "sql" in their names.  There are quite a few more but I haven't examined them in any detail. (Homework assignment for you!)&lt;/p&gt;

&lt;p&gt;If you run this yourself you'll get 2 text files, one with all the extracted strings from every SQL DLL file, and the other with the SQL EXE strings.  You can open these in Notepad, but you're better off using Notepad++, EditPad, Emacs, Vim or another more powerful text editor, as these will be several megabytes in size.&lt;/p&gt;

&lt;p&gt;And when you do open it…you'll find…a TON of gibberish.  (If you think that's bad, just try opening the raw DLL or EXE file in Notepad.  And by the way, don't do this in production, or even on a running instance of SQL Server.)  Even if you don't clean up the file, you can still use your editor's search function to find a keyword like "SELECT" or some other item you expect to be there.  As dumb as this sounds, I sometimes spend my lunch break just scanning the raw text for anything interesting.  I'm boring like that.&lt;/p&gt;

&lt;p&gt;Sometimes though, having these files available can lead to some incredible learning experiences.  For me the most recent time was after reading &lt;a href="http://www.sqlskills.com/blogs/joe/" target="_blank"&gt;Joe Sack's&lt;/a&gt; post on &lt;a href="http://www.sqlskills.com/blogs/joe/post/SQL-Server-2012-Execution-Plane28099s-NonParallelPlanReason.aspx" target="_blank"&gt;non-parallel plan reasons&lt;/a&gt;.  He mentions a new SQL Server 2012 execution plan element called NonParallelPlanReason, and demonstrates a query that generates "MaxDOPSetToOne".  Joe (formerly on the Microsoft SQL Server product team, so he knows this stuff) mentioned that this new element was not currently documented and tried a few more examples to see what other reasons could be generated.&lt;/p&gt;

&lt;p&gt;Since I'd already run Strings.exe on the SQL Server DLLs and EXE files, it was easy to run &lt;a href="http://en.wikipedia.org/wiki/Grep" target="_blank"&gt;grep&lt;/a&gt;/&lt;a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/find.mspx?mfr=true" target="_blank"&gt;find&lt;/a&gt;/&lt;a href="http://technet.microsoft.com/en-us/library/bb490907.aspx" target="_blank"&gt;findstr&lt;/a&gt; for MaxDOPSetToOne on those extracts.  Once I found which files it belonged to (sqlmin.dll) I opened the text to see if the other reasons were listed.  As you can see in my comment on Joe's blog, there were about 20 additional non-parallel reasons.  And while it's not "documentation" of this underdocumented feature, the names are pretty self-explanatory about what can prevent parallel processing. I especially like the ones about cursors – more ammo! - and am curious about the PDW compilation and Cloud DB replication reasons.&lt;/p&gt;

&lt;p&gt;One reason completely stumped me: NoParallelHekatonPlan.  What the heck is a hekaton?  Google and Wikipedia were vague, and the top results were not in English.  I found one reference to Greek, stating "hekaton" can be translated as "hundredfold"; with a little more Wikipedia-ing this leads to &lt;a href="http://en.wikipedia.org/wiki/Hecto-" target="_blank"&gt;hecto&lt;/a&gt;, the prefix for "one hundred" as a unit of measure.  I'm not sure why Microsoft chose hekaton for such a plan name, but having already learned some Greek I figured I might as well dig some more in the DLL text for hekaton.  Here's what I found:&lt;/p&gt;

&lt;p&gt;&lt;font color="#ff0000"&gt;hekaton_slow_param_passing 
    &lt;br /&gt;Occurs when a Hekaton procedure call dispatch goes to slow parameter passing code path 

    &lt;br /&gt;The reason why Hekaton parameter passing code took the slow code path 

    &lt;br /&gt;hekaton_slow_param_pass_reason&lt;/font&gt; 

  &lt;br /&gt;&lt;font color="#0000ff"&gt;sp_deploy_hekaton_database 
    &lt;br /&gt;sp_undeploy_hekaton_database 

    &lt;br /&gt;sp_drop_hekaton_database 

    &lt;br /&gt;sp_checkpoint_hekaton_database 

    &lt;br /&gt;sp_restore_hekaton_database&lt;/font&gt; 

  &lt;br /&gt;&lt;font color="#008000"&gt;e:\sql11_main_t\sql\ntdbms\hekaton\sqlhost\sqllang\hkproc.cpp 
    &lt;br /&gt;e:\sql11_main_t\sql\ntdbms\hekaton\sqlhost\sqllang\matgen.cpp 

    &lt;br /&gt;e:\sql11_main_t\sql\ntdbms\hekaton\sqlhost\sqllang\matquery.cpp 

    &lt;br /&gt;e:\sql11_main_t\sql\ntdbms\hekaton\sqlhost\sqllang\sqlmeta.cpp 

    &lt;br /&gt;e:\sql11_main_t\sql\ntdbms\hekaton\sqlhost\sqllang\resultset.cpp&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;Interesting!  The first 4 entries (in red) mention parameters and "slow code".  Could this be the foundation of the mythical DBCC RUNFASTER command?  Have I been passing my parameters the slow way all this time?&lt;/p&gt;

&lt;p&gt;And what about those sp_xxxx_hekaton_database procedures (in blue)? Could THEY be the secret to a faster SQL Server? Could they promise a "hundredfold" improvement in performance?  Are these special, super-undocumented DIB (databases in black)?&lt;/p&gt;

&lt;p&gt;I decided to look in the SQL Server system views for any objects with hekaton in the name, or references to them, in hopes of discovering some new code that would answer all my questions:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;SELECT &lt;/span&gt;&lt;span style="color: gray"&gt;name &lt;/span&gt;&lt;span style="color: blue"&gt;FROM &lt;/span&gt;&lt;span style="color: green"&gt;sys&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: green"&gt;all_objects 
    &lt;/span&gt;&lt;span style="color: blue"&gt;WHERE &lt;/span&gt;name &lt;span style="color: gray"&gt;LIKE &lt;/span&gt;&lt;span style="color: red"&gt;'%hekaton%'
&lt;/span&gt;&lt;span style="color: blue"&gt;SELECT &lt;/span&gt;&lt;span style="color: gray"&gt;name &lt;/span&gt;&lt;span style="color: blue"&gt;FROM &lt;/span&gt;&lt;span style="color: green"&gt;sys&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: green"&gt;all_objects 
    &lt;/span&gt;&lt;span style="color: blue"&gt;WHERE &lt;/span&gt;&lt;span style="color: magenta"&gt;object_definition&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: magenta"&gt;OBJECT_ID&lt;/span&gt;&lt;span style="color: gray"&gt;) LIKE &lt;/span&gt;&lt;span style="color: red"&gt;'%hekaton%'&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;p&gt;Which revealed:&lt;/p&gt;

&lt;pre class="code"&gt;name
------------------------

(0 row(s) affected)

name
------------------------
sp_createstats
sp_recompile
sp_updatestats

(3 row(s) affected)&lt;/pre&gt;

&lt;pre class="code"&gt; &lt;/pre&gt;

&lt;p&gt;Hmm.  Well that didn't find much.  Looks like these procedures are seriously undocumented, unknown, perhaps forbidden knowledge. Maybe a part of &lt;a href="http://en.wikipedia.org/wiki/Cthulhu_Mythos" target="_blank"&gt;some unspeakable evil&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;(No, I'm not paranoid, I just like mysteries and thought that punching this up with that kind of thing might keep you reading.  I know I'd fall asleep without it.)&lt;/p&gt;

&lt;p&gt;OK, so let's check out those 3 procedures and see what they reveal when I search for "Hekaton":&lt;/p&gt;

&lt;p&gt;sp_createstats:&lt;/p&gt;

&lt;pre class="code"&gt;-- filter out local temp tables, Hekaton tables, and tables for which current user has no permissions
-- Note that OBJECTPROPERTY returns NULL on type="IT" tables, thus we only call it on type='U' tables&lt;/pre&gt;

&lt;pre class="code"&gt; &lt;/pre&gt;

&lt;p&gt;OK, that's interesting, let's go looking down a little further:&lt;/p&gt;

&lt;pre class="code"&gt;((@table_type&amp;lt;&amp;gt;'U') or (0 = OBJECTPROPERTY(@table_id, 'TableIsInMemory'))) and -- Hekaton table&lt;/pre&gt;

&lt;pre class="code"&gt; &lt;/pre&gt;

&lt;p&gt;Wellllll, that tells us a few new things:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;There's such a thing as Hekaton tables (UPDATE: &lt;a href="http://sqlservice.se/sv/start/blogg/sql-server-mystery-hekaton-tables-and-hekaton-procedures.aspx" target="_blank"&gt;I'm not the only one to have found them&lt;/a&gt;!) &lt;/li&gt;

  &lt;li&gt;&lt;s&gt;They are not standard user tables and probably not in memory&lt;/s&gt;  UPDATE: I misinterpreted this because I didn't read all the code when I wrote this blog post. &lt;/li&gt;

  &lt;li&gt;The OBJECTPROPERTY function has an undocumented TableIsInMemory option &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let's check out sp_recompile:&lt;/p&gt;

&lt;pre class="code"&gt;--  (3) Must not be a Hekaton procedure.&lt;/pre&gt;

&lt;pre class="code"&gt; &lt;/pre&gt;

&lt;p&gt;And once again go a little further:&lt;/p&gt;

&lt;pre class="code"&gt;if (ObjectProperty(@objid, 'IsExecuted') &amp;lt;&amp;gt; 0 AND
    ObjectProperty(@objid, 'IsInlineFunction') = 0 AND
    ObjectProperty(@objid, 'IsView') = 0 AND
    -- Hekaton procedure cannot be recompiled
    -- Make them go through schema version bumping branch, which will fail
        ObjectProperty(@objid, 'ExecIsCompiledProc') = 0)&lt;/pre&gt;

&lt;pre class="code"&gt; &lt;/pre&gt;

&lt;p&gt;And now we learn that hekaton procedures also exist, they can't be recompiled, there's a "schema version bumping branch" somewhere, and OBJECTPROPERTY has another undocumented option, ExecIsCompiledProc.  (If you experiment with this you'll find this option returns null, I think it only works when called from a system object.)&lt;/p&gt;

&lt;p&gt;This is neat! Sadly sp_updatestats doesn't reveal anything new, the comments about hekaton are the same as sp_createstats.  But we've ALSO discovered undocumented features for the OBJECTPROPERTY function, which we can now search for:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;SELECT &lt;/span&gt;name&lt;span style="color: gray"&gt;, &lt;/span&gt;&lt;span style="color: magenta"&gt;object_definition&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: magenta"&gt;OBJECT_ID&lt;/span&gt;&lt;span style="color: gray"&gt;) &lt;/span&gt;&lt;span style="color: blue"&gt;FROM &lt;/span&gt;&lt;span style="color: green"&gt;sys&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: green"&gt;all_objects 
    &lt;/span&gt;&lt;span style="color: blue"&gt;WHERE &lt;/span&gt;&lt;span style="color: magenta"&gt;object_definition&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: magenta"&gt;OBJECT_ID&lt;/span&gt;&lt;span style="color: gray"&gt;) LIKE &lt;/span&gt;&lt;span style="color: red"&gt;'%OBJECTPROPERTY(%'&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;span style="color: red" /&gt; &lt;/pre&gt;

&lt;p&gt;I'll leave that to you as more homework.  I should add that searching the system procedures was recommended long ago by the late, great Ken Henderson, in his &lt;a href="http://www.amazon.com/s/ref=nb_sb_ss_i_1_13?field-keywords=ken+henderson+sql" target="_blank"&gt;Guru's Guide books&lt;/a&gt;, as a great way to find undocumented features.  That &lt;a href="http://weblogs.sqlteam.com/robv/archive/2010/10/01/handy-sql-server-function-series-part-1.aspx" target="_blank"&gt;seems&lt;/a&gt; to be &lt;a title="Why this one is undocumented really escapes me..." href="http://weblogs.sqlteam.com/robv/archive/2010/10/04/hssfs-part-3-sql-saturday-is-awesome-and-default_domain-and.aspx" target="_blank"&gt;really good advice&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Now if you're a programmer/hacker, you've probably been drooling over the last 5 entries for hekaton (in green), because these are the names of source code files for SQL Server!  Does this mean we can access the source code for SQL Server?  As &lt;a title="Sorry Mary Alice, you're good, but Gloria beats you..." href="http://www.imdb.com/name/nm0287825/" target="_blank"&gt;The Oracle&lt;/a&gt; suggested to &lt;a title="WHOA! EXCELLENT SQL SERVER HEKATONS DUDE!" href="http://www.imdb.com/name/nm0000206/" target="_blank"&gt;Neo&lt;/a&gt;, can we return to The Source???&lt;/p&gt;

&lt;p&gt;Actually, no.&lt;/p&gt;

&lt;p&gt;Well, maybe a little bit.  While you won't get the actual source code from the compiled DLL and EXE files, you'll get references to source files, debugging symbols, variables and module names, error messages, and even the startup flags for SQL Server.  And if you search for "DBCC" or "CHECKDB" you'll find a really nice section listing all the DBCC commands, including the undocumented ones.  Granted those are pretty easy to find online, but you may be surprised what those web sites DIDN'T tell you! (And neither will I, go look for yourself!)  And as we saw earlier, you'll also find execution plan elements, &lt;a title="Paul White is a smart dude, you should read everything he writes. Keep a bucket handy to catch your brain as it melts out your ears though..." href="http://sqlblog.com/blogs/paul_white/archive/2012/04/28/query-optimizer-deep-dive-part-2.aspx" target="_blank"&gt;query processing rules&lt;/a&gt;, and who knows what else.  It's also instructive to see how Microsoft organizes their source directories, how various components (storage engine, query processor, Full Text, AlwaysOn/HADR) are split into smaller modules. There are over 2000 source file references, &lt;a href="http://i.imgur.com/sYMiC.gif" target="_blank"&gt;go do some exploring&lt;/a&gt;! &lt;/p&gt;

&lt;p&gt;So what did we learn?  We can pull strings out of executable files, search them for known items, browse them for unknown items, and use the results to examine internal code to &lt;a href="http://i.imgur.com/WOgv0.jpg" target="_blank"&gt;learn even more things&lt;/a&gt; about SQL Server.  We've even learned how to use command-line utilities!  We are now 1337 h4X0rz!  (Not really.  I hate that leetspeak crap.)&lt;/p&gt;

&lt;p&gt;Although, I must confess I might've gone too far with the "conspiracy" part of this post.  I apologize for that, it's just my overactive imagination.  There's really no hidden agenda or conspiracy regarding SQL Server internals.  It's not The Matrix.  It's not like you'd find anything like that in there:&lt;/p&gt;

&lt;pre class="code"&gt;Attach Matrix Database
DM_MATRIX_COMM_PIPELINES
MATRIXXACTPARTICIPANTS
dm_matrix_agents&lt;/pre&gt;

&lt;p&gt;
  &lt;br /&gt;&lt;img style="border: none;" src="http://i.imgur.com/GKxJY.jpg" /&gt; &lt;/p&gt;

&lt;p&gt;Alright, enough of this paranoid ranting!  Microsoft are not really evil!  It's not like they're &lt;a href="http://i.imgur.com/LKwg6.jpg" target="_blank"&gt;The Borg&lt;/a&gt; from Star Trek:&lt;/p&gt;

&lt;pre class="code"&gt;ALTER FEDERATION DROP
ALTER FEDERATION SPLIT
DROP FEDERATION&lt;/pre&gt;

&lt;pre class="code"&gt; &lt;/pre&gt;

&lt;p&gt;&lt;img style="border: none;" src="http://i.imgur.com/GKxJY.jpg" /&gt;&lt;/p&gt;

&lt;p&gt;#tsql2sday&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/robv/aggbug/61430.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Most Valuable Yak (Rob Volk)</dc:creator>
            <guid>http://weblogs.sqlteam.com/robv/archive/2012/08/14/t-sql-tuesday-33-trick-shots-undocumented-underdocumented-and-unknown.aspx</guid>
            <pubDate>Tue, 14 Aug 2012 23:30:00 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/robv/archive/2012/08/14/t-sql-tuesday-33-trick-shots-undocumented-underdocumented-and-unknown.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/robv/comments/commentRss/61430.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/robv/services/trackbacks/61430.aspx</trackback:ping>
        </item>
        <item>
            <title>Throw Things at Me…In Person!</title>
            <category>Coolness</category>
            <link>http://weblogs.sqlteam.com/robv/archive/2012/07/16/throw-things-at-mein-person.aspx</link>
            <description>&lt;p&gt;I have a few speaking engagements coming up &lt;a title="there's no known way to say &amp;quot;In July&amp;quot;..." href="https://www.youtube.com/watch?v=V14PfDDwxlE" target="_blank"&gt;in July&lt;/a&gt;.  I will be getting my Revenge on twice this week, first at the Steel City SQL User Group in Birmingham, Alabama July 17, 2012:&lt;/p&gt;

&lt;p&gt;New Horizon Computer Learning Center
  &lt;br /&gt;601 Beacon Pkwy. West, Suite 106

  &lt;br /&gt;Birmingham, AL 35209

  &lt;br /&gt;Register: &lt;a href="http://steelcitysqljul2012.eventbrite.com/"&gt;http://steelcitysqljul2012.eventbrite.com/&lt;/a&gt;

  &lt;br /&gt;6-8 pm CST&lt;/p&gt;

&lt;p&gt;Not content with that, with my hands behind my back, I will pull the same thing from my hat at SQL Saturday 122 in Louisville, KY on July 21, 2012: &lt;a href="http://www.sqlsaturday.com/122/schedule.aspx"&gt;Schedule&lt;/a&gt; &lt;a href="http://www.sqlsaturday.com/122/register.aspx"&gt;Register&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These include Revenge: The SQL Parts 1 AND 2!  New and improved with the new Office 2013 Preview!  (Ummm, not really).&lt;/p&gt;

&lt;p&gt;I will then Tame Unruly Data at SQL Saturday 126 in Indianapolis, IN &lt;a title="...enough &amp;quot;IN&amp;quot; words for you?" href="https://www.youtube.com/watch?v=V14PfDDwxlE" target="_blank"&gt;in July&lt;/a&gt; 28, 2012: &lt;a href="http://www.sqlsaturday.com/126/schedule.aspx"&gt;Schedule&lt;/a&gt; &lt;a href="http://www.sqlsaturday.com/126/register.aspx"&gt;Register&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you will be in any of those places at those times, and I owe you money, that would be the best time for you to collect.  Just make sure not to warn me first, otherwise I may not show.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/robv/aggbug/61428.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Most Valuable Yak (Rob Volk)</dc:creator>
            <guid>http://weblogs.sqlteam.com/robv/archive/2012/07/16/throw-things-at-mein-person.aspx</guid>
            <pubDate>Mon, 16 Jul 2012 20:26:12 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/robv/archive/2012/07/16/throw-things-at-mein-person.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/robv/comments/commentRss/61428.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/robv/services/trackbacks/61428.aspx</trackback:ping>
        </item>
        <item>
            <title>T-SQL Tuesday #31 - Logging Tricks with CONTEXT_INFO</title>
            <category>Coolness</category>
            <category>Hotness</category>
            <link>http://weblogs.sqlteam.com/robv/archive/2012/06/12/t-sql-tuesday-31-logging-tricks-with-context_info.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://sqlvariant.com/2012/06/t-sql-tuesday-31-logging/" target="_blank"&gt;&lt;img style="padding-bottom: 6px; margin: 6px; padding-left: 6px; padding-right: 6px; float: left; padding-top: 6px" src="http://sqlblog.com/files/folders/30073/download.aspx" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlvariant.com/2012/06/t-sql-tuesday-31-logging/" target="_blank"&gt;This month's T-SQL Tuesday&lt;/a&gt; is being hosted by Aaron Nelson [&lt;a href="http://sqlvariant.com/" target="_blank"&gt;b&lt;/a&gt; | &lt;a href="http://twitter.com/#!/SQLvariant" target="_blank"&gt;t&lt;/a&gt;], fellow Atlantan (the city in Georgia, not the famous sunken city, or the resort in the Bahamas) and covers the topic of logging (the recording of information, not the harvesting of trees) and maintains the fine &lt;a href="http://sqlblog.com/blogs/adam_machanic/archive/tags/_2300_tsql2sday/default.aspx" target="_blank"&gt;T-SQL Tuesday tradition&lt;/a&gt; begun by Adam Machanic [&lt;a href="http://sqlblog.com/blogs/adam_machanic/" target="_blank"&gt;b&lt;/a&gt; | &lt;a href="http://twitter.com/#!/AdamMachanic" target="_blank"&gt;t&lt;/a&gt;] (the SQL Server guru, not the guy who fixes cars, check the spelling again, there will be a quiz later).&lt;/p&gt;  &lt;p&gt;This is a trick I learned from Fernando Guerrero [&lt;a href="http://blogs.solidq.com/fguerrero/home.aspx?language=english" target="_blank"&gt;b&lt;/a&gt; | &lt;a href="https://twitter.com/#!/FernanSQL" target="_blank"&gt;t&lt;/a&gt;] waaaaaay back during the PASS Summit 2004 in sunny, hurricane-infested Orlando, during his session on Secret SQL Server (not sure if that's the correct title, and I haven't used parentheses in this paragraph yet).  &lt;a href="http://msdn.microsoft.com/en-us/library/ms180125.aspx" target="_blank"&gt;CONTEXT_INFO&lt;/a&gt; is a neat little feature that's existed since SQL Server 2000 and perhaps even earlier.  It lets you assign data to the current session/connection, and maintains that data until you disconnect or change it.  In addition to the CONTEXT_INFO() function, you can also query the context_info column in &lt;a href="http://msdn.microsoft.com/en-us/library/ms176013.aspx" target="_blank"&gt;sys.dm_exec_sessions&lt;/a&gt;, or even &lt;a href="http://msdn.microsoft.com/en-us/library/ms179881.aspx" target="_blank"&gt;sysprocesses&lt;/a&gt; if you're still running SQL Server 2000, if you need to see it for another session.&lt;/p&gt;  &lt;p&gt;While you're limited to 128 bytes, one big advantage that CONTEXT_INFO has is that it's independent of any transactions.  If you've ever logged to a table in a transaction and then lost messages when it rolled back, you can understand how aggravating it can be.  CONTEXT_INFO also survives across multiple SQL batches (GO separators) in the same connection, so for those of you who were going to suggest "just log to a table variable, they don't get rolled back":  HA-HA, I GOT YOU!  Since GO starts a new batch all variable declarations are lost.&lt;/p&gt;  &lt;p&gt;Here's a simple example I recently used at work.  I had to test database mirroring configurations for disaster recovery scenarios and measure the network throughput.  I also needed to log how long it took for the script to run and include the mirror settings for the database in question.  I decided to use AdventureWorks as my database model, and Adam Machanic's &lt;a href="http://sqlblog.com/blogs/adam_machanic/archive/2011/10/17/thinking-big-adventure.aspx" target="_blank"&gt;Big Adventure script&lt;/a&gt; to provide a fairly large workload that's repeatable and easily scalable.  My test would consist of several copies of AdventureWorks running the Big Adventure script while I mirrored the databases (or not).&lt;/p&gt;  &lt;p&gt;Since Adam's script contains several batches, I decided CONTEXT_INFO would have to be used.  As it turns out, I only needed to grab the start time at the beginning, I could get the rest of the data at the end of the process.   The code is pretty small:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;declare &lt;/span&gt;@time &lt;span style="color: blue"&gt;binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;128&lt;span style="color: gray"&gt;)=&lt;/span&gt;&lt;span style="color: magenta"&gt;cast&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: magenta"&gt;getdate&lt;/span&gt;&lt;span style="color: gray"&gt;() &lt;/span&gt;&lt;span style="color: blue"&gt;as binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;8&lt;span style="color: gray"&gt;))
&lt;/span&gt;&lt;span style="color: blue"&gt;set context_info &lt;/span&gt;@time&lt;/pre&gt;

&lt;pre class="code"&gt; &lt;/pre&gt;

&lt;pre class="code"&gt;... rest of Big Adventure code ...&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;go&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;use master&lt;/span&gt;&lt;span style="color: gray"&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;insert &lt;/span&gt;mirror_test(server,role,partner,db,state,safety,start,duration)
&lt;span style="color: blue"&gt;&lt;span style="color: blue"&gt;select &lt;/span&gt;&lt;span style="color: magenta"&gt;@@servername&lt;/span&gt;&lt;span style="color: gray"&gt;, &lt;/span&gt;mirroring_role_desc&lt;span style="color: gray"&gt;, &lt;/span&gt;mirroring_partner_instance&lt;span style="color: gray"&gt;, 
&lt;/span&gt;&lt;span style="color: magenta"&gt;db_name&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;database_id&lt;span style="color: gray"&gt;)&lt;/span&gt;&lt;span style="color: gray"&gt;, &lt;/span&gt;mirroring_state_desc&lt;span style="color: gray"&gt;, &lt;/span&gt;mirroring_safety_level_desc&lt;span style="color: gray"&gt;, 
&lt;/span&gt;&lt;span style="color: magenta"&gt;cast&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: magenta"&gt;cast&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: blue"&gt;context_info&lt;/span&gt;&lt;span style="color: gray"&gt;() &lt;/span&gt;&lt;span style="color: blue"&gt;as binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;8&lt;span style="color: gray"&gt;)) &lt;/span&gt;&lt;span style="color: blue"&gt;as datetime&lt;/span&gt;&lt;span style="color: gray"&gt;)&lt;/span&gt;&lt;span style="color: gray"&gt;, 
&lt;/span&gt;&lt;span style="color: magenta"&gt;datediff&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;s&lt;span style="color: gray"&gt;,&lt;/span&gt;&lt;span style="color: magenta"&gt;cast&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: magenta"&gt;cast&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: blue"&gt;context_info&lt;/span&gt;&lt;span style="color: gray"&gt;() &lt;/span&gt;&lt;span style="color: blue"&gt;as binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;8&lt;span style="color: gray"&gt;)) &lt;/span&gt;&lt;span style="color: blue"&gt;as datetime&lt;/span&gt;&lt;span style="color: gray"&gt;),&lt;/span&gt;&lt;span style="color: magenta"&gt;getdate&lt;/span&gt;&lt;span style="color: gray"&gt;())&lt;/span&gt;
&lt;span style="color: blue"&gt;from &lt;/span&gt;&lt;span style="color: green"&gt;sys&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: green"&gt;database_mirroring &lt;/span&gt;&lt;span style="color: blue"&gt;where &lt;/span&gt;&lt;span style="color: magenta"&gt;db_name&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;database_id&lt;span style="color: gray"&gt;) like &lt;/span&gt;&lt;span style="color: red"&gt;'Adv%'&lt;/span&gt;&lt;span style="color: gray"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: gray" /&gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;font color="#000000"&gt;I declared @time as a binary(128) since CONTEXT_INFO is defined that way.  I couldn't convert GETDATE() to binary(128) as it would pad the first 120 bytes as 0x00.  To keep the CAST functions simple and avoid using SUBSTRING, I decided to CAST GETDATE() as binary(8) and let SQL Server do the implicit conversion.  It's not the safest way perhaps, but it works on my machine. :)&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font color="#000000"&gt;As I mentioned earlier, you can query system views for sessions and get their CONTEXT_INFO.  With a little boilerplate code this can be used to monitor long-running procedures, in case you need to kill a process, or are just curious  how long certain parts take.  In this example, I added code to Adam's Big Adventure script to set CONTEXT_INFO messages at strategic places I want to monitor.  (His code is in UPPERCASE as it was in the original, mine is all lowercase):&lt;/font&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;declare &lt;/span&gt;@msg &lt;span style="color: blue"&gt;binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;128&lt;span style="color: gray"&gt;)
&lt;/span&gt;&lt;span style="color: blue"&gt;set &lt;/span&gt;@msg&lt;span style="color: gray"&gt;=&lt;/span&gt;&lt;span style="color: magenta"&gt;cast&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: red"&gt;'Altering bigProduct.ProductID' &lt;/span&gt;&lt;span style="color: blue"&gt;as binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;128&lt;span style="color: gray"&gt;))
&lt;/span&gt;&lt;span style="color: blue"&gt;set context_info &lt;/span&gt;@msg
&lt;span style="color: blue" /&gt;&lt;font color="#0000ff"&gt;go&lt;/font&gt;
&lt;span style="color: blue"&gt;ALTER TABLE &lt;/span&gt;bigProduct &lt;span style="color: blue"&gt;ALTER COLUMN &lt;/span&gt;ProductID &lt;span style="color: blue"&gt;INT &lt;/span&gt;&lt;span style="color: gray"&gt;NOT NULL    
&lt;/span&gt;&lt;span style="color: blue"&gt;GO
set context_info &lt;/span&gt;0x0
&lt;font color="#0000ff"&gt;go&lt;/font&gt;
&lt;span style="color: blue"&gt;declare &lt;/span&gt;@msg1 &lt;span style="color: blue"&gt;binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;128&lt;span style="color: gray"&gt;)
&lt;/span&gt;&lt;span style="color: blue"&gt;set &lt;/span&gt;@msg1&lt;span style="color: gray"&gt;=&lt;/span&gt;&lt;span style="color: magenta"&gt;cast&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: red"&gt;'Adding pk_bigProduct Constraint' &lt;/span&gt;&lt;span style="color: blue"&gt;as binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;128&lt;span style="color: gray"&gt;))
&lt;/span&gt;&lt;span style="color: blue"&gt;set context_info &lt;/span&gt;@msg1
&lt;font color="#0000ff"&gt;go&lt;/font&gt;
&lt;span style="color: blue"&gt;ALTER TABLE &lt;/span&gt;bigProduct &lt;span style="color: blue"&gt;ADD CONSTRAINT &lt;/span&gt;pk_bigProduct &lt;span style="color: blue"&gt;PRIMARY KEY &lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;ProductID&lt;span style="color: gray"&gt;)
&lt;/span&gt;&lt;span style="color: blue"&gt;GO
set context_info &lt;/span&gt;0x0
&lt;font color="#0000ff"&gt;go&lt;/font&gt;
&lt;span style="color: blue"&gt;declare &lt;/span&gt;@msg2 &lt;span style="color: blue"&gt;binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;128&lt;span style="color: gray"&gt;)
&lt;/span&gt;&lt;span style="color: blue"&gt;set &lt;/span&gt;@msg2&lt;span style="color: gray"&gt;=&lt;/span&gt;&lt;span style="color: magenta"&gt;cast&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: red"&gt;'Altering bigTransactionHistory.TransactionID' &lt;/span&gt;&lt;span style="color: blue"&gt;as binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;128&lt;span style="color: gray"&gt;))
&lt;/span&gt;&lt;span style="color: blue"&gt;set context_info &lt;/span&gt;@msg2
&lt;font color="#0000ff"&gt;go&lt;/font&gt;
&lt;span style="color: blue"&gt;ALTER TABLE &lt;/span&gt;bigTransactionHistory &lt;span style="color: blue"&gt;ALTER COLUMN &lt;/span&gt;TransactionID &lt;span style="color: blue"&gt;INT &lt;/span&gt;&lt;span style="color: gray"&gt;NOT NULL
&lt;/span&gt;&lt;span style="color: blue"&gt;GO
set context_info &lt;/span&gt;0x0
&lt;font color="#0000ff"&gt;go&lt;/font&gt;
&lt;span style="color: blue"&gt;declare &lt;/span&gt;@msg3 &lt;span style="color: blue"&gt;binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;128&lt;span style="color: gray"&gt;)
&lt;/span&gt;&lt;span style="color: blue"&gt;set &lt;/span&gt;@msg3&lt;span style="color: gray"&gt;=&lt;/span&gt;&lt;span style="color: magenta"&gt;cast&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: red"&gt;'Adding pk_bigTransactionHistory Constraint' &lt;/span&gt;&lt;span style="color: blue"&gt;as binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;128&lt;span style="color: gray"&gt;))
&lt;/span&gt;&lt;span style="color: blue"&gt;set context_info &lt;/span&gt;@msg3
&lt;font color="#0000ff"&gt;go&lt;/font&gt;
&lt;span style="color: blue"&gt;ALTER TABLE &lt;/span&gt;bigTransactionHistory &lt;span style="color: blue"&gt;ADD CONSTRAINT &lt;/span&gt;pk_bigTransactionHistory &lt;span style="color: blue"&gt;PRIMARY KEY NONCLUSTERED&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;TransactionID&lt;span style="color: gray"&gt;)
&lt;/span&gt;&lt;span style="color: blue"&gt;GO
set context_info &lt;/span&gt;0x0
&lt;font color="#0000ff"&gt;go&lt;/font&gt;
&lt;span style="color: blue"&gt;declare &lt;/span&gt;@msg4 &lt;span style="color: blue"&gt;binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;128&lt;span style="color: gray"&gt;)
&lt;/span&gt;&lt;span style="color: blue"&gt;set &lt;/span&gt;@msg4&lt;span style="color: gray"&gt;=&lt;/span&gt;&lt;span style="color: magenta"&gt;cast&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: red"&gt;'Creating IX_ProductId_TransactionDate Index' &lt;/span&gt;&lt;span style="color: blue"&gt;as binary&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;128&lt;span style="color: gray"&gt;))
&lt;/span&gt;&lt;span style="color: blue"&gt;set context_info &lt;/span&gt;@msg4
&lt;font color="#0000ff"&gt;go&lt;/font&gt;
&lt;span style="color: blue"&gt;CREATE NONCLUSTERED INDEX &lt;/span&gt;IX_ProductId_TransactionDate
&lt;span style="color: blue"&gt;ON &lt;/span&gt;bigTransactionHistory&lt;span style="color: gray"&gt;(&lt;/span&gt;ProductId&lt;span style="color: gray"&gt;,&lt;/span&gt;TransactionDate&lt;span style="color: gray"&gt;) &lt;/span&gt;&lt;span style="color: blue"&gt;INCLUDE&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;Quantity&lt;span style="color: gray"&gt;,&lt;/span&gt;ActualCost&lt;span style="color: gray"&gt;)
&lt;/span&gt;&lt;span style="color: blue"&gt;GO
set context_info &lt;/span&gt;0x0&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;font color="#000000"&gt;This doesn't include the entire script, only those portions that altered a table or created an index.  &lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font color="#000000"&gt;One annoyance is that SET CONTEXT_INFO requires a literal or variable, you can't use an expression.  And since GO starts a new batch I need to declare a variable in each one.  And of course I have to use CAST because it won't implicitly convert varchar to binary.  And even though context_info is a nullable column, you can't SET CONTEXT_INFO NULL, so I have to use SET CONTEXT_INFO 0x0 to clear the message after the statement completes.  And if you're thinking of turning this into a UDF, you can't, although a stored procedure would work.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font color="#000000"&gt;So what does all this aggravation get you?  As the code runs, if I want to see which stage the session is at, I can run the following (assuming SPID 51 is the one I want):&lt;/font&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;select &lt;/span&gt;&lt;span style="color: magenta"&gt;CAST&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: blue"&gt;context_info as varchar&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;128&lt;span style="color: gray"&gt;)) &lt;/span&gt;&lt;span style="color: blue"&gt;from &lt;/span&gt;&lt;span style="color: green"&gt;sys&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: green"&gt;dm_exec_sessions &lt;/span&gt;&lt;span style="color: blue"&gt;where &lt;/span&gt;session_id&lt;span style="color: gray"&gt;=&lt;/span&gt;51&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;font color="#000000"&gt;Since SQL Server 2005 introduced the new system and dynamic management views (DMVs) there's not as much need for tagging a session with these kinds of messages.  You can get the session start time and currently executing statement from them, and neatly presented if you use Adam's &lt;/font&gt;&lt;a href="http://sqlblog.com/blogs/adam_machanic/archive/tags/sp_5F00_whoisactive/default.aspx" target="_blank"&gt;&lt;font color="#000000"&gt;sp_whoisactive&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000"&gt; utility (and you absolutely should be using it).  &lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font color="#000000"&gt;Of course you can always use xp_cmdshell, a CLR function, or some other tricks to log information outside of a SQL transaction.  All the same, I've used this trick to monitor long-running reports at a previous job, and I still think CONTEXT_INFO is a great feature, especially if you're still using SQL Server 2000 or want to supplement your instrumentation.  If you'd like an exercise, consider adding the system time to the messages in the last example, and an automated job to query and parse it from the system tables.  That would let you track how long each statement ran without having to run Profiler.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/#!/search/%23tsql2sday"&gt;&lt;font color="#000000"&gt;#TSQL2sDay&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/robv/aggbug/61418.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Most Valuable Yak (Rob Volk)</dc:creator>
            <guid>http://weblogs.sqlteam.com/robv/archive/2012/06/12/t-sql-tuesday-31-logging-tricks-with-context_info.aspx</guid>
            <pubDate>Tue, 12 Jun 2012 13:23:59 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/robv/archive/2012/06/12/t-sql-tuesday-31-logging-tricks-with-context_info.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/robv/comments/commentRss/61418.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/robv/services/trackbacks/61418.aspx</trackback:ping>
        </item>
        <item>
            <title>SQLBits - Unicode Porn</title>
            <category>Coolness</category>
            <category>Oddball</category>
            <link>http://weblogs.sqlteam.com/robv/archive/2012/03/31/sqlbits-unicode-porn.aspx</link>
            <description>We've just finished up a fantastic event at &lt;a href="javascript:void(0);/*1333211061666*/"&gt;SQLBits X&lt;/a&gt; in London!  If you've never been to SQLBits and you can make it to the UK, I highly recommend it.  If you didn't attend, &lt;a href="javascript:void(0);/*1333211089713*/"&gt;here's what you missed&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Meanwhile, for those who attended the Lightning Talk sessions and were disappointed that I ran out of time, here's the last part that you would have seen:&lt;br /&gt;
&lt;br /&gt;
/*    How to Lose Friends and Irritate People...With Unicode!&lt;br /&gt;
    Rob Volk&lt;br /&gt;
    SQLBits X - London - March 31, 2012&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
-- some sexy SQL&lt;br /&gt;
DECLARE @oohbaby TABLE(i INT NOT NULL UNIQUE,&lt;br /&gt;
uni_char AS NCHAR(i),&lt;br /&gt;
hex AS CAST(i AS BINARY(2)))&lt;br /&gt;
INSERT @oohbaby VALUES(664),(1022),(1023),(1120),(1150),(8857),(11609),(42420),(42427)&lt;br /&gt;
&lt;br /&gt;
-- change results font to larger size, some only work in grid font&lt;br /&gt;
SELECT * FROM @oohbaby&lt;br /&gt;
&lt;br /&gt;
SELECT NCHAR(1022) + NCHAR(1023) AS Page3Girl&lt;br /&gt;
&lt;br /&gt;
It's probably better that you run this yourself, in the privacy of your own home/office, you know *wink* *wink* *nudge* *nudge* *say no more*&lt;img src="http://weblogs.sqlteam.com/robv/aggbug/61404.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Most Valuable Yak (Rob Volk)</dc:creator>
            <guid>http://weblogs.sqlteam.com/robv/archive/2012/03/31/sqlbits-unicode-porn.aspx</guid>
            <pubDate>Sat, 31 Mar 2012 16:25:28 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/robv/archive/2012/03/31/sqlbits-unicode-porn.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/robv/comments/commentRss/61404.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/robv/services/trackbacks/61404.aspx</trackback:ping>
        </item>
    </channel>
</rss>