<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" version="2.0">
  <channel>
    <title>deepdark.net - James Green's Blog - Database</title>
    <link>http://deepdark.net/</link>
    <description>.NET, SQL Server and *.*</description>
    <image>
      <url>http://deepdark.net/files/deepdark.jpg</url>
      <title>deepdark.net - James Green's Blog - Database</title>
      <link>http://deepdark.net/</link>
    </image>
    <language>en-us</language>
    <copyright>James Green</copyright>
    <lastBuildDate>Tue, 12 Feb 2008 11:44:24 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>James.Green@deepdark.net</managingEditor>
    <webMaster>James.Green@deepdark.net</webMaster>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=5372e1d5-576e-43e0-b059-a802c57c8725</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,5372e1d5-576e-43e0-b059-a802c57c8725.aspx</pingback:target>
      <dc:creator>James Green</dc:creator>
      <wfw:comment>http://deepdark.net/CommentView,guid,5372e1d5-576e-43e0-b059-a802c57c8725.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=5372e1d5-576e-43e0-b059-a802c57c8725</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Previously <a href="http://deepdark.net/PermaLink,guid,288cb08c-0fc2-40cf-9c10-ec7bd94fe4a4.aspx">I
had been using the (formally "Katmai") SQL Server 2008 CTPs that were distributed
through MSDN as VHD files ready for Virtual PC</a>.  But today with <a href="https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5470">the
arrival of the November CTP (CTP 5) DVD</a> I actually got around to the installation.<br /><br />
I had no problem <a href="http://msdn2.microsoft.com/en-us/library/ms143506%28SQL.100%29.aspx">with
the hardware requirements</a> and the install went successfully.  I screen caped
the interesting bits as I went...<br /><br /><b>The Launcher</b>.  First up there are some improvements to the install launcher
with all the important stuff easy to find.<br /><p></p><img src="http://deepdark.net/content/binary/Katmai_install_launcher.jpg" border="0" /><br /><br />
The <b>Configuration Check</b> screen is as you would expect based on SQL Server 2005.<br /><br /><img src="http://deepdark.net/content/binary/Katmai_install_step_1.jpg" border="0" /><br /><br />
An interesting thing to note about the <b>Feature Selection </b>screen is as you add
and remove features the remaining steps adjust accordingly<br /><br /><img src="http://deepdark.net/content/binary/Katmai_install_step_2.jpg" border="0" /><br /><br />
I've skipped the <b>Instace Configuration </b>screen because it is just as you would
expect, however the Service Accounts page has been improved with some secure defaults
and it guides you towards secure choices.  
<br /><br /><img src="http://deepdark.net/content/binary/Katmai_install_step_3.jpg" border="0" /><br /><br />
Again I have skipped the <b>Instance Configuration</b> because it is much as you would
expect.  The <b>Database Engine Configuration </b>screen is again good at guiding
you towards good choices.  Interestingly TempDB location is included which is
nice.  Always good to have TempDB on seperate IO if possible.<br /><br /><img src="http://deepdark.net/content/binary/Katmai_install_step_4.jpg" border="0" /><br /><br /><b>Analysis Services Configuration</b> is much the same as <b>Database Engine Configuration</b>,
but nice to see SharePoint integrated mode is available on the <b>Reporting Services
Configuration </b>step.  <a href="http://msdn2.microsoft.com/en-us/library/bb326356.aspx">Historically
this use to be some black magic</a>.  I'm looking forward to testing out this
option in Katmai in greater depth later.<br /><br /><img src="http://deepdark.net/content/binary/Katmai_install_step_5.jpg" border="0" /><br /><br />
The rest of the steps are much as you would expect based on SQL Server 2005 and not
too interactive, so I have saved you the bandwidth.  
<br /><br />
And there you have it!  Play time again for me :-)<br /><br /><font color="#808080" size="2"><b>Listening To: Air - Premiers Symptomes</b></font><br /><br /></body>
      <title>Visual guide to the SQL Server 2008 setup experience</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,5372e1d5-576e-43e0-b059-a802c57c8725.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,5372e1d5-576e-43e0-b059-a802c57c8725.aspx</link>
      <pubDate>Tue, 12 Feb 2008 11:44:24 GMT</pubDate>
      <description>Previously &lt;a href="http://deepdark.net/PermaLink,guid,288cb08c-0fc2-40cf-9c10-ec7bd94fe4a4.aspx"&gt;I
had been using the (formally "Katmai") SQL Server 2008 CTPs that were distributed
through MSDN as VHD files ready for Virtual PC&lt;/a&gt;.&amp;nbsp; But today with &lt;a href="https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5470"&gt;the
arrival of the November CTP (CTP 5) DVD&lt;/a&gt; I actually got around to the installation.&lt;br&gt;
&lt;br&gt;
I had no problem &lt;a href="http://msdn2.microsoft.com/en-us/library/ms143506%28SQL.100%29.aspx"&gt;with
the hardware requirements&lt;/a&gt; and the install went successfully.&amp;nbsp; I screen caped
the interesting bits as I went...&lt;br&gt;
&lt;br&gt;
&lt;b&gt;The Launcher&lt;/b&gt;.&amp;nbsp; First up there are some improvements to the install launcher
with all the important stuff easy to find.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img src="http://deepdark.net/content/binary/Katmai_install_launcher.jpg" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
The &lt;b&gt;Configuration Check&lt;/b&gt; screen is as you would expect based on SQL Server 2005.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://deepdark.net/content/binary/Katmai_install_step_1.jpg" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
An interesting thing to note about the &lt;b&gt;Feature Selection &lt;/b&gt;screen is as you add
and remove features the remaining steps adjust accordingly&lt;br&gt;
&lt;br&gt;
&lt;img src="http://deepdark.net/content/binary/Katmai_install_step_2.jpg" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
I've skipped the &lt;b&gt;Instace Configuration &lt;/b&gt;screen because it is just as you would
expect, however the Service Accounts page has been improved with some secure defaults
and it guides you towards secure choices.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
&lt;img src="http://deepdark.net/content/binary/Katmai_install_step_3.jpg" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
Again I have skipped the &lt;b&gt;Instance Configuration&lt;/b&gt; because it is much as you would
expect.&amp;nbsp; The &lt;b&gt;Database Engine Configuration &lt;/b&gt;screen is again good at guiding
you towards good choices.&amp;nbsp; Interestingly TempDB location is included which is
nice.&amp;nbsp; Always good to have TempDB on seperate IO if possible.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://deepdark.net/content/binary/Katmai_install_step_4.jpg" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Analysis Services Configuration&lt;/b&gt; is much the same as &lt;b&gt;Database Engine Configuration&lt;/b&gt;,
but nice to see SharePoint integrated mode is available on the &lt;b&gt;Reporting Services
Configuration &lt;/b&gt;step.&amp;nbsp; &lt;a href="http://msdn2.microsoft.com/en-us/library/bb326356.aspx"&gt;Historically
this use to be some black magic&lt;/a&gt;.&amp;nbsp; I'm looking forward to testing out this
option in Katmai in greater depth later.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://deepdark.net/content/binary/Katmai_install_step_5.jpg" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
The rest of the steps are much as you would expect based on SQL Server 2005 and not
too interactive, so I have saved you the bandwidth.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
And there you have it!&amp;nbsp; Play time again for me :-)&lt;br&gt;
&lt;br&gt;
&lt;font color="#808080" size="2"&gt;&lt;b&gt;Listening To: Air - Premiers Symptomes&lt;/b&gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,5372e1d5-576e-43e0-b059-a802c57c8725.aspx</comments>
      <category>Database</category>
      <category>T-SQL</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=1a093d04-9717-44ca-bf05-b99b0089a4c2</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,1a093d04-9717-44ca-bf05-b99b0089a4c2.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,1a093d04-9717-44ca-bf05-b99b0089a4c2.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=1a093d04-9717-44ca-bf05-b99b0089a4c2</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
OK I'm wheeling out the <a href="http://deepdark.net/CategoryView,category,Sharepoint%2BAnnoyances.aspx">Sharepoint
Annoyances</a> category for one last random show - until next time (kinda like the
Rolling Stones)
</p>
        <p>
The problem comes when you remove WSS 3.0 from a box and the instance of <strong>Microsoft
SQL Server 2005 Embedded Edition (SSEE)</strong> does not get removed.  
</p>
        <p>
This is by design, however if the reason you are removing WSS 3.0 is because of a
problem with the SSEE database you have a problem.
</p>
        <p>
It turns out it is easy to uninstall after all - <a href="http://jclabaut.free.fr/serendipity/index.php?/archives/27-How-to-Uninstall-Microsoft-SQL-Server-2005-Embedded-Edition-SSEE-Instance.html">I
found the answer via Jérémie Clabaut's blog</a>.
</p>
        <p>
The good news is it is a one liner to call msiexec.  Quoting Jérémie:
</p>
        <p>
          <font color="#000080">
            <em>msiexec /x {CEB5780F-1A70-44A9-850F-DE6C4F6AA8FB} callerid=ocsetup.exe</em>
          </font>
        </p>
        <p>
As is documented elsewhere - don't forget to move away / delete any errant Mdf/Ldf
files as they can interfere with the reinstall.  
</p>
        <p>
Thanks Jérémie!
</p>
        <p>
          <strong>
            <font color="#808080" size="1">Listening To:  The Velvet Underground
and Nico, The Velvet Underground</font>
          </strong>
        </p>
      </body>
      <title>Removing SQL Server Embedded Edition after Windows Sharepoint Services 3.0</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,1a093d04-9717-44ca-bf05-b99b0089a4c2.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,1a093d04-9717-44ca-bf05-b99b0089a4c2.aspx</link>
      <pubDate>Mon, 19 Nov 2007 10:13:12 GMT</pubDate>
      <description>&lt;p&gt;
