<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-5431217560500281344</id><updated>2010-02-09T09:22:10.870+01:00</updated><title type='text'>denouter.net</title><subtitle type='html'>under construction . . .</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.denouter.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5431217560500281344.post-8717852163458909289</id><published>2010-02-08T20:15:00.006+01:00</published><updated>2010-02-08T20:35:32.502+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iMac'/><category scheme='http://www.blogger.com/atom/ns#' term='Sleep'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS X'/><title type='text'>Snow Leopard takes too long to sleep (not anymore)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.tech2buzz.com/images/imac.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 296px; height: 218px;" src="http://www.tech2buzz.com/images/imac.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Usually it takes my iMac about 1 or 2 seconds to sleep (hibernate). Today it took about 25 seconds. I turned off my mac, started it again, but still it took about 25 seconds to sleep.&lt;br /&gt;&lt;br /&gt;You can use the command &lt;span style="font-weight: bold;font-family:courier new;" &gt;pmset -g log&lt;/span&gt; to figure out whats happening when the mac goes to sleep. In my case I noticed an "applicationresponse.timedout" in this log for the process cupsd. This is the printer-deamon. Viewing the status of my printer I noticed a document I printed yesterday, which hasn't come out because the printer ran out of paper. Removing this item from the print-queue resulted back in a mac which went to sleep in 1-2 seconds.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5431217560500281344-8717852163458909289?l=blog.denouter.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.denouter.net/feeds/8717852163458909289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5431217560500281344&amp;postID=8717852163458909289' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/8717852163458909289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/8717852163458909289'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/2010/02/snow-leopard-takes-too-long-to-sleep.html' title='Snow Leopard takes too long to sleep (not anymore)'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11207696864661193583'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5431217560500281344.post-1967922821090435406</id><published>2010-01-29T15:04:00.004+01:00</published><updated>2010-01-29T15:57:52.729+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>ORA-06413 Connection not open.</title><content type='html'>I'd moved the source files from a c# .net application on my filesystem. When I openened the solution in VS2008 and started it I got the following error "ORA-06413 Connection not open."&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Solution to this problem: One of my folders had an opening parenthesis "(". Removing this parenthesis solved the problem!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5431217560500281344-1967922821090435406?l=blog.denouter.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.denouter.net/feeds/1967922821090435406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5431217560500281344&amp;postID=1967922821090435406' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/1967922821090435406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/1967922821090435406'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/2010/01/ora-06413-connection-not-open.html' title='ORA-06413 Connection not open.'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11207696864661193583'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5431217560500281344.post-6404436397916052278</id><published>2010-01-18T07:27:00.001+01:00</published><updated>2010-01-18T13:46:44.301+01:00</updated><title type='text'>Dag MCE, hallo XBMC !</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lEGrjlfeFMU/S1RX_G3FwhI/AAAAAAAAACQ/1tPlNvxDEjk/s1600-h/images.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 114px; height: 116px;" src="http://4.bp.blogspot.com/_lEGrjlfeFMU/S1RX_G3FwhI/AAAAAAAAACQ/1tPlNvxDEjk/s400/images.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5428060192573342226" /&gt;&lt;/a&gt;&lt;br /&gt;Ik gebruikte Windows XP MCE al voor een tijdje voor het afspelen van mijn media. Mooie hiervan was dat ook &lt;a href="http://www.uitzendinggemist.nl/"&gt;uitzending gemist&lt;/a&gt; via online spotlight benaderbaar was. Tot voorkort ... Ineens gaf het de melding dat dit niet gesupporteerd was. Bij het volgen van de help kwam ik op een MS-website die mij doodleuk meldde dat ik moest upgraden naar Windows 7 ! Dit houdt voor mij in dat ik ook mijn hardware moet upgraden; &lt;b&gt;dus niet!&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;img src="http://3.bp.blogspot.com/_lEGrjlfeFMU/S1RXbQmXYSI/AAAAAAAAACI/m3mKkpwM9Ow/s400/802324.gif" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 197px; height: 131px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5428059576712257826" /&gt;&lt;div&gt;Ik ben via &lt;a href="http://www.plexapp.com/"&gt;Plex&lt;/a&gt; voor de Mac terecht gekomen op de site van &lt;a href="http://xbmc.org/about/"&gt;XBMC&lt;/a&gt; en door middel van &lt;a href="http://www.rieter.net/uitzendinggemist/"&gt;deze plugin&lt;/a&gt; kan ik gewoon uitzendinggemist kijken op mijn "oude" mediacenter. Het is met XBMC niet mogelijk om programma's op te nemen via een TV kaart, maar het doet verder niet onder voor MCE. Tevens zijn er veel plugins verkrijgbaar op &lt;a href="http://www.xbmczone.com/"&gt;deze&lt;/a&gt; site.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5431217560500281344-6404436397916052278?l=blog.denouter.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.denouter.net/feeds/6404436397916052278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5431217560500281344&amp;postID=6404436397916052278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/6404436397916052278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/6404436397916052278'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/2010/01/dag-mce-hallo-xbmc.html' title='Dag MCE, hallo XBMC !'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11207696864661193583'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lEGrjlfeFMU/S1RX_G3FwhI/AAAAAAAAACQ/1tPlNvxDEjk/s72-c/images.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5431217560500281344.post-953181780828327876</id><published>2009-11-06T13:38:00.005+01:00</published><updated>2009-11-06T13:52:25.202+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='secutiry'/><title type='text'>.Net Application on a network share</title><content type='html'>I'd developed a .net framework 2.0 winform application for a customer which had to be started on a client pc from a network share. I'd already had framework 3.5 sp1 on my machine, but with setting the .net target right I thought I made solid solution.&lt;br /&gt;&lt;br /&gt;The customer could not start it. They got a System.Security.Security exception when starting the application on a client with .net framework 2.0 from the network. When copying the application on the client machine first, it started with no problems.&lt;br /&gt;&lt;br /&gt;On clients which already had framework 3.5 sp1 there was no problem starting the application from the network share.&lt;br /&gt;&lt;br /&gt;The answer lies in some sort of trust policies, which are changed (or gone) on framework 3.5&lt;br /&gt;&lt;br /&gt;By giving the share full trust of the client:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -m -ag 1 -url "file:////\\&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;computername&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;\&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;sharename&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;\*" FullTrust -exclusive on&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The application can be started on a client with .net framework 2.0 from a network share.&lt;br /&gt;&lt;br /&gt;NOTE: do not run this command twice on the same computer, the full trust does not work anymore!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5431217560500281344-953181780828327876?l=blog.denouter.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.denouter.net/feeds/953181780828327876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5431217560500281344&amp;postID=953181780828327876' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/953181780828327876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/953181780828327876'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/2009/11/net-application-on-network-share.html' title='.Net Application on a network share'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11207696864661193583'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5431217560500281344.post-6981768189745031880</id><published>2009-09-24T21:10:00.000+02:00</published><updated>2009-09-24T21:12:04.926+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mut.txt'/><category scheme='http://www.blogger.com/atom/ns#' term='bank'/><category scheme='http://www.blogger.com/atom/ns#' term='overzicht'/><title type='text'>Rabobank Overview</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lEGrjlfeFMU/SrvAja7B4YI/AAAAAAAAACA/GEzeep1OpJE/s1600-h/schermafdruk_480.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer" src="http://4.bp.blogspot.com/_lEGrjlfeFMU/SrvAja7B4YI/AAAAAAAAACA/GEzeep1OpJE/s400/schermafdruk_480.png" alt="" id="BLOGGER_PHOTO_ID_5385109494206423426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Om een duidelijk overzicht te krijgen van de in- en uitgaven in de maand heb ik een programmaatje gemaakt die aan de hand van Rabobank internet bankieren een overzicht maakt van de in- en uitgaven.&lt;br /&gt;&lt;br /&gt;Ook is het mogelijk om binnen de transacties te zoeken en mutaties "af te vinken".&lt;br /&gt;Meer informatie vind je in de &lt;a href="http://denouter.net/downloads/rabo/rabobankoverview.pdf"&gt;snel start gids&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://denouter.net/downloads/rabo/launch.jnlp"&gt;&lt;img src="http://denouter.net/downloads/webstart.png" border="0" /&gt;  Start de applicatie&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5431217560500281344-6981768189745031880?l=blog.denouter.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.denouter.net/feeds/6981768189745031880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5431217560500281344&amp;postID=6981768189745031880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/6981768189745031880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/6981768189745031880'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/2009/09/rabobank-overview.html' title='Rabobank Overview'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11207696864661193583'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lEGrjlfeFMU/SrvAja7B4YI/AAAAAAAAACA/GEzeep1OpJE/s72-c/schermafdruk_480.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5431217560500281344.post-8730725803789739557</id><published>2009-06-23T13:40:00.004+02:00</published><updated>2009-06-23T13:55:38.632+02:00</updated><title type='text'>Guid.comb and synchronization</title><content type='html'>&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Synchronize an entity between two databases.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I had set up this records with a GUID and used the guid.comb from NHibernate to generate these for me.&lt;br /&gt;Then I needed to synchronize this object with an other database.&lt;br /&gt;&lt;br /&gt;Using NHibernate, just create a new session, evict the object from the first one, and save it the next one. No problem, except a new GUID was generated....&lt;br /&gt;&lt;br /&gt;My assumption was that an entity with a guid.com generated GUID kept its value. I was wrong.&lt;br /&gt;&lt;br /&gt;The answer lies in the ISession.Replicate. This allowes me to copy an entity from one session to another witout losing the generated key.&lt;pre class="brush: csharp"&gt;  foreach (var person in persons)&lt;br /&gt;  {&lt;br /&gt;      sourceSession.Evict(person);&lt;br /&gt;      targetSession.Replicate(person, ReplicationMode.Overwrite);&lt;br /&gt;  }&lt;br /&gt;  targetSession.Flush();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The ReplicationMode lets you choose the behaviour (Overwrite, LatestVersion, Ignore etc.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5431217560500281344-8730725803789739557?l=blog.denouter.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.denouter.net/feeds/8730725803789739557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5431217560500281344&amp;postID=8730725803789739557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/8730725803789739557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/8730725803789739557'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/2009/06/guidcomb-and-synchronization.html' title='Guid.comb and synchronization'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11207696864661193583'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5431217560500281344.post-6651084699678864192</id><published>2009-06-18T07:31:00.002+02:00</published><updated>2009-06-18T20:58:43.088+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Linq To NHibernate</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Compile your queries&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One of the hardest things to do with a database application (e.g. a c# WinForm) is to create all the queries in your app. Where to put them in the model? Use queries, or make stored procedures on the database etc etc.&lt;br /&gt;Then creating all these queries in your code as strings; &lt;pre class="brush: csharp"&gt;"SELECT name, age, .. FROM ..."&lt;/pre&gt;&lt;br /&gt;This is a lot of work and causes runtime errors because these queries aren't checked at compile-time. Then there are issues of caching, relational data, locking etc etc. All these issues can be solved by &lt;a href="http://en.wikipedia.org/wiki/NHibernate" target="_blank"&gt;NHibernate&lt;/a&gt;. This framework maps your OO-Model to your relational model and creates the queries, relations, locking etc for you.&lt;br /&gt;But still there are these runtime errors which may occur, because even a Criteria/Expression in NHibernate uses strings as properties.&lt;br /&gt;&lt;pre class="brush: csharp"&gt;&lt;br /&gt;  .Add(Expression.Like("Title", "Linq To%"))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This can be solved using &lt;a href="http://en.wikipedia.org/wiki/Language_Integrated_Query" target="_Blank"&gt;Linq&lt;/a&gt; To NHibernate. This extension to the ISession creates an IQueriable which uses the intellisense of Visual Studio&lt;br /&gt;&lt;pre class="brush: csharp"&gt;&lt;br /&gt;var q = from tasks in session.Linq&amp;lt;task&amp;gt;()&lt;br /&gt;      where tasks.Title.StartsWith("Linq To")&lt;br /&gt;      select tasks;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Linq To NHibernate also eases creating queries with multiple joins:&lt;br /&gt;&lt;pre class="brush: csharp"&gt;&lt;br /&gt;var q = from tasks in session.Linq&amp;lt;task&amp;gt;()&lt;br /&gt;      where tasks.Owner.Address.City == "Dalem"&lt;br /&gt;      select tasks;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I find Linq To NHibernate a great help with developing my database applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5431217560500281344-6651084699678864192?l=blog.denouter.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.denouter.net/feeds/6651084699678864192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5431217560500281344&amp;postID=6651084699678864192' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/6651084699678864192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/6651084699678864192'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/2009/06/linq-to-nhibernate.html' title='Linq To NHibernate'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11207696864661193583'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5431217560500281344.post-5549100171055093968</id><published>2009-03-13T20:19:00.011+01:00</published><updated>2009-03-16T09:01:05.064+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parameter sniffing'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>Optimize SQL Server 2005 Procedures</title><content type='html'>I had a stored procedure which took about 3 minutes to run, but starting this query in the management studio of sql server took 2 seconds! The problem lies in the "parameter sniffing". Google it for the exact cause, but copying the parameter variables to local variables within the procedure like the example below does the trick.&lt;br /&gt;&lt;br /&gt;Slow procedure:&lt;br /&gt;&lt;pre class="brush: sql"&gt;&lt;br /&gt;CREATE PROCEDURE GetMeMyData&lt;br /&gt;@param1 NVARCHAR(20)&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;SELECT id, name, otherstuff&lt;br /&gt;FROM dbo.table1&lt;br /&gt;WHERE param1 = @param1&lt;br /&gt;END&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Fast procedure:&lt;br /&gt;&lt;pre class="brush: sql"&gt;&lt;br /&gt;CREATE PROCEDURE GetMeMyData&lt;br /&gt;@param1 NVARCHAR(20)&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;DECLARE @localParam1 NVARCHAR(20)&lt;br /&gt;SET @localParam1 = @param1&lt;br /&gt;SELECT id, name, otherstuff&lt;br /&gt;FROM dbo.table1&lt;br /&gt;WHERE param1 = @localParam1&lt;br /&gt;END&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;At first I tought it had something to do with an outdated version of SQL Server, but it even occurs on SQL Server 2005 SP3.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5431217560500281344-5549100171055093968?l=blog.denouter.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.denouter.net/feeds/5549100171055093968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5431217560500281344&amp;postID=5549100171055093968' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/5549100171055093968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/5549100171055093968'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/2009/03/optimize-sql-server-2005-procedures.html' title='Optimize SQL Server 2005 Procedures'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11207696864661193583'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5431217560500281344.post-2224334417391807693</id><published>2009-02-26T20:45:00.007+01:00</published><updated>2009-03-15T14:45:45.655+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflection'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Fast Clone</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Ever had to make a in memory copy of a simple object? You then have to copy each property or create an IClonable implentation. Just like the &lt;a href="http://blog.denouter.net/2008/08/simple-reflection-form.html"&gt;simple reflection form&lt;/a&gt; you can use reflection to create a fast clone.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Just call the static method FastClone.Clone:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;&lt;br /&gt;Customer c = new Customer&lt;br /&gt;{&lt;br /&gt;Id = Guid.NewGuid(),&lt;br /&gt;Name = "Frank",&lt;br /&gt;Age = 31,&lt;br /&gt;Married = true&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;Customer c2 = (Customer)FastClone.Clone(c, "Id");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Optionally properties can be given to exclude from the clone.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;You can download the source of FastClone &lt;/span&gt;&lt;a style="font-family: arial;" href="http://denouter.net/downloads/fastclone.zip"&gt;here&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Enjoy!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5431217560500281344-2224334417391807693?l=blog.denouter.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.denouter.net/feeds/2224334417391807693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5431217560500281344&amp;postID=2224334417391807693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/2224334417391807693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/2224334417391807693'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/2009/02/fast-clone.html' title='Fast Clone'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11207696864661193583'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5431217560500281344.post-4288133755885566346</id><published>2008-12-19T05:54:00.002+01:00</published><updated>2008-12-19T11:21:35.307+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Timeout'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>Arithmetic Abort Enabled</title><content type='html'>I have a stored procedure in SQL Server 2005 which takes a lot of a time to run from my .Net 2.0 Framework application and sometimes even gives a "Timeout expired".&lt;br /&gt;Executing the same stored procedure in SQL Server Management Studio gives the result in less than 2 seconds! Why??&lt;br /&gt;&lt;br /&gt;The answer lays in one single setting. When SQL Server Management Studio connects to the database it sets the "Arithmetic Abort Enabled" on. This option triggers the database to create new executions plans for the stored procedures. &lt;br /&gt;&lt;br /&gt;Setting this option improved the performance of my .Net 2.0 Framework application!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5431217560500281344-4288133755885566346?l=blog.denouter.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.denouter.net/feeds/4288133755885566346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5431217560500281344&amp;postID=4288133755885566346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/4288133755885566346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/4288133755885566346'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/2008/12/arithmetic-abort-enabled.html' title='Arithmetic Abort Enabled'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11207696864661193583'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5431217560500281344.post-581776585631488915</id><published>2008-08-05T06:00:00.008+02:00</published><updated>2009-03-15T21:51:41.758+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflection'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Simple reflection form</title><content type='html'>&lt;span style="font-family:arial;"&gt;Haven't you had some &lt;a href="http://en.wikipedia.org/wiki/POCO"&gt;poco's&lt;/a&gt; (plain old CLR object) you just want to edit, but you had to make a form for each object?&lt;br /&gt;&lt;br /&gt;The solution to this is dot net's reflection. The SimpleReflectionForm takes an object like the Customer below and shows this in a form.&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;&lt;br /&gt;public class Customer&lt;br /&gt;{&lt;br /&gt;   public Guid Id { get; set; }&lt;br /&gt;   public string Name { get; set; }&lt;br /&gt;   public int Age { get; set; }&lt;br /&gt;   public bool Married { get; set; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Just call the form:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;&lt;br /&gt;Customer c = new Customer&lt;br /&gt;{&lt;br /&gt; Id = Guid.NewGuid(),&lt;br /&gt; Name = "Frank",&lt;br /&gt; Age = 31,&lt;br /&gt; Married = true&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;using (SimpleReflectionForm f&lt;br /&gt;    = new SimpleReflectionForm(c, "Id"))&lt;br /&gt;{&lt;br /&gt;  f.ShowDialog();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The following form is shown:&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lEGrjlfeFMU/SJgull8ShxI/AAAAAAAAAAY/ES2W-3pBa2M/s1600-h/simplereflectionform.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_lEGrjlfeFMU/SJgull8ShxI/AAAAAAAAAAY/ES2W-3pBa2M/s400/simplereflectionform.jpg" alt="" id="BLOGGER_PHOTO_ID_5230982190565852946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;As you can see the Id is ignored, by the optional parameter string[] propertiesToExclude.&lt;br /&gt;The form supports all native .net types (int, string, datetime, guid etc). Guid and numeric types are verified when the Ok button is pressed.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;You can download the source of SimpleReflectionForm &lt;/span&gt;&lt;a style="font-family: arial;" href="http://denouter.net/downloads/simplereflectionform.zip"&gt;here&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Enjoy!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5431217560500281344-581776585631488915?l=blog.denouter.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.denouter.net/feeds/581776585631488915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5431217560500281344&amp;postID=581776585631488915' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/581776585631488915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/581776585631488915'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/2008/08/simple-reflection-form.html' title='Simple reflection form'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11207696864661193583'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_lEGrjlfeFMU/SJgull8ShxI/AAAAAAAAAAY/ES2W-3pBa2M/s72-c/simplereflectionform.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5431217560500281344.post-778655709746679382</id><published>2008-08-04T20:15:00.002+02:00</published><updated>2009-03-15T21:54:16.871+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='distinct'/><category scheme='http://www.blogger.com/atom/ns#' term='union'/><category scheme='http://www.blogger.com/atom/ns#' term='odbc'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='ms access'/><title type='text'>UNION with DISTINCT via ODBC to ORACLE</title><content type='html'>&lt;span style="font-family:arial;"&gt;In a VBA application (MS Access XP) with linked tables to Oracle the following query completely crashes Access!&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: sql"&gt;&lt;br /&gt;SELECT A1.V_ID, A1.PR_ID, A1.AREA_ID, A1.TYPE,&lt;br /&gt; A1.AREA, A1.AREA_MAIN_ID, A1.ACTIVE&lt;br /&gt;FROM AREAS AS A1&lt;br /&gt;UNION SELECT DISTINCT A2.V_ID, A2.PR_ID,&lt;br /&gt;-1 AS AREA_ID, A2.TYPE, '' AS AREA,&lt;br /&gt;A2.AREA_MAIN_ID, -1 AS ACTIVE&lt;br /&gt;FROM AREAS AS  A2;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Solution&lt;/span&gt;: convert the &lt;span style="font-weight: bold;"&gt;distinct &lt;/span&gt;to a &lt;span style="font-weight: bold;"&gt;group by&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: sql"&gt;&lt;br /&gt;SELECT A1.V_ID, A1.PR_ID, A1.AREA_ID, A1.TYPE,&lt;br /&gt;A1.AREA, A1.AREA_MAIN_ID, A1.ACTIVE&lt;br /&gt;FROM AREAS AS  A1&lt;br /&gt;UNION (&lt;br /&gt;SELECT A2.V_ID, A2.PR_ID, -1 AS AREA_ID, A2.TYPE,&lt;br /&gt;'' AS AREA, A2.AREA_MAIN_ID, -1 AS ACTIVE&lt;br /&gt;FROM AREAS AS A2&lt;br /&gt;GROUP BY A2.V_ID, A2.PR_ID, A2.TYPE, A2.AREA_MAIN_ID);&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5431217560500281344-778655709746679382?l=blog.denouter.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.denouter.net/feeds/778655709746679382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5431217560500281344&amp;postID=778655709746679382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/778655709746679382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/778655709746679382'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/2008/08/union-with-distinct-via-odbc-to-oracle.html' title='UNION with DISTINCT via ODBC to ORACLE'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11207696864661193583'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5431217560500281344.post-3314115946071804105</id><published>2008-07-24T18:15:00.006+02:00</published><updated>2009-03-15T21:56:59.495+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='constraints'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Enable &amp; disable foreign keys in Oracle</title><content type='html'>&lt;pre class="brush: sql"&gt;&lt;br /&gt;CREATE OR REPLACE PROCEDURE DIS_FK_CONSTR as&lt;br /&gt;CURSOR c iS&lt;br /&gt;SELECT CONSTRAINT_NAME, TABLE_NAME&lt;br /&gt;FROM user_constraints&lt;br /&gt;WHERE CONSTRAINT_TYPE = 'R' AND STATUS = 'ENABLED';&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;FOR i IN c LOOP&lt;br /&gt;EXECUTE IMMEDIATE 'ALTER TABLE ' || i.TABLE_NAME ||&lt;br /&gt;' DISABLE CONSTRAINT ' || i.CONSTRAINT_NAME;&lt;br /&gt;END LOOP;&lt;br /&gt;&lt;br /&gt;END DIS_FK_CONSTR;&lt;br /&gt;/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: sql"&gt;&lt;br /&gt;CREATE OR REPLACE PROCEDURE ENA_FK_CONSTR as&lt;br /&gt;CURSOR c iS&lt;br /&gt;SELECT CONSTRAINT_NAME, TABLE_NAME&lt;br /&gt;FROM user_constraints&lt;br /&gt;WHERE CONSTRAINT_TYPE = 'R' AND STATUS = 'DISABLED';&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;FOR i IN c LOOP&lt;br /&gt;EXECUTE IMMEDIATE 'ALTER TABLE ' || i.TABLE_NAME ||&lt;br /&gt;' ENABLE CONSTRAINT ' || i.CONSTRAINT_NAME;&lt;br /&gt;END LOOP;&lt;br /&gt;&lt;br /&gt;END ENA_FK_CONSTR;&lt;br /&gt;/&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5431217560500281344-3314115946071804105?l=blog.denouter.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.denouter.net/feeds/3314115946071804105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5431217560500281344&amp;postID=3314115946071804105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/3314115946071804105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5431217560500281344/posts/default/3314115946071804105'/><link rel='alternate' type='text/html' href='http://blog.denouter.net/2008/07/enable-disable-foreign-keys-in-oralce.html' title='Enable &amp; disable foreign keys in Oracle'/><author><name>Frank</name><uri>http://www.blogger.com/profile/01671244514753080091</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11207696864661193583'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>