<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Beakersoft Blog</title>
	
	<link>http://www.beakersoft.co.uk</link>
	<description>Blog about various IT related issues I encounter in the world of Newspapers!</description>
	<lastBuildDate>Fri, 17 Jul 2009 18:32:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image><link>http://beakersoft.blogspot.com</link><url>http://www.feedburner.com/fb/images/pub/fb_pwrd.gif</url><title>Powered By Feedburner</title></image>
		<thespringbox:skin xmlns:thespringbox="http://www.thespringbox.com/dtds/thespringbox-1.0.dtd">http://feeds.feedburner.com/BeakersoftBlog?format=skin</thespringbox:skin><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/BeakersoftBlog" type="application/rss+xml" /><feedburner:emailServiceId>BeakersoftBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/BeakersoftBlog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FBeakersoftBlog" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Show/Hide Groups at run time</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/1URetE5JU8o/</link>
		<comments>http://www.beakersoft.co.uk/2009/07/17/showhide-groups-at-run-time/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 18:32:15 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[SQL Reporting Services]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=228</guid>
		<description><![CDATA[Recently quite a few of our users have been asking if they can show all of the report details at runtime, instead of having to drill down all the groups, opening and closing as they see fit. Well, the answer is yes, and its very easy to implement.
Parameters are you friend
The first thing to do [...]]]></description>
			<content:encoded><![CDATA[<p>Recently quite a few of our users have been asking if they can show all of the report details at runtime, instead of having to drill down all the groups, opening and closing as they see fit. Well, the answer is yes, and its very easy to implement.</p>
<h2><strong>Parameters are you friend</strong></h2>
<p>The first thing to do is create yourself a new parameter in the report, and call it something like <em>par_expand_groups</em>. Give it the following options:</p>
<p><img class="alignnone" title="param options" src="http://www.beakersoft.co.uk/img/ssrs_param_show_group1.jpg" alt="" width="456" height="435" /></p>
<p>Now, you need to make this parameter control weather or not the group is expanded as the report is ran, you do this by putting an expression into the <em>hidden </em>property of the row.</p>
<p>Normally if you have a group, when you run the report it will probably be hidden and the user has the option of showing the details, so the <em>hidden </em>property will be set to true. We are going to set it to the following expression:</p>
<p><em>=IIF(Parameters!par_expand_groups.Value = &#8220;True&#8221;, False, True)</em></p>
<p>This means that if the parameter is set to yes, the details will be shown, if its set to no they will remain hidden. Add this to each level of grouping on your report, and the user now has control over what they see</p>
<h2><strong>Slight Problem with the show/hide icons</strong></h2>
<p>Once you have added this to your report, you might notice a slight problem. If you run the report with the option of showing the group details, the little show/hide icon on the left used to toggle the details will be wrong. It will be showing the &#8216;+&#8217; even though the details are already showing, and if you press it to hide the details it will change to a &#8216;-&#8217;. They are the wrong way round!</p>
<p><img class="alignnone" title="Incorrect Icons" src="http://www.beakersoft.co.uk/img/report%5Ficons.gif" alt="" width="307" height="114" /></p>
<p>Obviously, this is going to confuse your users, and needs sorting. Well, thanks to a tip from <a href="http://www.lukehayler.com/2009/07/custom-visibility-toggling-in-ssrs">http://www.lukehayler.com/2009/07/custom-visibility-toggling-in-ssrs</a> its easy.</p>
<p>All you need to do is open up the properties of the text box that is the trigger for the show hide, and go into the <em>Visibility </em>tab. At the bottom is an <em> </em>option to set an expression for the toggle image. just enter:</p>
<p><em>=IIF(Parameters!par_expand_groups.Value = &#8220;True&#8221;, True, False)</em></p>
<p>As before, they is just looking at your parameter and setting the value of the toggle image. Now, when you run the report with the option to display the details, they icons for toggling the details should be correct.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=1URetE5JU8o:TA84KgTOvZQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=1URetE5JU8o:TA84KgTOvZQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=1URetE5JU8o:TA84KgTOvZQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=1URetE5JU8o:TA84KgTOvZQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=1URetE5JU8o:TA84KgTOvZQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=1URetE5JU8o:TA84KgTOvZQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=1URetE5JU8o:TA84KgTOvZQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=1URetE5JU8o:TA84KgTOvZQ:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/1URetE5JU8o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2009/07/17/showhide-groups-at-run-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2009/07/17/showhide-groups-at-run-time/</feedburner:origLink></item>
		<item>
		<title>WordSlice – My First WordPress plugin</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/HpYuRIG5XXg/</link>
		<comments>http://www.beakersoft.co.uk/2009/06/15/wordslice-my-first-wordpress-plugin/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 22:00:53 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[programing]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=220</guid>
		<description><![CDATA[
I while ago I wrote an artical (here)about the new Web slice feature in IE8. A few people have asked about a plugin for WordPress, and the other night I finally decided to have a go.
Head over to http://www.beakersoft.co.uk/wordslice for all the info, or to http://wordpress.org/extend/plugins/wordslice/ for the download and the install notes.
Hopefully in the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="Webslice header" src="http://www.beakersoft.co.uk/img/wordpress_webslice-header.jpg" alt="" width="450" height="50" /></p>
<p>I while ago I wrote an artical (<a href="http://www.beakersoft.co.uk/2008/03/24/webslices-in-wordpress/">here</a>)about the new Web slice feature in IE8. A few people have asked about a plugin for WordPress, and the other night I finally decided to have a go.</p>
<p>Head over to <a href="http://www.beakersoft.co.uk/wordslice">http://www.beakersoft.co.uk/wordslice</a> for all the info, or to <a href="http://wordpress.org/extend/plugins/wordslice/">http://wordpress.org/extend/plugins/wordslice/</a> for the download and the install notes.</p>
<p>Hopefully in the not to distant future i will be add some extra features to it (its kind of limited at the moment) so stay tuned!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=HpYuRIG5XXg:sqCi3iPMmzw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=HpYuRIG5XXg:sqCi3iPMmzw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=HpYuRIG5XXg:sqCi3iPMmzw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=HpYuRIG5XXg:sqCi3iPMmzw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=HpYuRIG5XXg:sqCi3iPMmzw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=HpYuRIG5XXg:sqCi3iPMmzw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=HpYuRIG5XXg:sqCi3iPMmzw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=HpYuRIG5XXg:sqCi3iPMmzw:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/HpYuRIG5XXg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2009/06/15/wordslice-my-first-wordpress-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2009/06/15/wordslice-my-first-wordpress-plugin/</feedburner:origLink></item>
		<item>
		<title>Tracking Down Conficker</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/kxzwTxgT1iw/</link>
		<comments>http://www.beakersoft.co.uk/2009/04/14/tracking-down-conficker/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 20:35:40 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[IT Info]]></category>
		<category><![CDATA[conficker]]></category>
		<category><![CDATA[Virus]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=209</guid>
		<description><![CDATA[
I have recently had the unfortunate experience of having to try and clean up a network that has been hit by the conficker virus.It is a pain to get of and caused us a lot of problems, this is a quick guide to how we went about cleaning it up. This might not work exactly [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="Combat Conficker" src="http://www.beakersoft.co.uk/img/combat_conficker.jpg" alt="" width="450" height="102" /></p>
<p>I have recently had the unfortunate experience of having to try and clean up a network that has been hit by the conficker virus.It is a pain to get of and caused us a lot of problems, this is a quick guide to how we went about cleaning it up. This might not work exactly the same for you but it might give you some pointers.</p>
<h2>Accounts locking out</h2>
<p>This was the probably the biggest pain for us. One of the way the virus spreads it&#8217;s self is on smb shares, to it tries to access these shares by using accounts it finds on the active directory/local machine. It tries to brute force password crack the accounts, and if you have an account lockout policy in place (i would imagine most places do) then the accounts it finds will become locked very quickly.</p>
<p>To get round this rather large issue temporally we got a script that we ran every minute or so on each of the active directory boxes, it basically just goes through the entire domain and unlocks all the accounts. We ran it in the task scheduler as two separate users in case one was locked when the task ran.</p>
<p>Obviously this isn&#8217;t a long term solution and should be removed once you are reasonably happy its no longer locking accounts.</p>
<p>You can download the script <a href="http://www.beakersoft.co.uk/downloads/unlock_accounts.vbs">here</a></p>
<h2>Finding The Infections</h2>
<p>There are quite a few tools kicking around to find the infections, that all work with various degrees of success, the main tool we have used is one from eEye digital security, you can get it from <a href="http://www.eeye.com/html/downloads/other/ConfickerScanner.html">http://www.eeye.com/html/downloads/other/ConfickerScanner.html</a>. This one will scan a subnet and tell you what is infected and what is vulnerable (un-patched).</p>
<p>You can also use a beta version of <a href="http://nmap.org/">nmap</a>, this one also tells you what it thinks is infected and what is vulnerable to the virus, info about it at <a href="http://www.skullsecurity.org/blog/?p=209">http://www.skullsecurity.org/blog/?p=209</a></p>
<p>We have also used an in house tool that logs all the account lock outs into a database to track down the actual machines that are locking users out, this has been the most pro-active way of finding infected machines. You can read more about the system we use in a previous post <a href="http://www.beakersoft.co.uk/2008/02/07/where-has-that-account-been-locked-out/">here</a></p>
<p>On the actual infected machines there are various pointers, quite a few of the services get stopped (these include server, workstation,bits,windows update), the machine can end up being completely unresponsive due to the virus hammering the processor/memory.</p>
<p>Also on machines that aren&#8217;t necessarily infected you might get lots of new scheduled tasks Called <strong>AT#1</strong>, other infected machines on network will have probably created these. Most of the clean up tools don&#8217;t seem to delete them you have to kill them manually.</p>
<h2>Cleaning the Infections</h2>
<p>Once you have identified the machines infected you will need to clean them. In theory the anti virus software should just be finding it and putting the virus into quarantine, but in a lot of cases that&#8217;s not the case. When we found an infected machine this is the process we have used.</p>
<ul>
<li> First kill of the memory from memory. We have been using the Symantec  W32.Downadup Removal tool available <a href="http://www.symantec.com/security_response/writeup.jsp?docid=2009-011316-0247-99">here</a>. Re-name the app to something random so the virus doesn&#8217;t just kill it of, then run it. Once its got passed processing the apps in memory, cancel it. It will complain its not checked all the files, but it should kill the process out of memory and remove entries to it in the registry so it wont start on next reboot. It will ask you to reboot to clean up everything else but dont yet.</li>
<li>Before rebooting make sure you have got the patch on, download it from <a href="http://www.microsoft.com/technet/security/Bulletin/MS08-067.mspx">here</a>. Note that it appears you need to install at least service pack 2 on xp, 4 on 2000 and 1 on 2003 for the patch to install. Once you are patched reboot the machine</li>
<li>When the machine comes back, hopefully the virus wont have loaded back into memory. Update your virus software with the latest sig files (or install some if god forbid there is none installed!), then run a  full scan of your machine. This should find the files, and Quarantine them, allowing you to  delete them.</li>
<li>Look in the scheduled tasks and remove any that are called At#1 etc.</li>
</ul>
<p>Hopefully now, even if the machine gets the virus again the anti virus software will pick it up and stop it doing any harm.</p>
<p>If anyone else has anymore info for detecting/cleaning this beast up feel free to email me or leave a comment and i will update this post</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=kxzwTxgT1iw:eurfyLBxmLQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=kxzwTxgT1iw:eurfyLBxmLQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=kxzwTxgT1iw:eurfyLBxmLQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=kxzwTxgT1iw:eurfyLBxmLQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=kxzwTxgT1iw:eurfyLBxmLQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=kxzwTxgT1iw:eurfyLBxmLQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/BeakersoftBlog?a=kxzwTxgT1iw:eurfyLBxmLQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/BeakersoftBlog?i=kxzwTxgT1iw:eurfyLBxmLQ:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/kxzwTxgT1iw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2009/04/14/tracking-down-conficker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2009/04/14/tracking-down-conficker/</feedburner:origLink></item>
		<item>
		<title>ASP.Net not seeing an SQL syntax error</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/1vakK31LCEw/</link>
		<comments>http://www.beakersoft.co.uk/2009/01/25/aspnet-not-seeing-an-sql-syntax-error/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 17:10:15 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[dotnet]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=201</guid>
		<description><![CDATA[I have been doing some work on an asp.net project that connects to a db with full text indexing enabled on a text field. We are building the app up so that users can run advanced searches using the info in this filed.
While debugging the app, i came across a problem that i thought i [...]]]></description>
			<content:encoded><![CDATA[<p>I have been doing some work on an asp.net project that connects to a db with full text indexing enabled on a text field. We are building the app up so that users can run advanced searches using the info in this filed.</p>
<p>While debugging the app, i came across a problem that i thought i was catching and trapping, but my app seamed to be ignoreing the problem and carrying on running so i was getting some strange results.</p>
<p>I was running some sql similar to this:</p>
<p><em>SELECT Count(title) as rec_count FROM tbl_text WHERE tbl_text.Title=&#8217;WXXX&#8217;<br />
AND Contains(tbl_text.page_text, &#8216;Tax Evasion&#8217; AND &#8216;Joe Blogs&#8217;)</em></p>
<p>In the sql i had constructed i just had an apostrophe out of place (i know rookie mistake), so the sql was failing to run. Problem was the try/catch loop it was in did&#8217;t seem to mind! I got out the sql and ran it in sql advantage, and sure enough i got this error:</p>
<p><em>Server: Msg 7631, Level 15, State 1, Line 1<br />
Syntax error occurred near &#8216;</em><em>Evasion</em><em>&#8216;. Expected &#8221;&#8221;&#8217; in search condition &#8216;</em><em>Tax Evasion&#8217; AND &#8216;Joe Blogs&#8217;</em><em>.</em></p>
<p>So sql advantage managed to trap the error, but the dotnet framework for some reason took no notice of it and carried on running. I got round the problem being checking my record set had rows before trying to use it, but i have no idea why an execption was not rasied in the first place. Anyone any ideas?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=ScMfs9uc"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=ScMfs9uc" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=MF75dA6o"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=MF75dA6o" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=UwVXO9RY"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=KkVVPX63"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=waBA0o81"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=waBA0o81" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/1vakK31LCEw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2009/01/25/aspnet-not-seeing-an-sql-syntax-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2009/01/25/aspnet-not-seeing-an-sql-syntax-error/</feedburner:origLink></item>
		<item>
		<title>Branching Out</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/6wlR2HnMNyY/</link>
		<comments>http://www.beakersoft.co.uk/2008/12/23/branching-out/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 21:16:08 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=199</guid>
		<description><![CDATA[
Me and a couple of the guys i work with a decided to have a good at writing our own software, and making it available online. We are going under the (rather good i think) name of we3soft, and you can get at our website by visiting www.we3soft.com
We have got quite a few ideas/applications in [...]]]></description>
			<content:encoded><![CDATA[<div class="moz-signature">
<p>Me and a couple of the guys i work with a decided to have a good at writing our own software, and making it available online. We are going under the (rather good i think) name of we3soft, and you can get at our website by visiting <a href="http://www.we3soft.com">www.we3soft.com</a></p>
<p>We have got quite a few ideas/applications in the pipeline, and hope to start working with some of our local businesses on some of there projects. At the mo we have only one application (and its in beta) avaialble for download on the website. It goes by the name of SwitchWatch.</p>
<p>Basiclly, you can use it to tell you what ports in cisco switches have been unused for a period of time you specifically, this will allow you to tidy up the rats next of cables that lives in your comms room. At the moment the application is still in beta, and will only report on the first 5 unused ports per switch. In order to encourage people to test the app, we are giving away 20 free licences once it comes out of beta.</p>
<p>All you have to do to quailfy for a free copy is head over to <a href="http://www.we3soft.com/switchwatch">www.we3soft.com/switchwatch</a>, download the app and tell us what you think about it in our <a href="http://www.we3soft.com/forum/index.php/board,2.0.html">forum</a>. Let us know if it worked fine, if you had any problems with it or if you have any feature requests. If your are in the first 20 to give us your comment we will send you a free licnece key as soon as we come out of beta, so head over there now!!</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=tAYDSLN5"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=tAYDSLN5" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=i4DouRQL"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=i4DouRQL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=hWT00uh2"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=4TiiY0pm"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=VcthBtMU"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=VcthBtMU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/6wlR2HnMNyY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2008/12/23/branching-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2008/12/23/branching-out/</feedburner:origLink></item>
		<item>
		<title>Report Services Printer Control Problem</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/nrxqMiFyTkA/</link>
		<comments>http://www.beakersoft.co.uk/2008/12/23/report-services-printer-control-problem/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 20:38:28 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[SQL Reporting Services]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=195</guid>
		<description><![CDATA[Not sure how many of you have hit this, but recently we have had a problem with users not being able to print out reports from the browser. When they hit the print icon after runnig a report, they are given the message
&#8216;Cannot load client print control&#8217;
Turns out that one of the patches Microsoft issue [...]]]></description>
			<content:encoded><![CDATA[<p>Not sure how many of you have hit this, but recently we have had a problem with users not being able to print out reports from the browser. When they hit the print icon after runnig a report, they are given the message</p>
<p>&#8216;<em>Cannot load client print control&#8217;</em></p>
<p>Turns out that one of the patches Microsoft issue out (on a seemingly never ending basis) breaks(well, blocks) the activex. The patch in question is the ActiveX killbit one (i cant remember the kb number), there appears to be a problem with the old version of the print control activex, and when the latest patch is applied to the clients it stops the print control working.</p>
<p>The way to get it working again is basilcly to patch your reports server. This is something i am always a bit cautious of doing, as in the past i have had problems (service pack one removed the ability to do a multi select parameter) but this time i had a virtual server i could snapshot, patch then test.</p>
<p>To get it working again, i installed first of all SQL 2005 service pack 2 (<a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=d07219b2-1e23-49c8-8f0c-63fa18f26d3a&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyId=d07219b2-1e23-49c8-8f0c-63fa18f26d3a&amp;displaylang=en</a>), then the latest hotfix rollup (<a href="http://support.microsoft.com/kb/956854">http://support.microsoft.com/kb/956854</a>). On a couple of the client machines this seemed to fix the problem without having to re-download the control, but on others we had to remove the control first, then re-install it and it worked a treat</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=K6xAmlFj"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=K6xAmlFj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=jeFFvNvs"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=jeFFvNvs" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=qQIV1H1E"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=3EZ1MYvu"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=5weI9h1p"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=5weI9h1p" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/nrxqMiFyTkA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2008/12/23/report-services-printer-control-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2008/12/23/report-services-printer-control-problem/</feedburner:origLink></item>
		<item>
		<title>Creating a Check for update Routine</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/F4hbX0JSbV8/</link>
		<comments>http://www.beakersoft.co.uk/2008/10/07/creating-a-check-for-update-routine/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 18:07:32 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=178</guid>
		<description><![CDATA[First off, i apologise for not blogging for a while, ive had quite a few other projects on over the summer, plus holidays so I&#8217;ve not really had time. Hopefully now I should be able to get back into it with a bit more frequency.
Anyway on to the topic of this post. Most applications nowadays [...]]]></description>
			<content:encoded><![CDATA[<p>First off, i apologise for not blogging for a while, ive had quite a few other projects on over the summer, plus holidays so I&#8217;ve not really had time. Hopefully now I should be able to get back into it with a bit more frequency.</p>
<p>Anyway on to the topic of this post. Most applications nowadays will automaticly go onto the web and check to see if there is a new version, and if there is offer to download/install/visit page etc. I was looking for a simple way to do this using the dotnet framework and Visual Basic.Net, and came across the <em>System.Net</em> class.</p>
<p>This class is extremely powerful, as it contains functions for network communication.  The main one we will use here is the <em>System.net.WebClient</em>. We are going to use this to pull a file down of our web server that will give us information about the latest version of our application.</p>
<h2>Information File</h2>
<p>So first of all, create a text file, we are going to look on our web server for this file and read information. In the file we will have the following info: App name, version and download location, delimited by a pipe (|) character. You could also add extra things like new features, release date etc to this file. The example file will look something like this.</p>
<p>1.1.0|TestApp|www.beakersoft.co.uk/downloads/</p>
<p>Once you have this file, save it as something like TestApp_Ver_Control.txt, and upload it to your web server.</p>
<h2>Downloading the Version information</h2>
<p>Now the file containing version information is on your web server, we can write a function in vb that will open the file up, get the information contained in it and use that information to decided if our application is the latest version or not. This is where the <em>System.net.WebClient</em> comes in. First of declare a couple of variables. One is the <em>WebClient</em>, one is the url of the file you have just uploaded and a string array to hold the details of the file.</p>
<pre class="vb.net:nocontrols:nogutter">Dim myWebClient As New Net.WebClient
Dim RemoteUri As String = "www.beakersoft.co.uk/TestApp_Ver_Control.txt"
Dim strFileInfo()As String</pre>
<p>Now, we can go and get the file of the web server, using the webclient and read the contents into a string. Then we can split the content of the string up using the pipe char, and there you have all the info you need to check the version.</p>
<p>All the code is wrapped up in a <em>try/catch </em>block to make sure we dont get any unhandled errors such as when there is no net connection, file missing etc.</p>
<pre class="vb.net:nocontrols:nogutter">	Try
	Dim file As New System.IO.StreamReader( _
                    myWebClient.OpenRead(RemoteUri))
        Dim Contents As String = file.ReadToEnd()

	'Split up the sections of the text based on the pipe (|) delimiator
	strFileInfo = Split(Contents, "|")

	'see if we need a new version
	If strFileInfo(0) &gt; Application.ProductVersion Then
		'if we have a new version, make sure the app name matchs from the file
                If strFileInfo(1) = application.ProductName Then

			'we have a new version! So throw up a message, set a flag ect

                End If
	End If

	'close the file stream and web client
	myWebClient = Nothing
	file.Close()

        Catch ex As Exception
	If InStr(ex.Message, "(404)") Then
		'404 means file not found on webserver
                Msgbox("Problem Finding the update information file - " &amp; vbNewLine &amp; ex.Message &amp; _
                        vbNewLine &amp; "Please contact the appliaction vendor")
	Else
                Msgbox("Problem getting update information - " &amp; vbNewLine &amp; ex.Message &amp; _
                        vbNewLine &amp; "Check your internet settings and try again")
	End If
End Try</pre>
<p>And thats pritty much it! This is a very bare bones way of doing it, and you probably want to add in support for using a proxy (you can do that using the <em>System.Net.WebRequest.DefaultWebProxy </em>class, and pass login credentials to <em>myWebClient.Credentials </em>using <em>Net.NetworkCredential</em> ) but as a very basic form this should work.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=krFkUWN2"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=krFkUWN2" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=JpBlThzK"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=JpBlThzK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=JJ8wyAfi"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=Ttj6wv7n"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=LMieDmws"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=LMieDmws" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/F4hbX0JSbV8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2008/10/07/creating-a-check-for-update-routine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2008/10/07/creating-a-check-for-update-routine/</feedburner:origLink></item>
		<item>
		<title>Spiceworks 3 has Landed</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/-bZOJwpZPFo/</link>
		<comments>http://www.beakersoft.co.uk/2008/07/14/spiceworks-3-has-landed/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 21:37:59 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[spiceworks]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=177</guid>
		<description><![CDATA[
Hot on the heals of the last version, Spiceworks 3 has been released. You can see a list of the new features at http://spiceworks.com/3.0/ and download it at www.spiceworks.com
Here&#8217;s a list of some of the new features that interested me

The interface has been cleaned up quite a bit from the previous version. There are also [...]]]></description>
			<content:encoded><![CDATA[<p><img style="vertical-align: middle;" src="http://www.beakersoft.co.uk/img/sw3_header.jpg" alt="Spiceworks 3"/><br />
Hot on the heals of the last version, Spiceworks 3 has been released. You can see a list of the new features at <a title="Spiceworks 3.0 New Features" href="http://spiceworks.com/3.0/" target="_blank">http://spiceworks.com/3.0/</a> and download it at <a href="http://www.spiceworks.com/">www.spiceworks.com</a></p>
<p>Here&#8217;s a list of some of the new features that interested me</p>
<ul>
<li>The interface has been cleaned up quite a bit from the previous version. There are also a couple of new features such as the &#8216;Glide&#8217; function, it&#8217;s kind of like the iPod artwork browser.</li>
<li>The network scanning has speed has been improved (see my test results below)</li>
<li>The detection of devices has been improved.</li>
<li>Exchange server monitoring. (i think this is particularity cool)</li>
<li>Whole Environment event charts</li>
<li>Loads of bug fixes</li>
</ul>
<p><span id="more-177"></span></p>
<h2>Scanning Speed and Device Detection Test Results</h2>
<p>In my previous blog on <a href="http://www.beakersoft.co.uk/2007/12/18/spiceworks-2-whats-the-verdict/">Spiceworks 2.0</a>, I did I direct comparison of how fast a network scan completed, and what it managed to find.<br />
Here are the results for the test of Spiceworks 3.0 against Spiceworks 2.0. I used exactly the same server (an average spec dell poweredge server) and scanned the same vlans as before.</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="37%" bgcolor="#e0fafe"></td>
<td width="24%" bgcolor="#e0fafe"><strong>Spiceworks 2 </strong></td>
<td width="39%" bgcolor="#e0fafe"><strong>Spicworks 3</strong></td>
</tr>
<tr>
<td style="height: 19px;">Total Network Scan Time</td>
<td style="height: 19px;">34 Mins</td>
<td style="height: 19px;">20 mins</td>
</tr>
<tr>
<td style="height: 19px;" bgcolor="#efefef">Workstations discovered</td>
<td style="height: 19px;" bgcolor="#efefef">89</td>
<td style="height: 19px;" bgcolor="#efefef">85</td>
</tr>
<tr>
<td>Servers discovered</td>
<td>6</td>
<td>9</td>
</tr>
<tr>
<td bgcolor="#efefef">Printers discovered</td>
<td bgcolor="#efefef">10</td>
<td bgcolor="#efefef">10</td>
</tr>
<tr>
<td>Unknown devices discovered</td>
<td>16</td>
<td>15</td>
</tr>
<tr>
<td bgcolor="#efefef">Total Software recognized</td>
<td bgcolor="#efefef">744</td>
<td bgcolor="#efefef">709</td>
</tr>
<tr>
<td style="height: 19px;">Applications recognized</td>
<td style="height: 19px;">273</td>
<td style="height: 19px;">291</td>
</tr>
<tr>
<td bgcolor="#e0fafe">&nbsp;</td>
<td bgcolor="#e0fafe">&nbsp;</td>
<td bgcolor="#e0fafe">&nbsp;</td>
</tr>
</tbody>
</table>
<p></p>
<p>As you can see from the results, the scanning speed as improved yet again, shaving almost 15 minutes of Spiceworks 2. It Did find slightly less workstations, but I don&#8217;t think that would have added another 15 minutes to the scan time.</p>
<p>All the software it found was valid, and seemed at a quick glance to be accurate.</p>
<p>However, it wasn&#8217;t all good news. I&#8217;m not sure why but it classed the network devices (3 Cisco routers and 6 POE switches) as unknown. On more careful investigation it knew they were Cisco network devices but it couldn&#8217;t tell what sort. I assume there is some authentication problem happening here but i&#8217;m not sure what it is.</p>
<h2>New Features</h2>
<p>Now, onto some of the brand new things Spiceworks 3 can do.</p>
<p>The interface, especially the landing page has been cleaned up. You can now customise it quite a bit. It now includes a couple of new widgets about the environment and exchange (more on these later) and the ability to add new tools to the menu on the left.</p>
<p>You can now organise your inventory into your own groups, and then view them using the new &#8216;glide&#8217; function. This looks a lot like the album artwork browser used in iPods/iTunes. You can use it by hitting the glide button at the top right of the page.</p>
<p>While it looks good, I dont really see the point in it as it&#8217;s far quicker to just the conventional methods.</p>
<p><strong>Exchange Server Monitoring:<br />
</strong>There is now a new section on the start page that will give you a quick overview of any exchange servers on your network, it will look something like this:</p>
<p><img style="vertical-align: middle;" src="http://www.beakersoft.co.uk/img/sw3_exchnage_widget.jpg" alt="Exchange Widget" width="334" height="371" /></p>
<p>it lets you see at a glance the size of the largest mailboxes on your server, and the amount of load its under. If you look at the exchange server in the inventory you will also get a new section called exchange.<br />
Under her you can get some more info on your server such as some stats on incoming and outgoing mail, along with a list of all the mailbox&#8217;s, their sizes, who the account belongs to and who last accessed it.</p>
<p>I did have a slight problem getting the exchange information to come into Spiceworks, the server already existed under the old version, so I had to remove it from the inventory and re-scan. When version 3 re-scanned everything popped in right away.</p>
<p><strong>Environment Charts: </strong>As well as the new exchange widget on the landing page, there is also one that will show you some other usful status about your environment, it looks like this:</p>
<p><img style="vertical-align: middle;" src="http://www.beakersoft.co.uk/img/sw3_EnvCharts_widget.jpg" alt="Environment Charts" width="346" height="234" /></p>
<p>By default it shows you a chart of the number of events (gathered from the event logs), on a day by day basis. This could be very helpful in spotting if something is going wrong all of a sudden and causing lots of entry&#8217;s in your event logs.</p>
<p>As well as the events, you can use the scroll buttons to see other charts such as time spent on helpdesk tickets, network interface top port traffic, breakdown of your operating systems and many more.</p>
<p><strong>Improved Reporting</strong>:<strong> </strong>The inbuilt reporting system has also been given a bit of a facelift. You can now control who can use the reports (not to a particularly fine level though), and you have the ability to share your reports with other people using Spiceworks. To me though, the reporting system still falls a bit short of what it could be, and seems to be a bit under developed compared to the rest of the product.</p>
<p><strong>Helpdesk:</strong> This is now better integrated into Exchange, so users can now email there support calls directly into the helpdesk, Spiceworks simply monitors a mailbox for incoming mail. You can also now add custom elements to your helpdesk tickets to better suit it to your business.</p>
<p>There is also a new section that kind of come&#8217;s under the helpdesk called IT Services. The idea behind it is you can keep a track of all your hardware and software vendors, and save documentation into Spiceworks. You can also see what other Spiceworks users think of the vendors you are using. Soon bad service wont be able to hide!</p>
<h2>Conclusions</h2>
<p>So, is it worth installing. Well, I would say yes unless you have quite a bit of money to spend on other products. With each new release the Spiceworks team are basing the new features on user feedback, witch can only be a good thing for the software.</p>
<p>While it might still not be perfect, it is by far and away the best free (well, ad sponsored) integrated network management and helpdesk system out there at the moment. Even if you are in a big enterprise, i would sugest installing it just to see if any of its features can help you. It is free after all.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4718835402264689";
/* 468x60, created 14/07/08 */
google_ad_slot = "7859227449";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=kEOK7yFN"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=kEOK7yFN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=bzZ1omlu"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=bzZ1omlu" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=wuZ5d0H6"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=r3H1nP0k"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=RIV3Tdjt"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=RIV3Tdjt" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/-bZOJwpZPFo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2008/07/14/spiceworks-3-has-landed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2008/07/14/spiceworks-3-has-landed/</feedburner:origLink></item>
		<item>
		<title>Setting a Data Source at Runtime on SQL Reporting Services</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/S2EkmWgyjfI/</link>
		<comments>http://www.beakersoft.co.uk/2008/06/22/setting-a-data-source-at-runtime-on-sql-reporting-services/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 14:23:16 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[SQL Reporting Services]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=176</guid>
		<description><![CDATA[I am in the process of writing a reporting service that will be used across our whole company. The problem I have is there is not one central database all the reports will run of, each division has its own separate one. Lucky the database schema&#8217;s are consistent, but I needed a way of:
a) setting [...]]]></description>
			<content:encoded><![CDATA[<p>I am in the process of writing a reporting service that will be used across our whole company. The problem I have is there is not one central database all the reports will run of, each division has its own separate one. Lucky the database schema&#8217;s are consistent, but I needed a way of:</p>
<p>a) setting the report data source at run time and<br />
b) letting the users control the database they want to connect to. Some high level user need to be able to access multiple databases, while others will just need access to their local one</p>
<p>So, here&#8217;s how I went about doing it.</p>
<h2>Setting Data source at Run time</h2>
<p>Normally, when you setup a reports data source in reporting services, you just point it to the database you want it to use (probably using a shared data source) give it some credentials and off you go. You would probably end up with a connection string looking something like this:</p>
<p><img style="vertical-align: middle;" src="http://www.beakersoft.co.uk/img/ds_normal.jpg" alt="Normal Data Source" width="471" height="408" /></p>
<p>Under normal circumstances that would work fine. But not this time. I need an easy way to replace the information held in the connection string with some sort of variable.</p>
<p>Turns out the easiest way to do it is by using a parameter in the connection string. You can create the connection string as an expression as if you were working with any other part of the report. However, before doing this you first need to create the parameters and fill them with some data.</p>
<h2>Data Source Table</h2>
<p>In the reports database, I created two new tables, one that will hold the name of the reports servers, database names and Active directory group with access to this data source. The other one will contain all the user names and what Database they are currently using. Download the SQL scrip to create the databases below</p>
<div class="download">
<div class="download-title">Download Table Creation Script</div>
<p>Download the script: <a title="Tables for Datasources" href="http://www.beakersoft.co.uk/wordpress/wp-content/create_tables.sql">create_tables.sql</a>
</div>
<p><font color="white">hello</font></p>
<div class="PostNote"><em>Note: You will need to put something in place (i use a webpage) to allow the users to control the content of these tables, this article only looks at the reporting services side of things.</em></div>
<p>Run this script on your reports sever database, and you will have two new tables, database_details and user_details. In order to do the tests you will need to create an entry in the database table (database_details) for your database, and an entry in the user table (user_details) for your username (include the domain name so it should read dom\joe.bloggs) and point it using the site_id filed to the database. You are now ready to create the SQL in the report that will populate the parameters</p>
<h2>Dataset Containing the database connection details</h2>
<p>Create yourself a test report, and in that report create a new dataset that points at your reports server database. The SQL needs to be the following:</p>
<p><em>SELECT     jp_user_details.username, jp_database_details.server_name, jp_database_details.database_name<br />
FROM         jp_user_details INNER JOIN<br />
jp_database_details ON jp_user_details.site_id = jp_database_details.site_id</em></p>
<p>This will return all the names in your database, what we need to do now is make sure at run time it only returns data for the user running the report. To do that we need to put a filter on the report. The filter will be:</p>
<p><em>Fields!username.value=User!UserID</em></p>
<p>and should look like this in your Dataset properties</p>
<p><img style="vertical-align: middle;" src="http://www.beakersoft.co.uk/img/ds_Filter.jpg" alt="Filter Propertiess" width="463" height="382" /></p>
<h2>The Parameters</h2>
<p>Once you have done this dataset, you need to create a couple of parameters. One will be for the server name, one for the database name. So go into your report parameters and create the following, with these options:</p>
<p><strong>Name</strong> &#8211; ServerName<br />
<strong>Datatype </strong>- String<br />
<strong>Hidden </strong>- Yes<br />
<strong>Available Values from Query</strong>: Select your dataset , then both values fields need to be server_name<br />
<strong>Default Values From Query</strong> &#8211; Select your dataset, value field is server_name</p>
<p><strong>Name</strong> &#8211; DatabaseName<br />
<strong>Datatype </strong>- String<br />
<strong>Hidden </strong>- Yes<br />
<strong>Available Values from Query</strong>: Select your dataset , then both values fields need to be database_name<br />
<strong>Default Values From Query</strong> &#8211; Select your dataset, value field is database_name</p>
<p>What does this do? Well, when you run your report now you will have the two parameters you have just created filled in with the server name and database name the person running the report wants to report on. The parameters are set to hidden so the user knows nothing about them.</p>
<h2>Final Step, create your dynamic dataset</h2>
<p>Now we have everything we need in place, the last step is to create a dataset that will look into the server held agaist the user, and retrive us the actul information we want. Create a new dataset, and in the connection string of this data source put the following:</p>
<p><em>= &#8220;data source=&#8221; &amp; Parameters!ServerName.Value &amp; &#8220;;initial catalog=&#8221; &amp;  Parameters!DatabaseName.Value</em></p>
<p>It should look like this in the window</p>
<p><img style="vertical-align: middle;" src="http://www.beakersoft.co.uk/img/ds_params.jpg" alt="dataset with Params" width="476" height="409" /></p>
<p>Now when you run the report, you data source will be based on the users choice held in the table</p>
<h2>A couple of things to note</h2>
<p>You will find it hard (probably impossable) to write the report with the parameterized data source. You&#8217;ll need to work with your local copy of the database hardcodded into the connection string first, then when you are happy with it change it to the parameter driven one. If you dont do this the report designer wont be able to read the dataset.</p>
<p>You also need to be carful the order in witch you put your user paramters on the report. I found that if i did&#8217;nt put data driven parameters (ie a list of sales areas the user can select) at the top of the list, they were greyed out when you tried to run the report. Not sure why, but i asume its down the the order the datasets are exceuted in</p>
<p>If you have any problems with this, or have any different ways of doing it let me know!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=eR2A8BDm"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=eR2A8BDm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=kyQLHa9b"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=kyQLHa9b" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=U7pAg9hB"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=KaImVtdY"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=Y5uu27bA"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=Y5uu27bA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/S2EkmWgyjfI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2008/06/22/setting-a-data-source-at-runtime-on-sql-reporting-services/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2008/06/22/setting-a-data-source-at-runtime-on-sql-reporting-services/</feedburner:origLink></item>
		<item>
		<title>Error Logging ASP.Net with Elmah</title>
		<link>http://feedproxy.google.com/~r/BeakersoftBlog/~3/tNoJE_6GbYM/</link>
		<comments>http://www.beakersoft.co.uk/2008/05/23/error-logging-aspnet-with-elmah/#comments</comments>
		<pubDate>Fri, 23 May 2008 09:02:35 +0000</pubDate>
		<dc:creator>beakersoft</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Elmah]]></category>
		<category><![CDATA[exeption handling]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[programing]]></category>

		<guid isPermaLink="false">http://www.beakersoft.co.uk/?p=174</guid>
		<description><![CDATA[I&#8217;ve been in the situation a few times with ASP.Net applications where someone says to you &#8216;I got this error on screen when I did x, I don&#8217;t know what it said but i couldn&#8217;t work.&#8217;
Odds are you have got an unhanded exception in your web application, but how are you meant to debug it [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been in the situation a few times with ASP.Net applications where someone says to you &#8216;I got this error on screen when I did x, I don&#8217;t know what it said but i couldn&#8217;t work.&#8217;</p>
<p>Odds are you have got an unhanded exception in your web application, but how are you meant to debug it when the error has long gone? Elmah (<em>error logging and error handling modules for asp.net) </em>may well be your saviour. Download it out now from <a title="elmah download" href="http://code.google.com/p/elmah/" target="_blank">http://code.google.com/p/elmah/</a></p>
<h2>So, what does it do?</h2>
<p>Well, once you have it configured on your application or server, every time something causes an unhanded exception it will log it into a database, send you an email alert and fix the code for you (last part was a joke!). So, now when the user tells you they have had an problem you can look in the system and see exactly what happened.</p>
<p><img style="vertical-align: middle;" src="http://www.beakersoft.co.uk/img/elmah_1.jpg" alt="elmah example" /></p>
<p>The application is open source, and is based on the article at <a href="http://msdn.microsoft.com/en-us/library/aa479332.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/aa479332.aspx</a>, check that article out if you want to know more about how it was written</p>
<h2>Installing it</h2>
<p>You can run it in two ways, on a particular web application or at the server level. As I was a bit confused at first as to how to set it up, here is a quick guide to installing it for an individual application and log the errors onto a SQL 2000 server.</p>
<ol>
<li>Download the zip file from the website, if you are using dotnet 2.0 you will need the latest beta version.</li>
<li>Extract the files, in the <em>src/Elmah/</em> folder find the <em>Database.sql</em> script. This is the script that will build the tables it needs. Create a new database and run this script on the database</li>
<li>Next, go into the <em>bin/net-2.0/Release/</em> folder, and copy the <em>Elmah.dll</em> and <em>Elmah.xml</em> files into you applications <em>/bin</em> folder</li>
<li>Once you have the assembly, you need to configure your application to use it. You do this by adding some sections into your applications web.config file. In the <em>/samples</em> folder there is an example web.config file you can get all the information out of to put in your file. For the most part it is easy to follow, but I had a couple of problems.</li>
<li>The first one was the database connection, make sure you add a new connection to your <em>&lt;connectionStrings&gt; </em>section that points at the database you have created.</li>
<li>You then need to point to this connection in the <em>connectionStringName</em> section of the elmah <em>errorLog.</em></li>
<li>Once you have added the other sections into your config file you should just be able to browse to your site /<em>elmah.axd</em> to see your errors</li>
</ol>
<p>You can also configure options such as getting it to send an email when an exception occurs, subscribe to the log as an rss feed etc.</p>
<p>So now you should have a handy reference point for all your exemptions. You can tell the user you are looking into there problem before they even report it to you!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=R86QZu57"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=R86QZu57" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=POzC6Nrw"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=POzC6Nrw" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=JxzdcvGB"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=tkU02D6K"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/BeakersoftBlog?a=WO3HhDQq"><img src="http://feeds.feedburner.com/~f/BeakersoftBlog?i=WO3HhDQq" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/BeakersoftBlog/~4/tNoJE_6GbYM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.beakersoft.co.uk/2008/05/23/error-logging-aspnet-with-elmah/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.beakersoft.co.uk/2008/05/23/error-logging-aspnet-with-elmah/</feedburner:origLink></item>
	</channel>
</rss>