OK I'm wheeling out the &lt;a href="http://deepdark.net/CategoryView,category,Sharepoint%2BAnnoyances.aspx"&gt;Sharepoint
Annoyances&lt;/a&gt; category for one last random show - until next time (kinda like the
Rolling Stones)
&lt;/p&gt;
&lt;p&gt;
The problem comes when you remove WSS 3.0 from a box and the instance of &lt;strong&gt;Microsoft
SQL Server 2005 Embedded Edition (SSEE)&lt;/strong&gt; does not get removed.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
This is by design, however if the reason you are removing WSS 3.0 is because of a
problem with the SSEE database you have a problem.
&lt;/p&gt;
&lt;p&gt;
It turns out it is easy to uninstall after all - &lt;a href="http://jclabaut.free.fr/serendipity/index.php?/archives/27-How-to-Uninstall-Microsoft-SQL-Server-2005-Embedded-Edition-SSEE-Instance.html"&gt;I
found the answer via Jérémie Clabaut's blog&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
The good news is it is a one liner to call msiexec.&amp;nbsp; Quoting Jérémie:
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000080&gt;&lt;em&gt;msiexec /x {CEB5780F-1A70-44A9-850F-DE6C4F6AA8FB} callerid=ocsetup.exe&lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
As is documented elsewhere - don't forget to move away / delete any errant Mdf/Ldf
files as they can interfere with the reinstall.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Thanks Jérémie!
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color=#808080 size=1&gt;Listening To:&amp;nbsp; The Velvet Underground and
Nico, The Velvet Underground&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,1a093d04-9717-44ca-bf05-b99b0089a4c2.aspx</comments>
      <category>Database</category>
      <category>Geeking Out!</category>
      <category>Sharepoint Annoyances</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=98e76306-961c-487e-b487-654d0b07a0bb</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,98e76306-961c-487e-b487-654d0b07a0bb.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,98e76306-961c-487e-b487-654d0b07a0bb.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=98e76306-961c-487e-b487-654d0b07a0bb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So lots of people (18 or so) are interested in talking about nothing. 
</p>
        <p>
Not nothing per se, but null. 
</p>
        <p>
Looking at the 200-odd posts to the list in the last month or so, near half of them
are on the topic of null comparison, that <a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=307476">Greg
Low started with regards to his connect item</a>. 
</p>
        <p>
          <img src="http://deepdark.net/content/binary/SDU_null.gif" border="0" />
        </p>
        <p>
          <br />
OK, so the discussion drifted <b>all over</b> the topic and my contribution, fair
to say did not advance the start of the art...
</p>
        <p>
At the end of the day however (is it done yet guys?), it turned into a really good
discussion around null, the meaning of comparison and T-SQL semantics, so thanks guys. 
</p>
      </body>
      <title>Null comparison on SQL Down Under</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,98e76306-961c-487e-b487-654d0b07a0bb.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,98e76306-961c-487e-b487-654d0b07a0bb.aspx</link>
      <pubDate>Fri, 02 Nov 2007 07:32:16 GMT</pubDate>
      <description>&lt;p&gt;
So lots of people (18 or so) are interested in talking about nothing. 
&lt;/p&gt;
&lt;p&gt;
Not nothing per se, but null. 
&lt;/p&gt;
&lt;p&gt;
Looking at the 200-odd posts to the list in the last month or so, near half of them
are on the topic of null comparison, that &lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=307476"&gt;Greg
Low started with regards to his connect&amp;nbsp;item&lt;/a&gt;. 
&lt;p&gt;
&lt;img src="http://deepdark.net/content/binary/SDU_null.gif" border=0&gt;&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
OK, so the discussion drifted &lt;b&gt;all over&lt;/b&gt; the topic and my contribution, fair
to say did not advance the start of the art...
&lt;/p&gt;
&lt;p&gt;
At the end of the day however (is it done yet guys?), it turned into a really good
discussion around null, the meaning of comparison and T-SQL semantics, so thanks guys. 
&lt;/p&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,98e76306-961c-487e-b487-654d0b07a0bb.aspx</comments>
      <category>Database</category>
      <category>T-SQL</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=288cb08c-0fc2-40cf-9c10-ec7bd94fe4a4</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,288cb08c-0fc2-40cf-9c10-ec7bd94fe4a4.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,288cb08c-0fc2-40cf-9c10-ec7bd94fe4a4.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=288cb08c-0fc2-40cf-9c10-ec7bd94fe4a4</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The SQL Server 2008 ("Katmai") CTP 4 VHD that was published to MSDN Subscriber Downloads
last week is made available as a 4-part self-extracting RAR archive.  
</p>
        <p>
It can seem to have an issue in while self-extracting.  As shown in the screen
cap below is it looking for <strong>en_sql_server_2008_ctp_4_vhd_part_1_of_5_.rar: </strong></p>
        <p>
          <strong>  </strong>
          <img src="http://deepdark.net/content/binary/Katmai_CTP4_Extract_Error.gif" border="0" />
        </p>
        <p>
This is obviously wrong because a) part 1 is not a rar - it is in the
exe, and b) the download is in 4 parts not 5.  So if you see this prompt, browse
for <strong>en_sql_server_2008_ctp_4_vhd_part_2_of_4_.rar</strong>.
</p>
        <p>
Likewise when asked for <strong>en_sql_server_2008_ctp_4_vhd_part_2_of_5_.rar</strong> browse
for <strong>en_sql_server_2008_ctp_4_vhd_part_3_of_4_.rar</strong>.  
</p>
        <p>
Finally when prompted for <strong>en_sql_server_2008_ctp_4_vhd_part_3_of_5_.rar</strong> browse
for <strong>en_sql_server_2008_ctp_4_vhd_part_4_of_4_.rar</strong>.  You will
not be prompted for a part 5.
</p>
        <p>
Once you have done that, fire up VPC or Virtual Server 2005 and enjoy!
</p>
        <p>
Also, don't forget:  You can check out the <a href="https://connect.microsoft.com/SQLServer/">LiveMeeting
events on the new features in SQL Server 2008 available through the Connect site</a>.
</p>
        <p>
          <strong>
            <font color="#808080" size="1">Listening to: Aphex Twin, Selected Ambient
Works, Volume II</font>
          </strong>
        </p>
      </body>
      <title>Trouble with the SQL Server 2008 CTP 4 VHD on MSDN</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,288cb08c-0fc2-40cf-9c10-ec7bd94fe4a4.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,288cb08c-0fc2-40cf-9c10-ec7bd94fe4a4.aspx</link>
      <pubDate>Sun, 21 Oct 2007 02:48:20 GMT</pubDate>
      <description>&lt;p&gt;
The SQL Server 2008 ("Katmai") CTP 4 VHD that was published to MSDN Subscriber Downloads
last week is made available as a 4-part self-extracting RAR archive.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
It can seem to have an issue in while self-extracting.&amp;nbsp; As shown in the screen
cap below is it looking for &lt;strong&gt;en_sql_server_2008_ctp_4_vhd_part_1_of_5_.rar:&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&amp;nbsp; &lt;/strong&gt;&lt;img src="http://deepdark.net/content/binary/Katmai_CTP4_Extract_Error.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
This is obviously wrong because&amp;nbsp;a) part 1 is not a rar -&amp;nbsp;it is in&amp;nbsp;the
exe, and b) the download is in 4 parts not 5.&amp;nbsp; So if you see this prompt, browse
for &lt;strong&gt;en_sql_server_2008_ctp_4_vhd_part_2_of_4_.rar&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
Likewise when asked for &lt;strong&gt;en_sql_server_2008_ctp_4_vhd_part_2_of_5_.rar&lt;/strong&gt; browse
for &lt;strong&gt;en_sql_server_2008_ctp_4_vhd_part_3_of_4_.rar&lt;/strong&gt;.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Finally when prompted for &lt;strong&gt;en_sql_server_2008_ctp_4_vhd_part_3_of_5_.rar&lt;/strong&gt; browse
for &lt;strong&gt;en_sql_server_2008_ctp_4_vhd_part_4_of_4_.rar&lt;/strong&gt;.&amp;nbsp; You will
not be prompted for a part 5.
&lt;/p&gt;
&lt;p&gt;
Once you have done that, fire up VPC or Virtual Server 2005 and enjoy!
&lt;/p&gt;
&lt;p&gt;
Also, don't forget:&amp;nbsp; You can check out the &lt;a href="https://connect.microsoft.com/SQLServer/"&gt;LiveMeeting
events on the new features in SQL Server 2008 available through the Connect site&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color=#808080 size=1&gt;Listening to: Aphex Twin, Selected Ambient Works,
Volume II&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,288cb08c-0fc2-40cf-9c10-ec7bd94fe4a4.aspx</comments>
      <category>Database</category>
      <category>Geeking Out!</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=c407ee59-bb64-42d0-b1ae-fd79ccf795ea</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,c407ee59-bb64-42d0-b1ae-fd79ccf795ea.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,c407ee59-bb64-42d0-b1ae-fd79ccf795ea.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=c407ee59-bb64-42d0-b1ae-fd79ccf795ea</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">It was great being able to have the opportunity
to elucidate my thoughts on this matter formally at <a href="http://www.sqldownunder.com/">SQL
Down Under Code Camp '07</a>.<br /><br />
For completeness, here are my slides: <a href="content/binary/The%20Zen%20of%20T-SQL%20SDU%20CC.ppt">The
Zen of T-SQL SDU CC.ppt (128.5 KB)</a><br /><br />
I really enjoyed meeting so many nice and very clever folks.  Thanks to Greg
and all involved in putting on the Code Camp, what a really great event!<br /><br />
For the record, the image is of Kasprowicz catching Pietersen at NatWest Challenge
Final, The Oval, 2005.<br /><br />
:-)<p></p></body>
      <title>The Zen of T-SQL - My SQL Down Under Code Camp slides</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,c407ee59-bb64-42d0-b1ae-fd79ccf795ea.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,c407ee59-bb64-42d0-b1ae-fd79ccf795ea.aspx</link>
      <pubDate>Sun, 14 Oct 2007 12:25:08 GMT</pubDate>
      <description>It was great being able to have the opportunity to elucidate my thoughts on this matter formally at &lt;a href="http://www.sqldownunder.com/"&gt;SQL
Down Under Code Camp '07&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
For completeness, here are my slides: &lt;a href="content/binary/The%20Zen%20of%20T-SQL%20SDU%20CC.ppt"&gt;The
Zen of T-SQL SDU CC.ppt (128.5 KB)&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
I really enjoyed meeting so many nice and very clever folks.&amp;nbsp; Thanks to Greg
and all involved in putting on the Code Camp, what a really great event!&lt;br&gt;
&lt;br&gt;
For the record, the image is of Kasprowicz catching Pietersen at NatWest Challenge
Final, The Oval, 2005.&lt;br&gt;
&lt;br&gt;
:-)&lt;p&gt;
&lt;/p&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,c407ee59-bb64-42d0-b1ae-fd79ccf795ea.aspx</comments>
      <category>Database</category>
      <category>Downloads</category>
      <category>Geeking Out!</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=6fdb0363-938d-49ed-b876-52415faf9a6b</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,6fdb0363-938d-49ed-b876-52415faf9a6b.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,6fdb0363-938d-49ed-b876-52415faf9a6b.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=6fdb0363-938d-49ed-b876-52415faf9a6b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I came across the following example in <a href="http://www.microsoft.com/mspress/books/9615.aspx">Inside
