<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblogcasts.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Danny&amp;#39;s SQL Server and Internals Viewer Blog</title><link>http://sqlblogcasts.com/blogs/danny/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Page compression - internals and examples</title><link>http://sqlblogcasts.com/blogs/danny/archive/2008/06/19/page-compression-internals-and-examples.aspx</link><pubDate>Thu, 19 Jun 2008 19:57:00 GMT</pubDate><guid isPermaLink="false">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:10495</guid><dc:creator>Danny</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sqlblogcasts.com/blogs/danny/rsscomments.aspx?PostID=10495</wfw:commentRss><comments>http://sqlblogcasts.com/blogs/danny/archive/2008/06/19/page-compression-internals-and-examples.aspx#comments</comments><description>&lt;p&gt;First of all, apologies for the delay in writing this. I meant to blog about page compression as soon as I added it in to Internals Viewer but I didn’t get round to it. &lt;/p&gt;
&lt;p&gt;Going over it again for this blog post and testing things out with RC0 I found a few bugs, so along with this comes a new release, version 1.02. It can be downloaded &lt;a class="" title="here" href="http://www.sqlinternalsviewer.com/downloads/sqlinternalsviewer_1_0_2.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Syntax:&amp;nbsp; &lt;span style="FONT-SIZE:10pt;COLOR:blue;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;ALTER&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;TABLE&lt;/span&gt; &lt;span style="COLOR:gray;mso-themecolor:background1;mso-themeshade:128;"&gt;table&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;REBUILD&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;WITH &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;DATA_COMPRESSION &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; PAGE&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Page compression uses the following techniques to save space:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Row Compression (covered &lt;a class="" title="here" href="http://sqlblogcasts.com/blogs/danny/archive/2008/02/24/row-compression-internal-structure.aspx"&gt;here&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Prefix compression&lt;/li&gt;
&lt;li&gt;Dictionary compression&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Applying Page compression to a table or index doesn’t necessarily mean that all of the techniques are used. Row compression will always be used if page compression is used, but prefix and dictionary compression are only used if SQL Server determines that space can be saved by using them. &lt;/p&gt;
&lt;p&gt;For this post I’ve created an example script that can be used with SQL Server 2008 (RC0) and SQL Internals Viewer.&amp;nbsp;The script will create and populate two tables, one called FirstNames_PrefixOnly and one called FirstNames_PrefixAndDictionary. It can be downloaded &lt;a class="" title="here" href="http://www.sqlinternalsviewer.com/scripts/20080619_compression_example.sql"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Both page compression techniques work by cutting down on repetition in the page. Prefix compression identifies common prefixes on a per-column basis. SQL Server identifies a common prefix and then it assumes that all values start with that prefix. Records only need to store the differences from the prefix.&lt;/p&gt;
&lt;p&gt;Here’s an example. All of the following names start with &lt;em&gt;Antoni&lt;/em&gt;.&amp;nbsp; The prefix is stored as Antoni so only the suffixes need to be stored, saving space.&lt;/p&gt;&lt;font color="#ff0000"&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt 36pt;"&gt;&lt;span style="COLOR:red;"&gt;&lt;font face="courier new,courier" size="2"&gt;Antoni&lt;/font&gt;&lt;/span&gt;&lt;font face="courier new,courier"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;a&lt;br /&gt;&lt;/font&gt;&lt;span style="COLOR:red;"&gt;Antoni&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;e&lt;br /&gt;&lt;/font&gt;&lt;span style="COLOR:red;"&gt;Antoni&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;etta&lt;br /&gt;&lt;/font&gt;&lt;span style="COLOR:red;"&gt;Antoni&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;na&lt;br /&gt;&lt;/font&gt;&lt;span style="COLOR:red;"&gt;Antoni&lt;/span&gt;&lt;font color="#000000"&gt;o&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;Dictionary compression is applied after prefix compression and identifies common patterns in the data. If a particular pattern occurs more that once space can be saved by adding the pattern to the dictionary and in its place adding a reference back to the dictionary entry. Prefixes are specific to each column, but the dictionary can be used across columns.&lt;/p&gt;
&lt;p&gt;Following on from the example of first names beginning with Antoni, there may be repetition in the table:&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt 36pt;"&gt;&lt;font size="2"&gt;&lt;font face="courier new,courier"&gt;&lt;span style="COLOR:red;"&gt;Antoni&lt;/span&gt;&lt;span style="COLOR:#4f6228;mso-themecolor:accent3;mso-themeshade:128;"&gt;etta&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR:red;"&gt;Antoni&lt;/span&gt;&lt;span style="COLOR:#4f6228;mso-themecolor:accent3;mso-themeshade:128;"&gt;etta&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR:red;"&gt;Antoni&lt;/span&gt;&lt;span style="COLOR:#4f6228;mso-themecolor:accent3;mso-themeshade:128;"&gt;etta&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR:red;"&gt;Antoni&lt;/span&gt;&lt;span style="COLOR:#4f6228;mso-themecolor:accent3;mso-themeshade:128;"&gt;etta&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR:red;"&gt;Antoni&lt;/span&gt;&lt;span style="COLOR:#4f6228;mso-themecolor:accent3;mso-themeshade:128;"&gt;na&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR:red;"&gt;Antoni&lt;/span&gt;&lt;span style="COLOR:#4f6228;mso-themecolor:accent3;mso-themeshade:128;"&gt;na&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR:red;"&gt;Antoni&lt;/span&gt;&lt;span style="COLOR:#4f6228;mso-themecolor:accent3;mso-themeshade:128;"&gt;na&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR:red;"&gt;Antoni&lt;/span&gt;&lt;span style="COLOR:#4f6228;mso-themecolor:accent3;mso-themeshade:128;"&gt;na&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Prefix compression (in red) has already identified common prefixes. Dictionary compression indentifies the common pattern (&lt;em&gt;etta&lt;/em&gt; and &lt;em&gt;na&lt;/em&gt;), adds them to the dictionary and replaces them with a reference to the entry. &lt;/p&gt;
&lt;p&gt;So this...&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;font face="courier new,courier" size="2"&gt;Data:&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="courier new,courier" size="2"&gt;&amp;nbsp;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Antonietta&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font size="2"&gt;&lt;font face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Antonietta&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;Antonina&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; Antonina&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;Becomes this...&lt;/p&gt;
&lt;blockquote&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;font face="courier new,courier" size="2"&gt;Prefix:&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font size="2"&gt;&lt;font face="courier new,courier"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="COLOR:red;"&gt;&lt;font face="courier new,courier" size="2"&gt;Antoni&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;font face="courier new,courier" size="2"&gt;Dictionary:&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font size="2"&gt;&lt;font face="courier new,courier"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#0070c0;"&gt;[0]&lt;/span&gt; – &lt;span style="COLOR:#4f6228;mso-themecolor:accent3;mso-themeshade:128;"&gt;etta&lt;/span&gt;, &lt;span style="COLOR:#0070c0;"&gt;[1]&lt;/span&gt; – &lt;/font&gt;&lt;/font&gt;&lt;span style="COLOR:#4f6228;mso-themecolor:accent3;mso-themeshade:128;"&gt;&lt;font face="courier new,courier" size="2"&gt;na&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;font size="2"&gt;&lt;font face="courier new,courier"&gt;Data:&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;font face="courier new,courier" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:#0070c0;"&gt;&lt;font size="2"&gt;&lt;font face="courier new,courier"&gt;[0]&lt;br /&gt;&lt;span style="mso-tab-count:2;"&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;/span&gt;[0]&lt;br /&gt;&lt;span style="mso-tab-count:2;"&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;/span&gt;[1]&lt;br /&gt;&lt;span style="mso-tab-count:2;"&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;/span&gt;[1]&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;There’s more information on this on the &lt;a class="" title="Storage Engine Blog" href="http://blogs.msdn.com/sqlserverstorageengine/archive/2008/01/18/what-is-page-compression.aspx"&gt;Storage Engine Blog&lt;/a&gt; and also in &lt;a class="" title="Books Online" href="http://msdn.microsoft.com/en-us/library/cc280464(SQL.100).aspx"&gt;Books Online&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Compression Info structure&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If a table or index uses Page compression and it uses Prefix or Dictionary compression it will have something called a Compression Info (CI) structure just after the page header starting at byte 96. &lt;/p&gt;
&lt;p&gt;The CI structure contains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A header describing the CI structure and what it contains&lt;/li&gt;
&lt;li&gt;The Anchor Record (for Prefix compression) &lt;/li&gt;
&lt;li&gt;The Dictionary (if used)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;In SQL Internals Viewer if a page has a CI structure an additional set of options will appear underneath the Offset table. Selecting one of the three items will colourise and decode it in the Page Viewer.&lt;/p&gt;
&lt;p&gt;&lt;img height="106" alt="" src="http://www.sqlinternalsviewer.com/images/blog/image1compressioninfo.png" width="180" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;Header&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The CI header is made of the following parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Status Bits – 1 byte&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;If bit 1 is 1 the CI has an anchor record&lt;/li&gt;
&lt;li&gt;If bit 2 is 1 the CI has a dictionary&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;Page Mod Count – 2 byte short (I’m not sure what this does)&lt;/li&gt;
&lt;li&gt;Length – Length of the anchor record (Only present if there is a dictionary) – 2 byte short&lt;/li&gt;
&lt;li&gt;Size – Size of the CI structure – 2 byte short&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;img height="224" alt="" src="http://www.sqlinternalsviewer.com/images/blog/image2Header.png" width="531" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prefix Compression - Anchor Record&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The anchor record is a record that uses the new row compression record format. The anchor record defines the prefix, if it exists, for each column. &lt;/p&gt;
&lt;p&gt;For more on the new row compression record format see the previous post about row compression.&lt;/p&gt;
&lt;p&gt;&lt;img height="313" alt="" src="http://www.sqlinternalsviewer.com/images/blog/image3Anchor.png" width="537" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;The screenshot above shows the anchor record for the first page of the example FirstNames_PrefixOnly table.&lt;/p&gt;
&lt;p&gt;0x416E6E6162656C6C61 decodes to &lt;em&gt;Annabella&lt;/em&gt; – this is the prefix for column 1.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img height="274" alt="" src="http://www.sqlinternalsviewer.com/images/blog/image4PrefixRow.png" width="534" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;In the example table, NameId 461 is Annemarie. The first name field is made up of two things. The first is the data offset. This is 1 or 2 bytes (depending on if the first bit is set) that determines at what offset the subsequent data starts. &lt;span style="FONT-SIZE:8.5pt;BACKGROUND:lime;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;mso-highlight:lime;"&gt;03&lt;/span&gt; decodes to 3 and &lt;span style="FONT-SIZE:8.5pt;BACKGROUND:green;COLOR:white;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;mso-highlight:green;"&gt;65 6D 61 72 69 65&lt;/span&gt;&lt;span style="FONT-SIZE:8.5pt;COLOR:white;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&amp;nbsp;&lt;/span&gt;is &lt;font color="#339966"&gt;emarie&lt;/font&gt;. This means the prefix is used for the first three bytes, and then the rest of the data is taken from the field.&lt;/p&gt;
&lt;blockquote&gt;&lt;span style="COLOR:red;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font size="2"&gt;Ann&lt;/font&gt;&lt;/span&gt;&lt;font size="2"&gt;&lt;span style="COLOR:#c00000;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font color="#ff0000"&gt;abella &lt;/font&gt;&lt;font face="Arial" color="#000000"&gt;(Prefix from the anchor record)&lt;/font&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-themecolor:background1;mso-themeshade:128;"&gt;123&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="COLOR:#0070c0;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;emarie &lt;font face="Arial" color="#000000"&gt;(Data from the row)&lt;/font&gt;&lt;br /&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="COLOR:red;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;Ann&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="COLOR:#0070c0;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;emarie &lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p&gt;The record for Annabella (NameId 441) doesn’t use any space and the prefix provides all of the data:&lt;/p&gt;
&lt;p&gt;&lt;img height="181" alt="" src="http://www.sqlinternalsviewer.com/images/blog/image5NoSpace.png" width="397" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;When the prefix isn’t used at all the data offset is set to 0, which means the entire anchor prefix is ignored:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img height="193" alt="" src="http://www.sqlinternalsviewer.com/images/blog/image6OffsetZero.png" width="414" border="0" /&gt;&lt;br /&gt;&lt;strong&gt;Dictionary Compression&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Dictionary is stored in the Compression Info structure.&lt;/p&gt;
&lt;p&gt;&lt;img height="200" alt="" src="http://www.sqlinternalsviewer.com/images/blog/image7dictionary.png" width="534" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;The dictionary structure is as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Entry count – 2 bytes &lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;This defines the number of entries in the dictionary&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;Dictionary entry offset array – 2 * Entry count bytes&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;They array defines the end offset of each dictionary entry in a very similar way to the column offset array in a standard record with variable length fields.&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;Dictionary entries&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Defined by the offset array&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;p&gt;The example script creates a table called FirstNames_PrefixAndDictionary. The table has repetition in it which makes it suitable for dictionary compression.&lt;/p&gt;
&lt;p&gt;How does a field refer back to the dictionary? The row structure discussed in the previous row compression post has a CD Array that contains information about each column in a record stored as 4-bit integers, two to a byte.&amp;nbsp; Row compression covers values 0-10 for the CD array, above 10 and is used to mark that the value in the field is a symbol, a reference to the dictionary item. The size of the symbol is determined by the CD array value minus 11.&lt;/p&gt;
&lt;p&gt;Here’s an example:&lt;/p&gt;
&lt;p&gt;&lt;img height="229" alt="" src="http://www.sqlinternalsviewer.com/images/blog/image8symbol.png" width="457" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;This record has two columns, so the CD Array is one byte (0xC3) that is split out into 3 (2 bytes short) and 12 (1 byte symbol). The 1 byte symbol value is 4 so we need to replace this with the data in dictionary entry 4.&lt;/p&gt;
&lt;p&gt;&lt;img height="301" alt="" src="http://www.sqlinternalsviewer.com/images/blog/image9dictionaryentry.png" width="532" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Because this column has a prefix the first byte is the offset of the data, and the subsequent bytes need to be appended at the offset. This column has a prefix of &lt;span style="FONT-SIZE:8.5pt;BACKGROUND:green;COLOR:white;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;mso-highlight:green;"&gt;41 64 65 6C 61 69 64 61&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-bidi;"&gt;&amp;nbsp;&lt;/span&gt; (Adelaida).&lt;/p&gt;
&lt;p&gt;Dictionary 4 has the value &lt;span style="FONT-SIZE:8.5pt;BACKGROUND:yellow;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;mso-highlight:yellow;"&gt;04 65&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-bidi;"&gt; &lt;/span&gt;which means 0x65 (e)&amp;nbsp;is appended to the prefix at byte 4, this is&amp;nbsp;&lt;span style="FONT-SIZE:8.5pt;BACKGROUND:green;COLOR:white;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;mso-highlight:green;"&gt;41 64 65 6C&lt;/span&gt;&lt;span style="FONT-SIZE:8.5pt;BACKGROUND:yellow;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;mso-highlight:yellow;"&gt; 65&lt;/span&gt;. This decodes to &lt;em&gt;&lt;font color="#ff0000"&gt;Adel&lt;/font&gt;&lt;font color="#0000ff"&gt;e&lt;/font&gt;&lt;/em&gt;. It&amp;#39;s as simple as that!&lt;/p&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=10495" width="1" height="1"&gt;</description><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/Internals/default.aspx">Internals</category><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/SQL+Internals+Viewer/default.aspx">SQL Internals Viewer</category></item><item><title>SQL Internals Viewer - New version with sparse column support</title><link>http://sqlblogcasts.com/blogs/danny/archive/2008/05/02/sql-internals-viewer-new-version-with-sparse-column-support.aspx</link><pubDate>Fri, 02 May 2008 18:53:00 GMT</pubDate><guid isPermaLink="false">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:10368</guid><dc:creator>Danny</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sqlblogcasts.com/blogs/danny/rsscomments.aspx?PostID=10368</wfw:commentRss><comments>http://sqlblogcasts.com/blogs/danny/archive/2008/05/02/sql-internals-viewer-new-version-with-sparse-column-support.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;ve just released a new version of SQL Internals Viewer that has support for 2008 sparse columns, a feature introduced in SQL Server 2008 CTP6.&lt;/p&gt;
&lt;p&gt;There are also a few bug fixes and minor changes.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s available to download from &lt;a href="http://www.sqlinternalsviewer.com/"&gt;http://www.sqlinternalsviewer.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a class="" title="Kalen" href="http://sqlblog.com/blogs/kalen_delaney/default.aspx"&gt;Kalen&lt;/a&gt; for the help with the sparse vector complex header info.&lt;/p&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=10368" width="1" height="1"&gt;</description><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/Internals/default.aspx">Internals</category><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/SQL+Internals+Viewer/default.aspx">SQL Internals Viewer</category></item><item><title>SQL Internals Viewer 1.0 Released</title><link>http://sqlblogcasts.com/blogs/danny/archive/2008/03/24/sql-internals-viewer-1-0-released.aspx</link><pubDate>Mon, 24 Mar 2008 12:21:00 GMT</pubDate><guid isPermaLink="false">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:10224</guid><dc:creator>Danny</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sqlblogcasts.com/blogs/danny/rsscomments.aspx?PostID=10224</wfw:commentRss><comments>http://sqlblogcasts.com/blogs/danny/archive/2008/03/24/sql-internals-viewer-1-0-released.aspx#comments</comments><description>&lt;p&gt;I’m pleased to announce that SQL Internals Viewer 1.0 has been released. It can be downloaded from &lt;a href="http://www.sqlinternalsviewer.com/"&gt;www.sqlinternalsviewer.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve also put up&amp;nbsp;the first part&amp;nbsp;of a user guide that covers the main window and Allocation Map. The second part will follow shortly&amp;nbsp;which will cover&amp;nbsp;the Page Viewer. The user guide is available &lt;a class="" title="here" href="http://www.sqlinternalsviewer.com/UserGuide/default.html" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&amp;#39;ve got an existing version installed it will need to be removed through &lt;em&gt;Add/Remove Programs&lt;/em&gt; or &lt;em&gt;Programs and Features&lt;/em&gt; in Control Panel.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;New features&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#993300"&gt;&lt;strong&gt;Encode and Find&lt;/strong&gt;&lt;/font&gt; is a new feature in the Page Viewer that allows you to encode a value to a particular data type and then search for it in the page. It can be accessed using the &lt;strong&gt;Page – Encode and Find&lt;/strong&gt; menu item or the button on the toolbar.&lt;/p&gt;
&lt;p&gt;&lt;img height="169" alt="Encode and Find" src="http://www.sqlinternalsviewer.com/images/blog/20080324_EncodeAndFind.png" width="404" align="middle" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;There’s also a new feature on the hex viewer so that once you’ve found the data you are looking for you can select the record that it is contained in. This can be done by right clicking on the byte and selecting &lt;strong&gt;Select Record&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#993300"&gt;SQL Server 2008 Page and Row Compression&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Page Viewer can display the new SQL Server 2008 Page and Row compression row structures, including the CI (Compression Information) structure.&lt;/p&gt;
&lt;p&gt;&lt;img height="301" alt="2008 Compression" src="http://www.sqlinternalsviewer.com/images/blog/20080324_Compression.png" width="516" align="middle" border="0" /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;At the moment the application only supports data pages.&lt;/p&gt;
&lt;p&gt;&lt;font color="#993300"&gt;&lt;strong&gt;Key&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;There is a new improved version of the Key for the allocation map.&lt;/p&gt;
&lt;p&gt;&lt;img height="133" alt="Key" src="http://www.sqlinternalsviewer.com/images/blog/20080324_Key.png" width="263" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Clicking on an item on the Key will highlight it on the Allocation Map and fade the other items. Clicking on it again will clear the select.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Improvements&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There have been several bug fixes and performance fixes, including improvements to the load times for databases.&lt;/p&gt;
&lt;p&gt;Clicking on the Allocation Map will open the page in the current Page Viewer. To open the page in a new Page Viewer hold down the shift button and click on the page. There are more details of the new changes in the &lt;a class="" title="User Guide" href="http://www.sqlinternalsviewer.com/UserGuide/default.html"&gt;User Guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SQL Server 2008 Support&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There is still work to be done to get Internals Viewer working will all of the latest features of SQL Server 2008, including Page and Row compression on indexes and sparse columns. It’s something I’m working on at the moment and I hope to release in the next few months.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=10224" width="1" height="1"&gt;</description><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/Internals/default.aspx">Internals</category><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/SQL+Internals+Viewer/default.aspx">SQL Internals Viewer</category></item><item><title>Row compression – internal structure</title><link>http://sqlblogcasts.com/blogs/danny/archive/2008/02/24/row-compression-internal-structure.aspx</link><pubDate>Sun, 24 Feb 2008 19:31:00 GMT</pubDate><guid isPermaLink="false">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:7759</guid><dc:creator>Danny</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sqlblogcasts.com/blogs/danny/rsscomments.aspx?PostID=7759</wfw:commentRss><comments>http://sqlblogcasts.com/blogs/danny/archive/2008/02/24/row-compression-internal-structure.aspx#comments</comments><description>&lt;P&gt;The CTP6 release of SQL Server 2008 includes row and page compression. It’s a feature that will only be in the Developer and Enterprise edition of SQL Server, so I wasn’t sure whether I should (or could!) add it in to &lt;A class="" title="SQL Internals Viewer" href="http://www.sqlinternalsviewer.com/" target=_blank&gt;SQL Internals Viewer&lt;/A&gt;. I had a look into it and thought it would be worth putting it in as it’s one of those things where it’ll be very useful to understand how it works.&lt;/P&gt;
&lt;P&gt;So far I’ve only got row compression covered in SQL Internals Viewer, but I thought I’d better get down what I’ve found out so far.&lt;/P&gt;
&lt;P&gt;There’s more on the new SQL Server 2008 compression on the SQL Server Storage Engine Blog &lt;A class="" title=here href="http://blogs.msdn.com/sqlserverstorageengine/archive/2007/11/12/types-of-data-compression-in-sql-server-2008.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Row compression has a completely different row format. The size of a field is determined by the minimum amount of space needed to store it.&amp;nbsp; The Books Online topic ‘Row Compression Implementation’ has a good run down of how space is saved with different data types. &lt;/P&gt;
&lt;P&gt;It’s very easy to add row compression to a table. The syntax is:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;ALTER&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:blue;"&gt;TABLE&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;mso-themecolor:background1;mso-themeshade:128;"&gt;table&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;REBUILD&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;WITH &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;DATA_COMPRESSION &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; ROW&lt;SPAN style="COLOR:gray;"&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;The standard row structure is covered in Kalen Delaney’s &lt;A class="" title="Inside Microsoft SQL Server 2005: The Storage Engine" href="http://www.amazon.co.uk/Inside-Microsoft-SQL-Server-2005/dp/0735621055" target=_blank&gt;Inside Microsoft SQL Server 2005: The Storage Engine&lt;/A&gt;, and there’s also an overview &lt;A class="" title="here (Storage Engine Blog)" href="http://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/23/644607.aspx"&gt;here (Storage Engine Blog)&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Compressed row structure&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;(There may be mistakes in this as it’s currently undocumented, please let me know if anything needs correcting)&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Compressed row example" style="WIDTH:339px;HEIGHT:37px;" height=37 alt="Compressed row example" src="http://www.sqlinternalsviewer.com/images/blog/blog_row_compression_example.png" width=339 align=middle&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Status Bits A&lt;/STRONG&gt;&lt;BR&gt;1st byte&lt;/P&gt;
&lt;P&gt;This looks the same as a normal row, although there may be differences.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Number of columns&lt;/STRONG&gt; 1 or 2 byte integer&lt;BR&gt;2nd/2nd-3rd byte&lt;BR&gt;&lt;BR&gt;This is the first instance where space can be saved. If the number of columns can fit into one byte (0-254) one byte will be used, if not two bytes are used. If the first (high-order) bit is 1 on the first byte this indicates a second byte is used.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;CD Array&lt;/STRONG&gt;&lt;BR&gt;Next (Number of columns/2) + (Number of columns%2) bytes&lt;/P&gt;
&lt;P&gt;I’m guessing CD stands for Column Description or Compression Description. It’s an array of 4-bit (nibble) integers, stored 2 per byte.&amp;nbsp; Every column in the row has a CD Array entry that determines if it is null, empty, stored ‘short’ (and if so the size) or stored ‘long’. &lt;BR&gt;Short and long are the equivalents to the difference between fixed and variable length storage in the standard row format. Short CD Array entries represent fixed length storage (defined by the CD Array entry), but they use the optimal amount or storage. Long fields are similar to variable length fields, they have an entry in a row offset array, and these too use optimized storage. &lt;/P&gt;
&lt;P&gt;Possible values for the CD array are:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;0&lt;/STRONG&gt; – Null&lt;BR&gt;&lt;STRONG&gt;1&lt;/STRONG&gt; – Empty&lt;BR&gt;&lt;STRONG&gt;2&lt;/STRONG&gt; – 1 byte short&lt;BR&gt;&lt;STRONG&gt;3&lt;/STRONG&gt; – 2 bytes short&lt;BR&gt;&lt;STRONG&gt;4&lt;/STRONG&gt; – 3 bytes short&lt;BR&gt;&lt;STRONG&gt;5&lt;/STRONG&gt; – 4 bytes short&lt;BR&gt;&lt;STRONG&gt;6&lt;/STRONG&gt; – 5 bytes short&lt;BR&gt;&lt;STRONG&gt;7&lt;/STRONG&gt; – 6 bytes short&lt;BR&gt;&lt;STRONG&gt;8&lt;/STRONG&gt; – 7 bytes short&lt;BR&gt;&lt;STRONG&gt;9&lt;/STRONG&gt; – 8 bytes short&lt;BR&gt;&lt;STRONG&gt;10&lt;/STRONG&gt; - Long&lt;/P&gt;
&lt;P&gt;If a field is a BIT data type the value of the CD Array is used as the value.&lt;/P&gt;
&lt;P&gt;Row compression essentially turns every compressible field into a variable length field. It seems that the distinction between long and short columns is used so the extra overhead (column offset array entry) is only used when necessary. Below 9 bytes the CD array can be used to store the length. Above 8 bytes and an extra two bytes are used for the offset array entry.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Short Column Data&lt;/STRONG&gt;&lt;BR&gt;Next ∑ (short bytes in CD Array)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Unknown&lt;/STRONG&gt;&lt;BR&gt;?&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Number of variable length columns&lt;/STRONG&gt;&lt;BR&gt;Next 2 bytes&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Column offset array&lt;/STRONG&gt;&lt;BR&gt;Next (2 * Number of variable length columns) bytes&lt;/P&gt;
&lt;P&gt;Each 2-byte integer defines the end offset of the variable length field&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Long Column Data&lt;/STRONG&gt;&lt;BR&gt;The long/variable length fields with the offsets defined in the offset array.&lt;/P&gt;
&lt;P&gt;Here’s an example in Internals Viewer:&lt;/P&gt;
&lt;P&gt;No compression:&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Row with no compression" style="WIDTH:436px;HEIGHT:302px;" height=302 alt="Row with no compression" src="http://www.sqlinternalsviewer.com/images/blog/blog_row_uncompressed.png" width=436 align=middle&gt;&lt;/P&gt;
&lt;P&gt;With compression:&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Row with compression" style="WIDTH:439px;HEIGHT:256px;" height=256 alt="Row with compression" src="http://www.sqlinternalsviewer.com/images/blog/blog_row_compressed.png" width=439 align=middle&gt;&lt;/P&gt;
&lt;P&gt;This only covers data records. I've still got to look into indexes and after that page compression (which when used also uses row compression). I'll also try to blog on how the data is actually stored and how to decode it.&lt;/P&gt;
&lt;P&gt;Hopefully everything will be covered in version 1.0 of SQL Internals Viewer.&lt;/P&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=7759" width="1" height="1"&gt;</description><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/Internals/default.aspx">Internals</category></item><item><title>Server Alert - Trial version available</title><link>http://sqlblogcasts.com/blogs/danny/archive/2008/02/09/server-alert-trial-version-available.aspx</link><pubDate>Sat, 09 Feb 2008 15:06:00 GMT</pubDate><guid isPermaLink="false">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:7009</guid><dc:creator>Danny</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sqlblogcasts.com/blogs/danny/rsscomments.aspx?PostID=7009</wfw:commentRss><comments>http://sqlblogcasts.com/blogs/danny/archive/2008/02/09/server-alert-trial-version-available.aspx#comments</comments><description>&lt;P&gt;There is now a trial version of Server Alert available from &lt;A href="http://www.internalexternal.com/ServerAlertTrial.aspx"&gt;http://www.internalexternal.com/ServerAlertTrial.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=7009" width="1" height="1"&gt;</description></item><item><title>New Product: Server Alert</title><link>http://sqlblogcasts.com/blogs/danny/archive/2008/02/05/new-product-server-alert.aspx</link><pubDate>Tue, 05 Feb 2008 20:48:00 GMT</pubDate><guid isPermaLink="false">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:6796</guid><dc:creator>Danny</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sqlblogcasts.com/blogs/danny/rsscomments.aspx?PostID=6796</wfw:commentRss><comments>http://sqlblogcasts.com/blogs/danny/archive/2008/02/05/new-product-server-alert.aspx#comments</comments><description>&lt;P&gt;I’m pleased to announce a new application called &lt;STRONG&gt;Server Alert&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;The application is a small add-in for SQL Server Management Studio that shows a coloured bar at the side of all query windows. The coloured bar indicates which server the window is connected to. Different servers can be assigned different colours.&lt;/P&gt;
&lt;P&gt;I’ve created this to make the current connection is a lot clearer. Although the server name is on the status bar at the bottom of a query it can be all too easy to execute a query on the wrong server, especially if multiple queries are open on different connections. Server Alert makes it a lot more apparent what the current connection is to avoid the heart-stopping “was that the right server?” moments!&lt;/P&gt;
&lt;P&gt;There is a small demo of it in action at the new website: &lt;A class="" href="http://www.internalexternal.com/serveralert.aspx"&gt;www.internalexternal.com\serveralert.aspx&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;It’s available through &lt;A href="http://www.internalexternal.com/"&gt;www.internalexternal.com&lt;/A&gt; for $16.&lt;/P&gt;
&lt;P&gt;For example you can colour code green for test or dev environments...&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Server Alert connected to Production server" style="WIDTH:316px;HEIGHT:130px;" height=130 alt="Server Alert connected to Production server" src="http://www.internalexternal.com/images/alert1.png" width=316 align=middle&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;...and red for production environments&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Server Alert connected to a test database" style="WIDTH:316px;HEIGHT:130px;" height=130 alt="Server Alert connected to a test database" src="http://www.internalexternal.com/images/alert2.png" width=316 align=middle&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=6796" width="1" height="1"&gt;</description><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/SSMS/default.aspx">SSMS</category><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Stored Procedure parameters</title><link>http://sqlblogcasts.com/blogs/danny/archive/2008/01/22/stored-proc-debugging-variables.aspx</link><pubDate>Tue, 22 Jan 2008 19:23:00 GMT</pubDate><guid isPermaLink="false">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:6332</guid><dc:creator>Danny</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sqlblogcasts.com/blogs/danny/rsscomments.aspx?PostID=6332</wfw:commentRss><comments>http://sqlblogcasts.com/blogs/danny/archive/2008/01/22/stored-proc-debugging-variables.aspx#comments</comments><description>&lt;P&gt;Here’s some more SQL that writes SQL. One way of debugging a stored procedure is to chop off the CREATE PROCEDURE at the top and replace it with DECLARE and SET statements for the variables, then step through the stored procedure.&lt;/P&gt;
&lt;P&gt;The following SQL gives an easy way of extracting the stored procedure parameters and creating variables based on the parameters, including the data type.&amp;nbsp; Just copy-paste the output into a query window.&lt;/P&gt;
&lt;P&gt;The variable initialization is output as template parameters so you can press &lt;STRONG&gt;Ctrl+Shift+M&lt;/STRONG&gt; and easily populate the variables using the Template Parameter window.&lt;/P&gt;
&lt;P&gt;The first version is a simple query, the second is a UDF that you can keep in the master database.&lt;/P&gt;
&lt;P&gt;Query version:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @StoredProcName &lt;SPAN style="COLOR:blue;"&gt;VARCHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;100&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SET&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @StoredProcName &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'(Stored Proc Name)'&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SELECT&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:red;"&gt;'DECLARE '&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;' '&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; t&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;CASE&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;WHEN&lt;/SPAN&gt; t&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;LIKE&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'%char%'&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;THEN&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'('&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; &lt;SPAN style="COLOR:fuchsia;"&gt;CONVERT&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;max_length&lt;SPAN style="COLOR:gray;"&gt;)&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;')'&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;ELSE&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;''&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;END&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;FROM&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;sys.parameters&lt;/SPAN&gt; c&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;INNER&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;JOIN&lt;/SPAN&gt; &lt;SPAN style="COLOR:green;"&gt;sys.types&lt;/SPAN&gt; t &lt;SPAN style="COLOR:blue;"&gt;ON&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;user_type_id &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; t&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;user_type_id &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;WHERE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;"&gt;object_id&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR:fuchsia;"&gt;OBJECT_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;@StoredProcName&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;UNION&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:gray;"&gt;ALL&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SELECT&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:red;"&gt;' '&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;UNION&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:gray;"&gt;ALL&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SELECT&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:red;"&gt;'SET '&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;' = &amp;lt;'&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;','&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; t&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;CASE&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;WHEN&lt;/SPAN&gt; t&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;LIKE&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'%char%'&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;THEN&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'('&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; &lt;SPAN style="COLOR:fuchsia;"&gt;CONVERT&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;max_length&lt;SPAN style="COLOR:gray;"&gt;)&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;')'&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;ELSE&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;''&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;END&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;',&amp;gt;'&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;FROM&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;sys.parameters&lt;/SPAN&gt; c&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;INNER&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;JOIN&lt;/SPAN&gt; &lt;SPAN style="COLOR:green;"&gt;sys.types&lt;/SPAN&gt; t &lt;SPAN style="COLOR:blue;"&gt;ON&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;user_type_id &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; t&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;user_type_id &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;WHERE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;"&gt;object_id&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR:fuchsia;"&gt;OBJECT_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;@StoredProcName&lt;SPAN style="COLOR:gray;"&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Example&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Output from &lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SET&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @StoredProcName &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'HumanResources.uspUpdateEmployeePersonalInfo' &lt;/SPAN&gt;&lt;/SPAN&gt;in the AdventureWorks db:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @EmployeeID &lt;SPAN style="COLOR:blue;"&gt;int&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @NationalIDNumber &lt;SPAN style="COLOR:blue;"&gt;nvarchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;30&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @BirthDate &lt;SPAN style="COLOR:blue;"&gt;datetime&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @MaritalStatus &lt;SPAN style="COLOR:blue;"&gt;nchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;2&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @Gender &lt;SPAN style="COLOR:blue;"&gt;nchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;2&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SET&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @EmployeeID &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;&amp;lt;&lt;/SPAN&gt;@EmployeeID&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SET&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @NationalIDNumber &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;&amp;lt;&lt;/SPAN&gt;@NationalIDNumber&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;nvarchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;30&lt;SPAN style="COLOR:gray;"&gt;),&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SET&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @BirthDate &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;&amp;lt;&lt;/SPAN&gt;@BirthDate&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;datetime&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SET&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @MaritalStatus &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;&amp;lt;&lt;/SPAN&gt;@MaritalStatus&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;nchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;2&lt;SPAN style="COLOR:gray;"&gt;),&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SET&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @Gender &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;&amp;lt;&lt;/SPAN&gt;@Gender&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;nchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;2&lt;SPAN style="COLOR:gray;"&gt;),&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;User-defined function version:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;CREATE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:blue;"&gt;FUNCTION&lt;/SPAN&gt; dbo&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;uFn_StoredProcVariables&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;@StoredProcName &lt;SPAN style="COLOR:blue;"&gt;SYSNAME&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;)&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;RETURNS&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;NVARCHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;"&gt;MAX&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;)&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;AS&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;DECLARE&lt;/SPAN&gt; @Declares &lt;SPAN style="COLOR:blue;"&gt;NVARCHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;"&gt;MAX&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;DECLARE&lt;/SPAN&gt; @Sets&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;NVARCHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;"&gt;MAX&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;SET&lt;/SPAN&gt; @Declares &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'DECLARE '&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;' '&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; t&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;CASE&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;WHEN&lt;/SPAN&gt; t&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;LIKE&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'%char%'&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;THEN&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'('&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;"&gt;CONVERT&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;max_length&lt;SPAN style="COLOR:gray;"&gt;)+&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')'&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;ELSE&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;''&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;END&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;CHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;10&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;FROM&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;sys.parameters&lt;/SPAN&gt; c&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;INNER&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;JOIN&lt;/SPAN&gt; &lt;SPAN style="COLOR:green;"&gt;sys.types&lt;/SPAN&gt; t &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;ON&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;user_type_id &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; t&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;user_type_id &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;WHERE&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;"&gt;object_id&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR:fuchsia;"&gt;OBJECT_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;@StoredProcName&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;FOR&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;XML&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;PATH&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;''&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;SET&lt;/SPAN&gt; @Sets &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'SET '&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;' = &amp;lt;'&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;','&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; t&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;CASE&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;WHEN&lt;/SPAN&gt; t&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;LIKE&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'%char%'&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;THEN&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'('&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; &lt;SPAN style="COLOR:fuchsia;"&gt;CONVERT&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;max_length&lt;SPAN style="COLOR:gray;"&gt;)&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;')'&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;ELSE&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;''&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;END&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;',&amp;gt;'&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;CHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;10&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;FROM&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;sys.parameters&lt;/SPAN&gt; c&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;INNER&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;JOIN&lt;/SPAN&gt; &lt;SPAN style="COLOR:green;"&gt;sys.types&lt;/SPAN&gt; t &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;ON&lt;/SPAN&gt; c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;user_type_id &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; t&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;user_type_id &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;WHERE&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;c&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;"&gt;object_id&lt;/SPAN&gt; &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR:fuchsia;"&gt;OBJECT_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;@StoredProcName&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;FOR&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;XML&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;PATH&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;''&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;RETURN&lt;/SPAN&gt; @Declares &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;CHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;10&lt;SPAN style="COLOR:gray;"&gt;)&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&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;&lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt; &lt;SPAN style="COLOR:fuchsia;"&gt;REPLACE&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;"&gt;REPLACE&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;@Sets&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'&amp;amp;gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'&amp;gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;),&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'&amp;amp;lt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;'&amp;lt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;)&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;END&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;&lt;STRONG&gt;Example&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;PRINT&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; dbo&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;uFn_StoredProcVariables&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'HumanResources.uspUpdateEmployeePersonalInfo'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=6332" width="1" height="1"&gt;</description><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/General/default.aspx">General</category></item><item><title>Scuffling with ‘String or binary data would be truncated’</title><link>http://sqlblogcasts.com/blogs/danny/archive/2008/01/12/scuffling-with-string-or-binary-data-would-be-truncated.aspx</link><pubDate>Sat, 12 Jan 2008 19:27:00 GMT</pubDate><guid isPermaLink="false">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:6178</guid><dc:creator>Danny</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sqlblogcasts.com/blogs/danny/rsscomments.aspx?PostID=6178</wfw:commentRss><comments>http://sqlblogcasts.com/blogs/danny/archive/2008/01/12/scuffling-with-string-or-binary-data-would-be-truncated.aspx#comments</comments><description>&lt;P&gt;The error ‘String or binary data would be truncated’ can be annoying.&amp;nbsp; It occurs when you try to insert or update a string or binary column with a value that is too large. Recently I was trying to INSERT from a SELECT from one table to another and I got this error. It can be a pain tracking down the cause, especially if there are a large number of columns or a large dataset involved.&lt;/P&gt;
&lt;P&gt;In the past I’ve written queries to give me the LEN for each column, but again if there are a large number of columns involved this can be very time consuming.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Below is a way of identifying which rows are causing the problem. This doesn’t help if you’ve got a large number of columns, as you still need to work out which field is causing the problem, but it will help if you have a large dataset and the problem rows are very sparse.&lt;/P&gt;
&lt;P&gt;For this example I’ll create a couple of tables and generate some data. The source table has a column of VARCHAR(50), whereas the destination has VARCHAR(25):&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;CREATE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:blue;"&gt;TABLE&lt;/SPAN&gt; SourceTable&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;RowId&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;INT&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt;Chars&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;INT&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt;String &lt;SPAN style="COLOR:blue;"&gt;VARCHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;50&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;CREATE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:blue;"&gt;TABLE&lt;/SPAN&gt; DestinationTable&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;RowId&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;INT&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt;Chars&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;INT&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt;String &lt;SPAN style="COLOR:blue;"&gt;VARCHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;25&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Next the tables are populated with a random number of ‘X’s, between 0 and 50. In theory you should get about 50% with a length above 25 characters and 50% below.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @i &lt;SPAN style="COLOR:blue;"&gt;INT&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @RandomNumber &lt;SPAN style="COLOR:blue;"&gt;INT&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SET&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @i&lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt;0&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;WHILE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; @i &lt;SPAN style="COLOR:gray;"&gt;&amp;lt;=&lt;/SPAN&gt; 50&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;BEGIN&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;SET&lt;/SPAN&gt; @RandomNumber &lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR:fuchsia;"&gt;ROUND&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;50 &lt;SPAN style="COLOR:gray;"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR:fuchsia;"&gt;RAND&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(),&lt;/SPAN&gt; 0&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;INTO&lt;/SPAN&gt; SourceTable&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;SELECT&lt;/SPAN&gt; @i&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt; @RandomNumber&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR:fuchsia;"&gt;REPLICATE&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'X'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt; @RandomNumber&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;SET&lt;/SPAN&gt; @i&lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt;@i&lt;SPAN style="COLOR:gray;"&gt;+&lt;/SPAN&gt;1&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;END&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;GO&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;/SPAN&gt;Next try inserting from SourceTable to DestinationTable:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;INSERT&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:blue;"&gt;INTO&lt;/SPAN&gt; DestinationTable&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SELECT&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:gray;"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;FROM&lt;/SPAN&gt; SourceTable&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;This results in the error:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;Msg 8152, Level 16, State 14, Line 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:red;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;String or binary data would be truncated.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:8pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;The statement has been terminated.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;It’s possible to ignore the 'String or binary data would be truncated' message by setting ANSI_WARNINGS to OFF. This will truncate fields where they don’t fit. ANSI_WARNINGS OFF has drawbacks and it is better to correct a problem rather than ignore it.&lt;/P&gt;
&lt;P&gt;The following can be used to work out which rows are causing the issue:&lt;/P&gt;
&lt;P&gt;1. Take a copy of the destination table:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SELECT&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:gray;"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;INTO&lt;/SPAN&gt; #Destination &lt;SPAN style="COLOR:blue;"&gt;FROM&lt;/SPAN&gt; DestinationTable &lt;SPAN style="COLOR:blue;"&gt;WHERE&lt;/SPAN&gt; 1&lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt;2&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;2. Set ANSI_WARNINGS OFF and perform the insert into the copy of the destination table, then set ANSI_WARNINGS ON again:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SET&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:blue;"&gt;ANSI_WARNINGS&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;OFF&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;INSERT&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:blue;"&gt;INTO&lt;/SPAN&gt; #Destination&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SELECT&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:gray;"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;FROM&lt;/SPAN&gt; SourceTable&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SET&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:blue;"&gt;ANSI_WARNINGS&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;ON&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;As ANSI_WARNINGS is off SQL Server truncates the fields rather than produces the warning.&lt;/P&gt;
&lt;P&gt;3. Next compare what you would like to insert against what was inserted with the ANSI_WARNINGS OFF truncating. By&amp;nbsp;using EXCEPT you only select the rows that don't match, and have therefore been truncated:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SELECT&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:gray;"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;FROM&lt;/SPAN&gt; SourceTable&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;EXCEPT&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SELECT&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt; &lt;SPAN style="COLOR:gray;"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;FROM&lt;/SPAN&gt; #Destination&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;The rows that have been truncated and are the cause of the ‘String or binary data would be truncated’ error.&lt;/P&gt;
&lt;P&gt;(Note - The use of EXCEPT limits this to 2005/2008. The finaly query could be re-written for SQL Server 2000 and below.)&lt;/P&gt;
&lt;P&gt;This isn’t the most elegant solution, and as I said if there were a large number of columns you’d still need to hunt through for the offender(s), but at least this gives an idea of where to look. I may have missed some glaringly obvious&amp;nbsp;solution to this problem, so&amp;nbsp;I’d be interested to know if anyone has any other ways of dealing&amp;nbsp;it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=6178" width="1" height="1"&gt;</description></item><item><title>SQL Internals Viewer on LearnSQLServer.com</title><link>http://sqlblogcasts.com/blogs/danny/archive/2008/01/12/sql-internals-viewer-on-learnsqlserver-com.aspx</link><pubDate>Sat, 12 Jan 2008 17:46:00 GMT</pubDate><guid isPermaLink="false">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:6177</guid><dc:creator>Danny</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sqlblogcasts.com/blogs/danny/rsscomments.aspx?PostID=6177</wfw:commentRss><comments>http://sqlblogcasts.com/blogs/danny/archive/2008/01/12/sql-internals-viewer-on-learnsqlserver-com.aspx#comments</comments><description>&lt;P&gt;Scott Whigham at &lt;A class="" title=LearnSQLServer.com href="http://www.learnsqlserver.com/" target=_blank&gt;LearnSQLServer.com&lt;/A&gt; has featured SQL Internals Viewer in a new series of video tutorials. The site has a whole range of video tutorials on SQL Server covering the basics right up to advanced topics.&lt;/P&gt;
&lt;P&gt;I've seen the videos and they are a good introduction to the app and what you can do with it.&lt;/P&gt;
&lt;P&gt;The videos are available &lt;A class="" title=here href="http://www.learnsqlserver.com/VideoTutorials/Sql-Server-Tutorials/285/A-Deeper-Look-at-Pages-and-Extents-Using-SQL-Internals.aspx"&gt;here&lt;/A&gt; (requires subscription).&lt;/P&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=6177" width="1" height="1"&gt;</description><category domain="http://sqlblogcasts.com/blogs/danny/archive/tags/General/default.aspx">General</category></item><item><title>SQL Server 2008 TIME data type</title><link>http://sqlblogcasts.com/blogs/danny/archive/2008/01/10/sql-server-2008-time-data-type.aspx</link><pubDate>Thu, 10 Jan 2008 19:34:00 GMT</pubDate><guid isPermaLink="false">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:6130</guid><dc:creator>Danny</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sqlblogcasts.com/blogs/danny/rsscomments.aspx?PostID=6130</wfw:commentRss><comments>http://sqlblogcasts.com/blogs/danny/archive/2008/01/10/sql-server-2008-time-data-type.aspx#comments</comments><description>&lt;P&gt;The new TIME type stores a time with a specified scale that defines the fractional second precision. &lt;/P&gt;
&lt;P&gt;The scale ranges from 0-7 representing 0-7 significant digits for the fractional seconds. The default precision is TIME(7), giving 7 significant digits, a range of .0000000 to .9999999.&lt;/P&gt;
&lt;P&gt;TIME is stored as an integer of various sizes, depending on the scale. For a scale of 0-2 it is stored as a 3 byte integer, 3-4 a 4 byte integer, and for scale 5-7 it is stored as a 5 byte integer.&lt;/P&gt;
&lt;P&gt;The scale is then used to calculate the time since midnight, with an accuracy ranging from 1 second to 100 nanoseconds. &lt;/P&gt;
&lt;P&gt;If t is the value stored in the time column and n is the scale the time from midnight in seconds can be calculated by t / 10&lt;SUP&gt;n&lt;/SUP&gt;.&lt;/P&gt;
&lt;P&gt;Here’s a summary of the storage and scaling (seconds, milliseconds, and nanoseconds are the respective duration t is multiplied by):&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class="" style="WIDTH:324pt;BORDER-COLLAPSE:collapse;" cellSpacing=0 cellPadding=0&gt;







