<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6555218232752958602</id><updated>2012-01-06T08:25:58.142+01:00</updated><category term='C#'/><category term='Denali'/><category term='Data'/><category term='Architecture'/><category term='Aspose'/><category term='LinkedIn'/><category term='.NET General'/><category term='Sharepoint'/><category term='SQL Server'/><title type='text'>Jurgen's Blog</title><subtitle type='html'>&lt;b&gt;Jurgen Asselman&lt;/b&gt;&lt;br&gt;
SQL Server and .NET Consultant &lt;br&gt;
MCTS SQL Server 2008 - Implementation and Maintenance / Database Development&lt;br&gt;
MCITP SQL Server 2008 - Database Developer&lt;br&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-5413186202888446857</id><published>2011-12-23T10:11:00.002+01:00</published><updated>2011-12-23T10:11:43.939+01:00</updated><title type='text'>Merry x-mas and a happy new-year</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;I would like to wish you all the best for 2012!&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-GiOE_-e-H7k/TvRFcj8BweI/AAAAAAAAAY8/u-T9ubl4Gd0/s1600/untitled.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="284" rea="true" src="http://2.bp.blogspot.com/-GiOE_-e-H7k/TvRFcj8BweI/AAAAAAAAAY8/u-T9ubl4Gd0/s400/untitled.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-5413186202888446857?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/5413186202888446857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2011/12/merry-x-mas-and-happy-new-year.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/5413186202888446857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/5413186202888446857'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2011/12/merry-x-mas-and-happy-new-year.html' title='Merry x-mas and a happy new-year'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-GiOE_-e-H7k/TvRFcj8BweI/AAAAAAAAAY8/u-T9ubl4Gd0/s72-c/untitled.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-8752055499389261740</id><published>2011-11-04T14:59:00.001+01:00</published><updated>2011-11-04T15:19:25.643+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Denali'/><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>A view on storing file data in SQL Server</title><content type='html'>&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;Storing file data (BLOBs) (&lt;span class="SpellE"&gt;eg&lt;/span&gt;. &lt;span class="SpellE"&gt;pdf&lt;/span&gt;, word, excel ...)&amp;nbsp;in SQL server always has been some kind of dark magic to a lot of people. &lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;Before SQL Server 2008 we could store the BLOB data in VARBINARY(MAX) &lt;span class="SpellE"&gt;datatypes&lt;/span&gt;, in which you also had to convert the BLOB data into&amp;nbsp;the binary format yourself ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;With SQL 2008, the FILESTREAM &lt;span class="SpellE"&gt;datatype&lt;/span&gt; was introduced. FILESTREAM enables us to integrate SQL Server with the NTFS file system ...&amp;nbsp;BLOBs are stored as real files on the file system. &lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;More on FILESTREAM: &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933993.aspx"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;http://msdn.microsoft.com/en-us/library/bb933993.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: green; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;--Enable FILESTREAM&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;EXEC&lt;/span&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt; &lt;span style="color: maroon;"&gt;sp_filestream_configure&lt;/span&gt;&lt;span style="color: blue;"&gt; &lt;/span&gt;@enable_level &lt;span style="color: grey;"&gt;=&lt;/span&gt; 3&lt;span style="color: grey;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: grey; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: green; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;--CREATE THE TABLE&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;CREATE&lt;/span&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt; &lt;span style="color: blue;"&gt;TABLE&lt;/span&gt; TestFS &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB" style="color: grey; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;(&lt;/span&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&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; &lt;/span&gt;ID &lt;span style="color: blue;"&gt;INT&lt;/span&gt; &lt;span style="color: blue;"&gt;IDENTITY&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;1&lt;span style="color: grey;"&gt;,&lt;/span&gt;1&lt;span style="color: grey;"&gt;),&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&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; &lt;/span&gt;&lt;span style="color: blue;"&gt;FileName&lt;/span&gt; &lt;span style="color: blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;200&lt;span style="color: grey;"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&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; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes;"&gt;Content &lt;span style="color: blue;"&gt;VARBINARY&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: magenta;"&gt;MAX&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt; &lt;span style="color: blue;"&gt;FILESTREAM&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes;"&gt;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;As from the new version of SQL Server, SQL 2012 (aka 'Denali'), a new feature has been introduced ... FILETABLE, based on the existing FILESTREAM feature in SQL Server. In fact, the FILETABLE feature is nothing more than storing files in special &lt;span class="SpellE"&gt;filetables&lt;/span&gt; in SQL server, but you will be able to access them from the file system. It is said that FILETABLE will be the next generation of FILESTREAM ...&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;More on FILETABLE: &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff929144(v=sql.110).aspx"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;http://msdn.microsoft.com/en-us/library/ff929144(v=sql.110).aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="color: blue; font-size: 10pt; mso-ansi-language: EN-GB;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="color: blue; font-size: 10pt; mso-ansi-language: EN-GB;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: green; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;--Create the table&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;CREATE&lt;/span&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt; &lt;span style="color: blue;"&gt;TABLE&lt;/span&gt; DocumentStore &lt;span style="color: blue;"&gt;AS&lt;/span&gt; FILETABLE&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes;"&gt;WITH &lt;/span&gt;&lt;span style="color: grey; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes;"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; 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; &lt;/span&gt;FileTable_Directory &lt;span style="color: grey;"&gt;=&lt;/span&gt; &lt;span style="color: red;"&gt;'DocumentTable'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; 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; &lt;/span&gt;FileTable_Collate_Filename &lt;span style="color: grey;"&gt;=&lt;/span&gt; database_default&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; 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: grey;"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes;"&gt;GO&lt;/span&gt;&lt;span lang="EN-GB" style="color: blue; font-size: 10pt; mso-ansi-language: EN-GB;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB;"&gt;Have fun &lt;br /&gt;&lt;span class="SpellE"&gt;Jurgen&lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-8752055499389261740?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/8752055499389261740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2011/11/history-of-storing-file-data-in-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/8752055499389261740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/8752055499389261740'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2011/11/history-of-storing-file-data-in-sql.html' title='A view on storing file data in SQL Server'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-5503500948704698251</id><published>2011-09-15T09:20:00.000+02:00</published><updated>2011-09-15T10:52:28.549+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Denali'/><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server Denali - LAG and LEAD</title><content type='html'>&lt;br /&gt;&lt;style type="text/css"&gt;        .style1        {            color: black;        }    &lt;/style&gt;&lt;br /&gt;&lt;br /&gt;This is a short post on 2 new T-SQL features called LAG and LEAD, they are kind like Bonny &amp;amp; Clyde, they are mentioned in the same phrase...&lt;br /&gt;&lt;br /&gt;LAG and LEAD accesses the data from respectively the previous and the next row in a table without using self joins.&lt;br /&gt;&lt;br /&gt;Syntax: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="background-color: white; color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;LAG (scalar_expression [,offset] [,default])&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;OVER ( [ partition_by_clause ] order_by_clause )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;LEAD (scalar_expression [ ,offset ] , [ default ] ) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;OVER ( [ partition_by_clause ] )&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div class="WordSection1"&gt;&lt;div class="MsoNormal" style="border-bottom: #c0c0c0 1px solid; border-left: #c0c0c0 1px solid; border-right: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;USE&lt;/span&gt; &lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;span class="style1" lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;AdventureWorks2008R2&lt;/span&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;GO&lt;/span&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;SELECT &lt;/span&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;TerritoryName&lt;span style="color: grey;"&gt;,&lt;/span&gt; BusinessEntityID&lt;span style="color: grey;"&gt;,&lt;/span&gt; SalesYTD&lt;span style="color: grey;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; 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;LAG&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;SalesYTD&lt;span style="color: grey;"&gt;,&lt;/span&gt; 1&lt;span style="color: grey;"&gt;,&lt;/span&gt; 0&lt;span style="color: grey;"&gt;)&lt;/span&gt; &lt;span style="color: blue;"&gt;OVER &lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;PARTITION&lt;/span&gt; &lt;span style="color: blue;"&gt;BY&lt;/span&gt; TerritoryName &lt;span style="color: blue;"&gt;ORDER &lt;/span&gt;&lt;span style="color: blue;"&gt;BY&lt;/span&gt; SalesYTD &lt;span style="color: blue;"&gt;DESC&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt; &lt;span style="color: blue;"&gt;AS&lt;/span&gt; PrevRepSales&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;FROM&lt;/span&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt; Sales&lt;span style="color: grey;"&gt;.&lt;/span&gt;vSalesPerson&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;WHERE &lt;/span&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;TerritoryName &lt;span style="color: grey;"&gt;IN&lt;/span&gt;&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;N'Northwest'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt; &lt;span style="color: red;"&gt;N'Canada'&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;ORDER&lt;/span&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt; &lt;span style="color: blue;"&gt;BY&lt;/span&gt; TerritoryName&lt;span style="color: grey;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;SELECT &lt;/span&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;BusinessEntityID&lt;span style="color: grey;"&gt;,&lt;/span&gt; &lt;span style="color: magenta;"&gt;YEAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;QuotaDate&lt;span style="color: grey;"&gt;)&lt;/span&gt; &lt;span style="color: blue;"&gt;AS&lt;/span&gt; SalesYear&lt;span style="color: grey;"&gt;,&lt;/span&gt; &lt;span style="color: magenta;"&gt;MONTH&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;QuotaDate&lt;span style="color: grey;"&gt;)&lt;/span&gt; &lt;span style="color: blue;"&gt;AS&lt;/span&gt; SalesMonth&lt;span style="color: grey;"&gt;,&lt;/span&gt; SalesQuota &lt;span style="color: blue;"&gt;AS &lt;/span&gt;CurrentQuota&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;&lt;span style="mso-spacerun: yes;"&gt; &lt;/span&gt;LEAD&lt;span style="color: grey;"&gt;(&lt;/span&gt;SalesQuota&lt;span style="color: grey;"&gt;,&lt;/span&gt; 1&lt;span style="color: grey;"&gt;,&lt;/span&gt;0&lt;span style="color: grey;"&gt;)&lt;/span&gt; &lt;span style="color: blue;"&gt;OVER &lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;ORDER&lt;/span&gt; &lt;span style="color: blue;"&gt;BY&lt;/span&gt; &lt;span style="color: magenta;"&gt;YEAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;QuotaDate&lt;span style="color: grey;"&gt;),&lt;/span&gt; &lt;span style="color: magenta;"&gt;MONTH&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;QuotaDate&lt;span style="color: grey;"&gt;))&lt;/span&gt; &lt;span style="color: blue;"&gt;AS&lt;/span&gt; NextQuota&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;FROM&lt;/span&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt; Sales&lt;span style="color: grey;"&gt;.&lt;/span&gt;SalesPersonQuotaHistory&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-GB" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;WHERE &lt;/span&gt;&lt;span lang="EN-GB" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"&gt;BusinessEntityID &lt;span style="color: grey;"&gt;=&lt;/span&gt; 275 &lt;span style="color: grey;"&gt;and &lt;/span&gt;&lt;span style="color: magenta;"&gt;YEAR&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;QuotaDate&lt;span style="color: grey;"&gt;)&lt;/span&gt; &lt;span style="color: grey;"&gt;IN&lt;/span&gt;&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'2005'&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: red;"&gt;'2006'&lt;/span&gt;&lt;span style="color: grey;"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Have Fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-5503500948704698251?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/5503500948704698251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2011/09/sql-server-denali-lag-and-lead.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/5503500948704698251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/5503500948704698251'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2011/09/sql-server-denali-lag-and-lead.html' title='SQL Server Denali - LAG and LEAD'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-591748281679378570</id><published>2011-07-19T10:10:00.000+02:00</published><updated>2011-07-19T10:10:05.013+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Denali'/><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>New Date and Time functions in "Denali" CTP3</title><content type='html'>&lt;div&gt;I've been playing around with the CTP3 of Denali and stumbled upon some new functions...&lt;/div&gt;&lt;div&gt;The new functions are :&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;&lt;strong&gt;DATEFROMPARTS(@year, @month, @day)&lt;/strong&gt; &lt;/li&gt;&lt;ul&gt;&lt;li&gt;returns a DATE value&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;strong&gt;DATETIMEFROMPARTS(@year, @month, @day, @hour, @minute, @seconds, @milliseconds)&lt;/strong&gt;&amp;nbsp; &lt;/li&gt;&lt;ul&gt;&lt;li&gt;returns a DATETIME value&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&amp;nbsp;&lt;strong&gt;TIMEFROMPARTS(@hour, @minute, @seconds, @fractions, @precision)&lt;/strong&gt;&amp;nbsp; &lt;/li&gt;&lt;ul&gt;&lt;li&gt;returns a TIME value&lt;/li&gt;&lt;li&gt;where @fractions is an integer expression and @precision is an integer literal specifying the precision of the time value to be returned.)&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;@fractions depend on @precision eg if the precision is 7 then each fraction represents 100 nanoseconds.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;&lt;strong&gt;Remarks:&lt;/strong&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;If the arguments are invalid, then an error is raised&lt;/li&gt;&lt;li&gt;If any of the parameters are null, null is returned&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Some Examples:&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;SELECT&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: teal; font-family: Consolas;"&gt;&lt;span style="color: teal; font-family: Consolas;"&gt;&lt;span style="color: teal; font-family: Consolas;"&gt;DATEFROMPARTS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt;2011&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; 07&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; 20&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;AS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: red; font-family: Consolas;"&gt;&lt;span style="color: red; font-family: Consolas;"&gt;&lt;span style="color: red; font-family: Consolas;"&gt;'Todays Date'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;SELECT &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: teal; font-family: Consolas;"&gt;&lt;span style="color: teal; font-family: Consolas;"&gt;&lt;span style="color: teal; font-family: Consolas;"&gt;DATETIMEFROMPARTS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt;2011&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; 07&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; 20&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; 09&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; 51&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; 07&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; 321&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;AS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: red; font-family: Consolas;"&gt;&lt;span style="color: red; font-family: Consolas;"&gt;&lt;span style="color: red; font-family: Consolas;"&gt;'Todays Date and Time'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;SELECT&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: teal; font-family: Consolas;"&gt;&lt;span style="color: teal; font-family: Consolas;"&gt;&lt;span style="color: teal; font-family: Consolas;"&gt;TIMEFROMPARTS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt;09&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; 51&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; 07&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; 321 &lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; 3&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;&lt;span style="color: grey; font-family: Consolas;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;&lt;span style="color: blue; font-family: Consolas;"&gt;AS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: red; font-family: Consolas;"&gt;&lt;span style="color: red; font-family: Consolas;"&gt;&lt;span style="color: red; font-family: Consolas;"&gt;'Todays Time'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: red; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: red; font-family: Consolas; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;have fun,&lt;br /&gt;Jurgen&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-591748281679378570?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/591748281679378570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2011/07/new-date-and-time-functions-in-denali.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/591748281679378570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/591748281679378570'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2011/07/new-date-and-time-functions-in-denali.html' title='New Date and Time functions in &quot;Denali&quot; CTP3'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-4613660221173971712</id><published>2011-07-04T10:32:00.003+02:00</published><updated>2011-07-05T08:46:21.554+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LinkedIn'/><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>redgate's Sqlinthecity</title><content type='html'>On July 15th 2011 I will be attending the &lt;a href="http://sqlinthecity.red-gate.com/"&gt;SqlInTheCity&lt;/a&gt; event of Red-Gate.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://sqlinthecity.red-gate.com/"&gt;&lt;img border="0" height="320" i$="true" src="http://1.bp.blogspot.com/-KFXb6qvL4Os/ThF7prvuIvI/AAAAAAAAAXg/wB649f77AHk/s320/sqlinthecity.png" width="289" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-4613660221173971712?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/4613660221173971712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2011/07/sql-in-city.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/4613660221173971712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/4613660221173971712'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2011/07/sql-in-city.html' title='redgate&apos;s Sqlinthecity'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-KFXb6qvL4Os/ThF7prvuIvI/AAAAAAAAAXg/wB649f77AHk/s72-c/sqlinthecity.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-7224900863237507072</id><published>2011-05-09T12:52:00.000+02:00</published><updated>2011-05-09T12:52:26.444+02:00</updated><title type='text'>Stand out from the crowd with Microsoft technology</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.ordina.be/Evenementen/EventsDetails/tabid/156/EventId/129/language/nl-BE/Default.aspx"&gt;&lt;img border="0" height="160" j8="true" src="http://4.bp.blogspot.com/-e2CLiq-8AcA/TcfHO7r7YqI/AAAAAAAAAWo/bOGbcAuwQb0/s640/ordina.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-7224900863237507072?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/7224900863237507072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2011/05/stand-out-from-crowd-with-microsoft.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/7224900863237507072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/7224900863237507072'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2011/05/stand-out-from-crowd-with-microsoft.html' title='Stand out from the crowd with Microsoft technology'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-e2CLiq-8AcA/TcfHO7r7YqI/AAAAAAAAAWo/bOGbcAuwQb0/s72-c/ordina.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-3892052634235220576</id><published>2011-04-21T15:35:00.002+02:00</published><updated>2011-04-22T15:17:54.242+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Execute a stored procedure on SQLServer Startup</title><content type='html'>For a project we needed to run some T-SQL scripts when the SQL Express&amp;nbsp;Database Engines&amp;nbsp;on the client machines started (we need to have data available offline).&lt;br /&gt;To get the job done,&amp;nbsp; SQL Server has the possibility to execute a stored procedure at it's startup.&lt;br /&gt;&lt;br /&gt;For this you will need to execute:&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid black; color: black; overflow: auto; padding: 5px; width: 608px;"&gt;&lt;pre style="background: white; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;1:&lt;/span&gt; &lt;span style="color: maroon;"&gt;sp_procoption&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;@ProcName&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="style1"&gt; &lt;span style="color: red;"&gt;'stored procedure name'&lt;span&amp;#39;&lt;my procedure&amp;#39;&lt;span="" stored="" style="color: grey;"&gt;&lt;/span&amp;#39;&lt;my&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: aliceblue; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;2:&lt;/span&gt;               &lt;span style="color: teal;"&gt;@OptionName&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span&amp;#39;&lt;span style="color: grey;"&gt;&lt;span class="style1" style="color: red;"&gt;'startup'&lt;/span&gt;,&lt;/span&amp;#39;&lt;span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;3:&lt;/span&gt;               &lt;span style="color: teal;"&gt;@OptionValue&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;= &lt;/span&gt;&lt;/span&gt;&lt;span style="color: red;"&gt;&lt;span class="style2"&gt;'on'&lt;/span&gt;  &lt;/span&gt;&lt;span&amp;#39;&lt; pre=""&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;pre style="background: aliceblue; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;4:&lt;/span&gt; &lt;/pre&gt;&lt;/span&gt;&lt;/span&amp;#39;&lt;&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;To turn it off again:&amp;nbsp; &lt;br /&gt;&lt;div style="border: 1px solid black; color: black; overflow: auto; padding: 5px; width: 608px;"&gt;&lt;pre style="background: white; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;1:&lt;/span&gt; &lt;span style="color: maroon;"&gt;sp_procoption&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;@ProcName&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="style1"&gt; &lt;span style="color: red;"&gt;'stored procedure name'&lt;span&amp;#39;&lt;my procedure&amp;#39;&lt;span="" stored="" style="color: grey;"&gt;&lt;/span&amp;#39;&lt;my&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: aliceblue; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;2:&lt;/span&gt;               &lt;span style="color: teal;"&gt;@OptionName&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span&amp;#39;&lt;span style="color: grey;"&gt;&lt;span class="style1" style="color: red;"&gt;'startup'&lt;/span&gt;,&lt;/span&amp;#39;&lt;span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;3:&lt;/span&gt;               &lt;span style="color: teal;"&gt;@OptionValue&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;= &lt;/span&gt;&lt;/span&gt;&lt;span class="style2" style="color: red;"&gt;'off'&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span&amp;#39;&lt; pre=""&gt;&lt;br /&gt;&lt;pre style="background: aliceblue; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;4:&lt;/span&gt; &lt;/pre&gt;&lt;/span&amp;#39;&lt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;To see which procedures will be executed at startup:&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid black; color: black; height: 72px; overflow: auto; padding: 5px; width: 482px;"&gt;&lt;pre style="background: white; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;1:&lt;/span&gt; &lt;span style="color: blue;"&gt;SELECT&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;Name&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: aliceblue; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;2:&lt;/span&gt; &lt;span style="color: blue;"&gt;FROM&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: #6aa84f;"&gt;sysobjects&lt;/span&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: white; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;3:&lt;/span&gt; &lt;span style="color: blue;"&gt;WHERE&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: magenta;"&gt;objectproperty&lt;span style="color: grey;"&gt;(&lt;span style="color: teal;"&gt;id&lt;span style="color: grey;"&gt;,&lt;/span&gt; &lt;span style="color: red;"&gt;'ExecIsStartup'&lt;/span&gt; &lt;span&amp;#39;&lt;span style="color: grey;"&gt;)&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;  1&lt;/span&gt;&lt;/span&gt;&lt;/span&amp;#39;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: aliceblue; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;4:&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Have fun&lt;br /&gt;J.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-3892052634235220576?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/3892052634235220576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2011/04/execute-stored-procedure-on-sqlserver.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/3892052634235220576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/3892052634235220576'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2011/04/execute-stored-procedure-on-sqlserver.html' title='Execute a stored procedure on SQLServer Startup'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-8106575075876408467</id><published>2011-04-05T10:50:00.000+02:00</published><updated>2011-04-05T10:50:08.201+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server to Active Directory</title><content type='html'>A few days ago, I&amp;nbsp;needed to access the &lt;strong&gt;Active Directory &lt;/strong&gt;to get a list of users into&amp;nbsp;a database. When I was looking out for a solution I stumbled upon the following solution, which is pretty simple to use in SQL Server:&lt;br /&gt;&lt;br /&gt;1. Create a&amp;nbsp;linked server&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;EXEC&lt;/span&gt; &lt;/span&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;span style="color: blue; font-size: x-small;"&gt;master&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;dbo&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: maroon; font-size: x-small;"&gt;&lt;span style="color: maroon; font-size: x-small;"&gt;sp_addlinkedserver&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;span style="color: blue; font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;@server &lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;span style="color: red; font-size: x-small;"&gt;&lt;span style="color: red; font-size: x-small;"&gt;N'ADSI'&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; @srvproduct&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="color: red; font-size: x-small;"&gt;&lt;span style="color: red; font-size: x-small;"&gt;N'Active Directory Services 2.5'&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; @provider&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="color: red; font-size: x-small;"&gt;&lt;span style="color: red; font-size: x-small;"&gt;N'ADsDSOObject'&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; @datasrc&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="color: red; font-size: x-small;"&gt;&lt;span style="color: red; font-size: x-small;"&gt;N'adsdatasource'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-size: x-small;"&gt;&lt;span style="color: red; font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;EXEC&lt;/span&gt; &lt;/span&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;span style="color: blue; font-size: x-small;"&gt;master&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;dbo&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: maroon; font-size: x-small;"&gt;&lt;span style="color: maroon; font-size: x-small;"&gt;sp_addlinkedsrvlogin&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;span style="color: blue; font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;@rmtsrvname&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="color: red; font-size: x-small;"&gt;&lt;span style="color: red; font-size: x-small;"&gt;N'ADSI'&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;@useself&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="color: red; font-size: x-small;"&gt;&lt;span style="color: red; font-size: x-small;"&gt;N'True'&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; @locallogin&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;=NULL,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; @rmtuser&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;=NULL,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; @rmtpassword&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;=NULL&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;2. Query your active directory&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;span style="color: blue; font-size: x-small;"&gt;SELECT * FROM&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;    &lt;/span&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;span style="color: blue; font-size: x-small;"&gt;OPENQUERY &lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;ADSI&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;span style="color: red; font-size: x-small;"&gt;&lt;span style="color: red; font-size: x-small;"&gt;'SELECT userPrincipalName, displayName, distinguishedName,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-size: x-small;"&gt;&lt;span style="color: red; font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-size: x-small;"&gt;&lt;span style="color: red; font-size: x-small;"&gt;         sAMAccountName, mail, company, accountExpires, whenCreated&lt;br /&gt;&lt;br /&gt;FROM ''LDAP://&lt;active_directory_path&gt;/OU=myou,OU=myou2,OU=myou3,DC=myDC,DC=myDC2'' &lt;/active_directory_path&gt;&lt;br /&gt;&lt;br /&gt;WHERE objectCategory = ''Person'' AND objectClass = ''user''&lt;br /&gt;&lt;br /&gt;AND NOT accountExpires=0 &lt;br /&gt;&lt;br /&gt;AND NOT company = ''a company name''&lt;br /&gt;&lt;br /&gt;ORDER BY company'&lt;/span&gt;&lt;/span&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;span style="color: blue; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;span style="color: grey; font-size: x-small;"&gt;&lt;/span&gt;&lt;/span&gt;There is one drawback however,&amp;nbsp;by default you can only get the first&amp;nbsp;1000 records from your active directory, but no worries, there is a workaraound! Follow&lt;a href="http://blogs.msdn.com/b/ikovalenko/archive/2007/03/22/how-to-avoid-1000-rows-limitation-when-querying-active-directory-ad-from-sql-2005-with-using-custom-code.aspx"&gt; this link&lt;/a&gt; to see the solution&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-8106575075876408467?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/8106575075876408467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2011/04/sql-server-to-active-directory.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/8106575075876408467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/8106575075876408467'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2011/04/sql-server-to-active-directory.html' title='SQL Server to Active Directory'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-3564550025794128241</id><published>2011-01-30T09:17:00.000+01:00</published><updated>2011-01-30T09:17:37.662+01:00</updated><title type='text'>Microsoft recognized by Gartner as a Leader in Business IntelligenceMicrosoft recognized by Gartner as a Leader in Business Intelligence</title><content type='html'>Microsoft recognized by Gartner as a Leader in Business Intelligence based on “Ability to Execute” and “Completion of Vision”&lt;br /&gt;&lt;br /&gt;Read more on the blog of &lt;a href="http://blogs.msdn.com/b/microsoft_business_intelligence1/archive/2011/01/29/microsoft-recognized-by-gartner-as-a-leader-in-business-intelligence-based-on-ability-to-execute-and-completion-of-vision.aspx"&gt;Micorsoft Business Intelligence&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-3564550025794128241?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/3564550025794128241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2011/01/microsoft-recognized-by-gartner-as.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/3564550025794128241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/3564550025794128241'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2011/01/microsoft-recognized-by-gartner-as.html' title='Microsoft recognized by Gartner as a Leader in Business IntelligenceMicrosoft recognized by Gartner as a Leader in Business Intelligence'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-3403450357901047498</id><published>2011-01-26T10:31:00.001+01:00</published><updated>2011-01-26T10:32:07.587+01:00</updated><title type='text'>Ontdek Vlaanderen's bekendste kantoor...</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.ordinawerkenplusfun.be/"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_JHhCVKhUsXk/TT_ptz2HTjI/AAAAAAAAAU0/7gu6xIY7gKo/s1600/OrdinaRecruitBanner.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-3403450357901047498?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/3403450357901047498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2011/01/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/3403450357901047498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/3403450357901047498'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2011/01/blog-post.html' title='Ontdek Vlaanderen&apos;s bekendste kantoor...'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_JHhCVKhUsXk/TT_ptz2HTjI/AAAAAAAAAU0/7gu6xIY7gKo/s72-c/OrdinaRecruitBanner.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-8890403894806473103</id><published>2011-01-21T16:26:00.003+01:00</published><updated>2011-01-27T11:13:55.302+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET General'/><title type='text'>Print Xaml in background - Part2 - the PrintTicket</title><content type='html'>Following my &lt;a href="http://jurgenasselman.blogspot.com/2011/01/print-xaml-in-background.html"&gt;previous post on Printing Xaml code to XPS&lt;/a&gt;, here's the second part.&lt;br /&gt;In this part, I explain how to attach &lt;b style="color: #073763;"&gt;"Page Settings"&lt;/b&gt;&amp;nbsp;to the XpsDocument. This can be done by using the&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: consolas; white-space: pre;"&gt;System.Printing.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: consolas; white-space: pre;"&gt;&lt;span style="color: #2b91af;"&gt;PrintTicket &lt;/span&gt;&lt;/span&gt;in your code.&lt;br /&gt;&lt;br /&gt;In my example, I print to A3, landscape.&lt;br /&gt;&lt;br /&gt;Define the printticket&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid black; color: black; overflow: auto; padding: 5px; width: 80%;"&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;1:&lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;static&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: #2b91af;"&gt;PrintTicket&lt;/span&gt;&lt;span style="color: black;"&gt;  pt = &lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: #2b91af;"&gt;PrintTicket&lt;/span&gt;&lt;span style="color: black;"&gt; ();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Fill it with the necessary data:&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid black; color: black; overflow: auto; padding: 5px; width: 80%;"&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;1:&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;PrintQueue&lt;/span&gt;&lt;span style="color: black;"&gt;  pq = &lt;span style="color: #2b91af;"&gt;LocalPrintServer&lt;/span&gt;&lt;span style="color: black;"&gt; .GetDefaultPrintQueue();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;2:&lt;/span&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;3:&lt;/span&gt;pt = &lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt;  System.Printing.&lt;span style="color: #2b91af;"&gt;PrintTicket&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;4:&lt;/span&gt;             &lt;span style="color: black;"&gt;{&lt;/span&gt;   &lt;span style="color: #2b91af;"&gt;OutputColor&lt;/span&gt;&lt;span style="color: black;"&gt;  = &lt;span style="color: #2b91af;"&gt;OutputColor&lt;/span&gt;&lt;span style="color: black;"&gt; .Color,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;5:&lt;/span&gt;                 &lt;span style="color: #2b91af;"&gt;PageMediaType&lt;/span&gt;&lt;span style="color: black;"&gt;  = &lt;span style="color: #2b91af;"&gt;PageMediaType&lt;/span&gt;&lt;span style="color: black;"&gt; .Plain,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;6:&lt;/span&gt;                 &lt;span style="color: #2b91af;"&gt;PageOrientation&lt;/span&gt;&lt;span style="color: black;"&gt;  = &lt;span style="color: #2b91af;"&gt;PageOrientation&lt;/span&gt;&lt;span style="color: black;"&gt; .Landscape,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;7:&lt;/span&gt;                 &lt;span style="color: #2b91af;"&gt;PageMediaSize&lt;/span&gt;&lt;span style="color: black;"&gt;  = &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: black;"&gt;PageMediaSize(&lt;span style="color: #2b91af;"&gt;PageMediaSizeName&lt;/span&gt;&lt;span style="color: black;"&gt; .ISOA3),&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;8:&lt;/span&gt;                 &lt;span style="color: #2b91af;"&gt;PageBorderless&lt;/span&gt;&lt;span style="color: black;"&gt;  = &lt;span style="color: #2b91af;"&gt;PageBorderless&lt;/span&gt;&lt;span style="color: black;"&gt; .Borderless&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;9:&lt;/span&gt;             &lt;span style="color: black;"&gt;}&lt;/span&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;10:&lt;/span&gt;System.Printing.ValidationResult result = &lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black;"&gt;pq.MergeAndValidatePrintTicket(pq.UserPrintTicket, pt);&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Code the printing itself:&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid black; color: black; overflow: auto; padding: 5px; width: 80%;"&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;1:&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;XpsDocument&lt;/span&gt;&lt;span style="color: black;"&gt;  document =&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;2:&lt;/span&gt;         &lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: #2b91af;"&gt;XpsDocument&lt;/span&gt;&lt;span style="color: black;"&gt; (path + &lt;span style="color: #a31515;"&gt;@"\\sample.xps"&lt;/span&gt;&lt;span style="color: black;"&gt; , System.IO.&lt;span style="color: #2b91af;"&gt;FileAccess&lt;/span&gt;&lt;span style="color: black;"&gt; .Write);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;3:&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;XpsDocumentWriter&lt;/span&gt;&lt;span style="color: black;"&gt;  writer =&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;4:&lt;/span&gt;     &lt;span style="color: #2b91af;"&gt;XpsDocument&lt;/span&gt;&lt;span style="color: black;"&gt; .CreateXpsDocumentWriter(document);&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;5:&lt;/span&gt; writer.WritingPrintTicketRequired +=&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;6:&lt;/span&gt;         &lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: #2b91af;"&gt;WritingPrintTicketRequiredEventHandler&lt;/span&gt;&lt;span style="color: black;"&gt; (writer_WritingPrintTicketRequired);&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;7:&lt;/span&gt; writer.Write(myfixedDocumentToPrint, pt);&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;And finally the&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;writer_WritingPrintTicketRequired&lt;/span&gt;&amp;nbsp;function&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid black; color: black; overflow: auto; padding: 5px; width: 80%;"&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;1:&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;void&lt;/span&gt;&lt;span style="color: black;"&gt;  writer_WritingPrintTicketRequired(&lt;span style="color: blue;"&gt;object&lt;/span&gt;&lt;span style="color: black;"&gt;  sender, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;2:&lt;/span&gt;                         &lt;span style="color: #2b91af;"&gt;WritingPrintTicketRequiredEventArgs&lt;/span&gt;&lt;span style="color: black;"&gt;  e)&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;3:&lt;/span&gt; &lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;4:&lt;/span&gt;     e.CurrentPrintTicket = pt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;5:&lt;/span&gt; &lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Have fun...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-8890403894806473103?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/8890403894806473103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2011/01/print-xaml-in-background-part2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/8890403894806473103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/8890403894806473103'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2011/01/print-xaml-in-background-part2.html' title='Print Xaml in background - Part2 - the PrintTicket'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-4834219891918704733</id><published>2011-01-14T16:00:00.001+01:00</published><updated>2011-01-14T16:02:15.136+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET General'/><title type='text'>Print Xaml in background</title><content type='html'>Printing Xaml (WPF) files in background? &amp;nbsp;Is it possible? Yes, and it's easy!&lt;br /&gt;&lt;div&gt;The following code example will show you how.&lt;/div&gt;&lt;div&gt;Step 1: Create a console application&lt;/div&gt;&lt;div&gt;Step 2: Add references to&amp;nbsp;ReachFramework.dll and WindowsBase.dll&lt;/div&gt;&lt;div&gt;Step 3: Create a xaml usercontrol&lt;/div&gt;&lt;div&gt;Step 4 Create your code in you main function&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Xaml user Control example:&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid black; color: black; overflow: auto; padding: 5px; width: 80%;"&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;1:&lt;/span&gt; &lt;span style="color: blue;"&gt;&amp;lt;&lt;span style="color: #a31515;"&gt;Border&lt;span style="color: red;"&gt; BorderThickness&lt;span style="color: blue;"&gt;="1"&lt;span style="color: red;"&gt; Height&lt;span style="color: blue;"&gt;="57"&lt;span style="color: red;"&gt; Margin&lt;span style="color: blue;"&gt;="12,37,267,0"&lt;span style="color: red;"&gt; Name&lt;span style="color: blue;"&gt;="border1"&lt;span style="color: red;"&gt; VerticalAlignment&lt;span style="color: blue;"&gt;="Top"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;2:&lt;/span&gt; &lt;span style="color: #a31515;"&gt;    &lt;span style="color: blue;"&gt;&amp;lt;&lt;span style="color: #a31515;"&gt;Border.BorderBrush&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;3:&lt;/span&gt; &lt;span style="color: #a31515;"&gt;        &lt;span style="color: blue;"&gt;&amp;lt;&lt;span style="color: #a31515;"&gt;LinearGradientBrush&lt;span style="color: red;"&gt; EndPoint&lt;span style="color: blue;"&gt;="1,0.5"&lt;span style="color: red;"&gt; StartPoint&lt;span style="color: blue;"&gt;="0,0.5"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;4:&lt;/span&gt; &lt;span style="color: #a31515;"&gt;            &lt;span style="color: blue;"&gt;&amp;lt;&lt;span style="color: #a31515;"&gt;GradientStop&lt;span style="color: red;"&gt; Color&lt;span style="color: blue;"&gt;="#FFF10202"&lt;span style="color: red;"&gt; Offset&lt;span style="color: blue;"&gt;="0" /&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;5:&lt;/span&gt; &lt;span style="color: #a31515;"&gt;            &lt;span style="color: blue;"&gt;&amp;lt;&lt;span style="color: #a31515;"&gt;GradientStop&lt;span style="color: red;"&gt; Color&lt;span style="color: blue;"&gt;="#FF0CDEED"&lt;span style="color: red;"&gt; Offset&lt;span style="color: blue;"&gt;="1" /&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;6:&lt;/span&gt; &lt;span style="color: #a31515;"&gt;        &lt;span style="color: blue;"&gt;LinearGradientBrush&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;7:&lt;/span&gt; &lt;span style="color: #a31515;"&gt;    &lt;span style="color: blue;"&gt;Border.BorderBrush&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;8:&lt;/span&gt; &lt;span style="color: #a31515;"&gt;    &lt;span style="color: blue;"&gt;&amp;lt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;span style="color: red;"&gt; Orientation&lt;span style="color: blue;"&gt;="Vertical"&lt;span style="color: red;"&gt; HorizontalAlignment&lt;span style="color: blue;"&gt;="Stretch"&lt;span style="color: red;"&gt; VerticalAlignment&lt;span style="color: blue;"&gt;="Center"&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;9:&lt;/span&gt; &lt;span style="color: #a31515;"&gt;        &lt;span style="color: blue;"&gt;&amp;lt;&lt;span style="color: #a31515;"&gt;CheckBox&lt;span style="color: red;"&gt; Content&lt;span style="color: blue;"&gt;="Test checkbox 1"&lt;span style="color: red;"&gt; Height&lt;span style="color: blue;"&gt;="16"&lt;span style="color: red;"&gt; Name&lt;span style="color: blue;"&gt;="checkBox1"&lt;span style="color: red;"&gt; Margin&lt;span style="color: blue;"&gt;="5,0"&lt;span style="color: red;"&gt; BorderThickness&lt;span style="color: blue;"&gt;="0"&lt;span style="color: red;"&gt; BorderBrush&lt;span style="color: blue;"&gt;="&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;x&lt;span style="color: blue;"&gt;:&lt;span style="color: #a31515;"&gt;Null&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;" /&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;10:&lt;/span&gt; &lt;span style="color: #a31515;"&gt;        &lt;span style="color: blue;"&gt;&amp;lt;&lt;span style="color: #a31515;"&gt;CheckBox&lt;span style="color: red;"&gt; Content&lt;span style="color: blue;"&gt;="Test checkbox 2"&lt;span style="color: red;"&gt; Height&lt;span style="color: blue;"&gt;="16"&lt;span style="color: red;"&gt; Name&lt;span style="color: blue;"&gt;="checkBox2"&lt;span style="color: red;"&gt; Margin&lt;span style="color: blue;"&gt;="5,0"&lt;span style="color: red;"&gt; IsChecked&lt;span style="color: blue;"&gt;="True"&lt;span style="color: red;"&gt; BorderThickness&lt;span style="color: blue;"&gt;="0"&lt;span style="color: red;"&gt; BorderBrush&lt;span style="color: blue;"&gt;="&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;x&lt;span style="color: blue;"&gt;:&lt;span style="color: #a31515;"&gt;Null&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;" /&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;11:&lt;/span&gt; &lt;span style="color: #a31515;"&gt;    &lt;span style="color: blue;"&gt;StackPanel&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;12:&lt;/span&gt; &lt;span style="color: blue;"&gt;Border&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;13:&lt;/span&gt; &lt;span style="color: blue;"&gt;&amp;lt;&lt;span style="color: #a31515;"&gt;Label&lt;span style="color: red;"&gt; Content&lt;span style="color: blue;"&gt;="This is a test of printing to an XPS Document"&lt;span style="color: red;"&gt; Height&lt;span style="color: blue;"&gt;="28"&lt;span style="color: red;"&gt; HorizontalAlignment&lt;span style="color: blue;"&gt;="Left"&lt;span style="color: red;"&gt; Margin&lt;span style="color: blue;"&gt;="12,1,0,0"&lt;span style="color: red;"&gt; Name&lt;span style="color: blue;"&gt;="label1"&lt;span style="color: red;"&gt; VerticalAlignment&lt;span style="color: blue;"&gt;="Top"&lt;span style="color: red;"&gt; Width&lt;span style="color: blue;"&gt;="479"&lt;span style="color: red;"&gt; FontWeight&lt;span style="color: blue;"&gt;="Black"&lt;span style="color: red;"&gt; Foreground&lt;span style="color: blue;"&gt;="#FF0000E1" /&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;14:&lt;/span&gt; &lt;span style="color: blue;"&gt;&amp;lt;&lt;span style="color: #a31515;"&gt;Image&lt;span style="color: red;"&gt; Height&lt;span style="color: blue;"&gt;="200"&lt;span style="color: red;"&gt; HorizontalAlignment&lt;span style="color: blue;"&gt;="Left"&lt;span style="color: red;"&gt; Margin&lt;span style="color: blue;"&gt;="244,76,0,0"&lt;span style="color: red;"&gt; Name&lt;span style="color: blue;"&gt;="image1"&lt;span style="color: red;"&gt; Stretch&lt;span style="color: blue;"&gt;="Fill"&lt;span style="color: red;"&gt; VerticalAlignment&lt;span style="color: blue;"&gt;="Top"&lt;span style="color: red;"&gt; Width&lt;span style="color: blue;"&gt;="247"&lt;span style="color: red;"&gt; Source&lt;span style="color: blue;"&gt;="/WpfApplication;component/Images/Penguins.jpg" /&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;15:&lt;/span&gt; &lt;span style="color: blue;"&gt;&amp;lt;&lt;span style="color: #a31515;"&gt;TextBox&lt;span style="color: red;"&gt; Height&lt;span style="color: blue;"&gt;="200"&lt;span style="color: red;"&gt; HorizontalAlignment&lt;span style="color: blue;"&gt;="Left"&lt;span style="color: red;"&gt; Margin&lt;span style="color: blue;"&gt;="12,99,0,0"&lt;span style="color: red;"&gt; Name&lt;span style="color: blue;"&gt;="textBox1"&lt;span style="color: red;"&gt; VerticalAlignment&lt;span style="color: blue;"&gt;="Top"&lt;span style="color: red;"&gt; Width&lt;span style="color: blue;"&gt;="224"&lt;span style="color: red;"&gt; Text&lt;span style="color: blue;"&gt;="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."&lt;span style="color: red;"&gt; TextWrapping&lt;span style="color: blue;"&gt;="Wrap"&lt;span style="color: red;"&gt; BorderBrush&lt;span style="color: blue;"&gt;="&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;x&lt;span style="color: blue;"&gt;:&lt;span style="color: #a31515;"&gt;Null&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;" /&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;16:&lt;/span&gt; &lt;span style="color: blue;"&gt;&amp;lt;&lt;span style="color: #a31515;"&gt;Rectangle&lt;span style="color: red;"&gt; Height&lt;span style="color: blue;"&gt;="1"&lt;span style="color: red;"&gt; HorizontalAlignment&lt;span style="color: blue;"&gt;="Left"&lt;span style="color: red;"&gt; Margin&lt;span style="color: blue;"&gt;="5,30,0,0"&lt;span style="color: red;"&gt; Name&lt;span style="color: blue;"&gt;="rectangle1"&lt;span style="color: red;"&gt; Stroke&lt;span style="color: blue;"&gt;="Black"&lt;span style="color: red;"&gt; VerticalAlignment&lt;span style="color: blue;"&gt;="Top"&lt;span style="color: red;"&gt; Width&lt;span style="color: blue;"&gt;="485" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;17:&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Main fucnction code:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid black; color: black; overflow: auto; padding: 5px; width: 80%;"&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;1:&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;FixedDocument&lt;/span&gt;&lt;span style="color: black;"&gt;  myfixedDocumentToPrint = &lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: #2b91af;"&gt;FixedDocument&lt;/span&gt;&lt;span style="color: black;"&gt; ();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;2:&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;FixedPage&lt;/span&gt;&lt;span style="color: black;"&gt;  myPageToPrint = &lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: #2b91af;"&gt;FixedPage&lt;/span&gt;&lt;span style="color: black;"&gt; ();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;3:&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PageContent&lt;/span&gt;&lt;span style="color: black;"&gt;  pc = &lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: #2b91af;"&gt;PageContent&lt;/span&gt;&lt;span style="color: black;"&gt; ();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;4:&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PrintPage&lt;/span&gt;&lt;span style="color: black;"&gt;  printpageXaml = &lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: #2b91af;"&gt;PrintPage&lt;/span&gt;&lt;span style="color: black;"&gt; ();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;5:&lt;/span&gt; &lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;6:&lt;/span&gt; myPageToPrint.SnapsToDevicePixels = &lt;span style="color: blue;"&gt;true&lt;/span&gt;&lt;span style="color: black;"&gt; ;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;7:&lt;/span&gt; myPageToPrint.VerticalAlignment = &lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;8:&lt;/span&gt;     System.Windows.&lt;span style="color: #2b91af;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: black;"&gt; .Stretch;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;9:&lt;/span&gt; myPageToPrint.HorizontalAlignment = &lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;10:&lt;/span&gt;     System.Windows.&lt;span style="color: #2b91af;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: black;"&gt; .Stretch;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;11:&lt;/span&gt; myPageToPrint.Height = 11.69 * 96;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;12:&lt;/span&gt; myPageToPrint.Width = 8.27 * 96;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;13:&lt;/span&gt; &lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;14:&lt;/span&gt; myPageToPrint.Children.Add(printpageXaml);&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;15:&lt;/span&gt; ((&lt;span style="color: #2b91af;"&gt;IAddChild&lt;/span&gt;&lt;span style="color: black;"&gt; )pc).AddChild(myPageToPrint);&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;16:&lt;/span&gt; myfixedDocumentToPrint.Pages.Add(pc);&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;17:&lt;/span&gt; &lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;18:&lt;/span&gt; &lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: black;"&gt;  assembly = System.Reflection.&lt;span style="color: #2b91af;"&gt;Assembly&lt;/span&gt;&lt;span style="color: black;"&gt; .GetExecutingAssembly();&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;19:&lt;/span&gt; &lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;span style="color: black;"&gt;  path = assembly.Location.Replace(assembly.ManifestModule.Name, &lt;span style="color: #a31515;"&gt;""&lt;/span&gt;&lt;span style="color: black;"&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;20:&lt;/span&gt; &lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;21:&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;XpsDocument&lt;/span&gt;&lt;span style="color: black;"&gt;  document = &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;22:&lt;/span&gt;     &lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: #2b91af;"&gt;XpsDocument&lt;/span&gt;&lt;span style="color: black;"&gt; ( path + &lt;span style="color: #a31515;"&gt;@"\\sample.xps"&lt;/span&gt;&lt;span style="color: black;"&gt; , System.IO.&lt;span style="color: #2b91af;"&gt;FileAccess&lt;/span&gt;&lt;span style="color: black;"&gt; .Write);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;23:&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;XpsDocumentWriter&lt;/span&gt;&lt;span style="color: black;"&gt;  writer = &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;24:&lt;/span&gt;     &lt;span style="color: #2b91af;"&gt;XpsDocument&lt;/span&gt;&lt;span style="color: black;"&gt; .CreateXpsDocumentWriter(document);&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;25:&lt;/span&gt; writer.Write(myfixedDocumentToPrint);&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;26:&lt;/span&gt; writer = &lt;span style="color: blue;"&gt;null&lt;/span&gt;&lt;span style="color: black;"&gt; ;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: White; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;27:&lt;/span&gt; document.Close();&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;28:&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;Important remark: you function has to be STAThread.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;You see, nothing difficult about this one ... have fun.&lt;/div&gt;&lt;div&gt;J.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-4834219891918704733?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/4834219891918704733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2011/01/print-xaml-in-background.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/4834219891918704733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/4834219891918704733'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2011/01/print-xaml-in-background.html' title='Print Xaml in background'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-4612303094111822819</id><published>2010-11-24T09:46:00.010+01:00</published><updated>2010-12-15T13:56:19.691+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Writing a recursive query using Common Table Expressions</title><content type='html'>&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;In our following example, 2 tables are linked to each other.&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;The product table is linked to the category table. In the category table, categories can have several levels of parent-child relations. &lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;For examaple:&lt;br /&gt;The category table can contain:&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;strong&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Food -&amp;gt; Beverages -&amp;gt; Beer&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;strong&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OR&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;strong&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Food -&amp;gt; Beverages -&amp;gt; Sodas -&amp;gt; Cola&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;The Product table however can contain:&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="color: blue;"&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Duvel -&amp;gt; Beer&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;How to get the products and their corresponding category fast, by defining the root category as a parameter?&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;You can do this with a recursive query using CTE (common table expresssions)&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Our category table and product table:&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/_JHhCVKhUsXk/TOzQOBK-JSI/AAAAAAAAASo/_OiSrHrKdac/s1600/category.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="104" ox="true" src="http://1.bp.blogspot.com/_JHhCVKhUsXk/TOzQOBK-JSI/AAAAAAAAASo/_OiSrHrKdac/s200/category.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://3.bp.blogspot.com/_JHhCVKhUsXk/TOzQPal3A_I/AAAAAAAAASs/Mbiw2oQOFvA/s1600/products.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" ox="true" src="http://3.bp.blogspot.com/_JHhCVKhUsXk/TOzQPal3A_I/AAAAAAAAASs/Mbiw2oQOFvA/s200/products.png" width="178" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;The common table expression which will return all items for category 'Food'&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: black 1px solid; border-left: black 1px solid; border-right: black 1px solid; border-top: black 1px solid; color: black; font-family: Candara; height: 223px; overflow: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 607px;"&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;1:&lt;/span&gt; &lt;span style="color: blue;"&gt;WITH&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;RecursiveQuery&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;AS&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="background: #f4f4f4; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;2:&lt;/span&gt; &lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;3:&lt;/span&gt;  &lt;span style="color: blue;"&gt;SELECT&lt;/span&gt;&lt;span style="color: black;"&gt;   &lt;span style="color: teal;"&gt;c1&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;ID&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;c1&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;Category&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: magenta;"&gt;CAST&lt;span style="color: grey;"&gt;(&lt;span&amp;#39;&lt; span=""&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;AS&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;NVARCHAR&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt; 50&lt;span style="color: grey;"&gt;))&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;AS&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;Parent&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;  0 &lt;span style="color: blue;"&gt;AS&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;Level&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;c1&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;ParentCategory&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: #f4f4f4; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;4:&lt;/span&gt;  &lt;span style="color: blue;"&gt;FROM&lt;/span&gt;&lt;span style="color: black;"&gt;     &lt;span style="color: teal;"&gt;Category&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;c1&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;5:&lt;/span&gt;  &lt;span style="color: blue;"&gt;WHERE&lt;/span&gt;&lt;span style="color: black;"&gt;    &lt;span style="color: teal;"&gt;c1&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;ParentCategory&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;IS&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;NULL&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: #f4f4f4; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;6:&lt;/span&gt;   &lt;span style="color: grey;"&gt;AND&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;c1&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;Category&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span&amp;#39;&lt; span=""&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;7:&lt;/span&gt;  &lt;span style="color: blue;"&gt;UNION&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;ALL&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: #f4f4f4; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;8:&lt;/span&gt;  &lt;span style="color: blue;"&gt;SELECT&lt;/span&gt;&lt;span style="color: black;"&gt;   &lt;span style="color: teal;"&gt;c2&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;ID&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;c2&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;Category&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;RecursiveQuery&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;Category&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;AS&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;Parent&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;Level&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;+&lt;/span&gt;&lt;span style="color: black;"&gt;  1 &lt;span style="color: blue;"&gt;AS&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;Level&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;c2&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;ParentCategory&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;9:&lt;/span&gt;  &lt;span style="color: blue;"&gt;FROM&lt;/span&gt;&lt;span style="color: black;"&gt;     &lt;span style="color: teal;"&gt;Category&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;c2&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: #f4f4f4; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;10:&lt;/span&gt;  &lt;span style="color: grey;"&gt;JOIN&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;RecursiveQuery&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;ON&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;RecursiveQuery&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;ID&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;c2&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;ParentCategory&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;11:&lt;/span&gt; &lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: #f4f4f4; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;12:&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The select statement returning the products with their respective category based upon the main category &lt;span style="color: #990000;"&gt;&lt;strong&gt;'Food'&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: black 1px solid; border-left: black 1px solid; border-right: black 1px solid; border-top: black 1px solid; color: black; font-family: Candara; height: 149px; overflow: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 604px;"&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;1:&lt;/span&gt; &lt;span style="color: blue;"&gt;SELECT&lt;/span&gt;&lt;span style="color: black;"&gt;   &lt;span style="color: teal;"&gt;Category&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="background: #f4f4f4; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;2:&lt;/span&gt;   &lt;span style="color: magenta;"&gt;ISNULL&lt;span style="color: grey;"&gt;(&lt;span style="color: teal;"&gt;Products&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;Product&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span&amp;#39;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;AS&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;Product&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;3:&lt;/span&gt;   &lt;span style="color: magenta;"&gt;ISNULL&lt;span style="color: grey;"&gt;(&lt;span style="color: teal;"&gt;Products&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;UnitPrice&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;  0&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;AS&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;UnitPrice&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: #f4f4f4; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;4:&lt;/span&gt; &lt;span style="color: blue;"&gt;FROM&lt;/span&gt;&lt;span style="color: black;"&gt;     &lt;span style="color: teal;"&gt;RecursiveQuery&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;5:&lt;/span&gt; &lt;span style="color: grey;"&gt;INNER&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;JOIN&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;Products&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;ON&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;Products&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;CategoryID&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;RecursiveQuery&lt;span style="color: grey;"&gt;.&lt;span style="color: teal;"&gt;ID&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: #f4f4f4; margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;6:&lt;/span&gt; &lt;span style="color: blue;"&gt;ORDER&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;BY&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: blue;"&gt;Level&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: grey;"&gt;,&lt;span style="color: teal;"&gt;Parent&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;span style="color: teal;"&gt;Category&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: black; display: inline-block; margin-right: 10px; text-align: right; width: 30px;"&gt;7:&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;See the result:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/_JHhCVKhUsXk/TOzQZObuGLI/AAAAAAAAASw/PFUG8yuHAhc/s1600/result.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" ox="true" src="http://4.bp.blogspot.com/_JHhCVKhUsXk/TOzQZObuGLI/AAAAAAAAASw/PFUG8yuHAhc/s200/result.png" width="189" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Have Fun! &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-4612303094111822819?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/4612303094111822819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2010/11/writing-recursive-query-using-common.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/4612303094111822819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/4612303094111822819'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2010/11/writing-recursive-query-using-common.html' title='Writing a recursive query using Common Table Expressions'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_JHhCVKhUsXk/TOzQOBK-JSI/AAAAAAAAASo/_OiSrHrKdac/s72-c/category.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-8731349147859988471</id><published>2010-11-23T14:32:00.002+01:00</published><updated>2010-11-23T14:33:08.318+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server Day 2010</title><content type='html'>&lt;a href="http://www.sqlserverday.be/"&gt;&lt;img border="0" height="60" ox="true" src="http://2.bp.blogspot.com/_JHhCVKhUsXk/TOvCHTabWGI/AAAAAAAAASk/ZdNY-QB_RFE/s320/image354.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Thursday, December 2nd, 2010. &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;San Marco Village in Schelle (Antwerp)&lt;/strong&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;Book those calendars now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-8731349147859988471?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/8731349147859988471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2010/11/sql-server-day-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/8731349147859988471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/8731349147859988471'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2010/11/sql-server-day-2010.html' title='SQL Server Day 2010'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_JHhCVKhUsXk/TOvCHTabWGI/AAAAAAAAASk/ZdNY-QB_RFE/s72-c/image354.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-5683769998986884044</id><published>2010-02-04T15:02:00.006+01:00</published><updated>2010-02-04T15:16:38.689+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Aspose'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET General'/><title type='text'>Export Excel sheet to PDF document using Aspose</title><content type='html'>Last month I stumbled upon a business issue, which would allow an application to extract a &lt;strong&gt;single worksheet&lt;/strong&gt; out of an excel document and save it as a&lt;strong&gt; PDF document&lt;/strong&gt;. &lt;br /&gt;&lt;br /&gt;Using Aspose, this can be done easily! &lt;br /&gt;&lt;br /&gt;&lt;pre class="csharp:nogutter" name="code"&gt;public class XlsToPdf&lt;br /&gt;    {&lt;br /&gt;        public void ExportSheet()&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            ///lets say we have an xls document containing 6 sheets&lt;br /&gt;            ///each strongly named like sheet1 =&amp;gt; sheet6&lt;br /&gt;            ///suppose that you need to save sheet5 as a pdf document.&lt;br /&gt;&lt;br /&gt;            string sourceWorkBook = "source.xls";&lt;br /&gt;            string destinationDocument = "Destination.pdf";&lt;br /&gt;&lt;br /&gt;            Aspose.Cells.Workbook sourceWb = new Aspose.Cells.Workbook();&lt;br /&gt;            sourceWb.Open(sourceWorkBook);&lt;br /&gt;&lt;br /&gt;            foreach (Aspose.Cells.Worksheet workSheet in sourceWb.Worksheets)&lt;br /&gt;            {&lt;br /&gt;                if (!workSheet.Name.ToUpper().Contains("sheet5"))&lt;br /&gt;                    workSheet.IsVisible = false;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            ///First thing to do is to save the xls in xml format, &lt;br /&gt;            ///but the formattype used already refers to PDF&lt;br /&gt;            string destinationDocumentXml = "destination.xml";&lt;br /&gt;            sourceWb.Save(destinationDocumentXml, &lt;br /&gt;                Aspose.Cells.FileFormatType.AsposePdf);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            Aspose.Pdf.Pdf pdfDocument = new Aspose.Pdf.Pdf();&lt;br /&gt;            //bind the created xml to the PDFDoc you intialized.&lt;br /&gt;            pdfDocument.BindXML(destinationDocumentXml, null);&lt;br /&gt;            //Save...&lt;br /&gt;            pdfDocument.Save(destinationDocument);&lt;br /&gt;&lt;br /&gt;            ///If necessary, you can cleanup and remove &lt;br /&gt;            ///the intermediate files created&lt;br /&gt;            ///using DirectoryInfo and files delet techniques from the System.IO&lt;br /&gt;            ///...code goes here&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;div class="csharp:nogutter" name="code"&gt;You can find the Aspose help here: &lt;a href="http://www.aspose.com/categories/product-family-packs/aspose.cells-product-family/default.aspx"&gt;Cells&lt;/a&gt; and &lt;a href="http://www.aspose.com/categories/product-family-packs/aspose.pdf-product-family/default.aspx"&gt;PDF&lt;/a&gt;&lt;/div&gt;&lt;div class="csharp:nogutter" name="code"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="csharp:nogutter" name="code"&gt;Have fun&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-5683769998986884044?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/5683769998986884044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2010/02/export-excel-sheet-to-pdf-document.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/5683769998986884044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/5683769998986884044'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2010/02/export-excel-sheet-to-pdf-document.html' title='Export Excel sheet to PDF document using Aspose'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-4895585107882011927</id><published>2009-05-29T13:48:00.011+02:00</published><updated>2009-05-29T14:13:23.890+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET General'/><title type='text'>Parser error : “The async attribute on the page directive is not allowed in this page”</title><content type='html'>&lt;p&gt;Last week I bumped upon this error while I was trying to do an asynchrounous WCF service call from my "MS Project 2007 Web Access"-custom user control.&lt;br /&gt;&lt;p&gt;Turns out that you cannot set the &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Async="true"&lt;/span&gt;&lt;/strong&gt; atttibute in the page directive af an aspx page in the Project Web Access.&lt;/p&gt;&lt;p&gt;The reason for this? Very simple ... the that &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.applicationruntime.sppageparserfilter.aspx" target="_blank"&gt;SharePoint’s SPPageParserFilter class&lt;/a&gt; blocks some &lt;a href="http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx" target="_blank"&gt;page directive attributes&lt;/a&gt;. When you use other attrubutes than the following list, you will get the error &lt;strong&gt;&lt;em&gt;"The 'xxx' attribute on the page directive is not allowed in this page&lt;/em&gt;&lt;/strong&gt;."&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000099;"&gt;The list: &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;autoeventwireup&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;buffer&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;classname&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;codebehind&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;codepage&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;compileroptions&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;contenttype&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;culture&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;debug&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;description&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;enabletheming&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;enableviewstate&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;enableviewstatemac&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;errorpage&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;explicit&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;inherits&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;language&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;lcid&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;lineparagmas&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;maintainscrollpositiononpostback&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;masterpagefile&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;responsencoding&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;smartnavigation&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;strict&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;stylesheettheme&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;targetschema&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;theme&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;title&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To &lt;strong&gt;take care of this issue&lt;/strong&gt; we chose to have a webservice call which will handle the Ascynhrounous WCF call, and from our web user control we called this webservice method sycnhrounous.... Maybe this is not the best solution, but we really had an issue, so a quick fix was necessary here...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-4895585107882011927?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/4895585107882011927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2009/05/parser-error-async-attribute-on-page.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/4895585107882011927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/4895585107882011927'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2009/05/parser-error-async-attribute-on-page.html' title='Parser error : “The async attribute on the page directive is not allowed in this page”'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-8419968864299200195</id><published>2009-05-29T11:26:00.006+02:00</published><updated>2009-05-29T13:10:00.507+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>To semi-colon or not to semi-colon</title><content type='html'>&lt;span style="color:#000099;"&gt;&lt;strong&gt;&lt;em&gt;Do you need to end your T-SQL statements with a semi-colon (;)? &lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;No, at least not yet. As stated in the following web page (&lt;a href="http://msdn.microsoft.com/en-us/library/ms143729.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms143729.aspx&lt;/a&gt;) "&lt;strong&gt;Not ending Transact-SQL statements with a semi-colon." &lt;/strong&gt;will be replaced by "&lt;strong&gt;End Transact-SQL statements with a semi-colon ( ; )."&lt;/strong&gt; in&lt;br /&gt;future versions...&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;&lt;em&gt;Is it a good practice to end your statements with a semi-colon?&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Yes, because:&lt;br /&gt;- it will be &lt;strong&gt;mandatory in the future&lt;/strong&gt;.&lt;br /&gt;- you need to use it with &lt;strong&gt;CTE&lt;/strong&gt;.(where the &lt;strong&gt;preceeding statement&lt;/strong&gt; needs to end with a ";")&lt;br /&gt;- you need to &lt;strong&gt;end MERGE statements&lt;/strong&gt; with a ";"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-8419968864299200195?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/8419968864299200195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2009/05/to-semi-colom-or-not-to-semi-colom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/8419968864299200195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/8419968864299200195'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2009/05/to-semi-colom-or-not-to-semi-colom.html' title='To semi-colon or not to semi-colon'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-6437104541699836651</id><published>2009-05-12T15:50:00.003+02:00</published><updated>2009-05-13T09:20:01.299+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET General'/><title type='text'>Community Day 2009</title><content type='html'>Third Edition of Microsoft Community Day, a networking and knowledge sharing event.&lt;br /&gt;&lt;a href="http://www.communityday.be/cd/tabid/58/Default.aspx"&gt;Register&lt;/a&gt; yourself and be there!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.communityday.be/"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 500px; CURSOR: hand; HEIGHT: 100px" alt="" src="http://www.communityday.be/CD/Portals/0/banner1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-6437104541699836651?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/6437104541699836651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2009/05/community-day-2009.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/6437104541699836651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/6437104541699836651'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2009/05/community-day-2009.html' title='Community Day 2009'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-3286324299524283641</id><published>2009-04-14T09:02:00.005+02:00</published><updated>2009-04-21T10:26:56.840+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><title type='text'>Architect Forum - May 6th 2009</title><content type='html'>The forum will be on Security and Identity Lifecycle Management.&lt;br /&gt;More information on the &lt;span style="color:#660000;"&gt;&lt;strong&gt;Architects Rule! blog&lt;/strong&gt;&lt;/span&gt; &lt;a href="http://blogs.msdn.com/architectsrule/archive/2009/04/02/invitation-microsoft-belux-architect-forum-on-security-identity.aspx"&gt;here...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-3286324299524283641?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/3286324299524283641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2009/04/architect-forum-mat-6th-2009.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/3286324299524283641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/3286324299524283641'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2009/04/architect-forum-mat-6th-2009.html' title='Architect Forum - May 6th 2009'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-4440277504151265619</id><published>2009-04-10T08:18:00.005+02:00</published><updated>2009-04-14T09:13:02.357+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server 2008 SP1 Released</title><content type='html'>Microsoft has released their final version of Service Pack 1 for SQL Server 2008, less than a year after the Release of SQL Server 2008.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.technet.com/stbnewsbytes/archive/2009/04/07/sql-server-2008-sp1-available-today.aspx"&gt;&lt;span style="color:#660000;"&gt;No new features&lt;/span&gt;&lt;/a&gt; have been added to SP1, byt there are some improvements on usabiltiy.&lt;br /&gt;&lt;br /&gt;SQL Server 2008 SP1 is availalable for download &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19"&gt;&lt;span style="color:#660000;"&gt;here&lt;/span&gt;&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-4440277504151265619?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/4440277504151265619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2009/04/sql-server-2008-sp1-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/4440277504151265619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/4440277504151265619'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2009/04/sql-server-2008-sp1-released.html' title='SQL Server 2008 SP1 Released'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-1950082240344946577</id><published>2009-02-23T13:19:00.003+01:00</published><updated>2009-02-23T13:28:52.473+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET General'/><title type='text'>Adding toolbox items crashes VS2008</title><content type='html'>&lt;span style="color:#000099;"&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When &lt;em&gt;right-clicking&lt;/em&gt; the toolbox in an open &lt;em&gt;Visual Studio 2008 environment&lt;/em&gt;, I had some strange behavior when selecting "&lt;em&gt;Choose Items ...&lt;/em&gt; ".&lt;br /&gt;In fact there was no behavior at all ... my development &lt;span style="color:#660000;"&gt;&lt;em&gt;environment just crashed&lt;/em&gt;&lt;/span&gt;!!!&lt;br /&gt;&lt;br /&gt;Rather annoying if you try to add some new items don't you think?&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;Cause:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The problem is caused by the &lt;em&gt;Power Commands 2008 Addons for Visual Studio&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Resolution:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Uninstall the Power Commands 2008 Addons...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-1950082240344946577?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/1950082240344946577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2009/02/adding-toolbox-items-crashes-vs2008.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/1950082240344946577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/1950082240344946577'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2009/02/adding-toolbox-items-crashes-vs2008.html' title='Adding toolbox items crashes VS2008'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-7306500421201745077</id><published>2009-02-11T11:24:00.009+01:00</published><updated>2009-04-10T08:28:52.661+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Continue next step after exception</title><content type='html'>In some case it is handy to catch the exception and then continue with the next step right after the line that threw the exception.&lt;br /&gt;There are several ways to do this, one is writing a try {} catch{} block around every line of code (which will of course pollute your code).&lt;br /&gt;&lt;br /&gt;I found some code bits on the internet, which wrap this in a function.&lt;br /&gt;I created a new Console application to demonstrate this.&lt;br /&gt;&lt;br /&gt;First we create a class handling this functionality:&lt;br /&gt;&lt;pre class="csharp:nogutter" name="code"&gt;&lt;br /&gt;public static class Executer&lt;br /&gt;    {&lt;br /&gt;        public static void Execute(Action action, string errorMessageToLog)&lt;br /&gt;        {&lt;br /&gt;            try&lt;br /&gt;            {&lt;br /&gt;                action();&lt;br /&gt;            }&lt;br /&gt;            catch&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(errorMessageToLog);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then we create the code in the Main function of our console application:&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharp:nogutter" name="code"&gt;&lt;br /&gt;static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            for (int counter = 10; counter &gt; -10; counter--)&lt;br /&gt;            {&lt;br /&gt;                Executer.Execute(() =&gt;&lt;br /&gt;                    Console.WriteLine((10 / counter).ToString()), "Error Occured");&lt;br /&gt;            }&lt;br /&gt;            Console.Read();&lt;br /&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When we run the code, you will notice that when &lt;span style="color:#3366ff;"&gt;counter = 0&lt;/span&gt;, a division by zero will occur, so this will throw an error. This error is displayed to the console and the next value of &lt;span style="color:#3366ff;"&gt;counter&lt;/span&gt; will be processed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-7306500421201745077?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/7306500421201745077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2009/02/continue-next-step-after-exception.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/7306500421201745077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/7306500421201745077'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2009/02/continue-next-step-after-exception.html' title='Continue next step after exception'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-4706186834448967416</id><published>2009-01-21T15:24:00.012+01:00</published><updated>2009-01-22T08:45:47.669+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Length of LOB data  to be replicated exceeds configured maximum 65536.</title><content type='html'>&lt;span style="font-family:verdana;"&gt;This week I came across the following error :&lt;br /&gt;&lt;span style="color:#cc0000;"&gt;Length of LOB data to be replicated exceeds configured maximum 65536&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#cc0000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;When we where uploading pictures to store in a column of data type "Image" into our SQL server 2005 database.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The error is thrown when replication is enabled on the server, so the fix for this is rather easy ... increase the size that can be replicated using the following&lt;span style="color:#000099;"&gt; T-SQL Statement&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="sql:nogutter" name="code"&gt;&lt;br /&gt;sp_configure ‘max text repl size’, 2147483647&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;Or via the &lt;span style="color:#000099;"&gt;Management Studio&lt;/span&gt; :&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Right Click a server in Object Explorer and click Properties&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Select Advanced&lt;/li&gt;&lt;li&gt;Under the Miscellaneous Category, change the Max Text Replication Size to the value you want.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="font-size:78%;color:#c0c0c0;"&gt;Max Text Replication Size definition (as defined in the SSMS): &lt;/span&gt;&lt;span style="font-size:78%;color:#c0c0c0;"&gt;Specifies the maximum data that can be added to a replicated column in&lt;br /&gt;a single INSERT, UPDATE , WRITETEXT or UPDATETEXT statement&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-4706186834448967416?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/4706186834448967416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2009/01/length-of-lob-data-to-be-replicated.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/4706186834448967416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/4706186834448967416'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2009/01/length-of-lob-data-to-be-replicated.html' title='Length of LOB data  to be replicated exceeds configured maximum 65536.'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6555218232752958602.post-7534621380295362633</id><published>2009-01-21T12:30:00.024+01:00</published><updated>2009-01-22T11:02:43.064+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Playing with DateTime in SQL2005</title><content type='html'>&lt;span style="font-family:verdana;"&gt;For a project I'm working on I needed to extract semester and quarter from a date.&lt;br /&gt;This brought me to the idea of storing these values in a table.&lt;br /&gt;&lt;br /&gt;The following code sample is a table valued function which generates detailed calendar output.&lt;br /&gt;&lt;br /&gt;&lt;pre class="sql:nogutter" name="code"&gt;&lt;br /&gt;Create Function [dbo].[DateTimeFunctions.ReturnExtendedCalendar]&lt;br /&gt;  (@TableStartDate DateTime , @TableEndDate DateTime , @FYStart DateTime)&lt;br /&gt;Returns @ExtendedResultSet Table&lt;br /&gt;    ( MonthStart DateTime , MonthEnd DateTime , [Year] Int , [Month] Int , &lt;br /&gt;     [Quarter] Int , Semester Int , [MonthName] Varchar(20) , [FiscalYear] Int , &lt;br /&gt;     [FiscalMonth] Int , [FiscalQuarter] Int , FiscalSemester Int)&lt;br /&gt;As&lt;br /&gt;Begin&lt;br /&gt; Declare @CalendarTable Table &lt;br /&gt;   ( MonthStart DateTime , MonthEnd DateTime , [Year] Int , [Month] Int , &lt;br /&gt;     [Quarter] Int , Semester Int , [MonthName] Varchar(20) , [FiscalYear] Int , &lt;br /&gt;     [FiscalMonth] Int , [FiscalQuarter] Int , FiscalSemester Int)&lt;br /&gt;     &lt;br /&gt; Declare @FirstDayOfCurrentYear DateTime&lt;br /&gt; Declare @FiscalStartDiff Int&lt;br /&gt;&lt;br /&gt; Select @FirstDayOfCurrentYear = Cast(Cast(Convert(Varchar(4), DatePart(yyyy ,GetDate())) + '-01-01' As Varchar(20)) As DateTime)&lt;br /&gt;&lt;br /&gt; Select @FiscalStartDiff = DateDiff(mm , @FYStart , @FirstDayOfCurrentYear)&lt;br /&gt;&lt;br /&gt; While @TableStartDate &lt;= @TableEndDate&lt;br /&gt; Begin&lt;br /&gt;  Insert Into @CalendarTable&lt;br /&gt;    (&lt;br /&gt;     MonthStart , MonthEnd , [Year] , [Month] , [Quarter] , Semester , [MonthName] ,&lt;br /&gt;     [FiscalYear] , [FiscalMonth] , [FiscalQuarter] , FiscalSemester&lt;br /&gt;    )&lt;br /&gt;  Values ( @TableStartDate ,&lt;br /&gt;     DateAdd(ms, -3, DateAdd(mm, DateDiff(m, 0, @TableStartDate) + 1, 0)) ,&lt;br /&gt;     DatePart(yyyy , @TableStartDate ) ,&lt;br /&gt;     DatePart(mm , @TableStartDate ) ,&lt;br /&gt;     DateName(qq , @TableStartDate),&lt;br /&gt;     Case When DatePart(mm , @TableStartDate ) Between 1 and 6 Then 1&lt;br /&gt;       Else 2&lt;br /&gt;     End ,&lt;br /&gt;     DateName(mm , @TableStartDate) ,&lt;br /&gt;     DatePart(yyyy , DateAdd(mm  , @FiscalStartDiff , @TableStartDate )) , &lt;br /&gt;     DatePart(mm , DateAdd(mm  , @FiscalStartDiff , @TableStartDate )),&lt;br /&gt;     DatePart(qq , DateAdd(mm  , @FiscalStartDiff , @TableStartDate )),&lt;br /&gt;     Case When DatePart(qq , DateAdd(mm  , @FiscalStartDiff , @TableStartDate )) &lt;br /&gt;         In (1 , 2 )Then 1&lt;br /&gt;       Else 2&lt;br /&gt;     End&lt;br /&gt;    )&lt;br /&gt;     &lt;br /&gt;  Set @TableStartDate = DateAdd(mm , 1 , @TableStartDate)&lt;br /&gt; End&lt;br /&gt;&lt;br /&gt; Insert @ExtendedResultSet (MonthStart , MonthEnd , [Year] , [Month] , [Quarter] , &lt;br /&gt;     Semester , [MonthName] , [FiscalYear] , [FiscalMonth] , [FiscalQuarter] , FiscalSemester)&lt;br /&gt; Select MonthStart , MonthEnd , [Year] , [Month] , [Quarter] , &lt;br /&gt;     Semester , [MonthName] ,[FiscalYear] , [FiscalMonth] , [FiscalQuarter] , FiscalSemester &lt;br /&gt; From @CalendarTable&lt;br /&gt;&lt;br /&gt; Return&lt;br /&gt;End&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Execution of the function is as follows :&lt;br /&gt;&lt;pre class="sql:nogutter" name="code"&gt;&lt;br /&gt;Set DateFirst 1&lt;br /&gt;Set @TableStartDate = DateAdd(yyyy ,-10 , '2009-01-01')&lt;br /&gt;Set @TableEndDate = DateAdd(yyyy , 0 , '2009-12-31')&lt;br /&gt;Set @FYStart = Convert(DateTime, '2009-04-01')&lt;br /&gt;&lt;br /&gt;Select * From [dbo].[DateTimeFunctions.ReturnExtendedCalendar]&lt;br /&gt;         (@TableStartDate , @TableEndDate , @FYStart)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6555218232752958602-7534621380295362633?l=jurgenasselman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jurgenasselman.blogspot.com/feeds/7534621380295362633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jurgenasselman.blogspot.com/2009/01/playing-with-datetime-in-sql2005.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/7534621380295362633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6555218232752958602/posts/default/7534621380295362633'/><link rel='alternate' type='text/html' href='http://jurgenasselman.blogspot.com/2009/01/playing-with-datetime-in-sql2005.html' title='Playing with DateTime in SQL2005'/><author><name>Jurgen Asselman</name><uri>http://www.blogger.com/profile/07737995478069556545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