T-SQL Programming</a>, which I am digesting at the moment.  Actually it
is credited to <a href="http://www.sql.co.il/books/insidetsql2005/#Steve_Kass">Steve
Kass (technical editor)</a>:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">SELECT</span> OrderId,
OrderDate<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">FROM</span> dbo.Orders<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">WHERE</span><span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">DATEDIFF</span>(<span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">day</span>, <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'19000102'</span>,
OrderDate) % 7 = 0</span>
        </p>
        <p>
This query is to answer the question <em>"Which orders were placed on a Tuesday?"</em>. 
The query isn't particularly magic, but the idea behind it is as close to the zen
of T-SQL as I can remember seeing:
</p>
        <p>
          <em>There are 7 days between any two Tuesdays.  If we know one Tuesday (like
the 2nd Jan 1900) we have all the Tuesdays since.</em>
        </p>
        <p>
What a great mindset to take with querying.
</p>
        <p>
          <font color="#808080" size="1">
            <strong>Listening To:</strong>   Places like
this, Architecture In Helsinki</font>
        </p>
      </body>
      <title>The Zen of T-SQL, an example</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,6fdb0363-938d-49ed-b876-52415faf9a6b.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,6fdb0363-938d-49ed-b876-52415faf9a6b.aspx</link>
      <pubDate>Fri, 21 Sep 2007 13:44:04 GMT</pubDate>
      <description>&lt;p&gt;
I came across the following example in &lt;a href="http://www.microsoft.com/mspress/books/9615.aspx"&gt;Inside
T-SQL Programming&lt;/a&gt;, which&amp;nbsp;I am digesting at the moment.&amp;nbsp; Actually it
is credited to &lt;a href="http://www.sql.co.il/books/insidetsql2005/#Steve_Kass"&gt;Steve
Kass (technical editor)&lt;/a&gt;:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;SELECT&lt;/span&gt; OrderId,
OrderDate&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;FROM&lt;/span&gt; dbo.Orders&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;WHERE&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;DATEDIFF&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;day&lt;/span&gt;, &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'19000102'&lt;/span&gt;,
OrderDate) % 7 = 0&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
This query is to answer the question &lt;em&gt;"Which orders were placed on a Tuesday?"&lt;/em&gt;.&amp;nbsp;
The query isn't particularly magic, but the idea behind it is as close to the zen
of T-SQL as I can remember seeing:
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;There are 7 days between any two Tuesdays.&amp;nbsp; If we know one Tuesday (like
the 2nd Jan 1900) we have all the Tuesdays since.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
What a great mindset to take with querying.
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#808080 size=1&gt;&lt;strong&gt;Listening To:&lt;/strong&gt;&amp;nbsp;&amp;nbsp; Places like
this, Architecture In Helsinki&lt;/font&gt;
&lt;/p&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,6fdb0363-938d-49ed-b876-52415faf9a6b.aspx</comments>
      <category>Database</category>
      <category>Geeking Out!</category>
      <category>T-SQL</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=6e4d74e5-2f7e-47c9-9fb6-e955bf63015b</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,6e4d74e5-2f7e-47c9-9fb6-e955bf63015b.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,6e4d74e5-2f7e-47c9-9fb6-e955bf63015b.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=6e4d74e5-2f7e-47c9-9fb6-e955bf63015b</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
So I was talking with <a href="http://msmvps.com/blogs/robfarley/">Rob Farley</a> at
Tech.Ed (Rob, you’re my hero ;-)) and the topic he raised the topic of what if we
did not grant *users* access to our SQL Servers, but instead only allowed groups. 
<br /><br />
Not something I had really thought about much before but <b>This is a really good
idea™</b>. 
<br /><br />
The question that naturally arises is: How do we enforce this with something stronger
than “<i>because I said so</i>”. 
<br /><br />
The good news is that it appears that SQL Server 2008’s Declarative Management Framework
(a.k.a. “policies”) can be of assistance here. 
<br /><br />
Background on the Declarative Management Framework: 
<br /><ul><li>
A <b>Facet </b>is a piece of data about the system that you can use in your policies.
23 Facets are included in the current Katmai CTP. 
<br /></li><li>
Each Facet can have 2 or 10 or more <b>Properties</b>. It is the properties that are
used in your conditions. Facets are logically groupings of properties by SQL Server 
<br /></li><li>
A <b>Condition </b>is a logical expression about a property or set or properties 
<br /></li><li>
A <b>Policy </b>is a named instance of a specified Condition with a rule on how it
will be enforced (on a schedule, on changes etc). 
<br /></li></ul><b>Step 1</b>: Create a new Condition and call it GroupsExist. Choose the Login facet
and the LoginType property. Set it to equal WindowsGroup. 
<br /><br /><i>In the case that there are user accounts like .\ASPNET or the ##MS_PolicyExecutionLogin##
login that have a legitimate right to be there, list those in the expression as illustrated
below. </i><br />
 <img src="http://deepdark.net/content/binary/1.CreateCondition.gif" border="0" /><br /><br /><b>Step 2</b>: Create a new Policy based on the GroupsExist condition and cal it OnlyAllowGroupsNotUsers.
Apply it to Server/Login and set it to Enforce as illustrated below.<br /><br /><img src="http://deepdark.net/content/binary/2.CreatePolicy.gif" border="0" /><br /><br />
One of the really cool things is that you can create your policies in a not enabled
state, and use the built-in testing harness to get the policy right before enforcing
it. 
<br /><br />
To test a policy in SQL Server Management Studio, right-click on it and choose<font face="Courier New"><b></b>Test…</font> This
will run the policy against the current state of the server and report the details
of success or failure. 
<br /><br />
Now when the policy is disabled, the following statement will do as it is designed. 
<br /><br /><p><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">CREATE</span> LOGIN
[MYLAPTOP\SampleUserAcco</span><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;">untAccess] <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">FROM</span> WINDOWS
GO </span></p><br />
However when the policy is Enabled, I am getting the following error, which I assume
means I am am on the right track :-)<br /><br /><font face="Courier New">Msg 10314, Level 16, State 11, Procedure sp_syspolicy_execute_policy,
Line 25 
<br />
An error occurred in the Microsoft .NET Framework while trying to load assembly id
65536. The server may be running out of resources, or the assembly may not be trusted
with PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE. 
<br /><br />
Run the query again, or check documentation to see how to solve the assembly trust
issues. For more information about this error:</font><font face="Courier New"> System.IO.FileLoadException:
Could not load file or assembly 'Microsoft.SqlServer.DmfSqlClrWrapper, Version=10.0.0.0,
Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. 
<br /><br />
Strong name validation failed. (Exception from HRESUL</font><font face="Courier New">T:
0x8013141A) ---&gt; System.Security.SecurityException: Strong name validation failed.
(Exception from HRESULT: 0x8013141A) System.Security.SecurityException: System.IO.FileLoadException: 
<br />
at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence
assemblySecurity, Assembly locationHint, StackCrawlMark&amp; stackMark, Boolean throwOnFileNotFound,
Boolean forIntrospection) 
<br />
at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence
assemblySecurity, Assembly locationHint, StackCrawlMark&amp; stackMark, Boolean throwOnFileNotFound,
Boolean forIntrospection) </font><br /><font face="Courier New">at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,
Evidence assemblySecurity, StackCrawlMark&amp; stackMark, Boolean forIntrospection) 
<br />
at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity,
StackCrawlMark&amp; stackMark, Boolean forIntrospection) 
<br />
at System.Reflection.Assembly.Load(String assemblyString) 
<br />
The statement has been terminated. </font><br /><br />
I’ll research this message next week, as well as re-do the sameple when back home
and connected to AD, and if the results differ I’ll re-post. 
<br /><br />
...Topic for future blogging: Ensuring consistent policies across several instances
of SQL Server. Stay tuned. 
<br /><br /><font color="#808080"><b>Listening To:</b></font><font color="#000000">The dodgy
motor in the fridge in my apartment.<br /><br /><br /></font><br /><br /><br /></body>
      <title>Enforcing AD Groups Only on SQL Server 2008</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,6e4d74e5-2f7e-47c9-9fb6-e955bf63015b.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,6e4d74e5-2f7e-47c9-9fb6-e955bf63015b.aspx</link>
      <pubDate>Thu, 09 Aug 2007 22:14:44 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