&lt;TR style="HEIGHT:16.5pt;"&gt;
&lt;TD class=xl65 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;WIDTH:56pt;BORDER-BOTTOM:#d4d0c8;HEIGHT:16.5pt;BACKGROUND-COLOR:transparent;" height=22 class="xl65"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;STRONG&gt;&lt;FONT face=Verdana&gt;Scale&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl66 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;WIDTH:83pt;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl66"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;STRONG&gt;&lt;FONT face=Verdana&gt;Storage (bytes)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl66 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;WIDTH:53pt;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl66"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;STRONG&gt;&lt;FONT face=Verdana&gt;Seconds&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl66 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;WIDTH:64pt;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl66"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;STRONG&gt;&lt;FONT face=Verdana&gt;Milliseconds&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl66 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;WIDTH:68pt;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl66"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;STRONG&gt;&lt;FONT face=Verdana&gt;Nanoseconds&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:16.5pt;"&gt;
&lt;TD class=xl67 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;HEIGHT:16.5pt;BACKGROUND-COLOR:transparent;" height=22 class="xl67"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;TIME(0)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;3&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;1&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;1000&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;1000000000&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:16.5pt;"&gt;
&lt;TD class=xl67 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;HEIGHT:16.5pt;BACKGROUND-COLOR:transparent;" height=22 class="xl67"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;TIME(1)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;3&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;0.1&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;100&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;100000000&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:16.5pt;"&gt;
&lt;TD class=xl67 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;HEIGHT:16.5pt;BACKGROUND-COLOR:transparent;" height=22 class="xl67"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;TIME(2)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;3&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;0.01&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;10&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;10000000&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:16.5pt;"&gt;
&lt;TD class=xl67 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;HEIGHT:16.5pt;BACKGROUND-COLOR:transparent;" height=22 class="xl67"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;TIME(3)&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;4&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;0.001&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;1&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;1000000&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:16.5pt;"&gt;
&lt;TD class=xl67 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;HEIGHT:16.5pt;BACKGROUND-COLOR:transparent;" height=22 class="xl67"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;TIME(4)&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;4&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;0.0001&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;0.1&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;100000&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:16.5pt;"&gt;
&lt;TD class=xl67 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;HEIGHT:16.5pt;BACKGROUND-COLOR:transparent;" height=22 class="xl67"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;TIME(5)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;5&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;0.00001&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;0.01&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;10000&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD class=xl67 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;HEIGHT:15pt;BACKGROUND-COLOR:transparent;" height=20 class="xl67"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;TIME(6)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;5&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;0.000001&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;0.001&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;1000&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD class=xl67 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;HEIGHT:15pt;BACKGROUND-COLOR:transparent;" height=20 class="xl67"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;TIME(7)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;5&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;0.0000001&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;0.0001&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD class=xl68 style="BORDER-RIGHT:#d4d0c8;BORDER-TOP:#d4d0c8;BORDER-LEFT:#d4d0c8;BORDER-BOTTOM:#d4d0c8;BACKGROUND-COLOR:transparent;" class="xl68"&gt;&lt;SPAN style="mso-bidi-font-size:11pt;"&gt;&lt;FONT face=Verdana&gt;100&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;It’s possible to extract the unscaled value from a TIME value, although it requires a few steps.&lt;/P&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt; @Time &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;TIME&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;FONT color=#000000&gt;7&lt;/FONT&gt;&lt;/B&gt;&lt;SPAN style="COLOR:gray;"&gt;)&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:red;"&gt;'00:01:00'&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:green;"&gt;-- Format HH:mm:SS[.nnnnnnn]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt; @BinaryTime &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;VARBINARY&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;FONT color=#000000&gt;8&lt;/FONT&gt;&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:gray;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SET&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt; @BinaryTime &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;SUBSTRING&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;"&gt;CONVERT&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;VARBINARY&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;REVERSE&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;"&gt;CONVERT&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;VARBINARY&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt;&lt;FONT color=#000000&gt; @Time&lt;/FONT&gt;&lt;SPAN style="COLOR:gray;"&gt;))),&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/SPAN&gt;1&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:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;"&gt;DATALENGTH&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(@Time)&lt;/FONT&gt;&lt;SPAN style="COLOR:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:7;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:blue;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;SELECT&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:fuchsia;"&gt;CONVERT&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;BIGINT&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,&lt;/SPAN&gt;&lt;FONT color=#000000&gt; @BinaryTime&lt;/FONT&gt;&lt;SPAN style="COLOR:gray;"&gt;)&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:green;"&gt;-- Unscaled TIME value&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:green;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;-- Result: 600000000&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;LINE-HEIGHT:115%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;The above example gives a result of 600000000, which, looking at the scale makes sense. The scale is 7, so a time of 1 minute past midnight is 60 seconds = 600000000 / 10&lt;SUP&gt;7&lt;/SUP&gt;.&lt;/P&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;LINE-HEIGHT:normal;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:blue;FONT-FAMILY:'Courier New';mso-no-proof:yes;"&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-