<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Vince Blasberg's Blog</title><link>http://weblogs.asp.net/vblasberg/default.aspx</link><description>VSTS, TFS, CLR and other TLA's</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Jing - A Really Great Free Capture Tool</title><link>http://weblogs.asp.net/vblasberg/archive/2008/08/28/jing-a-really-great-free-capture-tool.aspx</link><pubDate>Thu, 28 Aug 2008 17:27:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6574372</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><description>&lt;P mce_keep="true"&gt;I stumbled across &lt;A class="" title="The Jing Project Page" href="http://www.jingproject.com/" mce_href="http://www.jingproject.com/"&gt;The Jinq Project&lt;/A&gt; last week and I think that it's just great.&amp;nbsp; I've had my eye on &lt;A class="" href="http://www.techsmith.com/camtasia.asp" mce_href="http://www.techsmith.com/camtasia.asp"&gt;TechSmith's Camtasia&lt;/A&gt; product for a while and will eventually purchase it when I absolutely need it.&amp;nbsp; But for a 5 minute video or screen capture, Jing does the job easily.&amp;nbsp; It may even replace Vista's simple screen capture utility that I use constantly in my work.&amp;nbsp;&amp;nbsp;Jing installs easily and produces SWF files for video and captures the screen for images.&amp;nbsp; The&amp;nbsp;resulting file&amp;nbsp;can be uploaded to &lt;A class="" href="http://www.techsmith.com/screencast.asp" mce_href="http://www.techsmith.com/screencast.asp"&gt;ScreenCast&lt;/A&gt; for free, for a while, or copied to the hard drive.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;The free product (project) is over a year old, but better late than never to find a good tool.&amp;nbsp; They have so many screen capture tutorials to show how to use the already simple-to-use tool.&amp;nbsp; I let others know around the office and now they are enthusiastically using it.&lt;/P&gt;
&lt;P mce_keep="true"&gt;-Vince&lt;BR&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6574372" width="1" height="1"&gt;</description></item><item><title>Visual Studio 2008 SP1</title><link>http://weblogs.asp.net/vblasberg/archive/2008/08/13/visual-studio-2008-sp1.aspx</link><pubDate>Wed, 13 Aug 2008 15:03:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6513220</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vblasberg/rsscomments.aspx?PostID=6513220</wfw:commentRss><comments>http://weblogs.asp.net/vblasberg/archive/2008/08/13/visual-studio-2008-sp1.aspx#comments</comments><description>&lt;p mce_keep="true"&gt;&lt;a class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;amp;displaylang=en"&gt;Visual Studio 2008 Service Pack 1&lt;/a&gt; has finally arrived.&amp;#160; It is a warm welcome with the way that my Visual Studio installation &amp;quot;found opportunities to suddenly restart&amp;quot;, let's say.&amp;#160; The SP1 installation is rather interesting, like the VS2005 service packs were.&amp;#160; It takes a very long time to complete, it pops up (and hides) alert windows behind the installation window, it requires the VS2008 DVD, and it requires a reboot if some applications are running such as my Yahoo messenger...&amp;#160; Hmmm...&amp;#160; So I would suggest that when installing this service pack, stay focused on its progress and start it when you don't need to get work done.&lt;/p&gt;  &lt;p mce_keep="true"&gt;-Vince   &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6513220" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/vblasberg/archive/tags/.Net/default.aspx">.Net</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Team+System/default.aspx">Team System</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>DBPro How To: Initially Populating an ASP.NET Membership Database</title><link>http://weblogs.asp.net/vblasberg/archive/2008/08/01/dbpro-how-to-initially-populating-an-asp-net-membership-database.aspx</link><pubDate>Fri, 01 Aug 2008 15:52:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6466769</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vblasberg/rsscomments.aspx?PostID=6466769</wfw:commentRss><comments>http://weblogs.asp.net/vblasberg/archive/2008/08/01/dbpro-how-to-initially-populating-an-asp-net-membership-database.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;With just the schema alone, the ASP.NET membership (role, profile, etc.) database does not have enough information to operate correctly.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;There are a few records needed or else the ASP.NET membership and other providers will throw an error complaining that it may be an invalid version.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is good, of course, so that the ASP.NET membership providers can innovate and the membership database will remain intact for existing application versions.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;These additional records can be inserted with DBPro by adding a SQL script in the “Post-Deployment” folder under the DBPro project scripts folder.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We could name the file, “AspNet_SchemaRecords.sql”.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Also at this location, the file named Script.PostDeployment.sql must have an entry to run the post deployment SQL script.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;After making these changes then deploying a new database with DBPro, an ASP.NET application should be able to connect and start using the database immediately.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Maybe in the future, this can be an option in the project wizard or available as an add-on script on the Microsoft site.&lt;/FONT&gt;&lt;/P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;BR&gt;An Entry in Script.PostDeployment.sql:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt; 
&lt;BLOCKQUOTE&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;--&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Initialize ASPNET membership schema records after a complete database rebuild.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;:r &lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;\AspNet_SchemaRecords&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;sql&lt;SPAN style="mso-tab-count: 1"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/BLOCKQUOTE&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;BR&gt;AspNet_SchemaRecords.sql:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt; 
&lt;BLOCKQUOTE&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;USE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; DatabaseName&lt;SPAN style="COLOR: gray"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;IF&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: gray"&gt;NOT&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;EXISTS&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;FROM&lt;/SPAN&gt; aspnet_SchemaVersions &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&gt; Feature &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; N&lt;SPAN style="COLOR: red"&gt;'common'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; 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: blue"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;INTO&lt;/SPAN&gt; aspnet_SchemaVersions &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;Feature&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; CompatibleSchemaVersion&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; IsCurrentVersion&lt;SPAN style="COLOR: gray"&gt;)&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;VALUES&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;'common'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;'1'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; 1&lt;SPAN style="COLOR: gray"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;BR&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;BR&gt;IF&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: gray"&gt;NOT&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;EXISTS&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;FROM&lt;/SPAN&gt; aspnet_SchemaVersions &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&gt; Feature &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; N&lt;SPAN style="COLOR: red"&gt;'health monitoring'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; 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: blue"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;INTO&lt;/SPAN&gt; aspnet_SchemaVersions &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;Feature&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; CompatibleSchemaVersion&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; IsCurrentVersion&lt;SPAN style="COLOR: gray"&gt;)&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;VALUES&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;'health monitoring'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;'1'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; 1&lt;SPAN style="COLOR: gray"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;BR&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;BR&gt;IF&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: gray"&gt;NOT&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;EXISTS&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;FROM&lt;/SPAN&gt; aspnet_SchemaVersions &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&gt; Feature &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; N&lt;SPAN style="COLOR: red"&gt;'membership'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; 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: blue"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;INTO&lt;/SPAN&gt; aspnet_SchemaVersions &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;Feature&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; CompatibleSchemaVersion&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; IsCurrentVersion&lt;SPAN style="COLOR: gray"&gt;)&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;VALUES&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;'membership'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;'1'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; 1&lt;SPAN style="COLOR: gray"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;BR&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;BR&gt;IF&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: gray"&gt;NOT&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;EXISTS&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;FROM&lt;/SPAN&gt; aspnet_SchemaVersions &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&gt; Feature &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; N&lt;SPAN style="COLOR: red"&gt;'personalization'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; 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: blue"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;INTO&lt;/SPAN&gt; aspnet_SchemaVersions &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;Feature&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; CompatibleSchemaVersion&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; IsCurrentVersion&lt;SPAN style="COLOR: gray"&gt;)&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;VALUES&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;'personalization'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;'1'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; 1&lt;SPAN style="COLOR: gray"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;BR&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;BR&gt;IF&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: gray"&gt;NOT&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;EXISTS&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;FROM&lt;/SPAN&gt; aspnet_SchemaVersions &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&gt; Feature &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; N&lt;SPAN style="COLOR: red"&gt;'profile'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; 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: blue"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;INTO&lt;/SPAN&gt; aspnet_SchemaVersions &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;Feature&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; CompatibleSchemaVersion&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; IsCurrentVersion&lt;SPAN style="COLOR: gray"&gt;)&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;VALUES&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;'profile'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;'1'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; 1&lt;SPAN style="COLOR: gray"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;BR&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;BR&gt;IF&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: gray"&gt;NOT&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;EXISTS&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;FROM&lt;/SPAN&gt; aspnet_SchemaVersions &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&gt; Feature &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; N&lt;SPAN style="COLOR: red"&gt;'role manager'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; 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: blue"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;INTO&lt;/SPAN&gt; aspnet_SchemaVersions &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;Feature&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; CompatibleSchemaVersion&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; IsCurrentVersion&lt;SPAN style="COLOR: gray"&gt;)&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;VALUES&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;'role manager'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;'1'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; 1&lt;SPAN style="COLOR: gray"&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6466769" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/vblasberg/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>TFS Reporting Architecture Notes</title><link>http://weblogs.asp.net/vblasberg/archive/2008/06/04/tfs-reporting-architecture-notes.aspx</link><pubDate>Wed, 04 Jun 2008 15:10:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6247664</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vblasberg/rsscomments.aspx?PostID=6247664</wfw:commentRss><comments>http://weblogs.asp.net/vblasberg/archive/2008/06/04/tfs-reporting-architecture-notes.aspx#comments</comments><description>&lt;P&gt;Here are some notes and a list of questions and answers regarding the TFS Reporting architecture. I gave a presentation at this month's Dallas Visual Studio Team System user group.&amp;nbsp; The topic was TFS Reporting but what we really covered was the TFS reporting architecture.&amp;nbsp; We’ll probably follow-up with a second session of “Effective TFS Reporting” to include demos and the meaning of some of the most used TFS reports. I strongly believe that the TFS Reporting architecture includes several areas that should be understood to effectively and efficiently deliver standard and custom reports. So here are some high points for the benefit of others looking for answers.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;The TFS Warehouse&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/blogs/vblasberg/WindowsLiveWriter/TFSReportingArchitectureNotes_8F1A/clip_image002_2.jpg" mce_href="http://weblogs.asp.net/blogs/vblasberg/WindowsLiveWriter/TFSReportingArchitectureNotes_8F1A/clip_image002_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=455 alt=clip_image002 src="http://weblogs.asp.net/blogs/vblasberg/WindowsLiveWriter/TFSReportingArchitectureNotes_8F1A/clip_image002_thumb.jpg" width=637 border=0 mce_src="http://weblogs.asp.net/blogs/vblasberg/WindowsLiveWriter/TFSReportingArchitectureNotes_8F1A/clip_image002_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;LI&gt;We avoid reporting on the operational store because it slows down everyone using the system and extra security configuration is needed.&lt;/LI&gt;
&lt;LI&gt;Expect a slight delay when the warehouse is updated from the operational store, depending on the size of the TFS implementation.&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The TFS Cube&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Facts&lt;/LI&gt;
&lt;LI&gt;Dimensions&lt;/LI&gt;
&lt;LI&gt;Measurements&lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;17 fact tables in the TFSCube&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;In the TFSWarehouse database, dimension tables have the field "__DimensionMemberActive" and fact tables do not.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Fact tables have measurement fields and foreign keys to dimension tables.&lt;/P&gt;
&lt;P&gt;Fact Table Examples:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Work Item fact table &lt;/B&gt;has one row for every work item stored in Work Item operational store.&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Code Churn fact table &lt;/B&gt;has one row for every dimension combination.&lt;/LI&gt;&lt;/UL&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;The 3 WorkItem Field Reportable Attributes (4 Actually)&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Fields with the reportable attribute will be exported to the data warehouse and can be included in reports. The reportable attribute takes one of three values.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Note:&lt;/FONT&gt;&lt;/STRONG&gt; Once a reportable attribute is set for a field, it can never be changed and is global to all work item types that reference the field.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Dimension&lt;/B&gt; (Integer, Double, String, or DateTime) to the warehouse database and cube as an attribute of the Work Item dimension so that the data can be used to filter reports. Work Item Type and State are good examples of a dimension.&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Detail&lt;/B&gt; (Integer, Double, String, or DateTime) warehouse database in “Work Item History” and “Current Work Item” tables.&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Measure&lt;/B&gt; (Integer and Double) Each measure will appear in both the Current Work Item and Work Item History measure groups. A formula is allowed for the final measurement aggregation such as Estimated work. Measure type has formula options: &lt;I&gt;sub, count, distinct, count, avg, min, max&lt;/I&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;None&lt;/B&gt; Leaving a field as “None” for reportable allows it to be changed later and lessens the size of the Warehouse and Cube size. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Ask these questions when specifying the workitem field reportable type.&lt;/B&gt;&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=780 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=669&gt;Is the field going to appear in a SQL report but not a complex calculation or summary or OLAP report?&lt;/TD&gt;
&lt;TD class="" vAlign=top width=109&gt;&lt;STRONG&gt;Detail&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=669&gt;Is the field something that will be used in a filter in an OLAP report? &lt;/TD&gt;
&lt;TD class="" vAlign=top width=109&gt;&lt;STRONG&gt;Dimension&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=669&gt;Is the field a meaningful &lt;B&gt;&lt;I&gt;NUMBER&lt;/I&gt;&lt;/B&gt; for calculations, a filter, and maybe a formula? &lt;/TD&gt;
&lt;TD class="" vAlign=top width=109&gt;&lt;STRONG&gt;Measure&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=669&gt;Is the field a string that can be reported in a sub-report instead of bloating the cube? &lt;/TD&gt;
&lt;TD class="" vAlign=top width=109&gt;&lt;STRONG&gt;Detail&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=669&gt;Is this just a field that is captured but never need on a report? &lt;/TD&gt;
&lt;TD class="" vAlign=top width=109&gt;&lt;STRONG&gt;None&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=669&gt;It’s uncertain how this field will be used in the future. Can only change later if it is currently “none”. &lt;/TD&gt;
&lt;TD class="" vAlign=top width=109&gt;&lt;STRONG&gt;None&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Resources&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;“Creating and Customizing TFS Reports” – A PDF file from the Patterns and Practices Group - Located in the Microsoft Downloads. &lt;BR&gt;&lt;U&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=a74486b2-f7db-4a85-97bd-46bf478bda60&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=a74486b2-f7db-4a85-97bd-46bf478bda60&amp;amp;displaylang=en"&gt;http&lt;/A&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=a74486b2-f7db-4a85-97bd-46bf478bda60&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=a74486b2-f7db-4a85-97bd-46bf478bda60&amp;amp;displaylang=en"&gt;://www.microsoft.com/downloads/details.aspx?familyid=a74486b2-f7db-4a85-97bd-46bf478bda60&amp;amp;displaylang=en&lt;/A&gt;&lt;/U&gt;&lt;/LI&gt;
&lt;LI&gt;Reports (How Do I in Team Foundation) &lt;U&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms242890.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms242890.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms242890.aspx&lt;/A&gt;&lt;/U&gt;&lt;/LI&gt;
&lt;LI&gt;Using Fields for Reporting - &lt;U&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms194942.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms194942.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms194942.aspx&lt;/A&gt;&lt;/U&gt;&lt;/LI&gt;
&lt;LI&gt;Team System Rocks: &lt;A href="http://teamsystemrocks.com/tutorials/" target=_blank mce_href="http://teamsystemrocks.com/tutorials/"&gt;“Creating Custom Reports in VSTS”&lt;/A&gt; webcast tutorial.&lt;/LI&gt;
&lt;LI&gt;SQL Server 2008 Books Online&lt;/LI&gt;
&lt;LI&gt;TFS Guide (Chapter 15) on CodePlex: &lt;U&gt;&lt;A href="http://www.codeplex.com/TFSGuide" mce_href="http://www.codeplex.com/TFSGuide"&gt;http&lt;/A&gt;&lt;A href="http://www.codeplex.com/TFSGuide" target=_blank mce_href="http://www.codeplex.com/TFSGuide"&gt;://www.codeplex.com/TFSGuide&lt;/A&gt;&lt;/U&gt;&lt;/LI&gt;
&lt;LI&gt;71 Sample Reports by &lt;U&gt;&lt;A href="http://blogs.msdn.com/buckh/default.aspx" mce_href="http://blogs.msdn.com/buckh/default.aspx"&gt;Buck Hodges&lt;/A&gt;&lt;/U&gt;: &lt;U&gt;&lt;A href="http://blogs.msdn.com/buckh/archive/2006/09/09/tfs_reporting.aspx" target=_blank mce_href="http://blogs.msdn.com/buckh/archive/2006/09/09/tfs_reporting.aspx"&gt;http://blogs.msdn.com/buckh/archive/2006/09/09/tfs_reporting.aspx&lt;/A&gt;&lt;/U&gt;&lt;/LI&gt;
&lt;LI&gt;OLAP Definitions: &lt;U&gt;&lt;A href="http://altaplana.com/olap/glossary.html" target=_blank mce_href="http://altaplana.com/olap/glossary.html"&gt;http://altaplana.com/olap/glossary.html&lt;/A&gt;&lt;/U&gt;&lt;/LI&gt;
&lt;LI&gt;Understanding the Data Warehouse Architecture: &lt;U&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms244687.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms244687.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms244687.aspx&lt;/A&gt;&lt;/U&gt;&lt;/LI&gt;
&lt;LI&gt;Data Warehouse Extensibility: &lt;U&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb130342.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/bb130342.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb130342.aspx&lt;/A&gt;&lt;/U&gt;&lt;/LI&gt;
&lt;LI&gt;BOOK: SQL 2005 Reporting Services Step by Step, MSPress&lt;/LI&gt;
&lt;LI&gt;BOOK: SQL Server 2005 Analysis Services Step by Step, MSPress&lt;/LI&gt;
&lt;LI&gt;TFS – Cube Introduction&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;U&gt;&lt;A href="http://www.paulstovell.com/blog/tfs-cube-introduction" target=_blank mce_href="http://www.paulstovell.com/blog/tfs-cube-introduction"&gt;http://www.paulstovell.com/blog/tfs-cube-introduction&lt;/A&gt;&lt;/U&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;U&gt;&lt;A href="http://blogs.msdn.com/teams_wit_tools/archive/2007/04/30/understanding-the-tfs-cube.aspx" target=_blank mce_href="http://blogs.msdn.com/teams_wit_tools/archive/2007/04/30/understanding-the-tfs-cube.aspx"&gt;http://blogs.msdn.com/teams_wit_tools/archive/2007/04/30/understanding-the-tfs-cube.aspx&lt;/A&gt;&lt;/U&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;B&gt;Tutorial Videos&lt;/B&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;U&gt;&lt;A href="http://blogs.msdn.com/ameyab/archive/2008/02/22/demo-tutorial-building-a-tfs-report-using-report-designer.aspx" target=_blank mce_href="http://blogs.msdn.com/ameyab/archive/2008/02/22/demo-tutorial-building-a-tfs-report-using-report-designer.aspx"&gt;Demo - Tutorial: Building a TFS report using Report Designer&lt;/A&gt;&lt;/U&gt; - A couple of report-building demos.&lt;/LI&gt;
&lt;LI&gt;&lt;U&gt;&lt;A href="http://blogs.msdn.com/ameyab/archive/2008/02/24/demo-tutorial-2-building-tsf-reports-using-excel-and-excel-services.aspx" target=_blank mce_href="http://blogs.msdn.com/ameyab/archive/2008/02/24/demo-tutorial-2-building-tsf-reports-using-excel-and-excel-services.aspx"&gt;Demo - Tutorial 2: Building TFS reports using Excel and Excel Services&lt;/A&gt;&lt;/U&gt; - Building TFS reports in Excel 2007 against the TFSWarehouse.&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;Random Q &amp;amp; A&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Q:&lt;/STRONG&gt; Can I use work item queries to perform reporting?&lt;BR&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; Not exactly. Workitem queries perform an optimized query on operational data using a specialized language named Workitem Query Language. Technically you can use the same fields that the workitem query is using but the data will not be in the more optimized TFSWarehouse database. Reports that are run against the operational store will affect normal TFS operation by developers, testers, project managers, automated services, or any other TFS user. A better solution is to find the same fields in the TFSWarehouse and report on them.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Q: &lt;/STRONG&gt;How can I improve TFS reporting performance?&lt;BR&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Optimized Reports - Fewer joins and sub-reports when not needed. Use drill-downs sub-reports.&lt;/LI&gt;
&lt;LI&gt;Move the TFSWarehouse database to another server. &lt;A href="http://blogs.msdn.com/vstsue/articles/774113.aspx" target=_blank mce_href="http://blogs.msdn.com/vstsue/articles/774113.aspx"&gt;http://blogs.msdn.com/vstsue/articles/774113.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Keep the cube smaller by specifying fields as detail and using SQL to report on them when appropriate such as string fields.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Q:&lt;/STRONG&gt; Where can I find out about known issues with TFS? &lt;BR&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; Some issues can be found on the Microsoft site at &lt;A href="http://code.msdn.microsoft.com/Project/ProjectDirectory.aspx?TagName=Hotfix,tfs" target=_blank mce_href="http://code.msdn.microsoft.com/Project/ProjectDirectory.aspx?TagName=Hotfix,tfs"&gt;http://code.msdn.microsoft.com/Project/ProjectDirectory.aspx?TagName=Hotfix,tfs&lt;/A&gt;. Others are reported and explained on random blog entries or the very helpful forums at &lt;A href="http://forums.microsoft.com/MSDN" target=_blank mce_href="http://forums.microsoft.com/MSDN"&gt;http://forums.microsoft.com/MSDN&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Q: &lt;/STRONG&gt;How can I change the TFSWarehouse update period from the default of 60 minutes? &lt;BR&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; This can be changed by running a web service command on the TFS application tier and specifying the number of seconds. Refer to: &lt;A href="http://msdn.microsoft.com/en-us/library/ms244694(VS.80).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms244694(VS.80).aspx"&gt;http://msdn.microsoft.com/en-us/library/ms244694(VS.80).aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Q:&lt;/STRONG&gt; Can’t use reports in Team Explorer because I have a red X Reports folder icon. &lt;BR&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; This is often because of security settings, proxy servers, firewalls, host files, and security updates. &lt;A href="http://teamsystemrocks.com/blogs/mickey_gousset" target=_blank mce_href="http://teamsystemrocks.com/blogs/mickey_gousset"&gt;Mickey Gousset&lt;/A&gt; wrote a good blog entry regarding this issue. &lt;A href="http://teamsystemrocks.com/blogs/mickey_gousset/archive/2007/01/17/1312.aspx#comments" target=_blank mce_href="http://teamsystemrocks.com/blogs/mickey_gousset/archive/2007/01/17/1312.aspx#comments"&gt;http://teamsystemrocks.com/blogs/mickey_gousset/archive/2007/01/17/1312.aspx#comments&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Q:&lt;/STRONG&gt; What can I do if I my OLAP cube becomes corrupted or deleted? &lt;BR&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; Run the "SetupWarehouse.exe" utility with the –o option to only rebuild the cube. Then on the application tier, run the web service command, &lt;A href="http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx?op=Run" target=_blank mce_href="http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx?op=Run"&gt;http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx?op=Run&lt;/A&gt;. Then on the application tier, run the web service command, &lt;A href="http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx?op=GetWarehouseStatus" target=_blank mce_href="http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx?op=GetWarehouseStatus"&gt;http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx?op=GetWarehouseStatus&lt;/A&gt; until the status returned is “Idle”.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Q:&lt;/STRONG&gt; Where is the project code churn reported? &lt;BR&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; The quality indicators reports to show the overall software quality. Code coverage can reported separately but is best used in a report that also contains related data such as code coverage, test results, and active bugs. &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Q:&lt;/STRONG&gt; Physically, what is a cube? &lt;BR&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; A set of metadata that uses a relational data store such as TFSWarehouse. When multi-dimensional data is requested, the SQL Server Analysis Server (SSAS) will read the data from the store (the TFSWarehouse database), perform analysis on it, and return it to the requester.&amp;nbsp; The retrieved data is cached and when not used after a period is discarded.&amp;nbsp; The metadata lives on the data tier in the SQL OLAP data directory such as "C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\Data".&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Q:&lt;/STRONG&gt; I specified an incorrect reporting type for a field. What can I do to change it? &lt;BR&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; Once the reportable attribute is specified to other than none and it’s used once, that is it. The simplest way is to create and use a new field with the correct report type. An alternative is to create a custom report or data file with the workitem id and the field value. Remove the field using WITField.exe to remove the field. Perform the steps to rebuild the data warehouse and the cube. Add the field using the correct reporting type. The original values can be manually entered in the workitems or a integration tool can be written to set the values.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Q: &lt;/STRONG&gt;How can I seamlessly implement my own integration into the data warehouse such as extra business intelligence metrics? &lt;BR&gt;&lt;STRONG&gt;A: &lt;/STRONG&gt;The data warehouse is extensible so a managed DLL can be added to the application tier’s adapters to perform ETL operations to the data warehouse at the same intervals wherever it may be located. This provides the data in the data warehouse and the TFS Data Warehouse cube can be extended or another cube created for enhanced reporting . &lt;A href="http://msdn.microsoft.com/en-us/library/bb286956(VS.80).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/bb286956(VS.80).aspx"&gt;http://msdn.microsoft.com/en-us/library/bb286956(VS.80).aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;What I didn't mention is the great caching features of Microsoft's SQL Server Analysis Services for the OLAP cube when it reads from the data warehouse.&amp;nbsp; For more understanding on that topic, refer to the Microsoft webcast titled &lt;A href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;amp;Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22ID%22+Value%3d%221032309312%22%2f%5e%7earg+Name%3d%22ProviderID%22+Value%3d%22A6B43178-497C-4225-BA42-DF595171F04C%22%2f%5e%7earg+Name%3d%22lang%22+Value%3d%22en%22%2f%5e%7earg+Name%3d%22cr%22+Value%3d%22US%22%2f%5e%7esParams%5e%7e%2fsParams%5e%7e%2fCMTYDataSvcParams%5e" target=_blank mce_href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;amp;Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22ID%22+Value%3d%221032309312%22%2f%5e%7earg+Name%3d%22ProviderID%22+Value%3d%22A6B43178-497C-4225-BA42-DF595171F04C%22%2f%5e%7earg+Name%3d%22lang%22+Value%3d%22en%22%2f%5e%7earg+Name%3d%22cr%22+Value%3d%22US%22%2f%5e%7esParams%5e%7e%2fsParams%5e%7e%2fCMTYDataSvcParams%5e"&gt;"TechNet Webcast: Real-Time Business Intelligence with SQL Server 2005 Analysis Services"&lt;/A&gt;&amp;nbsp;as well as other great webcasts and books.&lt;/P&gt;
&lt;P&gt;I hope this helps others appreciate the TFS Reporting architecture.&lt;/P&gt;
&lt;P&gt;-Vince&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6247664" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Team+System/default.aspx">Team System</category></item><item><title>Silverlight 2.0 Webcasts at ISV Innovation</title><link>http://weblogs.asp.net/vblasberg/archive/2008/05/20/silverlight-2-0-webcasts-at-isv-innovation.aspx</link><pubDate>Tue, 20 May 2008 17:43:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6204824</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vblasberg/rsscomments.aspx?PostID=6204824</wfw:commentRss><comments>http://weblogs.asp.net/vblasberg/archive/2008/05/20/silverlight-2-0-webcasts-at-isv-innovation.aspx#comments</comments><description>&lt;P&gt;Bill Lodin is presenting a very informative 4-part webcast series on Silverlight 2.0 (beta 1).&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A title=http://www.isvinnovation.com/Directory/Description.aspx?EventId=424 href="http://www.isvinnovation.com/Directory/Description.aspx?EventId=424" mce_href="http://www.isvinnovation.com/Directory/Description.aspx?EventId=424"&gt;http://www.isvinnovation.com/Directory/Description.aspx?EventId=424&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Microsoft Silverlight 2.0&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;BR&gt;Part: 1 - Technical Drill-down &lt;BR&gt;Part: 2 - The UI Framework &lt;BR&gt;Part: 3 - Networking Support &lt;BR&gt;Part: 4 - Advanced Topics &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;We can just pretend that he dropped by for lunch to show the new features that will RTM later this year.&lt;/P&gt;
&lt;P&gt;-Vince&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6204824" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/vblasberg/archive/tags/.Net/default.aspx">.Net</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/CLR/default.aspx">CLR</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>How To: Unit Test a T-SQL Trigger with VSTS Database Edition</title><link>http://weblogs.asp.net/vblasberg/archive/2008/03/10/how-to-unit-test-a-t-sql-trigger-with-vsts-database-edition.aspx</link><pubDate>Mon, 10 Mar 2008 22:51:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5946759</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vblasberg/rsscomments.aspx?PostID=5946759</wfw:commentRss><comments>http://weblogs.asp.net/vblasberg/archive/2008/03/10/how-to-unit-test-a-t-sql-trigger-with-vsts-database-edition.aspx#comments</comments><description>&lt;DIV class=Section1&gt;
&lt;P mce_keep="true"&gt;In Visual Studio Team System Database Edition, three types of functionality are unit tested; Stored Procedures, Functions, and Triggers.&amp;nbsp; It’s not so obvious how to test a trigger and at this time there are not many examples.&amp;nbsp; This is probably because there are so many different testing needs.&amp;nbsp; Testing the trigger is very similar to the more obvious calls to stored procedures and functions.&amp;nbsp; This example shows how a trigger can be unit tested using the &lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;RAISERROR &lt;/SPAN&gt;method to cause a test harness failure.&amp;nbsp; Two other methods exist to perform unit testing failures for those complicated tests.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;1.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/ms182530.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms182530.aspx"&gt;The Assert classes&lt;/A&gt; that we can use in the code-behind test classes, or &lt;/P&gt;
&lt;P&gt;2.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Test conditions in the Database Unit Test Designer.&amp;nbsp; These are &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/aa833423.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/aa833423.aspx"&gt;Microsoft provided test conditions&lt;/A&gt; or &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/aa833409.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/aa833409.aspx"&gt;custom written test conditions&lt;/A&gt; that check the test results and either pass or fail.&lt;/P&gt;
&lt;P&gt;In the following example, we simply count the number of records before and after the table action that causes a trigger.&amp;nbsp; We can now get the Red-Yellow-Green lights for TDD.&amp;nbsp; We might want to split this into three different tests and add transaction support.&amp;nbsp; Transaction support is added in either the T-SQL unit test as listed below or we can add it in the &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/aa833153.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/aa833153.aspx"&gt;Visual Studio C# or VB.NET generated test code&lt;/A&gt;.&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 1pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1.5pt solid"&gt;
&lt;H2 style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;&lt;BR&gt;The T-SQL Unit Test&lt;/H2&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;-- Database unit test for dbo.trg_CopyToHistoricalPrimaryRecords&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;--&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;DECLARE &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT color=#000000&gt;@beforeCount &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;INT,&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT color=#000000&gt;@afterCount &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;INT,&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@PrimaryField1 &lt;SPAN style="COLOR: blue"&gt;INT&lt;/SPAN&gt;,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @PrimaryField2 &lt;SPAN style="COLOR: blue"&gt;UNIQUEIDENTIFIER&lt;/SPAN&gt;,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @PrimaryField3 &lt;SPAN style="COLOR: blue"&gt;BIT&lt;/SPAN&gt;,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @PrimaryTableId &lt;SPAN style="COLOR: blue"&gt;INT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;SELECT &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@PrimaryField1 = 0,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @PrimaryField2 = &lt;SPAN style="COLOR: blue"&gt;NULL&lt;/SPAN&gt;,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @PrimaryField3 = 0&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;-- &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;INSERT Trigger Test&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;SET &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@beforeCount = (&lt;SPAN style="COLOR: blue"&gt;SELECT COUNT&lt;/SPAN&gt;(*) &lt;SPAN style="COLOR: blue"&gt;FROM &lt;/SPAN&gt;HistoricalPrimaryRecords);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;INSERT INTO &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;[dbo].[PrimaryTable] ( [PrimaryField1], [PrimaryField2], [PrimaryField3] )&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;VALUES&lt;/SPAN&gt;( @PrimaryField1, @PrimaryField2, @PrimaryField3 );&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;SET &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@PrimaryTableId = &lt;SPAN style="COLOR: blue"&gt;SCOPE_IDENTITY&lt;/SPAN&gt;();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;SET &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@afterCount = (&lt;SPAN style="COLOR: blue"&gt;SELECT COUNT&lt;/SPAN&gt;(*) &lt;SPAN style="COLOR: blue"&gt;FROM &lt;/SPAN&gt;HistoricalPrimaryRecords);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;IF NOT &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@afterCount = @beforeCount + 1&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;RAISERROR &lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;'TRIGGER INSERT ERROR: trg_CopyToHistoricalPrimaryRecords did not insert a record in the historical table.'&lt;/SPAN&gt;, 1, 1);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;--- &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;UPDATE Trigger Test&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;SET &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@beforeCount = (&lt;SPAN style="COLOR: blue"&gt;SELECT COUNT&lt;/SPAN&gt;(*) &lt;SPAN style="COLOR: blue"&gt;FROM &lt;/SPAN&gt;HistoricalPrimaryRecords);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;UPDATE &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;[dbo].[PrimaryTable]&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;SET&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [PrimaryField1] = @PrimaryTableId&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [PrimaryTableId] = @PrimaryTableId&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;SET &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@afterCount = (&lt;SPAN style="COLOR: blue"&gt;SELECT COUNT&lt;/SPAN&gt;(*) &lt;SPAN style="COLOR: blue"&gt;FROM &lt;/SPAN&gt;HistoricalPrimaryRecords);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;IF NOT &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@afterCount = @beforeCount + 1&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;RAISERROR &lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;'TRIGGER UPDATE ERROR: trg_CopyToHistoricalPrimaryRecords did not insert a record in the historical table.'&lt;/SPAN&gt;, 1, 1);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;--- &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;DELETE Trigger Test&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;SET &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@beforeCount = (&lt;SPAN style="COLOR: blue"&gt;SELECT COUNT&lt;/SPAN&gt;(*) &lt;SPAN style="COLOR: blue"&gt;FROM &lt;/SPAN&gt;HistoricalPrimaryRecords);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;DELETE FROM &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;[dbo].[PrimaryTable]&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; [PrimaryTableId] = @PrimaryTableId&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;SET &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@afterCount = (&lt;SPAN style="COLOR: blue"&gt;SELECT COUNT&lt;/SPAN&gt;(*) &lt;SPAN style="COLOR: blue"&gt;FROM &lt;/SPAN&gt;HistoricalPrimaryRecords);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;IF NOT &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@afterCount = @beforeCount + 1&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;RAISERROR &lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;'TRIGGER DELETE ERROR: trg_CopyToHistoricalPrimaryRecords did not insert a record in the historical table.'&lt;/SPAN&gt;, 1, 1);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;-- PRINT '@beforeCount: ' + Cast(@beforeCount as varchar(10));&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;-- PRINT '@afterCount: ' + Cast(@afterCount as varchar(10));&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 1pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1.5pt solid"&gt;
&lt;H2 style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none"&gt;The Trigger&lt;/H2&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;ALTER TRIGGER &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;[dbo].[trg_CopyToHistoricalPrimaryRecords] &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;ON &lt;/SPAN&gt;[dbo].[PrimaryTable] &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;AFTER INSERT&lt;/SPAN&gt;,&lt;SPAN style="COLOR: blue"&gt;DELETE&lt;/SPAN&gt;,&lt;SPAN style="COLOR: blue"&gt;UPDATE&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;AS &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;BEGIN&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;SET NOCOUNT ON&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;-- UPDATE, DELETE: Capture all changes that occurred from an Insert and Delete.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;INSERT INTO &lt;/SPAN&gt;[PrimaryForeignKeys].[dbo].[HistoricalPrimaryRecords]&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( PrimaryTableId&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , PrimaryField1&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , PrimaryField2&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , PrimaryField3)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&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 style="COLOR: blue"&gt;SELECT &lt;/SPAN&gt;d.PrimaryTableId&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , d.PrimaryField1&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , d.PrimaryField2&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , d.PrimaryField3&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;FROM &lt;/SPAN&gt;deleted d);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;-- &lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: green"&gt;INSERT: Capture all newly inserted records that were not from Inserts and Deletes.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;IF &lt;/SPAN&gt;(0 = (&lt;SPAN style="COLOR: blue"&gt;SELECT COUNT&lt;/SPAN&gt;(*) &lt;SPAN style="COLOR: blue"&gt;FROM &lt;/SPAN&gt;deleted))&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;BEGIN&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;INSERT INTO &lt;/SPAN&gt;[PrimaryForeignKeys].[dbo].[HistoricalPrimaryRecords]&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( PrimaryTableId&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , PrimaryField1&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , PrimaryField2&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , PrimaryField3)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&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 style="COLOR: blue"&gt;SELECT &lt;/SPAN&gt;i.PrimaryTableId&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , i.PrimaryField1&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , i.PrimaryField2&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , i.PrimaryField3&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;FROM &lt;/SPAN&gt;inserted i);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;END&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;END&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-LEFT: 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5946759" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/vblasberg/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/SQL/default.aspx">SQL</category></item><item><title>The hierarchyid Data Type</title><link>http://weblogs.asp.net/vblasberg/archive/2008/03/07/the-hierarchyid-data-type.aspx</link><pubDate>Fri, 07 Mar 2008 06:02:45 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5931165</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vblasberg/rsscomments.aspx?PostID=5931165</wfw:commentRss><comments>http://weblogs.asp.net/vblasberg/archive/2008/03/07/the-hierarchyid-data-type.aspx#comments</comments><description>&lt;p&gt;Last night&amp;#8217;s &lt;a href="http://nddnug.net/" target="_blank"&gt;North Dallas .Net User Group&lt;/a&gt; meeting was really good. &lt;a href="http://sqlblog.com" target="_blank"&gt;Peter Debetta&lt;/a&gt; presented &lt;a href="http://msdn2.microsoft.com/en-us/library/bb500435(SQL.100).aspx" target="_blank"&gt;new features&lt;/a&gt; on SQL 2008. All of it was really interesting and will eventually be useful. I wouldn&amp;#8217;t want to rehash all of the Microsoft documents and other blog information, but I will say that there are some useful features on the way.&lt;/p&gt;  &lt;p&gt;The one thing that I appreciated but felt a little pang of irritation was the new &lt;a href="http://msdn2.microsoft.com/en-us/library/bb677290(SQL.100).aspx" target="_blank"&gt;&amp;#8220;hierarchyId&amp;#8221; data type&lt;/a&gt;. I spent many a night trying to get this perfect in a past project as did Peter. This data type holds the relationship of the contained data in relation to its parent with easy access and update to Ancestors and Descendents. The one downside is that this new data type only manages trees of data and not a recursive matrix.&lt;/p&gt;  &lt;p&gt;I&amp;#8217;ll jump on this feature next time I have to utilize an optimized tree of data using stored procedures. The other memorable feature is the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb510625(SQL.100).aspx" target="_blank"&gt;Merge function&lt;/a&gt; that makes synchronizing records more natural.&amp;#160; It's a bit limiting but it works.&lt;/p&gt;  &lt;p&gt;So SQL 2008 is scheduled for release third quarter, but we know that companies are slow to adopt, even with all of the great features and the huge beta testers out there. At least sometimes we can start projects with the express versions and use these features to prove the product before production databases get converted.&lt;/p&gt;  &lt;p&gt;We can read more about the hierarchyid data type at:    &lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb677290(SQL.100).aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb677290(SQL.100).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;-Vince&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5931165" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/vblasberg/archive/tags/User+Groups/default.aspx">User Groups</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/SQL/default.aspx">SQL</category></item><item><title>VSTS Testing - How to Get a Web Test Form Field for URL Subsequent Requests</title><link>http://weblogs.asp.net/vblasberg/archive/2007/09/07/vsts-testing-how-to-get-a-web-test-form-field-for-url-subsequent-requests.aspx</link><pubDate>Fri, 07 Sep 2007 05:23:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:3773844</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vblasberg/rsscomments.aspx?PostID=3773844</wfw:commentRss><comments>http://weblogs.asp.net/vblasberg/archive/2007/09/07/vsts-testing-how-to-get-a-web-test-form-field-for-url-subsequent-requests.aspx#comments</comments><description>&lt;P&gt;There are several ways to get an id from a requested form and set it as a request parameter on a subsequent web request. Remember that the querystring parameters are used on the form request before the form is retrieved and the extraction rules occur after the form has been received. This is all to ensure that the response to a formatted request was as expected. &lt;/P&gt;
&lt;P&gt;Option 1: Add a class that inherits from ExtractionRule and override the Extract method. This method is often required for complex logic but it's more code to maintain. We can avoid this roll-our-own method in simple circumstances. &lt;BR&gt;For a good reference, refer to Josh Christie's blog: &lt;A href="http://blogs.msdn.com/joshch/archive/2005/11/17/494164.aspx" mce_href="http://blogs.msdn.com/joshch/archive/2005/11/17/494164.aspx"&gt;http://blogs.msdn.com/joshch/archive/2005/11/17/494164.aspx&lt;/A&gt;. &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Option 2: Create, Set and Use a Web Test Context Parameter.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;A href="http://weblogs.asp.net/blogs/vblasberg/BlogPic1.png"&gt;&lt;IMG src="http://weblogs.asp.net/blogs/vblasberg/BlogPic1.png" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Right-click the top node of the web test or its global "Context Parameters" context menu. Add a parameter name such as QueryStringPersonId and an initial value. If I expect to never have a value such as -2, then that is what I chose for my default in this example. This way if we ever see a -2 then the tests can report the error, create a TFS workitem or perform another task. It also makes it obvious when debugging the web test. &lt;/P&gt;
&lt;P&gt;Now the variable can be set and retrieved throughout the test. The value should also be available for coded tests as described previously because it's in the test context. The value can be set from a specific form field extraction.&lt;BR&gt;&lt;BR&gt;&lt;A href="http://weblogs.asp.net/blogs/vblasberg/BlogPic2.png"&gt;&lt;IMG src="http://weblogs.asp.net/blogs/vblasberg/BlogPic2.png" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The context parameter can now be used in subsequent Query Strings. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://weblogs.asp.net/blogs/vblasberg/BlogPic3.png"&gt;&lt;IMG src="http://weblogs.asp.net/blogs/vblasberg/BlogPic3.png" border=0&gt;&lt;/A&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;-VinceB &lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=3773844" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/vblasberg/archive/tags/VSTS/default.aspx">VSTS</category></item><item><title>On The Blog Again</title><link>http://weblogs.asp.net/vblasberg/archive/2007/06/27/on-the-blog-again.aspx</link><pubDate>Wed, 27 Jun 2007 16:31:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:2958484</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face="Times New Roman" size=3&gt;On the blog again…I just can’t wait to get on the blog again…(Willie Nelson...)&lt;/FONT&gt;&lt;/P&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face="Times New Roman" size=3&gt;I’ve been BUSY!!!&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The lack of blogging over the last few months was the look of my head down getting work done.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’ve also been working with some friends on their projects to keep my skills sharp.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’ve been through so many things in the last year.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Most of it was product research in preparation for an enterprise architecture and a portal.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Here are a few things that I’ve spent my life on:&lt;/FONT&gt;&lt;/P&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt; 
&lt;UL style="MARGIN-TOP: 0in" type=square&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in"&gt;&lt;FONT face="Times New Roman" size=3&gt;More work with load balanced systems and web farms&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in"&gt;&lt;FONT face="Times New Roman" size=3&gt;Consultant company research&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in"&gt;&lt;FONT face="Times New Roman" size=3&gt;Portal and Mashup Options&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in"&gt;&lt;FONT face="Times New Roman" size=3&gt;Evaluations of SalesForce.com, Microsoft CRM, CMS systems, and payment systems&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in"&gt;&lt;FONT face="Times New Roman" size=3&gt;Evaluations of Workflow Engines and Biztalk Server&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face="Times New Roman" size=3&gt;My personal projects also have kept me extremely busy.&lt;/FONT&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in" type=square&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;FONT face="Times New Roman" size=3&gt;&lt;A class="" title=ipDisplays href="http://ipdisplays.com/" mce_href="http://ipdisplays.com/"&gt;ipDisplays&lt;/A&gt; – Real time IP based displays&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;FONT face="Times New Roman" size=3&gt;And finally I created a few more DVDs for family and friends.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;A big one was a slideshow of a friend’s family through the 50s, 60s, and 70s.&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face="Times New Roman" size=3&gt;The downside is that I feel that it’s time for me to leave ABSG.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Sometimes we just know that we can only grow by moving out (like my 19 year old son). &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;I investigated and brought in a great consulting company and they are so good that I’m obsolete, redundant, or something like that.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In any case, I’m not as effective as I want to be.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’m very action oriented so I want to be in the game more than watching the game.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I still love getting under the hood but really appreciate looking at the forest more often than the trees.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I have higher standards to what I should accomplish in a year of my life for a company so it’s time to get out and make more of an impact.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;ABSG is a seriously great company.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If would recommend it to anyone who’s interested.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;All of these groups are great to work with.&lt;/FONT&gt;&lt;/P&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face="Times New Roman" size=3&gt;It’s not easy to leave where you know that you could just sit and work for years to come.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Thank you ABSG - one of the best companies that I’ve ever worked for.&lt;/FONT&gt;&lt;/P&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face="Times New Roman" size=3&gt;-Vince&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=2958484" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category></item><item><title>VSLive! Dallas 2006 - Day 1</title><link>http://weblogs.asp.net/vblasberg/archive/2006/11/15/VSLive_2100_-Dallas-2006-_2D00_-Day-1.aspx</link><pubDate>Wed, 15 Nov 2006 21:50:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:934467</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vblasberg/rsscomments.aspx?PostID=934467</wfw:commentRss><comments>http://weblogs.asp.net/vblasberg/archive/2006/11/15/VSLive_2100_-Dallas-2006-_2D00_-Day-1.aspx#comments</comments><description>&lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial"&gt;Day one of VSLive! Dallas 2006 came and went.&lt;span&gt;&amp;nbsp; &lt;/span&gt;It was an all-day presentation by Rocky Lhotka covering his CSLA framework.&lt;span&gt;&amp;nbsp; &lt;/span&gt;I used it a few years ago and was not nearly as impressed as now.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Rocky has evolved this framework to be extremely flexible, well-designed, and still free.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Add that to a day of training at DunnTraining.com to get&amp;nbsp;a serious development jumpstart.&amp;nbsp; Think about it... a top consultant&amp;#39;s help at the price of a book.&amp;nbsp; Beat that!&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial"&gt;Now I&amp;rsquo;m off to playiwith this newest version with a little CodeSmith help&amp;hellip; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial"&gt;&lt;a href="http://lhotka.net/"&gt;&lt;font color="#800080"&gt;http://lhotka.net&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial"&gt;&lt;a href="http://www.dunntraining.com/CSLATraining.htm"&gt;&lt;font color="#800080"&gt;http://www.dunntraining.com/CSLATraining.htm&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font face="Arial" size="2"&gt;&lt;span style="font-size: 10pt; font-family: Arial"&gt;-VinceB&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=934467" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/vblasberg/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/.Net/default.aspx">.Net</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Dallas+C_2300_+SIG/default.aspx">Dallas C# SIG</category></item><item><title>Fixed: Disk Drive Suddenly Slows Down</title><link>http://weblogs.asp.net/vblasberg/archive/2006/10/21/Fixed_3A00_-Disk-Drive-Suddenly-Slows-Down.aspx</link><pubDate>Sat, 21 Oct 2006 08:43:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:700149</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vblasberg/rsscomments.aspx?PostID=700149</wfw:commentRss><comments>http://weblogs.asp.net/vblasberg/archive/2006/10/21/Fixed_3A00_-Disk-Drive-Suddenly-Slows-Down.aspx#comments</comments><description>&lt;p&gt;I bought a really&amp;nbsp;nice AMD 64&amp;nbsp;X2 4400+ Dual Core over 6 months ago.&amp;nbsp;&amp;nbsp;We all need one, but then if we don&amp;#39;t have 64 bit software...&lt;/p&gt;&lt;p&gt;It&amp;#39;s locked up about 5 times since I bought it.&amp;nbsp; The subsequent reboots&amp;nbsp;take about 10 minutes to get the login screen.&amp;nbsp; So basically every reboot is that long and the hard drive thrashes&amp;nbsp;to do even the simplest tasks.&amp;nbsp; I spend many&amp;nbsp;long nights trying to figure it out.&amp;nbsp; I did many things like run MSConfig for logging driver loading&amp;nbsp;to analyze, defragmented the drive for a whole day because the drive was slow, run a before and after registry file diff, and searched the internet&amp;nbsp;until 3am for several nights in a row.&amp;nbsp; The &amp;quot;quick&amp;quot; fix was to reinstall the operating system and all my development and database software because I wanted to use the computer before it becomes obsolete.&amp;nbsp; Tonight it paid off.&lt;/p&gt;&lt;p&gt;I think this may happen more to people as time goes on.&amp;nbsp;&amp;nbsp;Several times the lockup and reverting to slowness occurred while I was remote connected to this computer.&amp;nbsp; The root problem is that the Windows operating system will step down the Hard Drive and CD drive speed if it gets CRC or timeout errors.&amp;nbsp; It then converts it from DMA to PIO Mode.&amp;nbsp; There might be improvements in XP SP2.&amp;nbsp; So in case anyone else encounters this, here&amp;#39;s the answer:&lt;/p&gt;&lt;p&gt;&lt;a href="http://support.microsoft.com/kb/817472/"&gt;http://support.microsoft.com/kb/817472/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;There are a few others who&amp;nbsp;explain this well:&lt;/p&gt;&lt;p&gt;&lt;a href="http://users.bigpond.net.au/ninjaduck/itserviceduck/udma_fix/#Disclaimer"&gt;http://users.bigpond.net.au/ninjaduck/itserviceduck/udma_fix/#Disclaimer&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.michna.com/kb/WxDMA.htm"&gt;http://www.michna.com/kb/WxDMA.htm&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Hopefully helping others,&lt;br /&gt;-Vince&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=700149" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category></item><item><title>Dallas C# SIG Happenings</title><link>http://weblogs.asp.net/vblasberg/archive/2006/10/01/Dallas-C_2300_-SIG-Happenings.aspx</link><pubDate>Sun, 01 Oct 2006 21:12:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:602955</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vblasberg/rsscomments.aspx?PostID=602955</wfw:commentRss><comments>http://weblogs.asp.net/vblasberg/archive/2006/10/01/Dallas-C_2300_-SIG-Happenings.aspx#comments</comments><description>&lt;p&gt;I just published&amp;nbsp;the&amp;nbsp;monthly&amp;nbsp;&lt;strong&gt;&lt;em&gt;&lt;a href="http://www.dallas-csharp-sig.com" target="_blank"&gt;Dallas C# SIG&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt; newsletter.&amp;nbsp; Check it out if you want to know what&amp;#39;s going on at the group.&amp;nbsp; We have some great meetings ahead.&amp;nbsp; &lt;/p&gt;&lt;p&gt;If you&amp;#39;re in Dallas for one of the meetings, drop by for a few hours of C# and .Net.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.dallas-csharp-sig.com/Newsletters/csharpsig%20newsletter%209-30-06.txt"&gt;http://www.dallas-csharp-sig.com/Newsletters/csharpsig%20newsletter%209-30-06.txt&lt;/a&gt;&lt;/p&gt;&lt;p&gt;-Vince&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=602955" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/vblasberg/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/User+Groups/default.aspx">User Groups</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Dallas+C_2300_+SIG/default.aspx">Dallas C# SIG</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>Tulsa Techfest - October 14th</title><link>http://weblogs.asp.net/vblasberg/archive/2006/10/01/Tulsa-Techfest-_2D00_-October-14th.aspx</link><pubDate>Sun, 01 Oct 2006 20:44:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:602906</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vblasberg/rsscomments.aspx?PostID=602906</wfw:commentRss><comments>http://weblogs.asp.net/vblasberg/archive/2006/10/01/Tulsa-Techfest-_2D00_-October-14th.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Tulsa Techfest&lt;/strong&gt;!!!&lt;/p&gt;&lt;p&gt;If you&amp;#39;re in Tulsa Oklahoma&amp;nbsp;or can get to Tulsa on Saturday, October 14th, look for the Tulsa Techfest.&amp;nbsp; It&amp;#39;s a free,&amp;nbsp;all-day training event put on by developers for developers.&amp;nbsp; It&amp;#39;s like a code camp stepped up a notch.&amp;nbsp; I&amp;#39;ll be presenting the &amp;quot;CLR Internals&amp;quot; talk that I&amp;#39;m very familiar with by now.&amp;nbsp; It&amp;#39;s my favorite topic, so why not?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://tulsatechfest.com/"&gt;http://tulsatechfest.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;-Vince&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=602906" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Code+Camp/default.aspx">Code Camp</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/CLR/default.aspx">CLR</category></item><item><title>Tip: Consistent Blogging</title><link>http://weblogs.asp.net/vblasberg/archive/2006/09/30/Tip_3A00_-Consistent-Blogging.aspx</link><pubDate>Sat, 30 Sep 2006 23:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:599809</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vblasberg/rsscomments.aspx?PostID=599809</wfw:commentRss><comments>http://weblogs.asp.net/vblasberg/archive/2006/09/30/Tip_3A00_-Consistent-Blogging.aspx#comments</comments><description>&lt;p&gt;I have a small tip for those that fall of the blogging wagon.&amp;nbsp; If we keep a link to a Word document on our desktop or QuickLink toolbar, we just have to click it, type some things that people would be interested in, then close it.&amp;nbsp; Another blog document can be kept on the PDA when disconnected from the laptop or desktop.&amp;nbsp; The document(s) can then be reviewed later in the day when we have time to formulate our thoughts, apply&amp;nbsp;the ever important spell checker, then send it out to those who may gain from it.&amp;nbsp; I&amp;#39;ve&amp;nbsp;used&amp;nbsp;this technique before but fell out of the habit.&amp;nbsp; Now the problem is that I have at least 4 or 5 blog posts but they are incomplete.&amp;nbsp; So it&amp;#39;s time management that&amp;#39;s needed to finish those blog entries.&lt;/p&gt;&lt;p&gt;Blogging isn&amp;#39;t everything, but it does have its importance.&amp;nbsp; The biggest advantage that I know of blogging is teamwork, so what other techniques are out there to keep&amp;nbsp;meaningful blogging momentum going?&lt;/p&gt;&lt;p&gt;-Vince&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=599809" width="1" height="1"&gt;</description></item><item><title>Dallas Code Camp - June 24th, 2006</title><link>http://weblogs.asp.net/vblasberg/archive/2006/06/21/Dallas-Code-Camp---2006---This-Weekend.aspx</link><pubDate>Wed, 21 Jun 2006 05:23:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:454149</guid><dc:creator>vblasberg</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/vblasberg/rsscomments.aspx?PostID=454149</wfw:commentRss><comments>http://weblogs.asp.net/vblasberg/archive/2006/06/21/Dallas-Code-Camp---2006---This-Weekend.aspx#comments</comments><description>&lt;FONT size=2&gt;
&lt;P&gt;&lt;FONT size=3&gt;If you are in Dallas this weekend, be sure to register and attend the &lt;A href="http://DallasCodeCamp.com"&gt;Dallas Code Camp&lt;/A&gt; this Saturday,&amp;nbsp;June 24th.&amp;nbsp; This&amp;nbsp;is a free, all-day training event for developers by developers. The schedule will be posted in the next few hours.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;Please sign up at &lt;/FONT&gt;&lt;A href="http://DallasCodeCamp.com"&gt;&lt;FONT size=3&gt;http://DallasCodeCamp.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&amp;nbsp;if you can attend this event.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=454149" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/vblasberg/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/.Net/default.aspx">.Net</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Dallas+C_2300_+SIG/default.aspx">Dallas C# SIG</category><category domain="http://weblogs.asp.net/vblasberg/archive/tags/Code+Camp/default.aspx">Code Camp</category></item></channel></rss>