So I was talking with &lt;a href="http://msmvps.com/blogs/robfarley/"&gt;Rob Farley&lt;/a&gt; at
Tech.Ed (Rob, you’re my hero ;-)) and the topic he raised the topic of what if we
did not grant *users* access to our SQL Servers, but instead only allowed groups. 
&lt;br&gt;
&lt;br&gt;
Not something I had really thought about much before but &lt;b&gt;This is a really good
idea™&lt;/b&gt;. 
&lt;br&gt;
&lt;br&gt;
The question that naturally arises is: How do we enforce this with something stronger
than “&lt;i&gt;because I said so&lt;/i&gt;”. 
&lt;br&gt;
&lt;br&gt;
The good news is that it appears that SQL Server 2008’s Declarative Management Framework
(a.k.a. “policies”) can be of assistance here. 
&lt;br&gt;
&lt;br&gt;
Background on the Declarative Management Framework: 
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
A &lt;b&gt;Facet &lt;/b&gt;is a piece of data about the system that you can use in your policies.
23 Facets are included in the current Katmai CTP. 
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Each Facet can have 2 or 10 or more &lt;b&gt;Properties&lt;/b&gt;. It is the properties that are
used in your conditions. Facets are logically groupings of properties by SQL Server 
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
A &lt;b&gt;Condition &lt;/b&gt;is a logical expression about a property or set or properties 
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
A &lt;b&gt;Policy &lt;/b&gt;is a named instance of a specified Condition with a rule on how it
will be enforced (on a schedule, on changes etc). 
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Step 1&lt;/b&gt;: Create a new Condition and call it GroupsExist. Choose the Login facet
and the LoginType property. Set it to equal WindowsGroup. 
&lt;br&gt;
&lt;br&gt;
&lt;i&gt;In the case that there are user accounts like .\ASPNET or the ##MS_PolicyExecutionLogin##
login that have a legitimate right to be there, list those in the expression as illustrated
below. &lt;/i&gt;
&lt;br&gt;
&amp;nbsp;&lt;img src="http://deepdark.net/content/binary/1.CreateCondition.gif" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Step 2&lt;/b&gt;: Create a new Policy based on the GroupsExist condition and cal it OnlyAllowGroupsNotUsers.
Apply it to Server/Login and set it to Enforce as illustrated below.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://deepdark.net/content/binary/2.CreatePolicy.gif" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
One of the really cool things is that you can create your policies in a not enabled
state, and use the built-in testing harness to get the policy right before enforcing
it. 
&lt;br&gt;
&lt;br&gt;
To test a policy in SQL Server Management Studio, right-click on it and choose&lt;font face="Courier New"&gt;&lt;b&gt; &lt;/b&gt;Test…&lt;/font&gt; This
will run the policy against the current state of the server and report the details
of success or failure. 
&lt;br&gt;
&lt;br&gt;
Now when the policy is disabled, the following statement will do as it is designed. 
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;CREATE&lt;/span&gt; LOGIN
[MYLAPTOP\SampleUserAcco&lt;/span&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;untAccess] &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;FROM&lt;/span&gt; WINDOWS
GO &lt;/span&gt;
&lt;/p&gt;
&lt;br&gt;
However when the policy is Enabled, I am getting the following error, which I assume
means I am am on the right track :-)&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;Msg 10314, Level 16, State 11, Procedure sp_syspolicy_execute_policy,
Line 25 
&lt;br&gt;
An error occurred in the Microsoft .NET Framework while trying to load assembly id
65536. The server may be running out of resources, or the assembly may not be trusted
with PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE. 
&lt;br&gt;
&lt;br&gt;
Run the query again, or check documentation to see how to solve the assembly trust
issues. For more information about this error:&lt;/font&gt;&lt;font face="Courier New"&gt; System.IO.FileLoadException:
Could not load file or assembly 'Microsoft.SqlServer.DmfSqlClrWrapper, Version=10.0.0.0,
Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. 
&lt;br&gt;
&lt;br&gt;
Strong name validation failed. (Exception from HRESUL&lt;/font&gt;&lt;font face="Courier New"&gt;T:
0x8013141A) ---&amp;gt; System.Security.SecurityException: Strong name validation failed.
(Exception from HRESULT: 0x8013141A) System.Security.SecurityException: System.IO.FileLoadException: 
&lt;br&gt;
at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence
assemblySecurity, Assembly locationHint, StackCrawlMark&amp;amp; stackMark, Boolean throwOnFileNotFound,
Boolean forIntrospection) 
&lt;br&gt;
at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence
assemblySecurity, Assembly locationHint, StackCrawlMark&amp;amp; stackMark, Boolean throwOnFileNotFound,
Boolean forIntrospection) &lt;/font&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,
Evidence assemblySecurity, StackCrawlMark&amp;amp; stackMark, Boolean forIntrospection) 
&lt;br&gt;
at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity,
StackCrawlMark&amp;amp; stackMark, Boolean forIntrospection) 
&lt;br&gt;
at System.Reflection.Assembly.Load(String assemblyString) 
&lt;br&gt;
The statement has been terminated. &lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
I’ll research this message next week, as well as re-do the sameple when back home
and connected to AD, and if the results differ I’ll re-post. 
&lt;br&gt;
&lt;br&gt;
...Topic for future blogging: Ensuring consistent policies across several instances
of SQL Server. Stay tuned. 
&lt;br&gt;
&lt;br&gt;
&lt;font color="#808080"&gt;&lt;b&gt;Listening To:&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;The dodgy
motor in the fridge in my apartment.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/font&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,6e4d74e5-2f7e-47c9-9fb6-e955bf63015b.aspx</comments>
      <category>Active Directory</category>
      <category>Database</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=3f677b93-64b6-4233-9458-cd2f34416f8b</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,3f677b93-64b6-4233-9458-cd2f34416f8b.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,3f677b93-64b6-4233-9458-cd2f34416f8b.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=3f677b93-64b6-4233-9458-cd2f34416f8b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <font face="Verdana">This
script came out of a discussion here at the office around a product that isn't flexible
or location aware in how it writes datetime values into the database.</font>
          </span>
        </p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <font face="Verdana">This
is also not paying attention to storing the date data in UTC or localtime or any of
those concerns, just the semantics of storing whatever the date value happens to be.</font>
          </span>
        </p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <font face="Verdana">What
are your experiences with this?  Comments as always most welcome :-)</font>
          </span>
        </p>
        <p>
          <font face="Verdana">
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Example
s</span>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">cript
follows:</span>
          </font>
        </p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <font face="Verdana">
            </font>
          </span>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <br />
            <span style="FONT-SIZE: 11px; COLOR: teal; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/* 
<br />
    You can use the following proc at the start of your app to
see<br />
    what the current date format SQL Server is expecting from
you<br />
    based on the default language selection set on your login.<br /><br />
    Look at the dateformat field in the resultset of this proc.<br /><br />
    Use this if you want to honour the regional selection that
has 
<br />
    been setup on a per-user basis on the SQL Server<br />
    (login properties of each user)<br />
*/</span>
            <br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">exec</span> sp_helplanguage <span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">@@language</span><br /><br /><span style="FONT-SIZE: 11px; COLOR: teal; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">/* 
<br />
    Otherwise, you may also override the language settings if
your 
<br />
    application code can only format dates one way.<br /><br />
    This will avoid message 241 at runtime:    <br />
        "The conversion of a char data type
to a datetime data type resulted in an out-of-range datetime value."<br /><br />
    The 15th of Feb is a good example because there is no 15th
month:<br />
*/</span><br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">SET</span> LANGUAGE
us_english<br />
go <span style="FONT-SIZE: 11px; COLOR: teal; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">--
dateformat is now = mdy</span><br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">select</span><span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">cast</span>(<span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'2/15/2003'</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">as</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">datetime</span>) <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">as</span> US_1<br />
go<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">select</span><span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">cast</span>(<span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'15/2/2003'</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">as</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">datetime</span>) <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">as</span> US_2 <span style="FONT-SIZE: 11px; COLOR: teal; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">--Expect
Msg 242</span><br />
go<br /><br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">SET</span> LANGUAGE
british<br />
go <span style="FONT-SIZE: 11px; COLOR: teal; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">--
dateformat is now = dmy</span><br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">select</span><span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">cast</span>(<span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'2/15/2003'</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">as</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">datetime</span>) <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">as</span> British_1 <span style="FONT-SIZE: 11px; COLOR: teal; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">--Expect
Msg 242</span><br />
go<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">select</span><span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">cast</span>(<span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'15/2/2003'</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">as</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">datetime</span>) <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">as</span> British_2 
<br />
go<br /></span>
        </p>
        <p>
          <font face="Verdana">You can grab the script here: </font>
          <a href="http://deepdark.net/content/binary/20070412.deepdark.net_dmy_mdy.sql">20070412.deepdark.net_dmy_mdy.sql
(1.14 KB)</a>
        </p>
      </body>
      <title>T-SQL:  dmy, mdy, oh my!  dateformat confusion</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,3f677b93-64b6-4233-9458-cd2f34416f8b.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,3f677b93-64b6-4233-9458-cd2f34416f8b.aspx</link>
      <pubDate>Thu, 12 Apr 2007 00:52:12 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana&gt;This
script came out of a discussion here at the office around a product that isn't flexible
or location aware in how it writes datetime values into the database.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana&gt;This
is also not paying attention to storing the date data in UTC or localtime or any of
those concerns, just the semantics of storing whatever the date value happens to be.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana&gt;What
are your experiences with this?&amp;nbsp; Comments as always most welcome :-)&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Verdana&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Example
s&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;cript
follows:&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: teal; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;/* 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;You can use the following proc at the start of your app to
see&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;what the current date format SQL Server is expecting from
you&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;based on the default language selection set on your login.&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Look at the dateformat field in the resultset of this proc.&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Use this if you want to honour the regional selection that
has 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;been setup on a per-user basis on the SQL Server&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(login properties of each user)&lt;br&gt;
*/&lt;/span&gt; 
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;exec&lt;/span&gt; sp_helplanguage &lt;span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;@@language&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: teal; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;/* 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Otherwise, you may also override the language settings if
your 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;application code can only format dates one way.&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;This will avoid message 241 at runtime:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"The conversion of a char data type
to a datetime data type resulted&amp;nbsp;in an out-of-range datetime value."&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The 15th of Feb is a good example because there is no 15th
month:&lt;br&gt;
*/&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;SET&lt;/span&gt; LANGUAGE
us_english&lt;br&gt;
go &lt;span style="FONT-SIZE: 11px; COLOR: teal; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;--
dateformat is now = mdy&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;select&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;cast&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'2/15/2003'&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;as&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;datetime&lt;/span&gt;) &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;as&lt;/span&gt; US_1&lt;br&gt;
go&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;select&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;cast&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'15/2/2003'&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;as&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;datetime&lt;/span&gt;) &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;as&lt;/span&gt; US_2 &lt;span style="FONT-SIZE: 11px; COLOR: teal; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;--Expect
Msg 242&lt;/span&gt;
&lt;br&gt;
go&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;SET&lt;/span&gt; LANGUAGE
british&lt;br&gt;
go &lt;span style="FONT-SIZE: 11px; COLOR: teal; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;--
dateformat is now = dmy&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;select&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;cast&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'2/15/2003'&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;as&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;datetime&lt;/span&gt;) &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;as&lt;/span&gt; British_1 &lt;span style="FONT-SIZE: 11px; COLOR: teal; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;--Expect
Msg 242&lt;/span&gt;
&lt;br&gt;
go&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;select&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: fuchsia; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;cast&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'15/2/2003'&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;as&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;datetime&lt;/span&gt;) &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;as&lt;/span&gt; British_2 
&lt;br&gt;
go&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Verdana&gt;You can grab the script here: &lt;/font&gt;&gt;&lt;a href="http://deepdark.net/content/binary/20070412.deepdark.net_dmy_mdy.sql"&gt;20070412.deepdark.net_dmy_mdy.sql
(1.14 KB)&lt;/a&gt;
&lt;/p&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,3f677b93-64b6-4233-9458-cd2f34416f8b.aspx</comments>
      <category>Database</category>
      <category>Geeking Out!</category>
      <category>T-SQL</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=ac1053ea-69c8-413e-8686-0efd0f25a8bd</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,ac1053ea-69c8-413e-8686-0efd0f25a8bd.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,ac1053ea-69c8-413e-8686-0efd0f25a8bd.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=ac1053ea-69c8-413e-8686-0efd0f25a8bd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It is probabbly wise to remember domain rules in the database when considering Intent
Insurance.
</p>
        <p>
A common scenario for a check constraint is to ensure the range of values in a field
in cases where no foreign key constraint is available to constrain the values. 
The typical example is the case of a <font face="Courier New" color="#000000">[State]</font> field,
where a check constraint on the table may look like: 
</p>
        <p>
          <font face="Courier New" color="#000000">[State] <font color="#000080">IN</font> (<font color="#ff0000">'NSW'</font>, <font color="#ff0000">'QLD'</font>, <font color="#ff0000">'VIC'</font>, <font color="#ff0000">'ACT'</font>, <font color="#ff0000">'TAS'</font>, <font color="#ff0000">'NT'</font>, <font color="#ff0000">'SA'</font>, <font color="#ff0000">'WA'</font>)</font>
        </p>
        <p>
