<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tag 'CodePlex'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=CodePlex&amp;orTags=0</link><description>Search results matching tag 'CodePlex'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Power Pivot SQL Agent Job Monitor</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2013/01/07/power-pivot-sql-agent-job-monitor.aspx</link><pubDate>Mon, 07 Jan 2013 21:23:29 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:47058</guid><dc:creator>manowar</dc:creator><description>&lt;p&gt;In the last days I needed a quick and efficient way to monitor the performance of a job and of each step over time. There’s a lot of interesting data in MSDB database and the various &lt;em&gt;sysjob&lt;/em&gt; tables, but the stored data is not really easy to use outside the Management Studio. Date and Time are not stored as date/time data type, there is no easy way to correlate the performance of a step with the related job execution (for example is not that easy to return all the steps of a job executed, say, yesterday at 10:00).&lt;/p&gt;  &lt;p&gt;So I decided to write some views to make the querying easier and then the next move was to create a Tabular Model with Power Pivot on Excel to make also analysis easier.&lt;/p&gt;  &lt;p&gt;Since this is a somehow recurring task that I find myself doing during my job – not often, but when I have to do it now I have something much more powerful in my hands – I decided to put it also con CodePlex so that that little work can be shared with the community.&lt;/p&gt;  &lt;p&gt;You can find the scripts with the objects (3 UDFs and 4 Views) that must be created inside MSDB and the Power Pivot Excel 2010 model here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://jobmonitor.codeplex.com/" href="http://jobmonitor.codeplex.com/"&gt;http://jobmonitor.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;</description></item><item><title>SSIS MSBuild task now included in MSBuild Extension Pack</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/09/14/ssis-msbuild-task-now-included-in-msbuild-extension-pack.aspx</link><pubDate>Tue, 14 Sep 2010 21:11:55 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:28772</guid><dc:creator>jamiet</dc:creator><description>&lt;p&gt;The information in this blog post may be of interest to anyone out there that is using Continuous Integration with msbuild in order to build/deploy a project that includes SSIS packages.&lt;/p&gt;  &lt;p&gt;The MSBuild Extension Pack at &lt;a href="http://msbuildextensionpack.codeplex.com/"&gt;http://msbuildextensionpack.codeplex.com/&lt;/a&gt; now includes an MSBuild task that will build an SSIS project, the output from which is a .deploymentmanifest file that can be used in concert with the SSIS deployment utility.&lt;/p&gt;  &lt;p&gt;Building a SSIS project using the SSIS MSBuild Task essentially has the same effect as right-clicking on a SSIS project and selecting Build with CreateDeploymentUtility=True (i.e. produces a .deploymentmanifest file):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_7FED67F0.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="build ssis project" border="0" alt="build ssis project" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_48C3D9F7.png" width="304" height="367" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_7B473769.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SSIS Deployemnt Utility" border="0" alt="SSIS Deployemnt Utility" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_03E78FF6.png" width="653" height="339" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The advantage of using the MSBuild task is of course that you can now do it in an MSBuild script, none of this manual mouse-clicking required thank you very much!&lt;/p&gt;  &lt;p&gt;The SSIS MSBuild task was previously available in the SSIS community samples project at &lt;a href="http://sqlsrvintegrationsrv.codeplex.com"&gt;http://sqlsrvintegrationsrv.codeplex.com&lt;/a&gt; but having it as part of the MSBuild Extension Pack is definitely advantageous as this is a very widely used set of utilities. The source code has been available in the MSBuild Extension pack since &lt;a href="http://msbuildextensionpack.codeplex.com/SourceControl/changeset/changes/54481" target="_blank"&gt;changeset 54481&lt;/a&gt; which was checked-in on 26th August 2010 and was included in the &lt;a href="http://msbuildextensionpack.codeplex.com/releases/view/46020" target="_blank"&gt;August 2010 Release&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Note that in order to deploy your packages after using the SSIS MSBuild task you will need to call the SSIS deployment utility and pass in the outputted .deploymentmanifest file. Information on doing that is decidedly thin on the ground so I’ll try and elucidate. The SSIS Deployment Utility is an executable that gets installed with SQL Server Integration Services workstation tools and is called dtsinstall.exe. You can call it on the command-line and pass in the path to a .deploymentmanifest file but as far as I can determine there is no way to do an unattended install (i.e. there is no way to tell dtsinstall.exe where to install the packages to, it simply opens up a GUI and prompts you for this information). This is a horribly antiquated method of deployment and I’m hunting around to see if there’s anything I’ve missed here – if you know any better please let me know.&lt;/p&gt;  &lt;p&gt;Hope this helps!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;</description></item><item><title>AutoAudit 1.10c </title><link>http://sqlblog.com/blogs/paul_nielsen/archive/2010/03/17/autoaudit-1-10c.aspx</link><pubDate>Thu, 18 Mar 2010 03:16:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:23510</guid><dc:creator>Paul Nielsen</dc:creator><description>&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 12pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;AutoAudit is a free SQL Server (2005, 2008) &lt;I&gt;Code-Gen&lt;/I&gt; utility that creates Audit Trail Triggers with:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;TEXT-INDENT:-0.25in;MARGIN:0.05in 0in 0.05in 30pt;VERTICAL-ALIGN:middle;mso-add-space:auto;mso-list:l0 level1 lfo2;" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:#30332d;FONT-SIZE:9.5pt;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;Created, Modified, and RowVersion (incrementing INT) columns to table &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;TEXT-INDENT:-0.25in;MARGIN:0.05in 0in 0.05in 30pt;VERTICAL-ALIGN:middle;mso-add-space:auto;mso-list:l0 level1 lfo2;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:#30332d;FONT-SIZE:9.5pt;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;Creates View to reconstruct deleted rows &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;TEXT-INDENT:-0.25in;MARGIN:0.05in 0in 0.05in 30pt;VERTICAL-ALIGN:middle;mso-add-space:auto;mso-list:l0 level1 lfo2;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:#30332d;FONT-SIZE:9.5pt;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;Creates UDF to reconstruct Row History &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;TEXT-INDENT:-0.25in;MARGIN:0.05in 0in 0.05in 30pt;VERTICAL-ALIGN:middle;mso-add-space:auto;mso-list:l0 level1 lfo2;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:#30332d;FONT-SIZE:9.5pt;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;Schema Audit Trigger to track schema changes &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;TEXT-INDENT:-0.25in;MARGIN:0.05in 0in 0.05in 30pt;VERTICAL-ALIGN:middle;mso-add-space:auto;mso-list:l0 level1 lfo2;" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:#30332d;FONT-SIZE:9.5pt;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;Re-code-gens triggers when Alter Table changes the table &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0.05in 0in;VERTICAL-ALIGN:middle;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0.05in 0in;VERTICAL-ALIGN:middle;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;Version 1.10c Adds:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;TEXT-INDENT:-0.25in;MARGIN:0.05in 0in 0.05in 30pt;VERTICAL-ALIGN:middle;mso-add-space:auto;mso-list:l0 level1 lfo2;" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:#30332d;FONT-SIZE:9.5pt;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;Createdby and ModifiedBy columns. Pass the user to the column and AutoAudit records that username instead of the Suser_Sname value – useful for apps that manage their own users and connect using a common service account. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;TEXT-INDENT:-0.25in;MARGIN:0.05in 0in 0.05in 30pt;VERTICAL-ALIGN:middle;mso-add-space:auto;mso-list:l0 level1 lfo2;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:#30332d;FONT-SIZE:9.5pt;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;Records user’s batch that caused the change event. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;TEXT-INDENT:-0.25in;MARGIN:0.05in 0in 0.05in 30pt;VERTICAL-ALIGN:middle;mso-add-space:auto;mso-list:l0 level1 lfo2;" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:#30332d;FONT-SIZE:9.5pt;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;Handles various data types better. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;TEXT-INDENT:-0.25in;MARGIN:0.05in 0in 0.05in 30pt;VERTICAL-ALIGN:middle;mso-add-space:auto;mso-list:l0 level1 lfo2;" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:#30332d;FONT-SIZE:9.5pt;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;Includes several small bug fixes.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;TEXT-INDENT:-0.25in;MARGIN:0.05in 0in 0.05in 30pt;VERTICAL-ALIGN:middle;mso-add-space:auto;mso-list:l0 level1 lfo2;" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;TEXT-INDENT:-0.25in;MARGIN:0.05in 0in 0.05in 12pt;VERTICAL-ALIGN:middle;mso-list:l1 level1 lfo1;tab-stops:list .5in;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Wingdings;COLOR:#30332d;FONT-SIZE:10pt;mso-bidi-font-family:Wingdings;mso-bidi-font-size:9.5pt;mso-fareast-font-family:Wingdings;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;IMG alt=* src="http://sqlblog.com/tiny_mce/jscripts/tiny_mce/PicExportError" width=10 height=10&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;CodePlex link: &lt;A href="http://autoaudit.codeplex.com/"&gt;http://autoaudit.codeplex.com/&lt;/A&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 10pt;" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:'Segoe UI','sans-serif';COLOR:#30332d;FONT-SIZE:9.5pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;BR&gt;initial 2007 AutoAudit blog post: &lt;BR&gt;&lt;A href="http://sqlblog.com/blogs/paul_nielsen/archive/2007/01/15/codegen-to-create-fixed-audit-trail-triggers.aspx"&gt;&lt;SPAN style="COLOR:#3e62a6;"&gt;http://sqlblog.com/blogs/paul_nielsen/archive/2007/01/15/codegen-to-create-fixed-audit-trail-triggers.aspx&lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Tweetpoll and RESTful Northwind go bye-bye</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/01/23/tweetpoll-and-restful-northwind-go-bye-bye.aspx</link><pubDate>Sat, 23 Jan 2010 10:25:23 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:21376</guid><dc:creator>jamiet</dc:creator><description>&lt;p&gt;On 31st January 2010 Windows Azure and SQL Azure will transition to becoming services that you have to pay for which means that my three small demos that are hosted up there are going to disappear hence I thought now would be a good time to review before they are digitally ground into dust.&lt;/p&gt;  &lt;hr /&gt;  &lt;h2&gt;Tweetpoll&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://tweetpoll.cloudapp.net/" target="_blank"&gt;Tweetpoll&lt;/a&gt; was a demo that I wrote back in April 2009 and is hosted on Windows Azure at &lt;a title="http://tweetpoll.cloudapp.net/" href="http://tweetpoll.cloudapp.net/"&gt;http://tweetpoll.cloudapp.net/&lt;/a&gt;. Here’s what it does:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;periodically polls &lt;a href="http://twitter.com/public_timeline" target="_blank"&gt;Twitter’s public timeline&lt;/a&gt; and gets returned a list of the latest tweets &lt;/li&gt;    &lt;li&gt;pushes each returned tweet onto a Windows Azure queue as a message &lt;/li&gt;    &lt;li&gt;picks each message off the queue, measures the length of the tweet, and increments a counter (in Windows Azure table store) for each length &lt;/li&gt;    &lt;li&gt;Displays the distribution of tweet lengths on a graph at &lt;a title="http://tweetpoll.cloudapp.net/" href="http://tweetpoll.cloudapp.net/"&gt;http://tweetpoll.cloudapp.net/&lt;/a&gt; (using some questionable HTML and Javascript :) &lt;/li&gt;    &lt;li&gt;Counts the number of hits on &lt;a title="http://tweetpoll.cloudapp.net/" href="http://tweetpoll.cloudapp.net/"&gt;http://tweetpoll.cloudapp.net/&lt;/a&gt; and maintains that count in Windows Azure table storage too &lt;/li&gt;    &lt;li&gt;Displays the current contents of the Windows Azure queue &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Here’s a diagram that shows that a little better and demonstrates which parts use Azure web and worker roles. It was built at a time when one could only have one worker role per application therefore two threads are used to simulate the pushing onto and picking off the queue:&lt;/p&gt;  &lt;p&gt;&lt;img title="tweetpoll architecture" alt="tweetpoll architecture" src="http://blogs.conchango.com/blogs/jamiethomson/image_1EFE3E20.png" /&gt;&lt;/p&gt;  &lt;p&gt;Its a very noddy application and the use of a queue is gratuitous but nevertheless its a useful demo of what can be achieved and enabled me to get some experience of building an app on Azure. The source code is available at &lt;a title="http://tweetpoll.codeplex.com" href="http://tweetpoll.codeplex.com"&gt;http://tweetpoll.codeplex.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I wrote a blog entry back in May 2009 called &lt;a href="http://consultingblogs.emc.com/jamiethomson/archive/2009/05/06/tweetpoll-my-first-windows-azure-application-is-live.aspx" target="_blank"&gt;Tweetpoll – My first Windows Azure application is live&lt;/a&gt; that introduced Tweetpoll. In that blog entry I provided a screenshot of the graph that gets displayed at &lt;a href="http://tweetpoll.cloudapp.net"&gt;http://tweetpoll.cloudapp.net&lt;/a&gt; and here it is again:&lt;/p&gt;  &lt;p&gt;&lt;img title="tweet length distribution May 2009" border="0" alt="tweet length distribution May 2009" src="http://blogs.conchango.com/blogs/jamiethomson/image_thumb_690B9617.png" width="728" height="352" /&gt;&lt;/p&gt;  &lt;p&gt;Here’s what it looked like in July 2009:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.conchango.com/blogs/jamiethomson/image_5216863A.png"&gt;&lt;img title="tweet length distribution July 2009" border="0" alt="tweet length distribution July 2009" src="http://blogs.conchango.com/blogs/jamiethomson/image_thumb_3CB8D0D2.png" width="713" height="243" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And finally today in January 2010:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_2F8DE293.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="tweet length distribution January 2010" border="0" alt="tweet length distribution January 2010" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_1EC637E5.png" width="736" height="282" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I said at the time that it would “be interesting to see if the graph smoothes out over time” and sure enough that is what has happened. We still get a massive spike around 140 characters of course but its clear to see that the curve has smoothed out before that spike. I also find it interesting that there are more tweets in the 30-50 range than 90-120; something for academics to ponder over perhaps. Finally, if you are wondering why some tweets appear to be over 140 characters in length then take a read of my blog entry &lt;a href="http://consultingblogs.emc.com/jamiethomson/archive/2009/07/10/the-longest-tweet.aspx" target="_blank"&gt;The Longest Tweet&lt;/a&gt; where I explain why that is.&lt;/p&gt;  &lt;p&gt;Incidentally, by adding up the counter for each tweet length I can determine how many messages Tweetpoll has gotten off of the public timeline since April 2009 and I display that number at &lt;a href="http://tweetpoll.cloudapp.net"&gt;http://tweetpoll.cloudapp.net&lt;/a&gt; too:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_6EBBE663.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="tweetpoll total tweets polled" border="0" alt="tweetpoll total tweets polled" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_0268CFF8.png" width="294" height="80" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Last but not least here’s how many hits the site has had:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_6BC681B0.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="tweetpoll page hits" border="0" alt="tweetpoll page hits" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_5FC4917C.png" width="293" height="68" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Again, if you’re interested in looking under the bonnet of Tweetpoll then the source code is available at &lt;a title="http://tweetpoll.codeplex.com" href="http://tweetpoll.codeplex.com"&gt;http://tweetpoll.codeplex.com&lt;/a&gt;.&lt;/p&gt;  &lt;hr /&gt;  &lt;h2&gt;RESTful Northwind&lt;/h2&gt;  &lt;p&gt;When SQL Azure entered public beta I wanted to build an app that would demonstrate its capabilities so I built &lt;a title="http://northwindazure.cloudapp.net/Northwind.svc/" href="http://northwindazure.cloudapp.net/Northwind.svc/"&gt;http://northwindazure.cloudapp.net/Northwind.svc/&lt;/a&gt;. Its is, quite simply, a copy of the venerable Northwind database hosted on SQL Azure with a WCF Data Services (née Astoria) head on top of it which is hosted on Windows Azure. If you hit the &lt;a href="http://northwindazure.cloudapp.net/Northwind.svc/" target="_blank"&gt;WCF Data Services head&lt;/a&gt; then this is what you see (make sure you have feed reading turned on in your browser):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_172AA2AB.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="restful northwind head" border="0" alt="restful northwind head" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_39528864.png" width="440" height="620" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Some sample queries that you can issue:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Customer ALFKI      &lt;br /&gt;&lt;a href="http://northwindazure.cloudapp.net/Northwind.svc/Customers('ALFKI')"&gt;http://northwindazure.cloudapp.net/Northwind.svc/Customers('ALFKI')&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Order items with a price &amp;gt; 250      &lt;br /&gt;&lt;a href="http://northwindazure.cloudapp.net/Northwind.svc/Order_Details?$filter=UnitPricegt250"&gt;http://northwindazure.cloudapp.net/Northwind.svc/Order_Details?$filter=UnitPrice gt 250&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;All orders by customer ANATR      &lt;br /&gt;&lt;a href="http://northwindazure.cloudapp.net/Northwind.svc/Customers('ANATR')?$expand=Orders"&gt;http://northwindazure.cloudapp.net/Northwind.svc/Customers('ANATR')?$expand=Orders&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;All order details of all orders by customer ANATR      &lt;br /&gt;&lt;a href="http://northwindazure.cloudapp.net/Northwind.svc/Customers('ANATR')?$expand=Orders/Order_Details"&gt;http://northwindazure.cloudapp.net/Northwind.svc/Customers('ANATR')?$expand=Orders/Order_Details&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;All order details for the first 3 customers      &lt;br /&gt;&lt;a href="http://northwindazure.cloudapp.net/Northwind.svc/Customers?$top=3&amp;amp;$expand=Orders/Order_Details"&gt;http://northwindazure.cloudapp.net/Northwind.svc/Customers?$top=3&amp;amp;$expand=Orders/Order_Details&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;All products in all orders for the first 3 customers      &lt;br /&gt;&lt;a href="http://northwindazure.cloudapp.net/Northwind.svc/Customers?$top=3&amp;amp;$expand=Orders/Order_Details/Products"&gt;http://northwindazure.cloudapp.net/Northwind.svc/Customers?$top=3&amp;amp;$expand=Orders/Order_Details/Products&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;All the code is available on Codeplex at &lt;a href="http://nwindazure.codeplex.com/"&gt;http://nwindazure.codeplex.com/&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you want to read more about RESTful Northwind then go read my blog entry &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2009/09/10/restful-northwind-on-sql-azure.aspx" target="_blank"&gt;RESTful Northwind on SQL Azure&lt;/a&gt; where I also talk a little about how I attempted to use datadude (aka Visual Studio Team System for DB Pros aka whatever-its-called-today) against SQL Azure.&lt;/p&gt;  &lt;hr /&gt;  &lt;h2&gt;TwitterCache&lt;/h2&gt;  &lt;p&gt;This one is a lot simpler than Tweetpoll or RESTful Northwind, it is simply a SQL database hosted up on SQL Azure. In December 2009 Brent Ozar &lt;a href="http://www.brentozar.com/archive/2009/12/twitter-historical-database-of-my-tweeps/"&gt;blogged about how he had been archiving tweets from various people that he follows into a SQL Server database&lt;/a&gt; and he made a backup of that database available for anyone that wanted to use it. I thought it would be cool to host that database up on SQL Azure both because it would demonstrate SQL Azure’s abilities and because it would save anyone else having to go through the rigmarole of restoring it themselves so I copied the schema up there and pumped the data in using SSIS.&lt;/p&gt;  &lt;p&gt;Read more (including instructions on how to access it before it disappears) at &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2009/12/03/twittercache-now-hosted-on-sql-azure.aspx" target="_blank"&gt;TwitterCache now hosted on SQL Azure&lt;/a&gt;.&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;These apps/services will be disappearing in about one week from now so if you’re interested in using them go and do it now. Remember, the code for Tweetpoll and RESTful Northwind is up on Codeplex at:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://tweetpoll.codeplex.com/" href="http://tweetpoll.codeplex.com/"&gt;http://tweetpoll.codeplex.com/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://nwindazure.codeplex.com/" href="http://nwindazure.codeplex.com/"&gt;http://nwindazure.codeplex.com/&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hope these have been useful to someone, they certainly have been for me!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;</description></item><item><title>AutoAudit 1.09 posted to CodePlex</title><link>http://sqlblog.com/blogs/paul_nielsen/archive/2008/10/13/autoaudit-1-09-posted-to-codeplex.aspx</link><pubDate>Tue, 14 Oct 2008 00:05:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9469</guid><dc:creator>Paul Nielsen</dc:creator><description>&lt;P&gt;AutoAudit is a code-gen&amp;nbsp;utility that creates audit trail triggers, views to reconstruct deleted rows, and a table-valued UDF to reconstruct row history.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;AutoAudiot 1.09 adds: &lt;BR&gt;&lt;B&gt;_RowHistory&lt;/B&gt; table-valued UDF&lt;BR&gt;SchemaAudit triggers that keep the triggers in synch with ALTER TABLES, and audits database changes&lt;BR&gt;compatability with SQL Server 2008 data types&lt;BR&gt;several nit bug fixes&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://www.codeplex.com/AutoAudit"&gt;AutoAudit CodePlex site&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://www.screencast.com/t/kxnHkX9LN6Q"&gt;ScreenCast demoing AutoAudit 1.09 (6:45)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;please post issues and feature requests to CodePlex, Thanks, -Paul &lt;BR&gt;&lt;/P&gt;</description></item><item><title>AutoAudit on CodePlex - vote for your features</title><link>http://sqlblog.com/blogs/paul_nielsen/archive/2008/08/14/autoaudit-on-codeplex-vote-for-your-features.aspx</link><pubDate>Thu, 14 Aug 2008 23:43:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:8389</guid><dc:creator>Paul Nielsen</dc:creator><description>&lt;P&gt;In an effort to be more "open", I've moved AutoAudit (code-gen utility that creates audit tirggers) from my swebsite to CodePlex. Soemthing I like about CodePlex is the open submission and voting on issues and feature requests. I've moved every feature request from emails and this blog to CodePlex. I invite you to download, submit requests, and vote at:&amp;nbsp;&lt;A href="http://www.codeplex.com/AutoAudit/WorkItem/List.aspx"&gt;http://www.codeplex.com/AutoAudit/WorkItem/List.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item></channel></rss>