To contrast this with the foreign key constraint, you may be guided by personal taste
or circumstance to not create a lookup table of States since <a href="http://www.smh.com.au/news/world/nz-foreign-minister-rubbishes-australia-merger-idea/2006/12/05/1165080951145.html">it
is not expected to change any time soon</a> and would then require a JOIN every time
we needed to see the State with any address.  
</p>
        <p>
Now to the point of the post, I just came across an example that is worth mentioning. 
Consider the following simple and neatly a<span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">nonymous
table of clients</span>:
</p>
        <p>
          <img src="http://deepdark.net/content/binary/20070308_table.jpg" border="0" />
        </p>
        <p>
Imagine a business rule exists as follows:
</p>
        <ul>
          <li>
If this client is known to us by an online referal, they <strong><em>must</em></strong> have
an email address 
</li>
          <li>
Any client, online referal or not, <em><strong>can </strong></em>have an email address</li>
        </ul>
        <p>
You would naturally expect this rule to exist programatically in the presentation
tier.  The Intent Insurance mindset would then be to <strong><em>also</em></strong> add
a check constraint to the table:
</p>
        <p>
          <font face="Courier New" color="#000000">([online_referal] = 0) <font color="#000080">OR</font> ([online_referal]
= 1 <font color="#000080">AND</font> [email_address] <font color="#000080">IS NOT
NULL</font>)</font>
        </p>
        <p>
And there you have it, in one line another little <span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">parachute
in the application asserting your intent.  Sleep a little easier tonight :-)</span></p>
      </body>
      <title>Intent Insurance part II:  Checks and balances</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,ac1053ea-69c8-413e-8686-0efd0f25a8bd.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,ac1053ea-69c8-413e-8686-0efd0f25a8bd.aspx</link>
      <pubDate>Wed, 07 Mar 2007 22:47:03 GMT</pubDate>
      <description>&lt;p&gt;
It is probabbly wise to remember domain rules in the database when considering Intent
Insurance.
&lt;/p&gt;
&lt;p&gt;
A common scenario for a check constraint is to ensure the range of values in a field
in cases where no foreign key constraint is available to constrain the values.&amp;nbsp;
The typical example is the case of a &lt;font face="Courier New" color=#000000&gt;[State]&lt;/font&gt; field,
where a check constraint on the table may look like: 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" color=#000000&gt;[State] &lt;font color=#000080&gt;IN&lt;/font&gt; (&lt;font color=#ff0000&gt;'NSW'&lt;/font&gt;, &lt;font color=#ff0000&gt;'QLD'&lt;/font&gt;, &lt;font color=#ff0000&gt;'VIC'&lt;/font&gt;, &lt;font color=#ff0000&gt;'ACT'&lt;/font&gt;, &lt;font color=#ff0000&gt;'TAS'&lt;/font&gt;, &lt;font color=#ff0000&gt;'NT'&lt;/font&gt;, &lt;font color=#ff0000&gt;'SA'&lt;/font&gt;, &lt;font color=#ff0000&gt;'WA'&lt;/font&gt;)&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
To contrast this with the foreign key constraint, you may be guided by personal taste
or circumstance to not create a lookup table of States since &lt;a href="http://www.smh.com.au/news/world/nz-foreign-minister-rubbishes-australia-merger-idea/2006/12/05/1165080951145.html"&gt;it
is not expected to change any time soon&lt;/a&gt; and would then require a JOIN every time
we needed to see the State with any address.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Now to the point of the post, I just came across an example that is worth mentioning.&amp;nbsp;
Consider the following simple and neatly a&lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;nonymous
table of clients&lt;/span&gt;:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://deepdark.net/content/binary/20070308_table.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Imagine a business rule exists as follows:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
If this client is known to us by an online referal, they &lt;strong&gt;&lt;em&gt;must&lt;/em&gt;&lt;/strong&gt; have
an email address 
&lt;li&gt;
Any client, online referal or not, &lt;em&gt;&lt;strong&gt;can &lt;/strong&gt;&lt;/em&gt;have an email address&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
You would naturally expect this rule to exist programatically in the presentation
tier.&amp;nbsp; The Intent Insurance mindset would then be to &lt;strong&gt;&lt;em&gt;also&lt;/em&gt;&lt;/strong&gt; add
a check constraint to the table:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" color=#000000&gt;([online_referal] = 0) &lt;font color=#000080&gt;OR&lt;/font&gt; ([online_referal]
= 1 &lt;font color=#000080&gt;AND&lt;/font&gt; [email_address] &lt;font color=#000080&gt;IS NOT NULL&lt;/font&gt;)&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
And there you have it, in one line another little &lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;parachute
in the application asserting your intent.&amp;nbsp; Sleep a little easier tonight :-)&lt;/span&gt;
&lt;/p&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,ac1053ea-69c8-413e-8686-0efd0f25a8bd.aspx</comments>
      <category>Database</category>
      <category>Geeking Out!</category>
      <category>T-SQL</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=9f7fd404-796e-4353-a954-d8fcd8465cd4</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,9f7fd404-796e-4353-a954-d8fcd8465cd4.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,9f7fd404-796e-4353-a954-d8fcd8465cd4.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=9f7fd404-796e-4353-a954-d8fcd8465cd4</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <title>More different ways to script database objects a different way</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,9f7fd404-796e-4353-a954-d8fcd8465cd4.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,9f7fd404-796e-4353-a954-d8fcd8465cd4.aspx</link>
      <pubDate>Wed, 21 Feb 2007 07:32:28 GMT</pubDate>
      <description>Rob Farley posted a &lt;a href="http://msmvps.com/blogs/robfarley/archive/2007/02/21/scripting-database-objects-a-different-way.aspx"&gt;very
interesting codegen post on scripting objects this morning&lt;/a&gt;, and as a reforming
codegen junky I just couldn't let it go without comment :-) 
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
Firstly, I modified his query as so:&lt;br&gt;
&lt;pre&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;select &lt;/font&gt;&lt;font color=#ff1493&gt;quotename&lt;/font&gt;(si&lt;font color=#0000ff&gt;.&lt;/font&gt;&lt;font color=#0000ff&gt;name) &lt;/font&gt;&lt;font color=#0000ff&gt;as &lt;/font&gt;"@IndexName", &lt;font color=#ff1493&gt;quotename&lt;/font&gt;(ss.&lt;font color=#0000ff&gt;name&lt;/font&gt;) &lt;font color=#0000ff&gt;AS &lt;/font&gt;"@SchemaName", &lt;font color=#ff1493&gt;quotename&lt;/font&gt;(so.&lt;font color=#0000ff&gt;name&lt;/font&gt;) &lt;font color=#0000ff&gt;AS &lt;/font&gt;"@ObjectName",&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#ff1493&gt;stuff&lt;/font&gt;((&lt;font color=#0000ff&gt;select &lt;/font&gt;&lt;font color=#ff0000&gt;','&lt;/font&gt; + &lt;font color=#ff1493&gt;quotename&lt;/font&gt;(sc.&lt;font color=#0000ff&gt;name&lt;/font&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#0000ff&gt;from &lt;/font&gt;&lt;font color=#008000&gt;sys.index_columns&lt;/font&gt; sic&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#808080&gt;join &lt;/font&gt;&lt;font color=#008000&gt;sys.columns&lt;/font&gt; sc&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#0000ff&gt;on &lt;/font&gt;sc.column_id
= sic.column_id&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#0000ff&gt;where &lt;/font&gt;so.&lt;font color=#ff1493&gt;object_id&lt;/font&gt; =
sic.&lt;font color=#ff1493&gt;object_id&lt;/font&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#808080&gt;and &lt;/font&gt;sic.index_id
= si.index_id&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#808080&gt;and &lt;/font&gt;sc.&lt;font color=#ff1493&gt;object_id &lt;/font&gt;=
so.&lt;font color=#ff1493&gt;object_id&lt;/font&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#0000ff&gt;order
by&lt;/font&gt; sic.key_ordinal&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#0000ff&gt;for xml
path&lt;/font&gt;(&lt;font color=#ff0000&gt;''&lt;/font&gt;)),1,1,&lt;font color=#ff0000&gt;''&lt;/font&gt;) &lt;font color=#0000ff&gt;as &lt;/font&gt;"@IndexColumns"&lt;br&gt;
&lt;font color=#0000ff&gt;from &lt;/font&gt;&lt;font color=#008000&gt;sys.indexes&lt;/font&gt; si&lt;br&gt;
&lt;font color=#808080&gt;join &lt;/font&gt;&lt;font color=#008000&gt;sys.objects&lt;/font&gt; so&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; on so.&lt;font color=#ff1493&gt;object_id&lt;/font&gt; = si.&lt;font color=#ff1493&gt;object_id&lt;/font&gt;
&lt;br&gt;
&lt;font color=#808080&gt;join &lt;/font&gt;&lt;font color=#008000&gt;sys.schemas&lt;/font&gt; ss&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#0000ff&gt;on &lt;/font&gt;ss.schema_id = so.schema_id&lt;br&gt;
&lt;font color=#0000ff&gt;where &lt;/font&gt;so.&lt;font color=#0000ff&gt;type &lt;/font&gt;= &lt;font color=#ff0000&gt;'U'&lt;/font&gt; &lt;font color=#808080&gt;and &lt;/font&gt;si.&lt;font color=#0000ff&gt;type &lt;/font&gt;=
1&lt;br&gt;
&lt;font color=#0000ff&gt;for xml path&lt;/font&gt;(&lt;font color=#ff0000&gt;'index'&lt;/font&gt;), &lt;font color=#0000ff&gt;root&lt;/font&gt;(&lt;font color=#ff0000&gt;'indexes'&lt;/font&gt;)&lt;/font&gt;
&lt;br&gt;
&lt;/pre&gt;
&lt;br&gt;
Things I'll point out:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Adding the extra &lt;font face="Courier New"&gt;for xml &lt;/font&gt;clause, this time specifying
a better row element name than 'row' and also adding a document node 
&lt;br&gt;
&lt;li&gt;
Once the outter for xml clause is in place, we can alias the columns using @ to have
them come out as elements in the results&lt;/li&gt;
&lt;/ul&gt;
We can feed the results of that query straight into the following XSLT:&lt;br&gt;
&lt;br&gt;
&lt;pre&gt;&lt;font face="Courier New"&gt;&amp;lt;?&lt;font color=#a52a2a&gt;xml&lt;/font&gt; &lt;font color=#ff0000&gt;version&lt;/font&gt;=&lt;font color=#006400&gt;"1.0"&lt;/font&gt; &lt;font color=#ff0000&gt;encoding&lt;/font&gt;=&lt;font color=#006400&gt;"iso-8859-1"&lt;/font&gt;&lt;font color=#a52a2a&gt;?&lt;/font&gt;&amp;gt;&lt;br&gt;
&amp;lt;&lt;font color=#0000ff&gt;xsl:stylesheet&lt;/font&gt; &lt;font color=#ff0000&gt;version&lt;/font&gt;=&lt;font color=#006400&gt;"1.0"&lt;/font&gt; &lt;font color=#ff0000&gt;xmlns:xsl&lt;/font&gt;=&lt;font color=#006400&gt;"http://www.w3.org/1999/XSL/Transform"&lt;/font&gt;&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;font color=#0000ff&gt;xsl:output&lt;/font&gt; &lt;font color=#ff0000&gt;method&lt;/font&gt;="&lt;font color=#006400&gt;text"&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;/&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;font color=#0000ff&gt;xsl:template&lt;/font&gt; &lt;font color=#ff0000&gt;match&lt;/font&gt;=&lt;font color=#006400&gt;'/'&lt;/font&gt;&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;font color=#0000ff&gt;xsl:apply-templates&lt;/font&gt; &lt;font color=#ff0000&gt;select &lt;/font&gt;=&lt;font color=#006400&gt;'indexes/index'&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;/&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;font color=#0000ff&gt;xsl:template&lt;/font&gt;&amp;gt;&lt;br&gt;
&lt;br&gt;
&amp;nbsp; &amp;lt;&lt;font color=#0000ff&gt;xsl:template&lt;/font&gt; &lt;font color=#ff0000&gt;match&lt;/font&gt;=&lt;font color=#006400&gt;'index'&lt;/font&gt; &amp;gt;&lt;br&gt;
create index &amp;lt;&lt;font color=#0000ff&gt;xsl:value-of&lt;/font&gt; &lt;font color=#ff0000&gt;select&lt;/font&gt;=&lt;font color=#006400&gt;'@IndexName'&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;/&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;gt; 
&lt;br&gt;
&amp;nbsp; on &amp;lt;&lt;font color=#0000ff&gt;xsl:value-of&lt;/font&gt; &lt;font color=#ff0000&gt;select&lt;/font&gt;=&lt;font color=#006400&gt;'@SchemaName'&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;/&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;gt;.&amp;lt;&lt;font color=#0000ff&gt;xsl:value-of&lt;/font&gt; &lt;font color=#ff0000&gt;select&lt;/font&gt;=&lt;font color=#006400&gt;'@ObjectName'&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#0000ff&gt;/&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;gt;
(&amp;lt;&lt;font color=#0000ff&gt;xsl:value-of&lt;/font&gt; &lt;font color=#ff0000&gt;select&lt;/font&gt;=&lt;font color=#006400&gt;'@IndexColumns'&lt;/font&gt;&lt;font color=#0000ff&gt;/&lt;/font&gt;&amp;gt;)&lt;br&gt;
&amp;nbsp; &amp;lt;/&lt;font color=#0000ff&gt;xsl:template&lt;/font&gt;&amp;gt;&lt;br&gt;
&amp;nbsp; 
&lt;br&gt;
&amp;lt;&lt;font color=#0000ff&gt;/xsl:stylesheet&lt;/font&gt;&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;/pre&gt;
&lt;p class=MsoNormal&gt;
I'm not claiming this method is superior, just different, which I think is in keeping
with the spirit of Rob's post :-)&amp;nbsp; and I have learned more about the improvements
of the for xml clause in SQL Server 2005 in the process.&lt;br&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
I'll leave final judgment on the utility of this approach as an exercise to the reader;
my instinctive reaction is to include it as a build step to help you snapshot schema
changes between check-ins, or as Rob suggests to take objects from one database and
create slightly different objects in another database – there are no wrong answers
and if you think of something interesting please leave a comment :-)&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;?xml:namespace prefix = o /&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
Grab the source files here: &lt;a href="http://deepdark.net/content/binary/ScriptObjects.zip"&gt;ScriptObjects.zip
(.78 KB)&lt;/a&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,9f7fd404-796e-4353-a954-d8fcd8465cd4.aspx</comments>
      <category>Code Generation</category>
      <category>Database</category>
      <category>Downloads</category>
      <category>T-SQL</category>
      <category>XSLT</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=3bc03dcd-ff01-4e88-b044-2538dfc04f62</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,3bc03dcd-ff01-4e88-b044-2538dfc04f62.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,3bc03dcd-ff01-4e88-b044-2538dfc04f62.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=3bc03dcd-ff01-4e88-b044-2538dfc04f62</wfw:commentRss>
      <title>Code Generation in T-SQL</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,3bc03dcd-ff01-4e88-b044-2538dfc04f62.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,3bc03dcd-ff01-4e88-b044-2538dfc04f62.aspx</link>
      <pubDate>Mon, 11 Dec 2006 22:35:10 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;OK,&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;so
I was trying to kick this &lt;a href="http://deepdark.net/PermaLink,guid,2350bc86-c0c4-496a-b788-8159bbeade2d.aspx"&gt;Code
Generation bent I have been on of late&lt;/a&gt;, but… opportunity knocked yesterday for
a query where one of the possible solutions involved codegen and I was weak &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;:-)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font face=Calibri color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;So
imagine we have some convieniently breif and neatly anonymized canonical example like
the following table: 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; customer_id&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt; order_id 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;FROM&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; OrderCustomer&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;table class=MsoNormalTable style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: auto auto auto 4.65pt; BORDER-LEFT: medium none; WIDTH: 112.9pt; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" cellspacing=0 cellpadding=0 width=151 border=1&gt;
&lt;tbody&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #404040; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; mso-border-alt: solid windowtext .5pt; mso-shading: windowtext; mso-pattern: gray-75 auto" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;font face=Calibri&gt;&lt;span style="COLOR: yellow; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;customer_id&lt;/span&gt;&lt;span style="COLOR: yellow; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #404040; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; mso-border-alt: solid windowtext .5pt; mso-shading: windowtext; mso-pattern: gray-75 auto; mso-border-left-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;font face=Calibri&gt;&lt;span style="COLOR: yellow; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;order_id&lt;/span&gt;&lt;span style="COLOR: yellow; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 1"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;1&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;32&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 2"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;1&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;33&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 3"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;1&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;34&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 4"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;2&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;821&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 5"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;2&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;831&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 6"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;2&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;851&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 7"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;2&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;861&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 8"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;2&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;871&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 9"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;2&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;911&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 10"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;3&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;1&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 11"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;3&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;2&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 12"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;3&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;3&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 13"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;3&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;4&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 14; mso-yfti-lastrow: yes"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63.65pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=85&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;3&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 49.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=66&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;5&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Now
imagine the project is to &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;remove
all the rows from this table, except the lowest number order&lt;/i&gt;&lt;/b&gt; for&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;each
customer.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The first step is to write
a query to exceptionalize these rows: 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; customer_id&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: fuchsia"&gt;min&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;font color=#000000&gt;order_id&lt;/font&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;font color=#000000&gt; AS &lt;/font&gt;&lt;span style="COLOR: blue"&gt;AS&lt;/span&gt;&lt;font color=#000000&gt; LowestOrderID&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;FROM&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; OrderCustomer&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;&lt;font color=#000000&gt; customer_id&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;table class=MsoNormalTable style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: auto auto auto 4.65pt; BORDER-LEFT: medium none; WIDTH: 139pt; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: .75pt solid windowtext; mso-border-insidev: .75pt solid windowtext" cellspacing=0 cellpadding=0 width=185 border=1&gt;
&lt;tbody&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #404040; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; mso-shading: windowtext; mso-pattern: gray-75 auto; mso-border-left-alt: .5pt; mso-border-top-alt: .5pt; mso-border-bottom-alt: .75pt; mso-border-right-alt: .75pt; mso-border-color-alt: windowtext; mso-border-style-alt: solid" valign=bottom nowrap width=84&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;
&lt;span style="COLOR: yellow; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;customer_id&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #404040; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 76pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; mso-shading: windowtext; mso-pattern: gray-75 auto; mso-border-left-alt: .75pt; mso-border-top-alt: .5pt; mso-border-bottom-alt: .75pt; mso-border-right-alt: .5pt; mso-border-color-alt: windowtext; mso-border-style-alt: solid" valign=bottom nowrap width=101&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;
&lt;span style="COLOR: yellow; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;LowestOrderID&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 1"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .75pt" valign=bottom nowrap width=84&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;1&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 76pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt; mso-border-right-alt: solid windowtext .5pt" valign=bottom nowrap width=101&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;32&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 2"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .75pt" valign=bottom nowrap width=84&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;2&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 76pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt; mso-border-right-alt: solid windowtext .5pt" valign=bottom nowrap width=101&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;821&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 3; mso-yfti-lastrow: yes"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-left-alt: .5pt; mso-border-top-alt: .75pt; mso-border-bottom-alt: .5pt; mso-border-right-alt: .75pt; mso-border-color-alt: windowtext; mso-border-style-alt: solid" valign=bottom nowrap width=84&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;3&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 76pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-left-alt: .75pt; mso-border-top-alt: .75pt; mso-border-bottom-alt: .5pt; mso-border-right-alt: .5pt; mso-border-color-alt: windowtext; mso-border-style-alt: solid" valign=bottom nowrap width=101&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;1&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;The
next step is to select some string literals with the original query so that the result
is valid T-SQL&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: red"&gt;'DELETE
FROM OrderCustomer WHERE customer_id = '&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt; customer_id&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: red"&gt;'AND
order_id &amp;gt; '&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: fuchsia"&gt;min&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;font color=#000000&gt;order_id&lt;/font&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;AS&lt;/span&gt;&lt;font color=#000000&gt; LowestOrderID&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;FROM&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; OrderCustomer&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;&lt;font color=#000000&gt; customer_id&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font face=Calibri&gt;Tangentally
the little unit of joy in this whole experience for me is that &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;the
&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;Ctrl-T&amp;gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font face=Calibri&gt; keyboard
shortcut is the same in SQL Server 2005 Management Studio as it was back in Query
Analyzer.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font face=Calibri color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font face=Calibri&gt;So,
hit &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;Ctrl-T&amp;gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font face=Calibri&gt; to
output the results window as Text, then F5 to return the results to get something
like:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;DELETE
FROM OrderCustomer WHERE customer_id =&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;1&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;AND
order_id &amp;gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;32&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;DELETE
FROM OrderCustomer WHERE customer_id =&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;2&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;AND
order_id &amp;gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;821&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;DELETE
FROM OrderCustomer WHERE customer_id =&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;3&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;AND
order_id &amp;gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;1&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;(2
row(s) affected)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;(5
row(s) affected)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;(4
row(s) affected)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font face=Calibri&gt;Select
all the &lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;DELETE
FROM&lt;/span&gt;&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font face=Calibri&gt; statements
and copy and paste them into a new query window, then F5 to remove the rows.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font face=Calibri color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Look
at the table to test the result:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; customer_id&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt; order_id 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;FROM&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; OrderCustomer&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;table class=MsoNormalTable style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: auto auto auto 4.65pt; BORDER-LEFT: medium none; WIDTH: 105.6pt; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" cellspacing=0 cellpadding=0 width=141 border=1&gt;
&lt;tbody&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #404040; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 0.8in; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; mso-border-alt: solid windowtext .5pt; mso-shading: windowtext; mso-pattern: gray-75 auto" valign=bottom nowrap width=77&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;
&lt;span style="COLOR: yellow; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;customer_id&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #404040; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 48pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; mso-border-alt: solid windowtext .5pt; mso-shading: windowtext; mso-pattern: gray-75 auto; mso-border-left-alt: solid windowtext .5pt" valign=bottom nowrap width=64&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;
&lt;span style="COLOR: yellow; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;order_id&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 1"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 0.8in; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=77&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;1&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 48pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=64&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;32&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 2"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 0.8in; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=77&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;2&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 48pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=64&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;821&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-yfti-irow: 3; mso-yfti-lastrow: yes"&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 0.8in; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=77&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;3&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ece9d8; WIDTH: 48pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15pt; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign=bottom nowrap width=64&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: right" align=right&gt;
&lt;span style="COLOR: black; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;font face=Calibri&gt;1&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,3bc03dcd-ff01-4e88-b044-2538dfc04f62.aspx</comments>
      <category>Code Generation</category>
      <category>Database</category>
      <category>Geeking Out!</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=e0d41aab-6f81-47ea-9681-7c7309bab953</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,e0d41aab-6f81-47ea-9681-7c7309bab953.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,e0d41aab-6f81-47ea-9681-7c7309bab953.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=e0d41aab-6f81-47ea-9681-7c7309bab953</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">Hows that for a long title?  
<br /><br />
So there is a new version of Visual Studio (in <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4014554e-903a-4a62-b429-2b027321c32d&amp;DisplayLang=en">CTP
at time of writing</a>) called <a href="http://msdn.microsoft.com/vstudio/teamsystem/dbpro/">Visual
Studio Team Edition for Database Professionals</a> - its aimed at people who might
associate themselves with the title Database Professional.  I gotta say, it looks
like a really good solution to some problems.<br /><br />
I attended a cabana session at <a href="http://www.microsoft.com/australia/teched2006/">Tech.Ed
(Tech.James?) this year</a> hosted by <a href="http://www.sqldownunder.com/">Greg
Low</a> on data generation in the product, and during the presentation it came up
that it would be nice to have custom generator for Australian-specific data... so
I thought I'd take a stab at it.<br /><br />
Below is a screencap of the kind of random data my generator will spit out. 
Handy for columns where a check constraint may be forcing a given format for the data. 
The format of the phone numbers is configurable by a property and the rows are conistant
for a location so that if we generate a Vic address it will have a valid Vic phone
number etc.<br /><br /><img src="http://deepdark.net/files/datagen.jpg" /><br /><br />
The good news is its really easy to do.  Even at this early stage the product
has some pretty reasonable doco on what to do to write your own generators.<br /><br /><a href="http://deepdark.net/files/AustralianDetails_20060829.zip">So my custom generator
is available for download by clicking on this link</a><br /><br />
To install it on your copy of vsdbpro: 
<br /><ol><li>
Copy the DLL from that zip into the following path on your PC: <br /><font face="Courier New" color="#000000">[Program Files]\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\</font></li><li>
Edit the config file at: 
<br /><font face="Courier New" color="#000000">[Program Files]\Microsoft Visual Studio 8\DBPro\Microsoft.VisualStudio.TeamSystem.Data.Extensions.xml</font> with
a suitable XML editor and add the following line: 
<br /><font face="Courier New" color="#000000">&lt;type&gt;deepdark.net.PersonalDetails,
AustralianDetails, Version=1.0.0.0, Culture=neutral, PublicKeyToken=341d0bd35c6f7d28&lt;/type&gt;</font><br /></li><li>
Restart Visual Studio, you should see a new generator called Personal Details in the
list.<br /></li></ol><br />
The source code is hardly going to start a revolutiuon, but I can make it available
if there is any interest - just let me know.<br /></body>
      <title>Custom Australian Data Generator for Visual Studio Team Edition for DB Pros</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,e0d41aab-6f81-47ea-9681-7c7309bab953.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,e0d41aab-6f81-47ea-9681-7c7309bab953.aspx</link>
      <pubDate>Thu, 31 Aug 2006 23:16:57 GMT</pubDate>
      <description>Hows that for a long title?&amp;nbsp; &lt;br&gt;
&lt;br&gt;
So there is a new version of Visual Studio (in &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4014554e-903a-4a62-b429-2b027321c32d&amp;amp;DisplayLang=en"&gt;CTP
at time of writing&lt;/a&gt;) called &lt;a href="http://msdn.microsoft.com/vstudio/teamsystem/dbpro/"&gt;Visual
Studio Team Edition for Database Professionals&lt;/a&gt; - its aimed at people who might
associate themselves with the title Database Professional.&amp;nbsp; I gotta say, it looks
like a really good solution to some problems.&lt;br&gt;
&lt;br&gt;
I attended a cabana session at &lt;a href="http://www.microsoft.com/australia/teched2006/"&gt;Tech.Ed
(Tech.James?) this year&lt;/a&gt; hosted by &lt;a href="http://www.sqldownunder.com/"&gt;Greg
Low&lt;/a&gt; on data generation in the product, and during the presentation it came up
that it would be nice to have custom generator for Australian-specific data... so
I thought I'd take a stab at it.&lt;br&gt;
&lt;br&gt;
Below is a screencap of the kind of random data my generator will spit out.&amp;nbsp;
Handy for columns where a check constraint may be forcing a given format for the data.&amp;nbsp;
The format of the phone numbers is configurable by a property and the rows are conistant
for a location so that if we generate a Vic address it will have a valid Vic phone
number etc.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://deepdark.net/files/datagen.jpg"&gt;
&lt;br&gt;
&lt;br&gt;
The good news is its really easy to do.&amp;nbsp; Even at this early stage the product
has some pretty reasonable doco on what to do to write your own generators.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://deepdark.net/files/AustralianDetails_20060829.zip"&gt;So my custom generator
is available for download by clicking on this link&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
To install it on your copy of vsdbpro: 
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
Copy the DLL from that zip into the following path on your PC:&amp;nbsp;&lt;br&gt;
&lt;font face="Courier New" color=#000000&gt;[Program Files]\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\&lt;/font&gt; 
&lt;li&gt;
Edit the config file at: 
&lt;br&gt;
&lt;font face="Courier New" color=#000000&gt;[Program Files]\Microsoft Visual Studio 8\DBPro\Microsoft.VisualStudio.TeamSystem.Data.Extensions.xml&lt;/font&gt; with
a suitable XML editor and add the following line: 
&lt;br&gt;
&lt;font face="Courier New" color=#000000&gt;&amp;lt;type&amp;gt;deepdark.net.PersonalDetails, AustralianDetails,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=341d0bd35c6f7d28&amp;lt;/type&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;li&gt;
Restart Visual Studio, you should see a new generator called Personal Details in the
list.&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br&gt;
The source code is hardly going to start a revolutiuon, but I can make it available
if there is any interest - just let me know.&lt;br&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,e0d41aab-6f81-47ea-9681-7c7309bab953.aspx</comments>
      <category>Database</category>
      <category>Downloads</category>
      <category>Geeking Out!</category>
      <category>Australian Data Generator for DB Pros</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=234a3f91-345c-46b2-bc51-51aabbdd07df</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,234a3f91-345c-46b2-bc51-51aabbdd07df.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,234a3f91-345c-46b2-bc51-51aabbdd07df.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=234a3f91-345c-46b2-bc51-51aabbdd07df</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I <a href="http://deepdark.net/PermaLink,guid,03dd5c25-5cc4-4c14-885f-a153373159c1.aspx">posted
before</a> about trying to determine if a SQL Server trigger is enabled or disabled.<br /><br />
The answer came via <a href="http://sqljunkies.com/Article/F5783CE9-BA74-4657-BF9D-1139BCC3096B.scuk">SQLJunkies</a> and
of course comes to us by way of <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_oa-oz_708p.asp">OBJECTPROPERTY</a> function. 
The property is: <span id="intelliTxt"><span id="_ctl2_ArticleText">ExecIsTriggerDisabled.<br /><br />
I learnt all this back in the SQL 7.0 days and my fav trick is to dive into the sysobjects
&amp; syscolumns tables for all kinds of metadata.  I never caught the OBJECTPROPERTY
and the Information Schema views.  
<br /><br />
My homework is to now get busy learning the OBJECTPROPERTY function so I can keep
up with being 1 version behind :-(<br /></span></span><p></p></body>
      <title>How to tell if a SQL Server trigger is enabled?  ...answer!</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,234a3f91-345c-46b2-bc51-51aabbdd07df.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,234a3f91-345c-46b2-bc51-51aabbdd07df.aspx</link>
      <pubDate>Mon, 08 May 2006 13:50:31 GMT</pubDate>
      <description>I &lt;a href="http://deepdark.net/PermaLink,guid,03dd5c25-5cc4-4c14-885f-a153373159c1.aspx"&gt;posted
before&lt;/a&gt; about trying to determine if a SQL Server trigger is enabled or disabled.&lt;br&gt;
&lt;br&gt;
The answer came via &lt;a href="http://sqljunkies.com/Article/F5783CE9-BA74-4657-BF9D-1139BCC3096B.scuk"&gt;SQLJunkies&lt;/a&gt; and
of course comes to us by way of &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_oa-oz_708p.asp"&gt;OBJECTPROPERTY&lt;/a&gt; function.&amp;nbsp;
The property is: &lt;span id="intelliTxt"&gt;&lt;span id="_ctl2_ArticleText"&gt;ExecIsTriggerDisabled.&lt;br&gt;
&lt;br&gt;
I learnt all this back in the SQL 7.0 days and my fav trick is to dive into the sysobjects
&amp;amp; syscolumns tables for all kinds of metadata.&amp;nbsp; I never caught the OBJECTPROPERTY
and the Information Schema views.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
My homework is to now get busy learning the OBJECTPROPERTY function so I can keep
up with being 1 version behind :-(&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;
&lt;/p&gt;</description>
      <comments>http://deepdark.net/CommentView,guid,234a3f91-345c-46b2-bc51-51aabbdd07df.aspx</comments>
      <category>Database</category>
      <category>Geeking Out!</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=1e9a856d-d826-43fe-a64f-c795c7749d08</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,1e9a856d-d826-43fe-a64f-c795c7749d08.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,1e9a856d-d826-43fe-a64f-c795c7749d08.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=1e9a856d-d826-43fe-a64f-c795c7749d08</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
So I <a href="http://deepdark.net/PermaLink,guid,a291a0a5-0686-4fa7-8a2b-d628dc5e7acf.aspx">mentioned
earlier</a> that I am excited about using XPath against XML data stored in SQL Server
(v2000 at the moment) but I keep coming up against the same problems, like text/ntext
data types are invalid for local variables in a batch and I can't fit the documents
I want inside varchar(8000).  
<br /><br /><a href="http://www.sqlxml.org/faqs.aspx?faq=42">The result</a> with the most <a href="http://www.gapingvoid.com/Moveable_Type/archives/002762.html">Google
Juice</a> on this points to the solution we all want.  There needs to be a version
of <a href="http://msdn2.microsoft.com/en-us/library/ms187367.aspx">sp_xml_preparedocument</a><a href="http://msdn2.microsoft.com/en-us/library/ms187367.aspx"></a>that
accepts a pointer to a text/ntext column.  There are various solutions around,
none of which are kind on server resources (like creating an undetermined number of
varchar(8000) variables in scope) and none of which are pretty.<br /><br />
The chances of getting this went from <span style="font-style: italic;">slim </span>to <span style="font-style: italic;">none</span><a href="http://www.microsoft.com/windowsserversystem/applicationplatform/launch2005/default.mspx">last
Nov</a>.  Oh well.  I've yet to sink my teeth into SQL Server 2005 and I
know they have done a lot with XML in that release, but Microsoft:  Do you think
every system and team cuts over to the new version of your products the day after
launch?  I understand you're excited but the same happened to VB6 when VS.NET
1.0 came out.<br /><br />
The project I have in mind involves taking the <a href="http://www.microsoft.com/office/previous/xp/columns/column21.asp">XML
out of Excel documents</a> and <a href="http://www.microsoft.com/downloads/details.aspx?familyid=fe118952-3547-420a-a412-00a2662442d9&amp;displaylang=en">working
with it using XPath and XSLT</a>.  So for now this dosen't live in the data tier. 
Oh well.  The sun will rise on the morning.<br /><br /><span style="color: rgb(0, 0, 0);"> Oh and a nod to the</span><a href="http://www.dld06.com/2005/12/anina_1.html">brainy</a><span style="color: rgb(0, 0, 0);">and</span><a href="http://www.flickr.com/photos/62356610@N00/">beautiful</a><a href="http://www.anina.net">Anina</a><span style="color: rgb(0, 0, 0);">for
"google juice" links.  </span><br /><br /><br /></body>
      <title>XPath pre-post MkII</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,1e9a856d-d826-43fe-a64f-c795c7749d08.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,1e9a856d-d826-43fe-a64f-c795c7749d08.aspx</link>
      <pubDate>Tue, 25 Apr 2006 23:41:25 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
So I &lt;a href="http://deepdark.net/PermaLink,guid,a291a0a5-0686-4fa7-8a2b-d628dc5e7acf.aspx"&gt;mentioned
earlier&lt;/a&gt; that I am excited about using XPath against XML data stored in SQL Server
(v2000 at the moment) but I keep coming up against the same problems, like text/ntext
data types are invalid for local variables in a batch and I can't fit the documents
I want inside varchar(8000).&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.sqlxml.org/faqs.aspx?faq=42"&gt;The result&lt;/a&gt; with the most &lt;a href="http://www.gapingvoid.com/Moveable_Type/archives/002762.html"&gt;Google
Juice&lt;/a&gt; on this points to the solution we all want.&amp;nbsp; There needs to be a version
of &lt;a href="http://msdn2.microsoft.com/en-us/library/ms187367.aspx"&gt;sp_xml_preparedocument&lt;/a&gt; &lt;a href="http://msdn2.microsoft.com/en-us/library/ms187367.aspx"&gt;&lt;/a&gt;that
accepts a pointer to a text/ntext column.&amp;nbsp; There are various solutions around,
none of which are kind on server resources (like creating an undetermined number of
varchar(8000) variables in scope) and none of which are pretty.&lt;br&gt;
&lt;br&gt;
The chances of getting this went from &lt;span style="font-style: italic;"&gt;slim &lt;/span&gt;to &lt;span style="font-style: italic;"&gt;none&lt;/span&gt; &lt;a href="http://www.microsoft.com/windowsserversystem/applicationplatform/launch2005/default.mspx"&gt;last
Nov&lt;/a&gt;.&amp;nbsp; Oh well.&amp;nbsp; I've yet to sink my teeth into SQL Server 2005 and I
know they have done a lot with XML in that release, but Microsoft:&amp;nbsp; Do you think
every system and team cuts over to the new version of your products the day after
launch?&amp;nbsp; I understand you're excited but the same happened to VB6 when VS.NET
1.0 came out.&lt;br&gt;
&lt;br&gt;
The project I have in mind involves taking the &lt;a href="http://www.microsoft.com/office/previous/xp/columns/column21.asp"&gt;XML
out of Excel documents&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=fe118952-3547-420a-a412-00a2662442d9&amp;amp;displaylang=en"&gt;working
with it using XPath and XSLT&lt;/a&gt;.&amp;nbsp; So for now this dosen't live in the data tier.&amp;nbsp;
Oh well.&amp;nbsp; The sun will rise on the morning.&lt;br&gt;
&lt;br&gt;
&lt;span style="color: rgb(0, 0, 0);"&gt; Oh and a nod to the&lt;/span&gt; &lt;a href="http://www.dld06.com/2005/12/anina_1.html"&gt;brainy&lt;/a&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;and&lt;/span&gt; &lt;a href="http://www.flickr.com/photos/62356610@N00/"&gt;beautiful&lt;/a&gt; &lt;a href="http://www.anina.net"&gt;Anina&lt;/a&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;for
"google juice" links.&amp;nbsp; &lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
</description>
      <comments>http://deepdark.net/CommentView,guid,1e9a856d-d826-43fe-a64f-c795c7749d08.aspx</comments>
      <category>Database</category>
      <category>Geeking Out!</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=03dd5c25-5cc4-4c14-885f-a153373159c1</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,03dd5c25-5cc4-4c14-885f-a153373159c1.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,03dd5c25-5cc4-4c14-885f-a153373159c1.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=03dd5c25-5cc4-4c14-885f-a153373159c1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
Maybe it's a hangover from a public holiday but I can't seem to find out from the
system tables or sprocs.  Man it can't be that hard!<br /><br />
Google here I come :-(<br /><br />
Stay tuned for update if I find out...<br /></body>
      <title>How to tell if a SQL Server trigger is enabled?  hmmm</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,03dd5c25-5cc4-4c14-885f-a153373159c1.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,03dd5c25-5cc4-4c14-885f-a153373159c1.aspx</link>
      <pubDate>Mon, 17 Apr 2006 23:30:21 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
Maybe it's a hangover from a public holiday but I can't seem to find out from the
system tables or sprocs.&amp;nbsp; Man it can't be that hard!&lt;br&gt;
&lt;br&gt;
Google here I come :-(&lt;br&gt;
&lt;br&gt;
Stay tuned for update if I find out...&lt;br&gt;
</description>
      <comments>http://deepdark.net/CommentView,guid,03dd5c25-5cc4-4c14-885f-a153373159c1.aspx</comments>
      <category>Database</category>
      <category>Geeking Out!</category>
    </item>
    <item>
      <trackback:ping>http://deepdark.net/Trackback.aspx?guid=cd59b836-85c1-40e1-a0d6-b12441d523ef</trackback:ping>
      <pingback:server>http://deepdark.net/pingback.aspx</pingback:server>
      <pingback:target>http://deepdark.net/PermaLink,guid,cd59b836-85c1-40e1-a0d6-b12441d523ef.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://deepdark.net/CommentView,guid,cd59b836-85c1-40e1-a0d6-b12441d523ef.aspx</wfw:comment>
      <wfw:commentRss>http://deepdark.net/SyndicationService.asmx/GetEntryCommentsRss?guid=cd59b836-85c1-40e1-a0d6-b12441d523ef</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
I know what makes me sick and what makes me well, but that dosen't make me a doctor.<br /><br />
Knowledge of a specific business domain dosen't qualify you through some holy invocation
to be a database designer.<br /><br />
Sounds like I'm taking a pretty hard line on this :)<br /><br />
Really it all stems from seeing people put in way too much effort to cope with bad
ideas.  Take for example this pretty simple rule of normalization:<br /><ul><li>
Every time a row and column meet, that cell should hold one and only one bit of data.</li></ul>
Break that rule and you will be forever doomed to write hard to maintain queries. 
I was just discussing a scenario that needed to  regularly update part of a field
for a large number of rows.  Luckily that scenario isn't seeing the light of
day &lt;phew&gt;<br /><br />
So, what criteria do you think should be on the test that issues licenses to develop
databases?<br /></body>
      <title>License to develop databases</title>
      <guid isPermaLink="false">http://deepdark.net/PermaLink,guid,cd59b836-85c1-40e1-a0d6-b12441d523ef.aspx</guid>
      <link>http://deepdark.net/PermaLink,guid,cd59b836-85c1-40e1-a0d6-b12441d523ef.aspx</link>
      <pubDate>Thu, 02 Mar 2006 23:01:55 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
I know what makes me sick and what makes me well, but that dosen't make me a doctor.&lt;br&gt;
&lt;br&gt;
Knowledge of a specific business domain dosen't qualify you through some holy invocation
to be a database designer.&lt;br&gt;
&lt;br&gt;
Sounds like I'm taking a pretty hard line on this :)&lt;br&gt;
&lt;br&gt;
Really it all stems from seeing people put in way too much effort to cope with bad
ideas.&amp;nbsp; Take for example this pretty simple rule of normalization:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Every time a row and column meet, that cell should hold one and only one bit of data.&lt;/li&gt;
&lt;/ul&gt;
Break that rule and you will be forever doomed to write hard to maintain queries.&amp;nbsp;
I was just discussing a scenario that needed to&amp;nbsp; regularly update part of a field
for a large number of rows.&amp;nbsp; Luckily that scenario isn't seeing the light of
day &amp;lt;phew&amp;gt;&lt;br&gt;
&lt;br&gt;
So, what criteria do you think should be on the test that issues licenses to develop
databases?&lt;br&gt;
</description>
      <comments>http://deepdark.net/CommentView,guid,cd59b836-85c1-40e1-a0d6-b12441d523ef.aspx</comments>
      <category>Geeking Out!</category>
      <category>Database</category>
    </item>
  </channel>
</rss>