<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-30916058</id><updated>2012-02-11T02:15:47.919+01:00</updated><category term='Astonishing'/><category term='Drupal'/><category term='Audio'/><category term='SQL'/><category term='SQL Server 2008'/><category term='Chrome'/><category term='Database'/><category term='SQL Developer'/><category term='Fonts'/><category term='SQL Server 2005'/><category term='Internet Explorer'/><category term='SQLite'/><category term='iPad'/><category term='OBIEE'/><category term='Movies'/><category term='Oracle'/><category term='SSIS'/><category term='RS'/><category term='multimedia'/><category term='Windows 7 x64'/><category term='OS'/><title type='text'>Locks &amp; Latches</title><subtitle type='html'>Databases, Programming, Operating System, Graphics, Fonts, Composing music,...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-30916058.post-14396979109961269</id><published>2011-12-03T09:50:00.003+01:00</published><updated>2011-12-03T09:57:26.707+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><title type='text'>Annoying search engine abroad question</title><content type='html'>Google Chrome asks you if you would like to use another omnibox search engine when you move from one country to another. When you move across the border a lot, then this becomes quite an annoying message:&lt;br /&gt;&lt;br /&gt;"Would you like to search with google.country1 instead of google.country2?"&lt;br /&gt;&lt;br /&gt;If you always want to use e.g. google.nl, then make the following change:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Wrench -&amp;gt; Options -&amp;gt; Basics -&amp;gt; Manage search engines&lt;/li&gt;&lt;li&gt;Scroll to the bottom and fill in the columns:&lt;/li&gt;&lt;li&gt;In the first column: GoogleNEW&lt;/li&gt;&lt;li&gt;In the second: Google&lt;/li&gt;&lt;li&gt;In the third:&amp;nbsp;http://google.nl/search?{google:RLZ}{google:acceptedSuggestion}{google:originalQueryForSuggestion}{google:searchFieldtrialParameter}{google:instantFieldTrialGroupParameter}sourceid=chrome&amp;amp;ie={inputEncoding}&amp;amp;q=%s&lt;/li&gt;&lt;li&gt;Hit Enter/Return, else the results will no be saved&lt;/li&gt;&lt;li&gt;Hover over the third column and click "make default"&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-14396979109961269?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/14396979109961269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=14396979109961269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/14396979109961269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/14396979109961269'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2011/12/annoying-search-engine-abroad-question.html' title='Annoying search engine abroad question'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-8886293527726197346</id><published>2011-10-05T10:32:00.007+02:00</published><updated>2011-10-05T12:27:55.555+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Quipu connections</title><content type='html'>&lt;div style="text-align: left;"&gt;Several ways to create a database connection in the open source data warehouse generator &lt;a href="http://www.datawarehousemanagement.org/"&gt;Quipu&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;b&gt;SQL Express&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SQL Server configuration manager -&amp;gt;&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Protocols for SQLExpress -&amp;gt; TCP/IP: enabled&lt;/li&gt;&lt;li&gt;TCP/IP -&amp;gt; IP Adresses -&amp;gt; IP All -&amp;gt; TCP Dynamic Ports: empty&lt;/li&gt;&lt;li&gt;TCP/IP -&amp;gt; IP Adresses -&amp;gt; IP All -&amp;gt; TCP Port: 666&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;SQL Server management studio -&amp;gt; SQL Express server properties -&amp;gt; Security -&amp;gt; Server Authentication: SQL Server and Windows Authentication mode&lt;/li&gt;&lt;li&gt;Create a SQL Server authentication login on the database server and assign it to the database that will be used by the connection, e.g. login: quipu, password: quipu&lt;/li&gt;&lt;li&gt;If the database runs on the same machine as Quipu, use "localhost" as the host name. Otherwise use the remote host name&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-_idOOESrFKE/TowWErULlAI/AAAAAAAAAJ8/cuxAhUCP4SQ/s1600/ScreenHunter_02+Oct.+05+10.31.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-_idOOESrFKE/TowWErULlAI/AAAAAAAAAJ8/cuxAhUCP4SQ/s400/ScreenHunter_02+Oct.+05+10.31.jpg" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Note:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Do not use the instance name, e.g. using "AdventureWorks;instance=sqlexpress" as database works, but will,&amp;nbsp;depending on the SQL Server version,&amp;nbsp;result in an "unable to get information" error.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-8886293527726197346?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/8886293527726197346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=8886293527726197346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/8886293527726197346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/8886293527726197346'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2011/10/quipu-connections.html' title='Quipu connections'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-_idOOESrFKE/TowWErULlAI/AAAAAAAAAJ8/cuxAhUCP4SQ/s72-c/ScreenHunter_02+Oct.+05+10.31.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-4671501988068648648</id><published>2011-07-27T11:53:00.004+02:00</published><updated>2011-07-27T12:16:08.599+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7 x64'/><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><title type='text'>Live calendar displays incorrectly in Chrome</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/-pngYLxKxtzo/Ti_lMFUF_hI/AAAAAAAAAJI/i5tCZAnsujc/s1600/chrome.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-pngYLxKxtzo/Ti_lMFUF_hI/AAAAAAAAAJI/i5tCZAnsujc/s200/chrome.png" width="200" /&gt;&lt;/a&gt;At last the Windows Live calendar displays appointments correctly again in the latest Google Chrome beta release,&amp;nbsp;14.0.835.2. They fixed the improper displaying of events.&lt;br /&gt;&lt;br /&gt;Up until now you had to use a workaround to have the bars visible in the month view:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the extention &lt;a href="https://chrome.google.com/webstore/detail/fjnbnpbmkenffdnngjfgmeleoegfcffe#"&gt;Stylish&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Download the style "&lt;a href="http://userstyles.org/styles/49404/hotmail-calendar-events-fix-for-chrome-browser"&gt;Hotmail calendar events fix for Chrome browser&lt;/a&gt;"&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-4671501988068648648?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/4671501988068648648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=4671501988068648648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/4671501988068648648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/4671501988068648648'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2011/07/live-calendar-displays-incorrectly-in.html' title='Live calendar displays incorrectly in Chrome'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-pngYLxKxtzo/Ti_lMFUF_hI/AAAAAAAAAJI/i5tCZAnsujc/s72-c/chrome.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-5206661097249675432</id><published>2011-02-22T12:56:00.041+01:00</published><updated>2011-02-23T21:33:21.368+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OBIEE'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Working with dates in OBIEE</title><content type='html'>Here are several options to set date formats in OBIEE. Option #1 is the best way to work with dates and comparison of dates to strings containing dates in a particular format.&lt;br /&gt;&lt;br /&gt;See also:&amp;nbsp;&lt;a href="http://gerardnico.com/wiki/dat/obiee/cast_as_date"&gt;http://gerardnico.com/wiki/dat/obiee/cast_as_date&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The most important settings (with example values) are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DATE_DISPLAY_FORMAT parameter in nqsconfig.ini: YYYY/MM/DD&lt;/li&gt;&lt;li&gt;DATESHORTFORMAT parameter in localedefinitions.xml (based on the locale set in nqsconfig.ini):&amp;nbsp;M/D/YYYY&lt;/li&gt;&lt;li&gt;NLS_DATE_FORMAT parameter of the session (or database default): DD-MON-RR&lt;/li&gt;&lt;/ul&gt;Do not confuse these with parameters in dbfeatures.ini. There this format is the default for almost all database platforms in parameter&amp;nbsp;DATE_FORMAT parameter.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Method 1 is&amp;nbsp;used for implicit casting only if physical&amp;nbsp;-&amp;gt; Database -&amp;gt; Features: CAST_SUPPORTED is available and enabled. Otherwise the settings described in method 4 (nqsconfig.ini) are used.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1) Tell Oracle how to interpret the casting of a string to date &lt;/b&gt;&lt;b&gt;or vice versa&amp;nbsp;&lt;/b&gt;&lt;b&gt;(preferred method)&lt;/b&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Explicitly set the Oracle NLS property for this to work unambiguously. This property can be set on a database level, affecting all connections made to the database. Alternatively, the property can also be set on the OBI connection in the physical layer of the Admin tool to only affect the current session:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Double-click "Connection pool" for the Oracle connection&lt;/li&gt;&lt;li&gt;Select "Connection Scripts" tab&lt;/li&gt;&lt;li&gt;Add "Execute on Connect" script and type: &lt;br /&gt;ALTER SESSION SET NLS_DATE_FORMAT='YYYYMMDD'&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Then, use the following function in Answers formulae:&lt;br /&gt;&lt;br /&gt;CAST('20110215' TO DATE)&lt;br /&gt;&lt;br /&gt;Note: to check the value of the NLS_DATE_FORMAT parameter at the database level, e.g. from SQL Developer,&amp;nbsp;execute the following statement:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;SELECT * FROM (&lt;/div&gt;&lt;div&gt;SELECT 'instance' as domain, parameter, value FROM NLS_INSTANCE_PARAMETERS UNION&lt;/div&gt;&lt;div&gt;SELECT 'database' as domain, parameter, value FROM NLS_DATABASE_PARAMETERS UNION&lt;/div&gt;&lt;div&gt;SELECT 'session' as domain, parameter, value FROM NLS_SESSION_PARAMETERS&lt;/div&gt;&lt;div&gt;) x WHERE PARAMETER ='NLS_DATE_FORMAT'&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;2) Convert a date to string or vice versa using an Oracle database function&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="MsoNormal"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;Use the OBIEE function EVALUATE to make use of an Oracle database function. In this case, TO_DATE:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Convert string to date:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;EVALUATE('TO_DATE(%1,%2)' AS DATE,'20111231','YYYYMMDD')&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Examples of what doesn't work:&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;EVALUATE('TO_DATE(%1)' AS DATE,'20100101')&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="font-size: medium;"&gt;--&amp;gt; does not work, unless the date happens to be in the nls parameter format&lt;/div&gt;&lt;div style="font-size: medium;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size: medium;"&gt;CAST('20110215' TO DATE)&amp;nbsp;&lt;/div&gt;&lt;/div&gt;--&amp;gt; does not work, unless the string happens to be in the nls parameter format&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Convert date to string:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;EVALUATE('TO_CHAR(%1,%2)' AS CHAR,DIM_DATE.TODAY,'YYYYMMDD')&lt;br /&gt;&lt;br /&gt;EVALUATE('TO_CHAR(%1,''YYYYMMDD'')' AS CHAR,DIM_DATE.TODAY)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Examples of what doesn't work:&lt;/i&gt;&lt;br /&gt;Conversions may fail with "date format not recognized" or "datetime value &lt;specific date="" here=""&gt; does not match the specified format".&lt;/specific&gt;&lt;br /&gt;&lt;br /&gt;&lt;specific date="" here=""&gt;&lt;/specific&gt;EVALUATE('TO_CHAR(%1,%2)',DIM_DATE.TODAY,'YYYYMMDD')&lt;br /&gt;--&amp;gt; does not work, because the result needs to be explicitly cast to a text datatype&lt;br /&gt;&lt;br /&gt;EVALUATE('TO_CHAR(%1)',DIM_DATE.TODAY)&lt;br /&gt;--&amp;gt; does not work, unless the date happens to be in the nls parameter format&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;3) Convert a date to string using different OBIEE functions&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;An alternative method is to convert the date to a string in stead of converting a testing string to a date. The difference is this:&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;DATE = ConvertToDate(STRING)&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;vs&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;ConvertToString(DATE) = STRING&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Convert date to number:&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="MsoNormal"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;year(FACT_ORDERLINE.DATE) * 10000 + month(FACT_ORDERLINE.DATE) * 100 + dayofmonth(FACT_ORDERLINE.DATE) = 20110231&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Note: here the lefthand and righthand side are numbers, not strings, but the idea is the same.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;4) Convert a string to date using the OBIEE function "DATE"&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;In OBIEE, an equivalent of the Oracle function TO_DATE is the DATE function which has a fixed syntax:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;YYYY-MM-DD.&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;For example:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;DATE '2011-01-15'&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Note:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;This syntax cannot be configured and does not depend on locale or nls settings&lt;/li&gt;&lt;li&gt;The function cannot be found in the list of functions when adding a formula in Answers.&amp;nbsp;&lt;/li&gt;&lt;li&gt;It does not use ( or ) signs, but only single-quotes&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;5*) Set uniform datatypes in the Physical Layer&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Set the datatype property in the physical layer on the fields/attributes. Allowed date/time datatypes are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DATE&lt;/li&gt;&lt;li&gt;TIMESTAMP&lt;/li&gt;&lt;/ul&gt;Try to use one, e.g. DATE, as the default to achieve a more universal way of working with dates. TIMESTAMP is required when there is an essential time part. If it is always "00:00:00", then use DATE.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;6*)&amp;nbsp;Locale definitions in configuration files&lt;/b&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;[bipath]\web\config\localedefinitions.xml&lt;br /&gt;-- displays possible formats to choose from&lt;br /&gt;-- locale "us-en" is based on locale: us&lt;br /&gt;-- locale "us" contains all possible attributes to choose from, so is independend of the regional settings&lt;br /&gt;-- of the Windows server&lt;br /&gt;locale: us-en&lt;/li&gt;&lt;li&gt;[bipath]\server\config\nqsconfig.ini&lt;br /&gt;-- for displaying messages&lt;br /&gt;-- this maps to "us-en" in localedefinitions.xml&lt;br /&gt;LOCALE = "English-usa";&lt;br /&gt;-- for input and output of dates&lt;br /&gt;DATE_TIME_DISPLAY_FORMAT = "yyyy/mm/dd hh:mi:ss";&lt;br /&gt;DATE_DISPLAY_FORMAT = "yyyy/mm/dd";&lt;br /&gt;TIME_DISPLAY_FORMAT = "hh:mi:ss";&lt;br /&gt;-- when on, obi does not guess what a string containing a date means&lt;br /&gt;STRONG_DATETIME_TYPE_CHECKING = ON;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;7*) Locale definitions in Answers webinterface&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Set the locale, e.g. "English - United states" on the connection window or in your account settings: Settings -&amp;gt; Account&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;8*) Save display format&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The default display format of a date is set in dbfeatures.ini (?)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It can be overriden for all date datatypes or specific attributes in Answers:&lt;/div&gt;&lt;div&gt;Criteria -&amp;gt; Column properties -&amp;gt; Save -&amp;gt; As the system-wide...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Test casting of date to string&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Example: database or session NLS parameter = 'YYYYMMDD'&lt;br /&gt;&lt;br /&gt;CAST(DIM_DATE.TODAY AS CHAR)&lt;br /&gt;CAST('20110211' AS DATE)&lt;br /&gt;CAST('01-FEB-11' AS DATE)&amp;nbsp;--&amp;gt; will fail if nls parameter is set to YYYYMMDD&lt;br /&gt;&lt;br /&gt;Notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Column properties -&amp;gt; date format (i.e.date or text) is set automatically &lt;b&gt;after&lt;/b&gt; the result of a conversion. It does not steer, in any way, the input of functions.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-5206661097249675432?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/5206661097249675432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=5206661097249675432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5206661097249675432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5206661097249675432'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2011/02/date-configuration-in-obiee.html' title='Working with dates in OBIEE'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-544323832418889426</id><published>2011-02-15T11:46:00.017+01:00</published><updated>2011-02-15T16:48:10.164+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7 x64'/><title type='text'>No login prompt for Exchange</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-nJStAIBcaQg/TVqDNp64oZI/AAAAAAAAAIQ/sxmfdTGSq_I/s1600/outlook.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="150" src="http://3.bp.blogspot.com/-nJStAIBcaQg/TVqDNp64oZI/AAAAAAAAAIQ/sxmfdTGSq_I/s200/outlook.png" width="150" /&gt;&lt;/a&gt;It is possible to suppress the login prompt that appears in Outlook, when trying to connect to an Exchange server via Outlook Web Access.&lt;br /&gt;&lt;br /&gt;This prompt can be skipped:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Close Outlook&lt;/li&gt;&lt;li&gt;Get the Exchange server name:&amp;nbsp;Control Panel -&amp;gt; Mail (32 bit) -&amp;gt; Email accounts... -&amp;gt; View or change existing e-mail accounts -&amp;gt; Double click the "Exchange" account&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The microsoft exchange server name, e.g. exmbx01.acmexchange.com, becomes the &lt;b&gt;exchange server name&lt;/b&gt;: *.acmexchange.com&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Get the webserver name: -&amp;gt; More settings -&amp;gt; Connection -&amp;gt; Exchange proxy settings&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The connection settings URL, e.g. webmail.acmeweb.com, becomes the &lt;b&gt;webserver name&lt;/b&gt;: *.acmeweb.com&lt;/li&gt;&lt;li&gt;Set proxy authentication settings: NTLM authentication&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Start the Credential Manager: Control Panel -&amp;gt; Credential Manager&lt;/li&gt;&lt;li&gt;Add a windows credential, e.g. for jim@acme.com&lt;br /&gt;a. internet or network address: *.acmeweb.com&lt;br /&gt;b. username: jim@acme.com&lt;br /&gt;c. password: pwd&lt;/li&gt;&lt;li&gt;Add another windows credential&lt;br /&gt;a. internet or network address: *.acmexchange.com&lt;br /&gt;b. username: jim@acme.com&lt;br /&gt;c. password: pwd&lt;/li&gt;&lt;/ul&gt;Start Outlook and send/receive. The login popup should be gone.&lt;br /&gt;&lt;br /&gt;Keywords: microsoft exchange, outlook 2003, outlook web access, repeating login prompt&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-544323832418889426?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/544323832418889426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=544323832418889426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/544323832418889426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/544323832418889426'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2011/02/no-login-prompt-for-exchange.html' title='No login prompt for Exchange'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-nJStAIBcaQg/TVqDNp64oZI/AAAAAAAAAIQ/sxmfdTGSq_I/s72-c/outlook.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-7621010517000758379</id><published>2011-01-28T14:34:00.046+01:00</published><updated>2011-12-03T09:56:06.539+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><title type='text'>SkyDrive photos in Flipboard</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_vjGy0v1cTm0/TUK-7l5yyCI/AAAAAAAAAFw/4A6h8xFfFTU/s1600/flipboard.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5567222020379428898" src="http://1.bp.blogspot.com/_vjGy0v1cTm0/TUK-7l5yyCI/AAAAAAAAAFw/4A6h8xFfFTU/s320/flipboard.png" style="cursor: hand; cursor: pointer; float: right; height: 101px; margin: 0 0 10px 10px; width: 150px;" /&gt;&lt;/a&gt;Flipboard is a great app for the iPad. It displays a collections of RSS feeds as a magazine. The latest version (1.1.1) offers the ability to add a Google Reader account, which can contain a multitude of feeds. These feeds can even be categorized. Flipboard can easily display all feeds, the feeds in a category or individual feeds.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;It has the ability to add a Flickr account to show the photos in that account. Unfortunately, Flickr is rather limited in its features: no more than 300MB per month upload.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are alternatives for Flickr, like Google Picasa, Mediafire or Microsoft Live SkyDrive. Picasa has a storage limit of 1GB, which is even worse than Flickr. SkyDrive has a storage limit of 25GB, but no monthly upload quotum. The best thing about SkyDrive is that it has a RSS feed capability, so you can add it to your Google Reader account and have a magazine of photos. Mediafire has no upload or storage limitations, but no RSS feed capability, which is too bad, otherwise it would be the perfect photo-in-flipboard solution.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Because there is no dedicated Microsoft Live SkyDrive iPad app, this is a nice alternative.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unfortunately, the RSS XML that SkyDrive returns is not interpreted by flipboard, like it is interpreted by, say, Google Reader, where the photos are displayed directly in the feed. Flipboard displays an empty article, with a link, that, when clicked, redirects to the photo. This is not useful. It turns out that the &amp;lt;link&amp;gt; element is the culprit.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Workaround&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Optionally, &lt;b&gt;create a &lt;a href="http://explore.live.com/windows-live-skydrive"&gt;SkyDrive&lt;/a&gt; account. &lt;/b&gt;Create a Windows Live / SkyDrive account and create a new folder. Set it as a "photo" folder. Upload some photos to this account. Make a note of the "cid-" code in the URL (or on the SkyDrive webpage). It is the unique identifier for that account. Also make a note of the folder name.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Create a conversion script&lt;/b&gt; that corrects the XML supplied by SkyDrive. Flipboard only displays the photos in the feed items, when the combination of the &amp;lt;link&amp;gt; tags of the &amp;lt;channel&amp;gt; and &amp;lt;item&amp;gt; tags form a valid URL. SkyDrive supplies the complete URL in the &amp;lt;link&amp;gt; tag of each item, so the &amp;lt;link&amp;gt; tag of the &amp;lt;channel&amp;gt; should be empty or not present at all.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Host the script online&lt;/b&gt;. I have created a PHP script called default.php and am hosting it on freehostingnoads.net. An account can be freely created and their PHP configuration support the functionality needed to get HTML code from another website, in this case, SkyDrive. The complete URL to the website is:&lt;br /&gt;&lt;a href="http://www.livestreem.freehostingnoads.net/default.php?cid=dba80f3be68c2301&amp;amp;folder=genericweb"&gt;http://www.livestreem.freehostingnoads.net/default.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Optionally,&lt;b&gt; make the script dynamic&lt;/b&gt;. I added the posibility to supply a SkyDrive account id (CID) and folder to the script. Example for CID "cid-dba80f3be68c2301" and folder "genericweb" :&lt;br /&gt;&lt;a href="http://www.livestreem.freehostingnoads.net/default.php?cid=dba80f3be68c2301&amp;amp;folder=genericweb"&gt;http://www.livestreem.freehostingnoads.net/default.php?cid=dba80f3be68c2301&amp;amp;folder=genericweb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Add script URL to the Google Reader:&lt;/b&gt; add the URL of the conversion script to the Google Reader account. Use the complete URL, including the PHP script name.&lt;br /&gt;So:&lt;br /&gt;&lt;a href="http://www.livestreem.freehostingnoads.net/default.php?cid=dba80f3be68c2301&amp;amp;folder=genericweb"&gt;http://www.livestreem.freehostingnoads.net/default.php?cid=dba80f3be68c2301&amp;amp;folder=genericweb&lt;/a&gt;&lt;br /&gt;and not:&lt;br /&gt;&lt;a href="http://www.livestreem.freehostingnoads.net/default.php?cid=dba80f3be68c2301&amp;amp;folder=genericweb"&gt;http://www.livestreem.freehostingnoads.net/?cid=dba80f3be68c2301&amp;amp;folder=genericweb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Optionally,&lt;b&gt; test the feed&lt;/b&gt;. Google Reader updates the results from feeds at set intervals, that cannot be controlled. Pressing the "refresh" button is only useful after this interval has passed and Google has updated the feed internally. I use Chrome and, to test the feed realtime, I use the extention/add-on "Slick RSS"&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Add a Google Reader section to Flipboard&lt;/b&gt;: login with your username and password. This only needs to be done once. The domain name part of the link tag is used by Flipboard to prefix the text of an item with a bold text containing this text and a small icon. If there is no text, just a photo, it does not do this.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Some downsides:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;History explosion.&lt;/b&gt; Google stores the history of a feed. This can be annoying when testing a script with a lot of photos, because they get added again and again. Even worse, after deleting the subscription and adding it later, Google restores the full history! Google remembers the URL's and content of feeds that were added in the past.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Low resolution.&lt;/b&gt; There is no easy way to get the full resolution photo from SkyDrive. It supplies a encoded path to a preview version - most of the time 600x400 pixels - and, when clicked from within the SkyDrive website, redirects to another encoded path for the full resolution.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Photos are public.&lt;/b&gt; The photos need to be in a publicly available SkyDrive folder, unlike Flickr. With the Flickr photostream of Flipboard it is possible to login in with a username and password to a private folder.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;SkyDrive ASPX pages&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;A list of .Net scripts to access SkyDrive:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;self.aspx: returns SkyDrive page for the specified document/photo&lt;/li&gt;&lt;li&gt;embedphoto.aspx: returns a downsized version of the photo&lt;/li&gt;&lt;li&gt;embedalbum.aspx&lt;/li&gt;&lt;li&gt;feed.aspx: returns a XML document describing the RSS feed&lt;/li&gt;&lt;li&gt;browse.aspx&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Update 20110727:&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Skydrive has been redesigned. The current feed works correctly with Flipboard, so the workaround above is no longer needed!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-7621010517000758379?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/7621010517000758379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=7621010517000758379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7621010517000758379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7621010517000758379'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2011/01/photos-in-flipboard_28.html' title='SkyDrive photos in Flipboard'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vjGy0v1cTm0/TUK-7l5yyCI/AAAAAAAAAFw/4A6h8xFfFTU/s72-c/flipboard.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-4661503185470827721</id><published>2011-01-12T21:12:00.013+01:00</published><updated>2011-01-19T17:13:59.490+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multimedia'/><category scheme='http://www.blogger.com/atom/ns#' term='Audio'/><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><title type='text'>Combine two DVD's into one</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_IBF7o2vIrLw/TS4NTU3ayDI/AAAAAAAAAII/aUoepYdR2SE/s1600/dvd.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;br /&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_IBF7o2vIrLw/TS4NTU3ayDI/AAAAAAAAAII/aUoepYdR2SE/s1600/dvd.png" /&gt;&lt;/a&gt;When you want to combine two DVD's onto one disc, but keep the chapters, then try the following steps. I assume the video_ts folders of both DVD's are already available on your harddrive.&lt;br /&gt;&lt;br /&gt;I most cases there is no .vob file per chapter, but each vob file is filled to its maximum (1GB) and then a new one is created. Sometimes, however, there is a vob file per chapter. In this case, you only need to follow the steps following DVDStyler:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download and install DVDShrink (freeware)&lt;/li&gt;&lt;li&gt;Start DVDShrink and click "Reauthor"&lt;/li&gt;&lt;li&gt;In the right pane under "dvd browser", navigate to the video_ts folder of the first DVD&lt;/li&gt;&lt;li&gt;Drag the desired chapters to the left&lt;/li&gt;&lt;li&gt;In the right pane under "dvd browser", navigate to the video_ts folder of the second DVD&lt;/li&gt;&lt;li&gt;Drag the desired chapters to the left&lt;/li&gt;&lt;li&gt;Under File, click "Backup" and save to folder c:\shrink&lt;/li&gt;&lt;li&gt;Download and install DVDStyler (freeware)&lt;/li&gt;&lt;li&gt;Start DVDStyler and add all .vob files from c:\shrink to the current project. The DVD main- and chapter menu's are created automatically&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Optionally&lt;/b&gt;: add the names of the chapters to the chapter menus&lt;/li&gt;&lt;li&gt;Burn the project to an iso file or directly to disc&lt;/li&gt;&lt;/ul&gt;Ofcourse, you can only do this with homemade DVD's or to DVD's you own legally and when local law permits it.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-4661503185470827721?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/4661503185470827721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=4661503185470827721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/4661503185470827721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/4661503185470827721'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2011/01/combine-two-dvds-into-one.html' title='Combine two DVD&apos;s into one'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_IBF7o2vIrLw/TS4NTU3ayDI/AAAAAAAAAII/aUoepYdR2SE/s72-c/dvd.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-7625786025549863293</id><published>2010-10-20T12:21:00.018+02:00</published><updated>2011-01-12T21:24:50.641+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7 x64'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Use 32-bits Excel Source with 64-bits SSIS</title><content type='html'>&lt;i&gt;The following is still work in progress and more of a braindump than anything else, but I've put it here, because someone might already find some use for it&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Straight out of the box, you cannot use the Excel Datasource in SSIS on a 64-bits Windows platform , because the Excel Datasource uses a 32-bits OLEDB library. Microsoft has not released a 64-bits version of this library.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;0) Use MADE 2010&lt;/b&gt;&lt;br /&gt;There is 64 bits version for Office 2010, so for Excel 2010. It is called "&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d"&gt;Microsoft Access Database Engine &amp;nbsp;2010 Redistributable&lt;/a&gt;" of which there is a 32- and 64-bits version. We're interested in the 64-bits version, but this package can only be installed after removing all 32 bits Office applications!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1) Trick Windows to use 32-bits ODBC data sources&lt;/b&gt;&lt;br /&gt;Try adding the SysWow64 folder to the beginning of your path:&lt;br /&gt;&lt;br /&gt;Path=%systemroot%\SysWow64;...old values here...&lt;br /&gt;&lt;br /&gt;When done via the command prompt via the SET-command, it will be undone when that window is closed.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2) Run SSIS in 32-bits mode&lt;/b&gt;&lt;br /&gt;Use the 32-bit DTEXEC.EXE to execute the package containing the Excel Datasource. It is located in "Program Files (x86)\Microsoft Sql Server\90\Dts\Binn" (or for SSIS 2008:&amp;nbsp;"Program Files (x86)\Microsoft Sql Server\10\Dts\Binn")&lt;br /&gt;&lt;br /&gt;You can schedule this using "task scheduler" or SQL Agent.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3) Compile package as 32-bits&lt;/b&gt;&lt;br /&gt;Package configuration properties -&amp;gt;&amp;nbsp;Debugging -&amp;gt; Debugging Options -&amp;gt; Run64BtRuntime -&amp;gt; set to False.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;4) Even dirtier trick: convert Excel spreadsheet to CSV beforehand&lt;/b&gt;&lt;br /&gt;This can be done in several ways, with minimal coding required:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If Excel is installed, then create a VBS script that uses CreateObject("Excel.Application") to create an Excel object. Then open the XLS file and save it as a CSV using this object.&lt;/li&gt;&lt;li&gt;... or a perl script using the "Spreadsheet::ParseExcel" module&lt;/li&gt;&lt;li&gt;... or a powershell script using "comobject Excel.Application"&lt;/li&gt;&lt;li&gt;Install OpenOffice and program a small macro in it's OpenOffice basic language. Then create a VBS or DOS script that opens OpenOffice and calls the macro with parameters, one being the source XLS, and one being the target CSV.&lt;/li&gt;&lt;li&gt;Without installing anything on the server running SSIS: write a small C# application that utilizes the Excel OLEDB data provider built into Windows to read data from the Excel sheet. Then write the results to a CSV file.&lt;/li&gt;&lt;li&gt;... or write a small C# application that utilizes the opensource&amp;nbsp;&lt;a href="http://exceldatareader.codeplex.com/"&gt;Excel Data Reader&lt;/a&gt;&amp;nbsp;library to read data from the Excel sheet. Then write the results to a CSV file. This library appears to be buggy however.&lt;/li&gt;&lt;li&gt;Freeware commandline tool: XLS2CSV by &lt;a href="http://downseeker.com/download/158975/xls2csv-1.2/"&gt;Zoom Technology&lt;/a&gt;. Parses only the first sheet. The column separator and text quotes are configurable throught an ini file&lt;/li&gt;&lt;li&gt;Freeware commandline tool:&amp;nbsp;XLS2CSV by &lt;a href="http://www.crow.home.pl/"&gt;Tom Crow&lt;/a&gt;. Parses all sheets to separate CSV files&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;ODBC/DSN configuration can be found here:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;32 bits ODBC connections:&amp;nbsp;%windir%\syswow64\odbcad32.exe&lt;/li&gt;&lt;li&gt;64 bits ODBC connections:&amp;nbsp;%windir%\system32\odbcad32.exe&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;Notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ADO also uses the OLEDB library.&lt;/li&gt;&lt;li&gt;The OLEDB library is a piece of code that gets loaded and compiled into the calling application at runtime.&lt;/li&gt;&lt;li&gt;If you use the MADE 2010 Redistributable package, then be aware of a small bug when connecting to Office 2010. You have to use "MICROSOFT.ACE.OLEDB.12.0" as the driver name in stead of the specified&amp;nbsp;"MICROSOFT.ACE.OLEDB.14.0".&lt;/li&gt;&lt;li&gt;Although previous Office versions need to be de-installed before installing MADE 2010, they can be reinstalled afterwards.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-7625786025549863293?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/7625786025549863293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=7625786025549863293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7625786025549863293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7625786025549863293'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/10/use-32-bits-excel-source-with-64-bits.html' title='Use 32-bits Excel Source with 64-bits SSIS'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-522744124841294089</id><published>2010-10-02T00:07:00.015+02:00</published><updated>2011-02-20T21:39:43.470+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7 x64'/><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><title type='text'>Increase maximum volume of the iPad</title><content type='html'>If you find that the maximum volume on the iPad is not loud enough, then you can fix that with the following adjustment:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Start Cydia&lt;/li&gt;&lt;ul&gt;&lt;li&gt;If you haven't installed OpenSSH, then search for it and install the app, restart the iPad&lt;/li&gt;&lt;li&gt;Install &lt;a href="http://winscp.net/eng/download.php"&gt;WinSCP&lt;/a&gt; on your Windows environment and make a connection to the iPad. The iPad IP adress can be found on the iPad in Settings -&amp;gt; Wi-Fi. Click on the blue arrow on your current wifi connection. By default the username is "root" and the password "alpine".&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Download and install&amp;nbsp;&lt;a href="http://www.brothersoft.com/d.php?soft_id=211507&amp;amp;url=http%3A%2F%2Fwww.iPodRobot.com%2Fplistset.exe"&gt;iPodRobot&lt;/a&gt; for Windows&lt;/li&gt;&lt;li&gt;Open a connection to the iPad via WinSCP&lt;/li&gt;&lt;li&gt;Copy the following file to your Windows environment: System/Library/PrivateFrameworks/Celestial.framework/RegionalVolumeLimits.plist&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Just in case anything goes wrong: make a copy of this file on your Windows environment&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Start iPodRobot and load&amp;nbsp;RegionalVolumeLimits.plist&lt;/li&gt;&lt;li&gt;Find and replace 0.xx000000000000004 with 1, where x=79 or 84, or some other number under 100&lt;/li&gt;&lt;li&gt;Save the file and copy it back to the iPad using WinSCP&lt;/li&gt;&lt;li&gt;Reboot the iPad.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The volume will be much louder, so tune it down before starting any music or video on the iPad.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Note: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;The iPad needs to be jailbroken, i.e. needs to have Cydia installed&lt;/li&gt;&lt;li&gt;The Cydia/Winterboard apps Volume Boost X3 and Volume Boost 4.0 have no effect on the iPad.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Alternatively, using iTunes, you can boost the volume of each individual video/song:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Start iTunes&lt;/li&gt;&lt;li&gt;Select all songs under iPad -&amp;gt; Music&lt;/li&gt;&lt;li&gt;Right click and select "Get info"&lt;/li&gt;&lt;li&gt;Tab "options", drag the slider to +100%&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;The song volumes will be adjusted song by song. This can take a long time!&lt;br /&gt;&lt;br /&gt;Keywords: setting the maximum volume limit on iPod&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-522744124841294089?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/522744124841294089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=522744124841294089' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/522744124841294089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/522744124841294089'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/10/increase-ipad-volume.html' title='Increase maximum volume of the iPad'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-5064832579822920214</id><published>2010-09-30T11:59:00.013+02:00</published><updated>2010-10-01T20:43:41.270+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7 x64'/><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><title type='text'>Internet on iPad via adhoc wifi hotspot</title><content type='html'>Scroll down for the solution, read on for some trial-and-error background info.&lt;br /&gt;&lt;br /&gt;When no direct wifi internet connection is available, then it is possible to use the internet connection of wired Windows PC. The only requirement is that the PC needs to also have a wireless (wifi) network card.&lt;br /&gt;&lt;br /&gt;It is possible to use internet connection sharing (ICS) on Windows to setup an adhoc wireless network and connect to this network from the iPad:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Control Panel -&amp;gt; Network and sharing center -&amp;gt;&amp;nbsp;Setup a new network or connection -&amp;gt; Set up wireless adhoc (computer to computer) network -&amp;gt; Next&lt;/li&gt;&lt;li&gt;Give the network a name&lt;/li&gt;&lt;li&gt;Security type: WPA2-Personal&lt;/li&gt;&lt;li&gt;Give the network a password (security key) of at least 8 characters&lt;/li&gt;&lt;li&gt;Click "Turn on internet connection sharing"&lt;/li&gt;&lt;li&gt;Select the LAN internet connection when asked "Select the internet connection that you want to share"&lt;/li&gt;&lt;li&gt;iPad -&amp;gt; Settings -&amp;gt; Wi-Fi -&amp;gt; Select the network, type in the password&lt;/li&gt;&lt;/ul&gt;I couldn't get this to work properly. I tried all of the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;"Turn on internet connection sharing"&amp;nbsp;does not appear.&lt;/b&gt; Try a solution posted by sinnerman on windows7forums.com:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open Network and Sharing Center&lt;/li&gt;&lt;li&gt;Go to Change Adapter Settings&lt;/li&gt;&lt;li&gt;Find the adapter for the default internet connection (it was a PPPOE in my case)&lt;/li&gt;&lt;li&gt;Right click on that -&amp;gt; Cancel as Default Connection&lt;/li&gt;&lt;li&gt;Right click -&amp;gt; Properties -&amp;gt; Sharing tab&lt;/li&gt;&lt;li&gt;Uncheck "Allow other network users to connect ..." if it is not&lt;/li&gt;&lt;li&gt;Setup the ad-hoc as explained above, the Turn on Internet connection sharing should appear.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Disable Windows Firewall.&lt;/b&gt; If you have another one, for example Bitdefender, then there is/might be a direct option to allow ICS.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Allow other users on internet connection:&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Control Panel -&amp;gt; Network and sharing center&amp;nbsp;-&amp;gt;&amp;nbsp;change adapter settings&amp;nbsp;-&amp;gt;&amp;nbsp;select internet connection&amp;nbsp;-&amp;gt;&amp;nbsp;Properties -&amp;gt; Sharing&amp;nbsp;-&amp;gt; Check "Allow other network users to connect ..."&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Set a policy that allows you to use ICS:&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Start gpedit.msc.&lt;/li&gt;&lt;li style="margin-bottom: 3px; margin-left: 0px;"&gt; Local Computer Policy&amp;nbsp;-&amp;gt;&amp;nbsp;Computer Configuration&amp;nbsp;-&amp;gt;&amp;nbsp;Administrative Templates&amp;nbsp;-&amp;gt;&amp;nbsp;Network -&amp;gt;&amp;nbsp;Network Connection&lt;/li&gt;&lt;li&gt;Set "Prohibit use of Internet Connection Sharing on your DNS domain network." to false&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Solution&lt;/b&gt;   &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download &lt;a href="http://download.cnet.com/Connectify/3000-18508_4-75024171.html?part=dl-10061477&amp;amp;subj=dl&amp;amp;tag=button"&gt;Connectify&lt;/a&gt;. It is freeware&lt;/li&gt;&lt;li&gt;Install and allow the software to install drivers&lt;/li&gt;&lt;li&gt;Start Connectify and start easy setup wizard&lt;/li&gt;&lt;li&gt;Give the network a name, next&lt;/li&gt;&lt;li&gt;Give the network a password, next&lt;/li&gt;&lt;li&gt;Select the connection (wired/LAN) through which there is an internet connection&lt;/li&gt;&lt;li&gt;iPad -&amp;gt; Settings&amp;nbsp;-&amp;gt;&amp;nbsp;Wi-Fi&amp;nbsp;-&amp;gt;&amp;nbsp;Select the network, type in the password.&lt;/li&gt;&lt;/ul&gt;The connection from the iPad is lost when unused for a couple of minutes. When using, for example, Safari on the iPad, the connection is quickly restored via a popup that lets you select from wifi networks. Sometimes this is not even necessary and safari restores the connection automatically.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-5064832579822920214?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/5064832579822920214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=5064832579822920214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5064832579822920214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5064832579822920214'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/09/internet-on-ipad-via-adhoc-wifi-hotspot.html' title='Internet on iPad via adhoc wifi hotspot'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-4194646429058304821</id><published>2010-09-21T14:23:00.001+02:00</published><updated>2010-10-01T20:34:10.175+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7 x64'/><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><title type='text'>Bluetooth device not found on Dell laptop</title><content type='html'>If you are sure you have a built-in bluetooth device on your Dell laptop, but you cannot find it in control panel or device manager, then try these steps:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Determine bluetooth device type using the Dell&amp;nbsp;&lt;a href="http://support.euro.dell.com/support/topics/global.aspx/support/dsn/en/document?c=nl&amp;amp;dl=false&amp;amp;l=nl&amp;amp;s=gen&amp;amp;docid=3CCA7E81BECFFED0E040A68F5B286CFB&amp;amp;doclang=en&amp;amp;cs="&gt;device locator&lt;/a&gt;&lt;br /&gt;or &lt;br /&gt;Go to &lt;b&gt;http://support.dell.com&lt;/b&gt; and type in the search bar: "Find Out Which Bluetooth Adapter Is in Your Dell Computer"&lt;br /&gt;or&lt;br /&gt;Go to the webtool "system configuration tool" directly: &lt;a href="http://support.euro.dell.com/support/topics/global.aspx/support/my_systems_info/details?&amp;amp;s=gen&amp;amp;~ck=anavml"&gt;system configuration tool&lt;/a&gt;&lt;br /&gt;In all cases, use the service&amp;nbsp;tag that can be found on the bottom of the laptop&lt;/li&gt;&lt;li&gt;Search for "bluetooth" on the page that the SCT returns, it should have code beside it, i.e. "370"&lt;/li&gt;&lt;li&gt;Go to&amp;nbsp;&lt;b&gt;http://support.dell.com&lt;/b&gt;&amp;nbsp;and type in the search bar: "bluetooth 370"&lt;/li&gt;&lt;li&gt;The results page contains drivers for bluetooth for various Windows OS'es:&lt;br /&gt;- Look for "Dell Wireless 370 Bluetooth Minicard, v.XXX" and search for the most recent version XXX.&lt;br /&gt;- Make sure "Win 7" is in the description, if the driver is needed for Windows 7.&lt;/li&gt;&lt;li&gt;Download and install the driver.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-4194646429058304821?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/4194646429058304821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=4194646429058304821' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/4194646429058304821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/4194646429058304821'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/09/bluetooth-device-not-found-on-dell.html' title='Bluetooth device not found on Dell laptop'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-7733836681319468540</id><published>2010-08-17T11:02:00.013+02:00</published><updated>2010-08-17T11:24:08.786+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>CTAS disregards number precision and scale</title><content type='html'>When using a "create table as select" (CTAS) to create a table based on a query, when that query&amp;nbsp;also contains a window function/analytical function&amp;nbsp;in the SELECT-clause, results in the precision and scale being omitted.&lt;br /&gt;&lt;br /&gt;The precision/scale are neglected, when running the following example in Oracle 11g:&lt;br /&gt;&lt;blockquote&gt;CREATE OR REPLACE FORCE VIEW VSA_X AS&lt;br /&gt;SELECT&lt;br /&gt;CAST(1 AS NUMERIC(10,2)) AS FLD1, &lt;br /&gt;ROW_NUMBER() OVER (PARTITION BY 1 ORDER BY 1) AS RN&lt;br /&gt;FROM DUAL;&lt;br /&gt;&lt;br /&gt;DROP TABLE X;&lt;br /&gt;&lt;br /&gt;CREATE TABLE X AS SELECT * FROM VSA_X;&lt;/blockquote&gt;Table X will have no precision/scale for FLD1. It is bypassed and will simply have NUMBER for its datatype. This is a bug in Oracle.&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Using NUMBER in stead of NUMERIC makes no difference, the bug is still there.&lt;/li&gt;&lt;li&gt;Explicitly casting the ROW_NUMBER() function also makes no difference.&lt;/li&gt;&lt;/ul&gt;Solution:&lt;br /&gt;&lt;br /&gt;Put the window function inside a derived table:&lt;br /&gt;&lt;blockquote&gt;CREATE OR REPLACE FORCE VIEW VSA_X AS&lt;br /&gt;SELECT &lt;br /&gt;&lt;b&gt;CAST(FLD1 AS NUMERIC(10,2))&lt;/b&gt; AS FLD1,&lt;br /&gt;RN&lt;br /&gt;FROM&lt;br /&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;SELECT&lt;br /&gt;&amp;nbsp;&amp;nbsp;1 AS FLD1, &lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;ROW_NUMBER() OVER (PARTITION BY 1 ORDER BY 1)&lt;/b&gt; AS RN&lt;br /&gt;&amp;nbsp;&amp;nbsp;FROM DUAL&lt;br /&gt;) x;&lt;/blockquote&gt;Keywords: CTAS omits precision,&amp;nbsp;CTAS omits number precision,&amp;nbsp;CTAS bypasses precision,&amp;nbsp;CTAS bypasses number precision.&lt;br /&gt;&lt;P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-7733836681319468540?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/7733836681319468540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=7733836681319468540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7733836681319468540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7733836681319468540'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/08/ctas-disregards-number-precision-and.html' title='CTAS disregards number precision and scale'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-6501389934763777505</id><published>2010-08-11T11:55:00.151+02:00</published><updated>2010-08-17T21:02:40.887+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7 x64'/><category scheme='http://www.blogger.com/atom/ns#' term='Audio'/><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><title type='text'>Subtitle Workshop blank screen with Matroska/MKV containing H.264</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_IBF7o2vIrLw/TGPseJtC5lI/AAAAAAAAAHE/I-cvRaxNa9Q/s1600/MKVinSubtitleWorkshop.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_IBF7o2vIrLw/TGPseJtC5lI/AAAAAAAAAHE/I-cvRaxNa9Q/s320/MKVinSubtitleWorkshop.jpg" /&gt;&lt;/a&gt;Scroll down to solution for the workaround to get video in stead of a black screen. Read on for a little bit more background information.&lt;br /&gt;&lt;br /&gt;There are five components to video in Windows: container (like avi, mkv), video format (divx, h.264), splitter, decoder, and video player.&lt;br /&gt;&lt;br /&gt;Nice post to get started:&lt;br /&gt;&lt;a href="http://www.hack7mc.com/2009/02/mkvs-for-minimalists-on-windows-7.html"&gt;http://www.hack7mc.com/2009/02/mkvs-for-minimalists-on-windows-7.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But the scripts could be more robust. E.g. change the fixed system root "c:\windows" to %systemroot%&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SPLITTERS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Haali Media Splitter: &lt;a href="http://haali.su/mkv"&gt;http://haali.su/mkv&lt;/a&gt;&lt;br /&gt;Note: since december 2009, this contains also the x64 version.&lt;br /&gt;&lt;br /&gt;Gabest: hard to get, but is part in some packs.&lt;br /&gt;x32: &lt;a href="http://www.hack7mc.com/wp-content/plugins/download-monitor/download.php?id=12"&gt;http://www.hack7mc.com/wp-content/plugins/download-monitor/download.php?id=12&lt;/a&gt;&lt;br /&gt;x64:&amp;nbsp;&lt;a href="http://www.hack7mc.com/wp-content/plugins/download-monitor/download.php?id=11"&gt;http://www.hack7mc.com/wp-content/plugins/download-monitor/download.php?id=11&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Advice: Haali splitter.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DECODERS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;ffdshow (the original, but outdated): http://sourceforge.net/projects/ffdshow/files&lt;br /&gt;ffdshow tryouts: http://sourceforge.net/projects/ffdshow-tryout/files&lt;br /&gt;&lt;br /&gt;Get a 64 bits or 32 bit ("generic") in the folder "official releases" or get a more recent nightly build from the folder "SVN builds by clsid".&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Advice: a recent 32 bit nightly build.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;SPLITTER/DECODER packs&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;K-Lite Codec Pack: &lt;a href="http://www.digital-digest.com/software/K-Lite_Codec_Pack_64-Bit_history.html"&gt;http://www.digital-digest.com/software/K-Lite_Codec_Pack_64-Bit_history.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Shark007: Install Win7Codecs first (&lt;a href="http://www.majorgeeks.com/Win7codecs_d5959.html"&gt;http://www.majorgeeks.com/Win7codecs_d5959.html&lt;/a&gt;), then  x64Components (&lt;a href="http://www.majorgeeks.com/download.php?det=5535"&gt;http://www.majorgeeks.com/download.php?det=5535&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Shark's Win7Codecs comes with a tool to select and configure the various splitters and decoders for the various media types (divx/xvid, mpeg2, h264/mpeg4) and containers (avi, mkv).&lt;br /&gt;&lt;br /&gt;Install and use the "settings32.exe" application to configure, since most video players are currently still 32 bit (winamp, zoomplayer)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Advice: Shark007 packs&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;VIDEO PLAYERS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Zoomplayer 5.02 Standard (latest free version), Windows Media Player (build-in, &lt;a href="http://sourceforge.net/projects/guliverkli2/files/Media%20Player%20Classic/"&gt;WMP Classic/Guliverkli2&lt;/a&gt; or &lt;a href=http://mpc-hc.sourceforge.net&gt;WMP Classic Home Cinema&lt;/a&gt;) and Winamp all work with the system splitters and decoders. VLC Player comes with its own splitters/decoders and does not use the ones installed on the system.&lt;br /&gt;&lt;br /&gt;Subtitle Workshop v2.51 does only work with "real" avi containers. The "rename trick", where the mkv extension is changed to avi, will work with most of the video players, but unfortunately not with Subtitle Workshop. &lt;br /&gt;&lt;br /&gt;The more recent betas of v4 do work with mkv/h.264 files, but those are not very stable. The splitter has to be Haali, Gabest's does not work - "cannot render media!". It does not matter if the "rename trick" is used. This also applies to Windows Media Player. Gabest also doesn't work with&amp;nbsp;Subtitle Workshop&amp;nbsp;v2.51.&lt;br /&gt;&lt;br /&gt;Winamp doesn't really like mkv files; it almost always halts on startup.&lt;br /&gt;&lt;br /&gt;Zoomplayer does not work well with video format "Xvid dev 25-Mar-03". You have to use Haali splitter for avi, because Gabest and Microsoft's cause a stack overflow.&lt;br /&gt;&lt;br /&gt;Zoomplayer doesn't work with mkv/H.264 when the ffdshow codec is used.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;CHECK TOOLS&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Tools to check video containers, e.g. get video format or the the processing workflow (splitting, decoding):&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;GSpot: &lt;a href="http://www.headbands.com/gspot"&gt;http://www.headbands.com/gspot&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;MediaInfo: &lt;a href="http://sourceforge.net/projects/mediainfo/files"&gt;http://sourceforge.net/projects/mediainfo/files&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;GraphStudio: &lt;a href="http://blog.monogram.sk/janos/2008/12/13/monogram-graphstudio-0310"&gt;http://blog.monogram.sk/janos/2008/12/13/monogram-graphstudio-0310&lt;/a&gt;&lt;br /&gt;GraphEdit:&amp;nbsp;&lt;a href="http://www.digital-digest.com/software/download.php?sid=82&amp;amp;ssid=0&amp;amp;did=1"&gt;http://www.digital-digest.com/software/download.php?sid=82&amp;amp;ssid=0&amp;amp;did=1&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;SOLUTION&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To get the video preview to work in Subtitle Workshop 2.51 with mkv files, that contain the h.264 video format:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Install both Shark007 packs mentioned above. Check the box to install ffdshow.&lt;/li&gt;&lt;li&gt;To get the latest ffdshow version working with Shark007 (this step is not necessary):&lt;/li&gt;&lt;ul&gt;&lt;li&gt;In&amp;nbsp;\program files (x86)\win7codecs\filters: regsvr32 /u "ffdshow.ax". Uninstall this older version&lt;/li&gt;&lt;li&gt;Download most recent 32 bit nightly build mentioned above and install with default settings&lt;/li&gt;&lt;li&gt;Copy "ffdshow.ax" from the nightly build install folder to the \win7codecs\filters folder&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Start \program files (x86)\win7codecs\tools\settings32.exe&lt;/li&gt;&lt;li&gt;Click "reset all" to get the recommended configuration.&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;To be sure, check the following settings:&lt;br /&gt;H264: use ffdshow's codec/ffdshow with multithreading&lt;br /&gt;MKV: use haali splitter&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Set H264 codec in directshow players to "use ffdshow's codec"&lt;/li&gt;&lt;li&gt;Finally, install Vobsub 2.23&lt;/li&gt;&lt;/ul&gt;Notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The final step is very important. You have to install Vobsub (or "vsfilter") as the final step, even if it is already installed. Just install it again. (VobSub is a directshow filter that overlays subtitles)&lt;/li&gt;&lt;li&gt;Test mkv and avi video formats in Winamp and Zoomplayer. If they fail to start, then uninstall Vobsub 2.23 again. Use the subtitle option from ffdshow to have subtitles in those players. WMPC and VLC have their own subtitle overlay filters.&lt;/li&gt;&lt;li&gt;The version has to be 2.23, more recent versions will not work. E.g. 2.39 does not work.&lt;/li&gt;&lt;li&gt;Do not rename the container from .mkv to .avi. Subtitle Workshop 2.51 will load the .mkv extension without problems.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-6501389934763777505?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/6501389934763777505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=6501389934763777505' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/6501389934763777505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/6501389934763777505'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/08/setting-up-media-splitter-and-decoder.html' title='Subtitle Workshop blank screen with Matroska/MKV containing H.264'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_IBF7o2vIrLw/TGPseJtC5lI/AAAAAAAAAHE/I-cvRaxNa9Q/s72-c/MKVinSubtitleWorkshop.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-3211505195368072021</id><published>2010-08-10T14:07:00.011+02:00</published><updated>2010-08-10T14:15:26.939+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>TNS service names ODBC dropdown box garbled, messed up, gibberish</title><content type='html'>Most likely cause is that there are two or more different Oracle clients installed, with two or more home folders and tnsnames.ora files.&lt;br /&gt;&lt;br /&gt;For example, an Oracle 10 client is installed or Oracle XE is installed. Both contain a home folder with tnsnames.ora. Later, the Oracle 11g instant client + ODBC compontents is added. Now there are two home folders.&lt;br /&gt;&lt;br /&gt;In this case, the TNS_ADMIN environment variable needs to exist:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create TNS_ADMIN variable via control panel -&amp;gt; system -&amp;gt; advanced -&amp;gt; environment variables -&amp;gt; system variables&lt;/li&gt;&lt;li&gt;Set is to one of the admin folders, eg.:&lt;br /&gt;c:\oracle\ic_x32_11.2.0.1.0_basiclite\NETWORK\ADMIN&lt;br /&gt;Note: make sure is contains the tnsnames.ora, sqlnet.ora and listener.ora files.&lt;/li&gt;&lt;li&gt;Create a ODBC connection using the Oracle driver and check if the "tns service name" dropdown box contains readable entries&lt;/li&gt;&lt;li&gt;Just to be sure, replace the body of all other tnsnames.ora files with:&lt;br /&gt;IFILE=c:\oracle\ic_x32_11.2.0.1.0_basiclite\NETWORK\ADMIN&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-3211505195368072021?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/3211505195368072021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=3211505195368072021' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/3211505195368072021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/3211505195368072021'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/08/tnsnames-in-odbc-dropdown-box-garbled.html' title='TNS service names ODBC dropdown box garbled, messed up, gibberish'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-5705075557452573630</id><published>2010-08-05T20:36:00.011+02:00</published><updated>2010-08-06T14:45:24.081+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7 x64'/><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><title type='text'>CDBurnerXP: drive not recognized</title><content type='html'>&lt;a href="http://cdburnerxp.se/pages/screenshots/cdbxp-about.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="133" src="http://cdburnerxp.se/pages/screenshots/cdbxp-about.png" width="200" /&gt;&lt;/a&gt;CDBurnerXP is a freeware tool for burning CD's and DVD's, including blueray. However, it sometimes does not recognize the drive to burn with.&lt;br /&gt;&lt;br /&gt;First, check the FAQ on the CDBurnerXP website: &lt;br /&gt;&lt;a href="http://cdburnerxp.se/help/appendices/troubleshooting"&gt;http://cdburnerxp.se/help/appendices/troubleshooting&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In my specific case, I then did the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Start CDBurnerXP in "audio mode"; the drive was recognized. Only in "data mode" it is not.&lt;/li&gt;&lt;li&gt;Check the chipset. Download the freeware tool "system info":&amp;nbsp;&lt;a href="http://www.gtopala.com/siw-download.html"&gt;http://www.gtopala.com/siw-download.html&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Extract and start it - it does not have to be installed; it is a standalone executable. Check hardware -&amp;gt; motherboard -&amp;gt; southbridge. Note the chipset.&lt;/li&gt;&lt;li&gt;Download "intel matrix storage manager" for your chipset: &lt;a href="http://downloadcenter.intel.com/SearchResult.aspx?lang=eng&amp;amp;ProductFamily=Chipsets&amp;amp;ProductLine=Chipset+Software&amp;amp;ProductProduct=Intel%C2%AE+Rapid+Storage+Technology+(Intel%C2%AE+RST)"&gt;IMSM&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Install IMSM and restart.&lt;/li&gt;&lt;/ul&gt;Now, CDBurnerXP should work in "data mode".&lt;br /&gt;&lt;br /&gt;Note: make sure the drive is on the "compatible drives" list:&amp;nbsp;&lt;a href="http://cdburnerxp.se/en/testeddrives"&gt;http://cdburnerxp.se/en/testeddrives&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cdburnerxp.se/en/testeddrives"&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-5705075557452573630?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/5705075557452573630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=5705075557452573630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5705075557452573630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5705075557452573630'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/08/cdburnerxp-drive-not-recognized.html' title='CDBurnerXP: drive not recognized'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-3108646179402572154</id><published>2010-08-04T12:45:00.019+02:00</published><updated>2010-08-06T14:36:06.064+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7 x64'/><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>The nearby-future of storage</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;a href="http://www.kingtech.co.jp/image/products/storage/iodrive_duo.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="102" src="http://www.kingtech.co.jp/image/products/storage/iodrive_duo.gif" width="200" /&gt;&lt;/a&gt;The ioDrive Duo by FusionIO out-performs even multiple SSD's placed in parallel. The 320GB version of the ioDrive has a read/write speed of ~1.5GB/s:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fusionio.com/products/iodriveduo"&gt;http://www.fusionio.com/products/iodriveduo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Difference with traditional SSD:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The flash memory is integrated in the PCI card.&lt;/li&gt;&lt;li&gt;The flash memory has been optimized using a proprietary technology.&lt;/li&gt;&lt;/ul&gt;Downside:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cannot be used as a boot drive.&lt;/li&gt;&lt;li&gt;Requires a 64-bit operating system.&lt;/li&gt;&lt;li&gt;The price is about 15,000 euro for 320GB version (&lt;a href="http://ssdeurope.com/solid-state-drives-pciexpress-c-2_70.html?gclid=CKyM--rUn6MCFcosDgodAioJoA"&gt;ssdeurope.com&lt;/a&gt;). Ofcourse, this has to be compared against the cost of buying and operating a SAN.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-3108646179402572154?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/3108646179402572154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=3108646179402572154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/3108646179402572154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/3108646179402572154'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/08/nearby-future-of-storage.html' title='The nearby-future of storage'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-6265212966940093518</id><published>2010-08-03T21:15:00.016+02:00</published><updated>2010-08-13T08:30:10.802+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQL Server statistics</title><content type='html'>Statistics are information about the distribution of data in a column, maintained internally by the database engine.&lt;br /&gt;&lt;br /&gt;Rules and behaviour with regard to statistics, when automatic creation/updating is turned on:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Statistics are automatically created when creating an index, but only for the &lt;b&gt;first&lt;/b&gt; column of the (composite) index.&lt;/li&gt;&lt;li&gt;Statistics can be created manually on any column or combination of columns.&lt;/li&gt;&lt;li&gt;Statistics are automatically created/updated when the query optimizer finds need for them.&lt;/li&gt;&lt;li&gt;Statistics are not automatically created/updated when the server is too busy, unless the "update statistics asynchronously" option is turned on, because then the are created in parallel.&lt;/li&gt;&lt;li&gt;Asynchronously created/updated statistics have effect the &lt;b&gt;next time&lt;/b&gt; the (causing) query is run.&lt;/li&gt;&lt;/ul&gt;Links:&lt;br /&gt;&lt;a href="http://www.sql-server-performance.com/tips/update_statistics_p1.aspx"&gt;http://www.sql-server-performance.com/tips/update_statistics_p1.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.technet.com/b/rob/archive/2008/05/16/sql-server-statistics.aspx"&gt;http://blogs.technet.com/b/rob/archive/2008/05/16/sql-server-statistics.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://technet.microsoft.com/nl-nl/library/cc966419(en-us).aspx"&gt;http://technet.microsoft.com/nl-nl/library/cc966419(en-us).aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-6265212966940093518?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/6265212966940093518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=6265212966940093518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/6265212966940093518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/6265212966940093518'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/08/sql-server-statistics.html' title='SQL Server statistics'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-3715160035151808517</id><published>2010-08-03T12:12:00.003+02:00</published><updated>2010-08-11T11:21:46.639+02:00</updated><title type='text'>Set cscript as default script engine</title><content type='html'>To set cscript as the default scripting engine on the system:&lt;br /&gt;&lt;blockquote&gt;cscript //h:cscript //s&lt;/blockquote&gt;This way, the "wscript.echo" method always spools to the command line in stead of to message boxes. And without the need to start each script with the "cscript.exe" application.&lt;br /&gt;&lt;P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-3715160035151808517?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/3715160035151808517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=3715160035151808517' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/3715160035151808517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/3715160035151808517'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/08/set-cscript-as-default-script-engine.html' title='Set cscript as default script engine'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-833737800913553473</id><published>2010-07-30T09:10:00.007+02:00</published><updated>2010-07-30T10:41:45.048+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Derived table vs subquery</title><content type='html'>There are several ways to combine datasets:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Subquery: SELECT clause, correlation&lt;/li&gt;&lt;li&gt;Join (cross/left/right/inner/full): FROM clause, no correlation&lt;/li&gt;&lt;li&gt;Cross apply: FROM clause, correlation&lt;/li&gt;&lt;/ul&gt;Datasets retrieved in the FROM clause are called "derived tables".&lt;br /&gt;&lt;br /&gt;The "cross apply" combines the best features of the subquery and join, but is performance-wise not always the best choice.&lt;br /&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-833737800913553473?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/833737800913553473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=833737800913553473' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/833737800913553473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/833737800913553473'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/07/derived-table-vs-subquery.html' title='Derived table vs subquery'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-5294818759524264754</id><published>2010-07-28T12:59:00.029+02:00</published><updated>2010-07-28T14:35:10.130+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7 x64'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>SQL Developer thick/OCI driver</title><content type='html'>The following error messages may appear when using SQL Developer to select data from a SQL Server table via a (heterogeneous or DG4ODBC) database link on an Oracle 11g DB:&lt;br /&gt;&lt;br /&gt;Bigger type length than Maximum&lt;br /&gt;OALL8 is in an inconsistent state&lt;br /&gt;&lt;br /&gt;Solution: switch to the thick driver to work around this.&lt;br /&gt;&lt;br /&gt;In SQL Developer: tools -&gt; preferences -&gt; database -&gt; advanced -&gt; use oci/thick driver = checked.&lt;br /&gt;&lt;br /&gt;If this does not work or when getting the error messages:&lt;br /&gt;&lt;br /&gt;no ocijdbc11 in java.library.path&lt;br /&gt;vendor code 0&lt;br /&gt;&lt;br /&gt;then:&lt;br /&gt;&lt;br /&gt;- Download Oracle Instant Client 11.1.0.7.0 basic lite (easily found with Google, register with Oracle to download)&lt;br /&gt;&lt;br /&gt;Note: version 11.2 does not work with SQL Developer!&lt;br /&gt;&lt;br /&gt;Note: take the 64-bits version on a 64-bits OS, like Windows7 x64.&lt;br /&gt;&lt;br /&gt;- Extract files to c:\ora\instantclient_x64_11.1.0.7.0_basiclite&lt;br /&gt;- Add to environment variable PATH: c:\ora\instantclient_x64_11.1.0.7.0_basiclite &lt;br /&gt;- Create a batch file called sd.bat in the rootfolder of the SQL Developer installation, with the following body:&lt;br /&gt;&lt;blockquote&gt;set ORACLE_HOME="c:\ora\instantclient_x64_11.1.0.7.0_basiclite"&lt;br /&gt;start sqldeveloper.exe&lt;br /&gt;&lt;/blockquote&gt;- Double-click sd.bat to start SQL Developer&lt;br /&gt;- Add a connection with Connection type = basic&lt;br /&gt;&lt;br /&gt;To make a connection with Connection type = TNS:&lt;br /&gt;&lt;br /&gt;- Create folder c:\ora\instantclient_x64_11.1.0.7.0_basiclite\network\admin&lt;br /&gt;- Put these files in the admin folder:&lt;br /&gt;&lt;br /&gt;sqlnet.ora&lt;br /&gt;tnsnames.ora&lt;br /&gt;&lt;br /&gt;- In SQL Developer: tools -&gt; preferences -&gt; database -&gt; advanced -&gt; tnsnames folder: c:\ora\instantclient_x64_11.1.0.7.0_basiclite\network\admin&lt;br /&gt;- Add a connection with Connection type = TNS&lt;br /&gt;&lt;br /&gt;Note the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The solution above even (or especially) works when another Oracle client is already installed. For example, if the OracleXE DB (which, at the time of writing, is 10g) is installed locally, then the Oracle Client 10 is also installed. But this client might not work when trying to connect to a remote Oracle 11g DB&lt;/li&gt;&lt;li&gt;There is no need to set the environment variables ORACLE_HOME or TNS_ADMIN variable on the system. It does &lt;b&gt;not&lt;/b&gt; matter what their values are&lt;/li&gt;&lt;li&gt;The order of folders in the variable PATH does &lt;b&gt;not&lt;/b&gt; matter&lt;/li&gt;&lt;li&gt;Most likely Help -&gt; About -&gt; Properties -&gt; oracle.home does not point to the correct Oracle home folder. So not to c:\ora\instantclient_x64_11.1.0.7.0_basiclite. It does &lt;b&gt;not&lt;/b&gt; matter what the value is&lt;/li&gt;&lt;li&gt;Unfortunately, the ORACLE_HOME trick does not work with the PATH variable; it is no use adding that to the batch file&lt;/li&gt;&lt;li&gt;The error "Bigger type length than Maximum" is related to a bug in the implementation of the thin part of the JDBC driver. Not to heterogeneous services, Oracle DB, SQL Server, SQL Developer or the thick part of the JDBC driver. (Note: the same driver, e.g. ojdbc6.jar, contains the thin and the thick classes)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-5294818759524264754?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/5294818759524264754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=5294818759524264754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5294818759524264754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5294818759524264754'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/07/sql-developer-thickoci-driver.html' title='SQL Developer thick/OCI driver'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-7647595803438368241</id><published>2010-07-28T10:59:00.025+02:00</published><updated>2010-07-28T11:36:49.428+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Oracle JDBC connections</title><content type='html'>The following JDBC drivers exist for Oracle:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;classes111.jar: Java 1.1&lt;/li&gt;&lt;li&gt;classes12.jar: 1.2 and 1.3&lt;/li&gt;&lt;li&gt;ojdbc14.jar: 1.4 and 1.5 (no JDBC3 and 4 features)&lt;/li&gt;&lt;li&gt;ojdbc5.jar: 1.5&lt;/li&gt;&lt;li&gt;ojdbc6.jar: 1.6&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Java 1.5 = Java JRE/SE 5 and Java 1.6 = Java JRE/SE 6. Additional jar files are required for some features.&lt;br /&gt;&lt;br /&gt;All the classes to support basic functionality for the Thin and OCI drivers are inside the same jar. In short, for simplification, the same file contains &lt;b&gt;both&lt;/b&gt; the thin and the thick (=OCI) classes.&lt;br /&gt;&lt;br /&gt;Joe Weinstein on forums.oracle.com:&lt;br /&gt;&lt;blockquote&gt;The jar is all of the thin driver and the java portion of the OCI driver. In order to&lt;br /&gt;run in OCI mode, you would use this same jar, giving it the OCI URL instead of the thin&lt;br /&gt;URL, and you would have to have the whole Oracle client installed on your machine,&lt;br /&gt;and your OS environment set up to point to the OCI DLLs as well as the standard C&lt;br /&gt;libraries. Note that the version of the OCI libraries that works with one driver jar&lt;br /&gt;may not work with another driver jar, so if you go the OCI route, you may have to&lt;br /&gt;install a whole new OCI client just to get a particular driver fix.&lt;/blockquote&gt;&lt;b&gt;Thick URL:&lt;/b&gt; jdbc:oracle:oci8:@&amp;lt;database_name&amp;gt;&lt;br /&gt;The database_name is the Net Service name of a mapping in tnsnames.ora.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Thin URL:&lt;/b&gt; jdbc:oracle:thin:@&amp;lt;server&amp;gt;:1521:&amp;lt;database_name&amp;gt;&lt;br /&gt;The database_name is the database name part of the database service on the (remote) server. E.g. Windows service "OracleServiceORCL", then the database_name is "ORCL".&lt;br /&gt;&lt;br /&gt;Oracle released different versions for each driver, eg. 11.1.0.6.0 or 11.1.0.7.0.&lt;br /&gt;&lt;br /&gt;To get the different versions, download the Oracle Instant Client of choice from the Oracle &lt;a href="http://www.blogger.com/post-edit.g?blogID=30916058&amp;amp;postID=7647595803438368241" href="http://www.oracle.com/technology/tech/oci/instantclient/index.html"&gt;website&lt;/a&gt; and extract the ojdbc.jar files to one folder. Rename them using the version. This makes testing or switching easy:&lt;br /&gt;&lt;br /&gt;ojdbc6_11gR1_11.1.0.6.0.jar&lt;br /&gt;ojdbc6_11gR1_11.1.0.7.0.jar&lt;br /&gt;ojdbc6_11gR1_11.2.0.1.0.jar&lt;br /&gt;etc&lt;br /&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-7647595803438368241?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/7647595803438368241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=7647595803438368241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7647595803438368241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7647595803438368241'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/07/oracle-jdbc-connections.html' title='Oracle JDBC connections'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-7486968162241605038</id><published>2010-07-27T22:13:00.013+02:00</published><updated>2010-07-28T15:51:31.183+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Databases</title><content type='html'>Row-oriented:&lt;br /&gt;Oracle DB&lt;br /&gt;SQL Server&lt;br /&gt;SQL Server CE&lt;br /&gt;MySql: InnoDB&lt;br /&gt;Sybase Advantage Database Server (ADS)&lt;br /&gt;MS Access&lt;br /&gt;&lt;br /&gt;Column-oriented:&lt;br /&gt;Extreme-DB&lt;br /&gt;InfiniDB Enterprise Edition&lt;br /&gt;Infobright&lt;br /&gt;MonetDB&lt;br /&gt;ParAccel Analytic Database&lt;br /&gt;Sybase IQ&lt;br /&gt;Sybase Adaptive Server Enterprise (RDBMS &amp; column-oriented)&lt;br /&gt;Vectorwise&lt;br /&gt;Vertica&lt;br /&gt;&lt;br /&gt;Appliance:&lt;br /&gt;Aster Data (MPP, MapReduce)&lt;br /&gt;Greenplum (MPP, MapReduce)&lt;br /&gt;Netezza (MPP)&lt;br /&gt;Teradata (MPP)&lt;br /&gt;&lt;br /&gt;In-process:&lt;br /&gt;SQLite&lt;br /&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-7486968162241605038?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/7486968162241605038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=7486968162241605038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7486968162241605038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7486968162241605038'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/07/databases.html' title='Databases'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-6390716815970895732</id><published>2010-07-23T11:00:00.011+02:00</published><updated>2011-02-15T11:30:53.878+01:00</updated><title type='text'>No login prompt for website</title><content type='html'>Suppose you want to login with Internet Explorer to an intranet website, that uses Windows Authentication as the authentication mechanism. When you do this, a prompt is displayed, that requires you to enter the account's username and password.&lt;br /&gt;&lt;br /&gt;This prompt can be skipped:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Note the webserver name in the title bar of the prompt, e.g. wbsvr01.acme.lan&lt;/li&gt;&lt;li&gt;Start the Credential Manager: Control Panel -&amp;gt; Credential Manager&lt;/li&gt;&lt;li&gt;Add a windows credential:&lt;br /&gt;a. internet or network address: wbsvr01.acme.lan&lt;br /&gt;b. username: domain\usr&lt;br /&gt;c. password: pwd&lt;/li&gt;&lt;/ul&gt;Note: if the website is on the internet, the webserver name has to be added to the trusted sites of the intranet zone:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Internet Explorer -&amp;gt; Tools -&amp;gt; Internet Options -&amp;gt; Security -&amp;gt; Select "Local Intranet" -&amp;gt; Sites -&amp;gt; Advanced&lt;/li&gt;&lt;li&gt;Add this website to the zone: http://wbsvr01.acme.lan&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-6390716815970895732?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/6390716815970895732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=6390716815970895732' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/6390716815970895732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/6390716815970895732'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/07/skip-redundant-login-prompt.html' title='No login prompt for website'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-7222734050678357625</id><published>2010-07-23T09:20:00.017+02:00</published><updated>2010-07-23T10:51:47.768+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Run SSMS using different Windows account</title><content type='html'>You can log in to a SQL Server database using SQL Server Management Studio (SSMS) with a Windows Authentication login. However, the domain account to do this with cannot be entered. It is greyed out and always the account of the user that is currently logged on.&lt;br /&gt;&lt;br /&gt;There are several ways to bypass this and make a connection:&lt;br /&gt;&lt;br /&gt;1) Run SSMS under different privileges:&lt;br /&gt;&lt;br /&gt;- Create a shortcut to SSMS with the following command:&lt;br /&gt;&lt;br /&gt;runas /netonly /user:domain\usr "g:\Program Files (x86)\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\SqlWb.exe"&lt;br /&gt;&lt;br /&gt;- Double-click the shortcut and enter password for the runas account&lt;br /&gt;&lt;br /&gt;Note: SSMS can be located somewhere else, depending on the choice made for the location when installing or the operating system. When using Windows 7 x64, then the tool is by default located as specified above.&lt;br /&gt;&lt;br /&gt;Note: The greyed-out login screen in SSMS still displays the logged on user, not the runas account. This might be confusing.&lt;br /&gt;&lt;br /&gt;1a) Run SSMS under different privileges, without needing to enter a password:&lt;br /&gt;&lt;br /&gt;- Download "runasspc" (can be easily found with a search engine)&lt;br /&gt;- Extract "runasspc.exe" from the zip file and copy to the windows folder&lt;br /&gt;- Create a shortcut to SSMS with the following command:&lt;br /&gt;&lt;br /&gt;runassprc "g:\Program Files (x86)\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\SqlWb.exe" /domain:domain /user:usr /password:pwd&lt;br /&gt;&lt;br /&gt;2) Create a network connection to the remote server&lt;br /&gt;&lt;br /&gt;- Open a command windows (Win+R, cmd.exe)&lt;br /&gt;- Delete all mappings: net use * /delete /y&lt;br /&gt;- Create mapping to SQL Server server: net use \\servername /user:domain\usr&lt;br /&gt;- Start SQL Server Configuration Manager via Programs (or locate SQLServerManager.msc directly)&lt;br /&gt;- Open SQL Native Client Configuration&lt;br /&gt;- Enable Named Pipes protocol and move to top in the order&lt;br /&gt;- Add a new alias. Use:&lt;br /&gt;a. "Named Pipes" as network library&lt;br /&gt;b. Server name: fill in remote server name. The pipe field will display: \\[servername]\pipe\sql\query"&lt;br /&gt;- Start SSMS&lt;br /&gt;a. Server name: fill in remote server name&lt;br /&gt;b. Authentication: Windows Authentication&lt;br /&gt;c. Connection Properties -&gt; Network Protocol, set to Named Pipes&lt;br /&gt;&lt;br /&gt;Note: SSMS automatically uses the account name from the connection to the remote server.&lt;br /&gt;&lt;br /&gt;3) Set credentials for a remote server:&lt;br /&gt;&lt;br /&gt;- Control Panel -&gt; Credential Manager&lt;br /&gt;- Add the domain\account for the remote server&lt;br /&gt;&lt;br /&gt;4) Get terminal services access&lt;br /&gt;&lt;br /&gt;Get the "allow logon to terminal services" right for the remote server for the domain account. Then make a terminal services connection to the server with that account and start SSMS within that session.&lt;br /&gt;&lt;br /&gt;Links:&lt;br /&gt;http://www.olegsych.com/2009/05/crossing-domain-boundaries-windows-authentication/&lt;br /&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-7222734050678357625?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/7222734050678357625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=7222734050678357625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7222734050678357625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7222734050678357625'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/07/run-ssms-using-different-windows.html' title='Run SSMS using different Windows account'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-8441051166740980343</id><published>2010-07-21T10:59:00.003+02:00</published><updated>2010-07-21T11:07:07.777+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Change column position</title><content type='html'>In Oracle, it is not straightforward to change the position of a column. Let alone one that contains data. &lt;br /&gt;&lt;br /&gt;Without resolving to manually changing metadata tables, but using SQL, the following trick can be applied:&lt;br /&gt;&lt;br /&gt;- Create a new table called "newtable" with the desired column order, based on "oldcolumn"&lt;br /&gt;&lt;br /&gt;Note: generate DDL script for "oldtable" and only change the position of the columns. Do not apply constraints, defaults, primary keys, foreign keys, etc. They are named and the names cannot exists twice in a schema&lt;br /&gt;&lt;br /&gt;- Insert all data from "oldtable" into "newtable" using a DML INSERT-statement&lt;br /&gt;- Drop "oldtable"&lt;br /&gt;- Rename "newtable" as "oldtable"&lt;br /&gt;- Apply constraints, defaults, etc to "oldtable"&lt;br /&gt;&lt;br /&gt;Note: if columns are deleted or newly added to "newtable", then this is not straightforward and each constraint, default, etc should be inspected before applying&lt;br /&gt;&lt;br /&gt;Or you can use the "dbms_redefinition" package (bhaski on www.geekinterview.com):&lt;br /&gt;&lt;br /&gt;But you should have these previleges --&gt;&lt;br /&gt;# execute access on the dbms_redefinition package &lt;br /&gt;# create any table # alter any table &lt;br /&gt;# drop any table &lt;br /&gt;# lock any table &lt;br /&gt;# select any table &lt;br /&gt;&lt;br /&gt;create table tab1(col1 char,col3 number); &lt;br /&gt;&lt;br /&gt;alter table tab1 add(col2 char); &lt;br /&gt;&lt;br /&gt;create table tab2 as select col1,col2,col3 from tab1; exec &lt;br /&gt;&lt;br /&gt;dbms_redefinition.can_redef_table('schema_name','tab1'); &lt;br /&gt;&lt;br /&gt;begin &lt;br /&gt;dbms_redefinition.start_redef_table('schema_name','tab1','tab2','col1,col2,col3');   &lt;br /&gt;dbms_redefinition.finish_redef_table( 'schema_name', 'tab1', 'tab2' ); &lt;br /&gt;end; &lt;br /&gt;&lt;br /&gt;select * from tab1; &lt;br /&gt;col1 col2 col3&lt;br /&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-8441051166740980343?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/8441051166740980343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=8441051166740980343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/8441051166740980343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/8441051166740980343'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/07/change-column-position.html' title='Change column position'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-5511360328538951731</id><published>2010-07-21T10:10:00.001+02:00</published><updated>2010-07-21T10:10:17.635+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Change column data type</title><content type='html'>In Oracle, it is not straightforward to change the data type of a column that contains data. Without resolving to manually changing metadata tables, but using SQL, the following trick can be applied:&lt;br /&gt;&lt;br /&gt;- Add a new column to the table called "new column" with the new data type&lt;br /&gt;- Copy the values of "old column" to "new column" using a DML UPDATE statement&lt;br /&gt;- Remove the "old column" from the table using a DDL ALTER statement&lt;br /&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-5511360328538951731?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/5511360328538951731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=5511360328538951731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5511360328538951731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5511360328538951731'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/07/change-column-data-type.html' title='Change column data type'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-6216535186586159757</id><published>2010-07-13T23:14:00.027+02:00</published><updated>2011-02-01T21:21:23.746+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Audio'/><title type='text'>Most recognizable samples</title><content type='html'>&lt;b&gt;Breakbeats&lt;/b&gt;&lt;br /&gt;Al Green - I’m Glad You’re Mine (0:00)&lt;br /&gt;[Eric B. &amp;amp; Rakim - Mahogany, The Notorious B.I.G. - I Got a Story to Tell, RZA - My Lovin' Is Digi]&lt;br /&gt;&lt;br /&gt;Bad Bascomb – Black Grass (1:41)&lt;br /&gt;[Doug E. Fresh - Everybody Got 2 Get Some, Monie Love - Monie In The Middle]&lt;br /&gt;&lt;br /&gt;Billy Squier – Big Beat (0:00)&lt;br /&gt;[Ice Cube – Jackin’ For Beats, Big Daddy Kane – Get Down, A Tribe Called Quest – We Can Get Down, EPMD – Get Wit This]&lt;br /&gt;&lt;br /&gt;Booker T. &amp;amp; The M.G.'s - Born Under A Bad Sign&lt;br /&gt;Booker T. Jones &amp;amp; William Bell - Born Under A Bad Sign&lt;br /&gt;&lt;br /&gt;Bobby Byrd - Hot Pants (0:00)&lt;br /&gt;[Sir Mix-a-Lot - One Time's Got No Case, Das EFX - Straight Out the Sewer, Ini Kamoze - Here Comes the Hotstepper, Run-DMC - What's It All About]&lt;br /&gt;&lt;br /&gt;Chuck Brown and The Soul Searchers - Ashley’s Roach Clip (3:31)&lt;br /&gt;[Eric B. &amp;amp; Rakim – Paid In Full, PM Dawn – Set Adrift On Memory Bliss, Nice &amp;amp; Smooth - Down the Line]&lt;br /&gt;&lt;br /&gt;Dexter Wansel – Theme From The Planets (0:00)&lt;br /&gt;[Eric B. &amp;amp; Rakim - I Ain't No Joke, Last Night by Kid 'N Play, Gutfest '89 by Digital Underground]&lt;br /&gt;&lt;br /&gt;Donny Hathaway – Magnificent Sanctuary Band (0:00)&lt;br /&gt;[Beastie Boys - Johnny Ryall]&lt;br /&gt;&lt;br /&gt;Edwin Birdsong - Rapper Dapper Snapper (0:00)&lt;br /&gt;[De La Soul - Me Myself and I, Gang Starr - Skills]&lt;br /&gt;&lt;br /&gt;Fred Wesley and The J.B.'s - More Peas (7:22)&lt;br /&gt;[Organized Konfusion - Fudge Pudge, Cypress Hill - The Phunky Feel One]&lt;br /&gt;&lt;br /&gt;Funkadelic – Good Old Music (0:00)&lt;br /&gt;[Young Black Male by 2Pac]&lt;br /&gt;&lt;br /&gt;Kool &amp;amp; The Gang – Jungle Jazz (0:13)&lt;br /&gt;&lt;br /&gt;Kool &amp;amp; The Gang - N.T.&lt;br /&gt;[Jump by Kris Kross, Fakin' the Funk by Main Source]&lt;br /&gt;&lt;br /&gt;Funk Inc. – Kool Is Back (1:48)&lt;br /&gt;[Jeru the Damaja - Come Clean]&lt;br /&gt;&lt;br /&gt;Isley Brothers – Footsteps In The Dark&lt;br /&gt;&lt;br /&gt;James Brown - Blues and Pants (0:00)&lt;br /&gt;[Ice-T - New Jack Hustler, Cypress Hill - The Phunky Feel One]&lt;br /&gt;&lt;br /&gt;James Brown - Funky Drummer (5:35)&lt;br /&gt;&lt;br /&gt;James Brown – Funky President (0:00)&lt;br /&gt;Eric B. Is President by Eric B. &amp;amp; Rakim, Hey Ladies by Beastie Boys]&lt;br /&gt;&lt;br /&gt;Jeff Beck – Come Dancing (0:00)&lt;br /&gt;[Chino XL - It's All Bad, Gang Starr - New York Strait Talk]&lt;br /&gt;&lt;br /&gt;Jimi Hendrix - Flashing (0:00)&lt;br /&gt;&lt;br /&gt;Joe Tex – Papa Was Too (0:00)&lt;br /&gt;[EPMD - Headbanger, Wu-Tang Clan - Wu-Tang Clan Ain't Nuthing Ta F*** Wit]&lt;br /&gt;&lt;br /&gt;Lafayette Afro Rock Band - Hihache (0:00)&lt;br /&gt;&lt;br /&gt;Led Zeppelin - When The Levee Breaks (0:00)&lt;br /&gt;[Ice-T - Midnight, Eminem - Kim]&lt;br /&gt;&lt;br /&gt;Little Feat - Fool Yourself (0:00)&lt;br /&gt;[A Tribe Called Quest - Bonita Applebum, Organized Konfusion - Soundman]&lt;br /&gt;&lt;br /&gt;Little Richard – The Rill Thing (0:00)&lt;br /&gt;&lt;br /&gt;Lowell Fulsom - Tramp (0:00) &lt;br /&gt;[House Of Pain - Jump Around,  Cypress Hill - How I Could Just Kill A Man]&lt;br /&gt;&lt;br /&gt;Lyn Collins - Think (About It) (1:23)&lt;br /&gt;&lt;br /&gt;Manzel - Midnight Theme (0:00) &lt;br /&gt;[Wreckx-N-Effect - Rump Shaker, Cypress Hill - How I Could Just Kill A Man]&lt;br /&gt;&lt;br /&gt;Mountain - Long Red (Live) (0:00)&lt;br /&gt;&lt;br /&gt;Melvin Bliss - Synthetic Substitution (0:00) &lt;br /&gt;[Naughty By Nature - OPP, Ice-T - Original Gangster, The Pharcyde - Ya Mama]&lt;br /&gt;&lt;br /&gt;Orange Crush – Action (0:25)&lt;br /&gt;[Do You Want It... Do You Like It... by Puff Daddy, We Major by Kanye West]&lt;br /&gt;&lt;br /&gt;Power of Zeus – Sorcerer of Isis (0:10)&lt;br /&gt;[The Wiseguys - Face the Flames, Eminem - Amityville]&lt;br /&gt;&lt;br /&gt;Q65 – Get Out Of My Life Woman&lt;br /&gt;[Jeru the Damaja - Revenge of the Prophet (Part 5), The Wiseguys - We Be the Crew]&lt;br /&gt;&lt;br /&gt;Roy Ayers – The Boogie Back (0:00)&lt;br /&gt;[N.W.A - F*** Tha Police]&lt;br /&gt;&lt;br /&gt;Silhouettes – Fonky First (0:00)&lt;br /&gt;&lt;br /&gt;Skull Snaps – It’s A New Day (0:00)&lt;br /&gt;[The Pharcyde - Passin' Me By, Digable Planets - For Corners]&lt;br /&gt;&lt;br /&gt;Sly &amp;amp; the Family Stone - Sing a Simple Song (2:12)&lt;br /&gt;&lt;br /&gt;The Headhunters – God Make Me Funky (0:09)&lt;br /&gt;[Eric B. &amp;amp; Rakim - Beats for the Listeners]&lt;br /&gt;&lt;br /&gt;The Honey Drippers - Impeach the President (0:00)&lt;br /&gt;&lt;br /&gt;The Incredible Bongo Band - Apache (0:00)&lt;br /&gt;[Sugarhill Gang - Apache, LL Cool J - You Can't Dance, Grandmaster Flash - Freelance]&lt;br /&gt;&lt;br /&gt;The Meters – Here Comes The Meterman&lt;br /&gt;[Big Daddy Kane - Long Live The Kane, Run-DMC - How'd Ya Do It Dee?]&lt;br /&gt;&lt;br /&gt;The Meters - Look-Ka Py Py (0:50)&lt;br /&gt;[Cypress Hill - The Phunky Feel One]&lt;br /&gt;&lt;br /&gt;The Winstons - Amen, Brother (1:27)&lt;br /&gt;[N.W.A. - Straight Out Of Compton, 3rd Bass - Portrait Of The Artist As A Hood, Brand Nubian - The Gods, Snow - Informer, Eric B. &amp;amp; Rakim - Casualties of War]&lt;br /&gt;&lt;br /&gt;Young Holt Unlimited – Wah Wah Man&lt;br /&gt;&lt;br /&gt;Zapp and Roger – More Bounce To The Ounce (0:00)&lt;br /&gt;[EPMD – You Gots To Chill, Ice Cube – Jackin’ For Beats, Public Enemy – One Million Bottlebags, Ice Cube – Look Who’s Burnin’]&lt;br /&gt;&lt;br /&gt;The Turtles – I’m Chief Kamanawanalea (0:00)&lt;br /&gt;[Serious by Steady B feat. KRS-One, Say No Go by De La Soul, AmeriKKKa's Most Wanted by Ice Cube]&lt;br /&gt;&lt;br /&gt;Grady Tate - Be Black Baby (0:00)&lt;br /&gt;[Set It Off by Big Daddy Kane,&amp;nbsp;Fakin' the Funk by Main Source,&amp;nbsp;Stand Together by Beastie Boys]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sounds&lt;/b&gt;&lt;br /&gt;The J.B.'s - The Grunt (0:00)&lt;br /&gt;Herbie Hancock - Wiggle Waggle (0:00)&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-6216535186586159757?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/6216535186586159757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=6216535186586159757' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/6216535186586159757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/6216535186586159757'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/07/most-recognizable-samples.html' title='Most recognizable samples'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-7818601682799747731</id><published>2010-07-12T21:31:00.013+02:00</published><updated>2010-07-13T09:32:19.991+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Identifying keys</title><content type='html'>A key that is made up of one field is a simple key. All other keys are combined keys. There are two types of combined keys, compound and composite:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Simple key&lt;/b&gt;: key that consists of one field&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Combined key&lt;/b&gt;: key that consists of more than one field&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Compound key&lt;/b&gt;: combined key in which each field is itself a simple key (of another entity)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Composite key&lt;/b&gt;: combined key, that is not a compound key&lt;br /&gt;&lt;br /&gt;A new term I have made up myself:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Concatenated key&lt;/b&gt;: a simple key, that is the concatenation of the fields in a combined key&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-7818601682799747731?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/7818601682799747731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=7818601682799747731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7818601682799747731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7818601682799747731'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/07/keys.html' title='Identifying keys'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-1574554910430797364</id><published>2010-06-09T16:04:00.004+02:00</published><updated>2010-06-09T16:10:22.382+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Truncate tables that have a foreign key</title><content type='html'>A script to truncate tables that have foreign keys referencing them. It also keeps one record in the table, the one with ID=0. In this case, each table has this field as a primary key. &lt;br /&gt;&lt;br /&gt;Finally, some tables are not to be truncated. The readible names of these tables are in a metadata table called TDWM_TABLES. The readible name is in the field VIEWNAME.&lt;br /&gt;&lt;br /&gt;The process is:&lt;br /&gt;&lt;br /&gt;- disable constraints on the selected tables, i.e. with names like 'TDWH_%'&lt;br /&gt;- create a new intermediate table via CTAS that contains the records to keep, i.e. with ID=0&lt;br /&gt;- truncate the table&lt;br /&gt;- copy records back from the intermediate table&lt;br /&gt;- drop intermediate table&lt;br /&gt;- enable constraints on the selected tables, i.e. with names like 'TDWH_%'. Note: enable PK constraints before enabling the FK constraints!&lt;br /&gt;&lt;br /&gt;Here is the script:&lt;br /&gt;&lt;br /&gt;/* SCRIPT */&lt;br /&gt;&lt;br /&gt;SET SERVEROUTPUT ON SIZE UNLIMITED&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;-- Disable constraints&lt;br /&gt;DBMS_OUTPUT.PUT_LINE ('-&gt; Disabling constraints');&lt;br /&gt;FOR reg IN (SELECT 'ALTER TABLE ' || table_name || ' DISABLE CONSTRAINT ' || constraint_name || ' CASCADE' as ST1 FROM user_constraints WHERE table_name LIKE 'TDWH_%') &lt;br /&gt;LOOP&lt;br /&gt;DBMS_OUTPUT.PUT_LINE (reg.ST1); EXECUTE IMMEDIATE reg.ST1;&lt;br /&gt;END LOOP;&lt;br /&gt;&lt;br /&gt;-- Truncate tables&lt;br /&gt;DBMS_OUTPUT.PUT_LINE ('-&gt; Truncating tables');&lt;br /&gt;FOR reg IN (&lt;br /&gt;SELECT &lt;br /&gt;'CREATE TABLE Z_' || TABLE_NAME || ' AS SELECT * FROM ' || TABLE_NAME || ' WHERE ID=0' AS ST1,&lt;br /&gt;'TRUNCATE TABLE ' || TABLE_NAME AS ST2,&lt;br /&gt;'INSERT INTO ' || TABLE_NAME || ' SELECT * FROM Z_' || TABLE_NAME AS ST3,&lt;br /&gt;'DROP TABLE Z_' || TABLE_NAME AS ST4&lt;br /&gt;FROM USER_TABLES t &lt;br /&gt;INNER JOIN TDWM_TABLES b ON UPPER(t.TABLE_NAME) = UPPER(b.TABLENAME) &lt;br /&gt;WHERE t.TABLE_NAME LIKE 'TDWH_%' AND&lt;br /&gt;UPPER(b.VIEWNAME) NOT IN ('TDAYOFWEEK','TMONTHOFYEAR','TQUARTEROFYEAR')&lt;br /&gt;) &lt;br /&gt;LOOP&lt;br /&gt;DBMS_OUTPUT.PUT_LINE (reg.ST1); EXECUTE IMMEDIATE reg.ST1;&lt;br /&gt;DBMS_OUTPUT.PUT_LINE (reg.ST2); EXECUTE IMMEDIATE reg.ST2;&lt;br /&gt;DBMS_OUTPUT.PUT_LINE (reg.ST3); EXECUTE IMMEDIATE reg.ST3; &lt;br /&gt;DBMS_OUTPUT.PUT_LINE (reg.ST4); EXECUTE IMMEDIATE reg.ST4;&lt;br /&gt;END LOOP;&lt;br /&gt;&lt;br /&gt;-- Enable constraints&lt;br /&gt;DBMS_OUTPUT.PUT_LINE ('-&gt; Enabling constraints');&lt;br /&gt;FOR reg IN (SELECT 'ALTER TABLE ' || table_name || ' ENABLE CONSTRAINT ' || constraint_name as ST1 FROM user_constraints WHERE table_name LIKE 'TDWH_%' ORDER BY CONSTRAINT_NAME DESC) &lt;br /&gt;LOOP&lt;br /&gt;DBMS_OUTPUT.PUT_LINE (reg.ST1); EXECUTE IMMEDIATE reg.ST1;&lt;br /&gt;END LOOP;&lt;br /&gt;END;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-1574554910430797364?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/1574554910430797364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=1574554910430797364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/1574554910430797364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/1574554910430797364'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/06/truncate-tables-that-have-foreign-key.html' title='Truncate tables that have a foreign key'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-3003778401112792640</id><published>2010-06-02T12:43:00.002+02:00</published><updated>2010-06-02T12:44:07.216+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Unlimited login attempts on Oracle 11g</title><content type='html'>In Oracle 10g, by default, each user has unlimited login attempts before being blocked. In Oracle 11g this behaviour is changed to 10 attempts.&lt;br /&gt;&lt;br /&gt;When a user/schema is created, it gets assigned to the default profile. The easiest way for unlimited login attempts for all users is to give the default profile the rights:&lt;br /&gt;&lt;br /&gt;ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-3003778401112792640?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/3003778401112792640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=3003778401112792640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/3003778401112792640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/3003778401112792640'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/06/unlimited-login-attempts-on-oracle-11g.html' title='Unlimited login attempts on Oracle 11g'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-8790060742957907779</id><published>2010-06-01T16:27:00.005+02:00</published><updated>2010-06-02T12:45:10.660+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Reconfigure OracleXE built-in webserver's port</title><content type='html'>OracleXE comes with a built-in webserver, running on port 8080. Since this is a wellknown port, chances are that it is already in use on your machine, and therefore conflicting with an already running webserver.&lt;br /&gt;&lt;br /&gt;Check this blog to reconfigure it:&lt;br /&gt;&lt;br /&gt;http://daust.blogspot.com/2006/01/xe-changing-default-http-port.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-8790060742957907779?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/8790060742957907779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=8790060742957907779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/8790060742957907779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/8790060742957907779'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/06/reconfigure-oraclexe-built-in-webserver.html' title='Reconfigure OracleXE built-in webserver&apos;s port'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-3873008945958603250</id><published>2010-01-29T10:36:00.056+01:00</published><updated>2010-01-29T13:27:02.577+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Cannot load package &amp; required privilege is not held by the client</title><content type='html'>How to start a filesystem dtsx package without config file from sql agent:&lt;br /&gt;&lt;br /&gt;- ssis: make note of the package owner, should be windows (domain) account&lt;br /&gt;- ssis: package: encrypt with userkey&lt;br /&gt;- os: sql agent service should run under LocalSystem account&lt;br /&gt;- os: add package owner to local groups: SQLServer2005DTSUser$SERVER, SQLServer2005SQLAgent$SERVER&lt;br /&gt;- ssms: create credential for package owner&lt;br /&gt;- ssms: create proxy using created credential, add all principals, add all subsystems&lt;br /&gt;- ssms: use the created proxy as "run as" user for the job step that starts the package&lt;br /&gt;&lt;br /&gt;There is no easy option to specify the password for a package from sql agent, hence the "encrypt with userkey".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Background information&lt;/b&gt;&lt;br /&gt;Principals have access to a proxy. A proxy is a mapping to a credential. A credential is a mapping to a Windows account.&lt;br /&gt;&lt;br /&gt;1. SSMS / Security / Credential, create a credential. Set identity to an existing account that has the appropriate rights to run the job.&lt;br /&gt;2. SQL Agent / Proxies / SSIS Package Execution, create a new proxy&lt;br /&gt;2a. Proxy / General / Credential name: select the credential from step 1&lt;br /&gt;2b. Proxy / General / Subsystems: select all&lt;br /&gt;2c. Proxy / Principals / MSDB Role, add principals: sqlagentuserrole, sqlagentreaderrole, sqlagentoperatorrole. This are the principals that can access the proxy.&lt;br /&gt;2d. The account must have "login on as a batch job" privileges (check with secpol.msc)&lt;br /&gt;4. Set SQL Server Agent service account to LocalSystem&lt;br /&gt;5. If needed, run a job step under another account. Typically: a SQL Server account based on a Windows account: SQL Server Agent / Jobs / job / Steps / Edit / Advanced /  Run as user,&lt;br /&gt;- select proxy&lt;br /&gt;- type SSIS package&lt;br /&gt;- package source File system&lt;br /&gt;&lt;br /&gt;If the "A required privilege is not held by the client" error occurs (from Microsoft website):&lt;br /&gt;&lt;br /&gt;1. Set the SQL Server Agent service account in SQL Server Configuration Manager to the LocalSystem account.&lt;br /&gt;2. Stop and then start the SQL Server Agent service.&lt;br /&gt;3. Reset the SQL Server Agent service account in SQL Server Configuration Manager back to the original account.&lt;br /&gt;4.Stop and then start the SQL Server Agent service.&lt;br /&gt;&lt;br /&gt;From Marc at Stackoverflow:&lt;br /&gt;&lt;br /&gt;So it boils down to really just two accounts:&lt;br /&gt;&lt;br /&gt;one account is needed to run the SQL Server Agent Windows service - this is a Windows account on your machine / server which needs to have enough permissions to run the service, start and stop it - either use LocalSystem, Network Service, or whatever other Windows account you have to run services with&lt;br /&gt;&lt;br /&gt;The other account would be the account to run your SQL Server Agent steps under - that's typically a SQL Server account (which could be based on a Windows account), and it needs enough privileges inside SQL Server to do its job, e.g. it needs access to the database objects and all. I would strive to have just one account for each app that runs the SQL Server jobs - makes life a whole lot easier!&lt;br /&gt;&lt;br /&gt;From Influent at SQLTeam:&lt;br /&gt;&lt;br /&gt;1. set ProtectionLevel to DontSaveSensitive in package properties in Visual Studio (using SSPI anyway so not sure it mattered)&lt;br /&gt;2. created configuration file (had to alter path to config file in dtsx file since it's different on servers than in dev environment)&lt;br /&gt;3. instead of importing the package into MSDB, set the job step Package Source to "File system" and pointed to dtsx file on local drive of server&lt;br /&gt;4. set the Configurations tab of the job step to point to the dtsConfig file created in step 2&lt;br /&gt;5. made sure the AD user kicking off the job was part of local server groups: Administrators, SQLServer2005DTSUser$SERVER, and SQLServer2005SQLAgent$SERVER (I eventually removed Administrator permissions because I only needed it to log to Windows Event Log)&lt;br /&gt;6. made the associated SQL user to the user in step 5 part of the SQLAgentUserRole in the msdb database&lt;br /&gt;7. made sure the local user assigned to the SQL Agent service was part of local server groups: Administrators, SQLServer2005DTSUser$SERVER, and SQLServer2005SQLAgent$SERVER&lt;br /&gt;&lt;br /&gt;From xprog.blogspot.com:&lt;br /&gt;&lt;br /&gt;1) Executed as user: DOMAIN\user. The process could not be created for step 1 of job 0xB013D0354C8CBD46B79E948740EF5441 (reason: 1314).  The step failed.&lt;br /&gt;The error 1314 is "A required privilege is not held by the client".&lt;br /&gt;&lt;br /&gt;This message indicates that the SQL Server Service account doesn't have the required rights to switch the security context to the proxy account.&lt;br /&gt;&lt;br /&gt;To fix it verify:&lt;br /&gt;1. The proxy account have the "Act as part of the operating system" privilege.&lt;br /&gt;2. The SQL Server Account is in the group&lt;br /&gt;SQLServer2005MSSQLUser$$&lt;br /&gt;3. The Proxy account is in the group&lt;br /&gt;SQLServer2005DTSLUser$$&lt;br /&gt;&lt;br /&gt;SQL Server Agent Account must have 'Adjust memory quotas for a process' (or 'Increase quotas' in pre-Windows 2003) privilege on SQL Server.&lt;br /&gt;&lt;br /&gt;From FriggleFragle at MSDN:&lt;br /&gt;&lt;br /&gt;an issue i found was that sql server agent and ssis had been changed to not use the local system account. this caused me to continually get the dreaded --&amp;gt; "A required privilege is not held by the client" error.  i fought with it all afternoon and eventually updated the services to use the local system account and it worked.  perhaps this will save some other as much time as i wasted.&lt;br /&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-3873008945958603250?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/3873008945958603250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=3873008945958603250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/3873008945958603250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/3873008945958603250'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/01/cannot-load-package-required-privilege.html' title='Cannot load package &amp; required privilege is not held by the client'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-6935080370050549604</id><published>2010-01-21T13:28:00.071+01:00</published><updated>2010-01-21T21:09:02.774+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>External tables</title><content type='html'>Data can be imported into and exported from Oracle 10g in different ways. E.g. by using the SQL*Loader tool for text files (sqlldr) or the Data Pump (impdp/expdp) tools for the propriety Oracle RAW format. For previous Oracle versions, the tools imp and are also available. Those import/export to external locations on the client machine, not the server machine.&lt;br /&gt;&lt;br /&gt;Another way to get data in and out of Oracle is to define an external table. To do this you have to create a table in Oracle in the regular way using a CREATE TABLE statement, but with adding an additional&amp;nbsp;ORGANIZATION EXTERNAL&amp;nbsp;clause.&lt;br /&gt;&lt;br /&gt;Within this clause the properties of the external (server side!) location can be specified.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;EXAMPLE&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;CREATE TABLE TEST&lt;br /&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;"CODE" VARCHAR2(17 BYTE)&lt;br /&gt;)&lt;br /&gt;ORGANIZATION EXTERNAL&lt;br /&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;TYPE ORACLE_LOADER&lt;br /&gt;&amp;nbsp;&amp;nbsp;DEFAULT DIRECTORY DATA_PUMP_DIR&lt;br /&gt;&amp;nbsp;&amp;nbsp;ACCESS PARAMETERS (&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;RECORDS DELIMITED BY NEWLINE&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CHARACTERSET WE8MSWIN1252&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FIELDS TERMINATED BY 0X'09'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MISSING FIELD VALUES ARE NULL&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;REJECT ROWS WITH ALL NULL FIELDS&lt;br /&gt;&amp;nbsp;&amp;nbsp;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;LOCATION ( DATA_PUMP_DIR: 'EXTFILE.TXT' )&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;FIELD LIST&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The list of fields following the create table keywords cannot be inferred dynamically, but has to be specified explicitly. So it is not possible to "hook up" a text file and retrieving the list of fields automatically.&lt;br /&gt;&lt;br /&gt;Trick: import the data first into a table using SQL Developer, TOAD, etc, and create the DDL script from it. Finally, copy and paste the field list from this script.&lt;br /&gt;&lt;br /&gt;It is also possible to specify the "external" list of fields inside the organization external clause. This is, for example, similar to how it is done using Oracle Warehouse Builder (OWB).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;TYPE&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;One of these properties is "TYPE", which specifies the access driver that Oracle uses. There are two values for this property:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ORACLE_LOADER: only read access, from all kinds of text files (but not, for example, Excel .xls)&lt;/li&gt;&lt;li&gt;ORACLE_DATAPUMP: read and write access, a propriety RAW format&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The access driver is a wrapper Oracle uses to call the previously mentioned SQL*Loader or Data Pump functionality.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;An error occurs when an insert statement is performed on a table is created with access driver ORACLE_LOADER:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;SQL Error: ORA-30657: operation not supported on external organized table30657.0000 - &amp;nbsp;"operation not supported on external organized table"&lt;br /&gt;*Cause: &amp;nbsp; &amp;nbsp;User attempted on operation on an external table which is&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; not supported.&lt;br /&gt;*Action: &amp;nbsp; Don't do that!&lt;br /&gt;&lt;/blockquote&gt;The ORACLE_DATAPUMP type has to be used to export data from Oracle using an external table. Unfortunately, this data cannot be humanly read or imported into any other tool then an Oracle database.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DEFAULT DIRECTORY / LOCATION&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A directory object has to be available in Oracle. If it is not already present, it has to be created. For example:&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS 'C:\'&lt;br /&gt;&lt;br /&gt;Now the tag&amp;nbsp;DATA_PUMP_DIR can be used in the organization external clause. The DEFAULT DICTIONARY property is mandatory and has to be used when setting the LOCATION.&lt;br /&gt;&lt;br /&gt;A path specification is not allowed between the single-quotes.&lt;br /&gt;&lt;br /&gt;This is not valid:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;LOCATION ( 'C:\EXTFILE.TXT' )&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;ACCESS PARAMETERS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The options are rather straightforward, except perhaps "FIELDS TERMINATED BY". To set the field delimiter a character can be specified between single-quotes. But it is also possible to specify special characters like tab or linefeed.&lt;br /&gt;&lt;br /&gt;To specify a tab:&lt;br /&gt;&lt;br /&gt;FIELDS TERMINATED BY 0X'09'&lt;br /&gt;&lt;br /&gt;The 0X instructs Oracle that the value between the single-quotes should be interpreted as an ASCII value. In the example, ASCII character 9 is a tab.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;OPTIONALLY ENCLOSED BY '"'&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It is also possible to specify that some values have double-quotes around them. This however does not work in the following case:&lt;br /&gt;&lt;br /&gt;Column 1 value - tab - tab - Column 3 value&lt;br /&gt;&lt;br /&gt;Here a record has a value for columns 1 and 3, but not for column 2. It should be read as NULL, but is actually skipped. This results in the value of column 3 being wrongly inserted in column 2.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CHARACTER SET&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Explicitly setting the character set of the external location prevents problems with interpreting the data and can improve performance.&lt;br /&gt;&lt;br /&gt;From Odi's blog:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;If you do not specify the CHARACTERSET parameter, the database character set is used to interpret the input file. As the input file is in WE8MSWIN1252, the ORACLE_LOADER driver gets confused trying to interpret single-byte WE8MSWIN1252 codes as multibyte AL32UTF8 codes.&lt;br /&gt;&lt;br /&gt;The character set of the input file depends on the way it was created. Even on US Windows, you can create text files in different encodings. Notepad allows you to save the file in ANSI code page (=WE8MSWIN1252 on US Windows), Unicode (=AL16UTF16LE), Unicode big endian (=AL16UTF16), and UTF-8 (=AL32UTF8). The Command Prompt edit.exe editor saves the files in the OEM code page (=US8PC437 on US Windows).&lt;br /&gt;&lt;br /&gt;-- Sergiusz&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;LOGGING&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;All errors are logged to a bad file - containing the violating records - and a log file - containing messages about the error that occured.&lt;br /&gt;&lt;br /&gt;To disable logging, (some of) the following keywords can be added to the clause:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;NODISCARDFILE&lt;/li&gt;&lt;li&gt;NOBADFILE&lt;/li&gt;&lt;li&gt;NOLOGFILE&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Oracle specification of the ORACLE_LOADER access driver:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10825/et_params.htm"&gt;http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10825/et_params.htm&lt;/a&gt;&lt;br /&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/30916058-6935080370050549604?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/6935080370050549604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=6935080370050549604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/6935080370050549604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/6935080370050549604'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2010/01/external-table.html' title='External tables'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-223906568381955297</id><published>2009-10-15T10:54:00.006+02:00</published><updated>2009-10-15T11:00:36.444+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>SQLite enforces foreign key constraints</title><content type='html'>As of version 3.6.19, SQLite finally supports foreign key constraints that can be enforced.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqlite.org/releaselog/3_6_19.html"&gt;http://sqlite.org/releaselog/3_6_19.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A pragma statement has to be execute on the database to enable the enforcement:&lt;br /&gt;&lt;br /&gt;PRAGMA foreign_keys = true;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-223906568381955297?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/223906568381955297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=223906568381955297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/223906568381955297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/223906568381955297'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2009/10/sqlite-supports-foreign-key-constraints.html' title='SQLite enforces foreign key constraints'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-7877764729256799902</id><published>2009-09-30T09:09:00.015+02:00</published><updated>2009-10-15T10:59:19.809+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Measuring disk I/O speed</title><content type='html'>Disk thruput tester is a handy tool to test the sequential read and write performance of storage media, like harddisks and SSD. It supports configurating custom block sizes:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.objectso.nl/"&gt;http://www.objectso.nl/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Using this tool, testing the read/write performance of 8KB, 16KB, 32KB, etc, sized blocks is a breeze. The size and location of the test file is also configurable.&lt;br /&gt;&lt;br /&gt;Note: on the website the tool is called "disk throughput tester".&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-7877764729256799902?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/7877764729256799902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=7877764729256799902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7877764729256799902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7877764729256799902'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2009/09/disk-thruput-readwrite-tester.html' title='Measuring disk I/O speed'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-7668583384038238011</id><published>2009-09-22T11:56:00.019+02:00</published><updated>2009-09-23T09:15:06.779+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><title type='text'>Winload.exe missing or corrupt (0xc000000e)</title><content type='html'>Today we had a problem with Acronis Disk Doctor. We used it to try to resize a existing partition. The tool doesn't directly support dynamic disks - only after downloading additional drivers. These were downloaded, because we had those in our system, and the system had to be rebooted. No changes had been made to this point. But after the reboot, the system stopped almost immediately with a "black screen" reporting:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;0xC000000E \WINDOWS\SYSTEM32\WINLOAD.EXE INFO: THE SELECTED ENTRY COULD NOT BE LOADED BECAUSE THE APPLICATION IS MISSING OR CORRUPT&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;What made this case different from all others that I could find on the internet is that the system partition was no longer accessible. It was not assigned the C drive letter.&lt;br /&gt;&lt;br /&gt;So, the suggestions I could find did not work. They include, but are not limited to:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Repair using the Vista installation disc&lt;/li&gt;&lt;li&gt;From the Vista installation disc's command prompt option:&lt;br /&gt;bootrec /fixmbr -&gt; completes succesfully, but didn't fix the issue&lt;/li&gt;&lt;li&gt;From the Vista installation disc's command prompt option:&lt;br /&gt;bootrec /fixboot -&gt; no system partition can be found&lt;/li&gt;&lt;li&gt;From the Vista installation disc's command prompt option:&lt;br /&gt;bootrec /scanos -&gt; no system partition can be found&lt;/li&gt;&lt;li&gt;Perform the following three commands from the Vista installation disc's command prompt option:&lt;br /&gt;x:\windows\system32\bcdedit /set {default} device partition=c:&lt;br /&gt;x:\windows\system32\bcdedit /set {default} osdevice partition=c:&lt;br /&gt;x:\windows\system32\bcdedit /set {bootmgr} device partition=c:&lt;br /&gt;-&gt; no system partition can be found&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Bootrec is the "fdisk /mbr" for Windows Vista and Windows 7.&lt;/p&gt;&lt;p&gt;If you got here and you still have a C drive letter assigned and that drive is accessible, then the suggestions above might work. I suggest you try them first.&lt;/p&gt;&lt;p&gt;If you don't have a system drive letter, then the resolution is fairly simple:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Start the repair option from a Windows 7 installation disk.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;It detected that there were issues with the current Vista installation and fixed them. We rebooted the system and all was well again. No data loss and still running Vista. &lt;/p&gt;&lt;p&gt;We used a Windows 7 Ultimate x64 disk to fix a Windows Vista Ultimate x32 OS.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-7668583384038238011?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/7668583384038238011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=7668583384038238011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7668583384038238011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7668583384038238011'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2009/09/0xc000000e-windowssystem32winloadexe.html' title='Winload.exe missing or corrupt (0xc000000e)'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-1416767867459796014</id><published>2009-09-17T09:52:00.038+02:00</published><updated>2010-04-06T13:23:37.138+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Cursor variants in Oracle 10g</title><content type='html'>&lt;p&gt;Examples of different types of cursors. Each has its own pros and cons. Example 1 is the most straightforward and easiest to understand. The variants in example 3 perform better. I've put them here for reference.&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;-- 1) implicit cursor&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;DECLARE l_old_tbs VARCHAR(100) := 'USERS';&lt;br /&gt;BEGIN&lt;br /&gt;FOR item IN (&lt;br /&gt;SELECT OWNER, TABLE_NAME FROM ALL_TABLES WHERE TABLESPACE_NAME = l_old_tbs )&lt;br /&gt;LOOP&lt;br /&gt;dbms_output.put_line(item.TABLE_NAME);&lt;br /&gt;END LOOP;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;-- 2) explicit cursor&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;DECLARE l_old_tbs VARCHAR(100);&lt;br /&gt;CURSOR c1 IS (SELECT OWNER, TABLE_NAME FROM ALL_TABLES WHERE TABLESPACE_NAME = l_old_tbs);&lt;br /&gt;BEGIN&lt;br /&gt;l_old_tbs := 'USERS'; -- set variable here, otherwise it is NULL!&lt;br /&gt;FOR item IN c1 LOOP&lt;br /&gt;dbms_output.put_line(item.TABLE_NAME);&lt;br /&gt;END LOOP;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;-- 3a) local collection variable with multiple fields using BULK COLLECT and FORALL&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;CREATE TABLE TEST1 (OWNER VARCHAR(30), TABLE_NAME VARCHAR(30));&lt;br /&gt;DECLARE l_old_tbs VARCHAR(100);&lt;br /&gt;TYPE r_tmp IS RECORD (OWNER ALL_TABLES.OWNER%TYPE, TABLE_NAME ALL_TABLES.TABLE_NAME%TYPE);&lt;br /&gt;TYPE t_tmp IS TABLE OF r_tmp;&lt;br /&gt;tmp t_tmp;&lt;br /&gt;BEGIN l_old_tbs:= 'USERS';&lt;br /&gt;-- fill local collection "tmp" with one bulk operation&lt;br /&gt;SELECT OWNER, TABLE_NAME BULK COLLECT INTO tmp FROM ALL_TABLES WHERE TABLESPACE_NAME = l_old_tbs;&lt;br /&gt;-- update/insert/delete with one bulk operation; select not permitted.&lt;br /&gt;-- no "loop" keyword, because following statement is performed as one batch. Check dbms_output, this is only one line.&lt;br /&gt;-- always use "commit" statement&lt;br /&gt;FORALL i IN tmp.FIRST..tmp.LAST&lt;br /&gt;INSERT INTO TEST1 VALUES tmp(i);&lt;br /&gt;dbms_output.put_line('first: 'tmp.FIRST', last: 'tmp.LAST);&lt;br /&gt;COMMIT;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;-- 3b) local collection variable with single field using BULK COLLECT and FORALL&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;DECLARE l_old_tbs VARCHAR(100);&lt;br /&gt;TYPE t_tmp IS TABLE OF ALL_TABLES.TABLE_NAME%TYPE;&lt;br /&gt;tmp t_tmp;&lt;br /&gt;BEGIN&lt;br /&gt;l_old_tbs:= 'USERS';&lt;br /&gt;-- fill "tmp" with one bulk operation&lt;br /&gt;SELECT TABLE_NAME BULK COLLECT INTO tmp FROM ALL_TABLES WHERE TABLESPACE_NAME = l_old_tbs;&lt;br /&gt;-- update/insert/delete with one bulk operation; select not permitted.&lt;br /&gt;-- no "loop" keyword, because following statement is performed as one batch.&lt;br /&gt;-- always use "commit" statement&lt;br /&gt;FORALL i IN tmp.FIRST..tmp.LAST&lt;br /&gt;INSERT INTO TEST1 (TABLE_NAME) SELECT tmp(i) FROM DUAL;&lt;br /&gt;COMMIT;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;-- 3c) local collection variable with multiple fields using BULK COLLECT and FOR&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SET SERVEROUTPUT ON;&lt;br /&gt;SET SERVEROUTPUT ON SIZE UNLIMITED;&lt;br /&gt;DECLARE&lt;br /&gt;  l_old_tbs VARCHAR2(100);&lt;br /&gt;  TYPE r_tmp IS RECORD (OWNER ALL_TABLES.OWNER%TYPE, TABLE_NAME ALL_TABLES.TABLE_NAME%TYPE);&lt;br /&gt;  TYPE t_tmp IS TABLE OF r_tmp;&lt;br /&gt;  tmp t_tmp;&lt;br /&gt;BEGIN&lt;br /&gt;  l_old_tbs:= 'USERS';&lt;br /&gt;  -- fill local collection "tmp" with one bulk operation&lt;br /&gt;  SELECT OWNER, TABLE_NAME BULK COLLECT INTO tmp FROM ALL_TABLES WHERE TABLESPACE_NAME = l_old_tbs;&lt;br /&gt;  -- update/insert/delete with one bulk operation; select not permitted.&lt;br /&gt;  -- with "loop" statement. Check dbms_output, there are as much lines as tmp.LAST.&lt;br /&gt;  -- always use "commit" statement&lt;br /&gt;  FOR i IN 1..tmp.COUNT&lt;br /&gt;  LOOP&lt;br /&gt;    --INSERT INTO TEST1 VALUES tmp(i);&lt;br /&gt;    dbms_output.put_line('tablename: '||tmp(i).TABLE_NAME||', last: '||tmp.LAST);&lt;br /&gt;    COMMIT;&lt;br /&gt;  END LOOP;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;-- 3d) local collection variable with single field using BULK COLLECT and FOR&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SET SERVEROUTPUT ON;&lt;br /&gt;SET SERVEROUTPUT ON SIZE UNLIMITED;&lt;br /&gt;DECLARE&lt;br /&gt;  i INT := 0;&lt;br /&gt;  l_tabname VARCHAR2(100);&lt;br /&gt;  TYPE r_tmp IS RECORD (TABLE_NAME USER_TABLES.TABLE_NAME%TYPE);&lt;br /&gt;  TYPE t_tmp IS TABLE OF r_tmp;&lt;br /&gt;  tmp t_tmp;&lt;br /&gt;BEGIN&lt;br /&gt;  -- fill local collection "tmp" with one bulk operation&lt;br /&gt;  SELECT TABLE_NAME BULK COLLECT INTO tmp FROM USER_TABLES WHERE UPPER(TABLE_NAME) LIKE 'TTMP_%';&lt;br /&gt;  -- update/insert/delete with one bulk operation; select not permitted.&lt;br /&gt;  -- with "loop" statement. Check dbms_output, there are as much lines as tmp.LAST.&lt;br /&gt;  -- always use "commit" statement&lt;br /&gt;  FOR i IN 1..tmp.COUNT&lt;br /&gt;    LOOP&lt;br /&gt;      dbms_output.put_line(i);&lt;br /&gt;      l_tabname := 'DROP TABLE ' || tmp(i).TABLE_NAME; &lt;br /&gt;      dbms_output.put_line(l_tabname);&lt;br /&gt;      EXECUTE IMMEDIATE l_tabname;&lt;br /&gt;      COMMIT;  &lt;br /&gt;    END LOOP;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;-- 4) use a temp table&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;CREATE GLOBAL TEMPORARY TABLE tmp (OWNER VARCHAR(30), TABLE_NAME VARCHAR(30);&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/30916058-1416767867459796014?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/1416767867459796014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=1416767867459796014' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/1416767867459796014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/1416767867459796014'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2009/09/cursor-variants-in-oracle-10g.html' title='Cursor variants in Oracle 10g'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-9132475771273749050</id><published>2009-09-15T13:02:00.032+02:00</published><updated>2011-07-27T23:28:30.985+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fonts'/><title type='text'>Create handwritten truetype font for free using fontcapture</title><content type='html'>Fontcapture (&lt;a href="http://www.fontcapture.com/"&gt;http://www.fontcapture.com/&lt;/a&gt;) is the only website I could find that offers a service to convert handwritten characters into a True Type (.ttf) font for free. It supplies you with a template to fill in each of the glyphs (characters) of the font. You can print this template, fill it by pen, and scan and upload it to the fontcapture website. The bitmaps are turned into vector paths in the background and the font is created almost instantly.&lt;br /&gt;&lt;br /&gt;Another advantage is that if you own a tablet pc or a (Wacom) pentablet, you can use it to fill in the template digitally. No need to print and scan the template.&lt;br /&gt;&lt;br /&gt;The mechanism can also be used to trace bitmaps, since the tool does not distinguish between characters or other designs. The result is a font with vectorized images.&lt;br /&gt;&lt;br /&gt;Alternatives:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fontifier (&lt;a href="http://www.fontifier.com/"&gt;http://www.fontifier.com/&lt;/a&gt;): almost identical to Fontcapture, but charges $9 per font&lt;/li&gt;&lt;li&gt;Yourfonts (&lt;a href="http://www.yourfonts.com/"&gt;http://www.yourfonts.com/&lt;/a&gt;): almost identical to Fontcapture, but charges $9 per font&lt;/li&gt;&lt;li&gt;Fontgrinder: (http://www.fontgrinder.com/): idem, but charges even more: $14.95&lt;/li&gt;&lt;li&gt;Fontstruct (&lt;a href="http://fontstruct.fontshop.com/"&gt;http://fontstruct.fontshop.com/&lt;/a&gt;): free, but doesn't support handwritten fonts. The website has an editor for constructing your own font from predefined building blocks. A sort of "lego-for-font" method.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;UPDATE 20100106: Unfortunately, the site has been taken offline. The domain is now referring to yourfonts.com. No free alternative is available anymore.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;UPDATE 20110727: There is a new website offering the same free funtionality:&amp;nbsp;&lt;a href="http://www.myscriptfont.com/"&gt;http://www.myscriptfont.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-9132475771273749050?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/9132475771273749050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/9132475771273749050'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2009/09/create-handwritten-truetype-font-for.html' title='Create handwritten truetype font for free using fontcapture'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-2547987615258666329</id><published>2009-09-05T20:30:00.003+02:00</published><updated>2009-09-05T20:31:45.599+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><title type='text'>Netsend</title><content type='html'>Windows Vista and Windos 7 are no longer shipped with the command line tool netsend. Fortunately, a freeware alternative is available at:&lt;br /&gt;&lt;br /&gt;http://www.lantalk.net/netsend/&lt;br /&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-2547987615258666329?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/2547987615258666329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=2547987615258666329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/2547987615258666329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/2547987615258666329'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2009/09/netsend.html' title='Netsend'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-8971763153829654740</id><published>2009-09-04T14:35:00.062+02:00</published><updated>2010-10-20T12:32:03.380+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><title type='text'>List of freeware tools</title><content type='html'>&lt;strong&gt;Explorer &amp;amp; OS&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Total Commander (shareware): &lt;a href="http://www.ghisler.com/"&gt;http://www.ghisler.com/&lt;/a&gt; &lt;/li&gt;&lt;li&gt;7-Zip: &lt;a href="http://www.7-zip.org/"&gt;http://www.7-zip.org/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;VirtualCloneDrive: &lt;a href="http://www.slysoft.com/nl/virtual-clonedrive.html"&gt;http://www.slysoft.com/nl/virtual-clonedrive.html&lt;/a&gt; &lt;/li&gt;&lt;li&gt;NTFS Undelete: &lt;a href="http://www.ntfsundelete.com/"&gt;http://www.ntfsundelete.com/&lt;/a&gt; &lt;/li&gt;&lt;li&gt;CDBurnerXP: &lt;a href="http://cdburnerxp.se/en/download"&gt;http://cdburnerxp.se/en/download&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Atto Disk Benchmark:&amp;nbsp;&lt;a href="http://www.attotech.com/products/product.php?sku=Disk_Benchmark"&gt;http://www.attotech.com/products/product.php?sku=Disk_Benchmark&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Editor&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Notepad2: &lt;a href="http://www.flos-freeware.ch/notepad2.html"&gt;http://www.flos-freeware.ch/notepad2.html&lt;/a&gt; &lt;/li&gt;&lt;li&gt;ExifTool &amp;amp; ExifToolGUI:&amp;nbsp;&lt;a href="http://www.sno.phy.queensu.ca/~phil/exiftool"&gt;http://www.sno.phy.queensu.ca/~phil/exiftool&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;3D&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Now3d: &lt;a href="http://www.now3d.it/Eng/"&gt;http://www.now3d.it/Eng/&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Blender: &lt;a href="http://www.blender.org/"&gt;http://www.blender.org/&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Sketchup:&amp;nbsp;&lt;a href="http://sketchup.google.com/"&gt;http://sketchup.google.com/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Graphics&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;FastStone Image Viewer: &lt;a href="http://www.faststone.org/"&gt;http://www.faststone.org/&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Paint .Net: &lt;a href="http://www.getpaint.net/"&gt;http://www.getpaint.net/&lt;/a&gt; &lt;/li&gt;&lt;li&gt;IcoFX: &lt;a href="http://www.icofx.ro/"&gt;http://www.icofx.ro/&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Screenhunter Free: &lt;a href="http://wisdom-soft.com/products/screenhunter.htm"&gt;http://wisdom-soft.com/products/screenhunter.htm&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Inkscape: &lt;a href="http://www.inkscape.org/"&gt;http://www.inkscape.org/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;FontForge: &lt;a href="http://fontforge.sourceforge.net/"&gt;http://fontforge.sourceforge.net/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Conversion&lt;/strong&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Super: &lt;a href="http://www.erightsoft.com/"&gt;http://www.erightsoft.com/&lt;/a&gt; &lt;/li&gt;&lt;li&gt;MediaCoder: &lt;a href="http://mediacoder.sourceforge.net/download.htm"&gt;http://mediacoder.sourceforge.net/download.htm&lt;/a&gt; &lt;/li&gt;&lt;li&gt;PDFsam (split and merge): &lt;a href="http://www.pdfsam.org/"&gt;http://www.pdfsam.org/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Bullzip PDF Printer: &lt;a href="http://www.bullzip.com/products/pdf/info.php"&gt;http://www.bullzip.com/products/pdf/info.php&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A-PDF extractor (PDF to text): &lt;a href="http://www.a-pdf.com/text/index.htm"&gt;http://www.a-pdf.com/text/index.htm&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Media &amp;amp; audio/dsp&lt;/strong&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Renoise: &lt;a href="http://www.renoise.com/"&gt;http://www.renoise.com/&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Zoom Player 5.02 (6+ is no longer free): &lt;a href="http://download.cnet.com/Zoom-Player-Standard/3000-2139_4-10068896.html?tag=mncol"&gt;http://download.cnet.com/Zoom-Player-Standard/3000-2139_4-10068896.html?tag=mncol&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Media Tagger (Ladislav Dufek): &lt;a href="http://www.softpedia.com/get/Multimedia/Audio/Tag-Editors/Media-Tagger.shtml"&gt;http://www.softpedia.com/get/Multimedia/Audio/Tag-Editors/Media-Tagger.shtml&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Subtitle Workshop: &lt;a href="http://www.urusoft.net/home.php?lang=1"&gt;http://www.urusoft.net/home.php?lang=1&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Divx 7: &lt;a href="http://www.divx.com/en/win"&gt;http://www.divx.com/en/win&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Youwashock: &lt;a href="http://youwashockvst.googlepages.com/"&gt;http://youwashockvst.googlepages.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Stomper: &lt;a href="http://www.lysator.liu.se/~zap/stomper/index2.html"&gt;http://www.lysator.liu.se/~zap/stomper/index2.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;MP3Val: &lt;a href="http://mp3val.sourceforge.net/"&gt;http://mp3val.sourceforge.net&lt;/a&gt;&lt;/li&gt;&lt;li&gt;T@B ZS4: &lt;a href="http://www.zs4.net/"&gt;http://www.zs4.net&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Databases&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PostgreSQL (as a service): &lt;a href="http://www.postgresql.org/"&gt;http:/www.postgresql.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;SQL Server Compact 3.5 (in-process): &lt;a href="http://www.microsoft.com/Sqlserver/2005/en/us/compact.aspx"&gt;http://www.microsoft.com/Sqlserver/2005/en/us/compact.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;SQLite (in-process): &lt;a href="http://www.sqlite.org/"&gt;http://www.sqlite.org/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-8971763153829654740?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/8971763153829654740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=8971763153829654740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/8971763153829654740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/8971763153829654740'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2009/09/great-freeware-tools.html' title='List of freeware tools'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-2003016416967157965</id><published>2009-08-27T22:49:00.008+02:00</published><updated>2009-08-27T23:17:27.801+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Movies'/><title type='text'>Great directors and actors</title><content type='html'>Just a list for myself, because I keep forgetting names.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Directors&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Darren Aronofski: Pi, Requiem For A Dream, The Wrestler&lt;/li&gt;&lt;li&gt;Christopher Nolan: Memento, Insomnia, Batman Begins, The Prestige, The Dark Knight&lt;/li&gt;&lt;li&gt;Clint Eastwood: The Bridges Of Madison County, Mystic River, Million Dollar Baby, Letters From Iwo Jima, Changeling, Gran Torino&lt;/li&gt;&lt;li&gt;David Fincher: Se7en, The Game, Fight Club, Zodiac, The Curious Case Of Benjamin Button&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Actors&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Christian Bale: Empire Of The Sun, Equilibrium, The Machinist, Batman Begins, Harsh Times, The Prestige, 3:10 To Yuma, The Dark Knight&lt;/li&gt;&lt;li&gt;Joseph Gordon-Levitt: Mysterious Skin, Brick, The Lookout&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-2003016416967157965?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/2003016416967157965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=2003016416967157965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/2003016416967157965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/2003016416967157965'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2009/08/great-directors-and-actors.html' title='Great directors and actors'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-369021670722557275</id><published>2009-08-13T11:47:00.017+02:00</published><updated>2009-10-15T11:01:23.837+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Developer'/><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Oracle SQL Developer screen redraw glitch</title><content type='html'>Perform the following steps to fix the redraw, or screen refresh, bug that can occur in Oracle SQL Developer when used on Windows Vista and Windows 7. They occur for example when scrolling horizontally or vertically through the records of a table when the records don't fit the window. &lt;p&gt;&lt;/p&gt;&lt;p&gt;Start with just the sqldeveloper.conf adjustment. If that doesn't fix it, then perform all steps. &lt;p&gt;Steps to solve the issue: &lt;ul&gt;&lt;li&gt;Add or replace the attribute of the following config file.&lt;br /&gt;&lt;strong&gt;..\sqldeveloper\bin\sqldeveloper.conf&lt;/strong&gt;&lt;br /&gt;AddVMOption -Dsun.java2d.noddraw=true&lt;/li&gt;&lt;li&gt;Install the most recent jdk.&lt;br /&gt;Last seen here: &lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;http://java.sun.com/javase/downloads/index.jsp&lt;/a&gt;&lt;br /&gt;Select the Java SE Development Kit (JDK). At this time, JDK 6 Update 16 is the most recent version. Install it in C:\Program Files\Java\jdk1.6.0_16&lt;/li&gt;&lt;li&gt;Add or replace the attributes of the following config files.&lt;br /&gt;&lt;strong&gt;..\ide\bin\jdk.conf&lt;br /&gt;&lt;/strong&gt;SetJavaHome C:\Program Files\Java\jdk1.6.0_16&lt;br /&gt;&lt;strong&gt;..\ide\bin\ide.conf&lt;br /&gt;&lt;/strong&gt;AddVMOption -Xmx256M&lt;br /&gt;AddVMOption -Dsun.awt.keepWorkingSetOnMinimize=true&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-369021670722557275?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/369021670722557275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=369021670722557275' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/369021670722557275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/369021670722557275'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2009/08/sql-developer-screen-redraw.html' title='Oracle SQL Developer screen redraw glitch'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-5521431451052330803</id><published>2009-08-12T13:44:00.017+02:00</published><updated>2011-07-01T11:14:39.573+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><title type='text'>Remove visual rings / circles from pen tablet in Windows 7</title><content type='html'>When using a pen in stead of a mouse in Windows, rings or circles may appear when you click. This happens at least in Vista and Windows 7. I am using a Wacom Graphire pen and wanted to deactivate those. This is not as straightforward as it seems. The rings are part of the Tablet PC Input functionality of the OS - not of the Wacom drivers or application.&lt;br /&gt;&lt;br /&gt;How to disable these rings in Windows 7?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Disable the "Tablet PC Input Service".&lt;br /&gt;This solved the problem for me for a while... until the rings came back for no apparent reason. I suspect because of an automatic update or updated Wacom driver, that reactivated the tablet pc ring feature.&lt;/li&gt;&lt;li&gt;Uninstall Tablet PC Components.&lt;br /&gt;Control panel -&amp;gt; Programs and Features -&amp;gt; Turn Windows features on or off -&amp;gt; uncheck Tablet PC Components. Windows needs to be restarted after this.&lt;/li&gt;&lt;li&gt;Kill the wisptis.exe process, e.g. via taskmanager. &lt;br /&gt;Then 1) rename &lt;root&gt;\windows\system32\wisptis.exe to wisptis.bak, 2) create a textfile called wisptis.exe with nothing in it. Alternatively: open properties for wisptis.exe, go to security tab and "deny full control" for the "everyone" account. If "everyone" is not visible, click edit, click add, type in "everyone" and click ok.&lt;/root&gt;&lt;/li&gt;&lt;/ul&gt;I am not using a tablet pc, so these actions might have a negative impact when using one. &lt;br /&gt;&lt;br /&gt;UPDATE 20100305: The wisptis.exe process still comes up when running some .Net applications. Even when the above tip is applied. Most probably it is copied from the protected cache / version history Windows keeps. To prevent this, download the tool "process blocker":&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.processblocker.com/download.html"&gt;http://www.processblocker.com/download.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.processblocker.com/download.html"&gt;&lt;/a&gt;Configure it to block "wisptis.exe" and now the rings are REALLY gone forever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-5521431451052330803?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/5521431451052330803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=5521431451052330803' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5521431451052330803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5521431451052330803'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2009/08/remove-visual-rings-circles-from-pen.html' title='Remove visual rings / circles from pen tablet in Windows 7'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/15371913223505390460</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-5788161475418847349</id><published>2009-04-01T16:49:00.028+02:00</published><updated>2009-06-18T20:25:08.118+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><title type='text'>Limited connectivity using wireless internet in Vista Home SP1</title><content type='html'>I've had an issue with "limited connectivity" on my Vista Home SP1 installation. It is a laptop that connects wirelessly (WiFi) to a router. The router is connected to the internet via DSL. The router is working fine and the connection to the internet is ok. However, after using the internet for some time, sometimes half an hour, sometimes minutes, the wireless connection displays a yellow exclamation mark with the message "limited connectivity". It is not the router, since rebooting the laptop fixes the issue... for some time, and then it happens again. After that, trying to open network connections, or any other application related to the network, hangs that application.&lt;br /&gt;&lt;br /&gt;I've collected the following possible remedies. I'm not sure which one solved it in the end. Obvious remedies like "put the laptop wifi switch to ON", "put in a correct WEP key" (or any other encryption key) or "check if the router is turned on" are left out:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;(20090618) I put this upfront, because all the tips that follow didn't resolve the issue for me, so I finally bought a new Wifi USB dongle. After buying a new laptop to add to my wireless network I noticed that the WEP encryption I was using didn't work for the new laptop. So in the end I changed protocols from WEP to the stronger WPA. After that, all PC's and even the Wii worked flawlessly. Even after switching back to the original wifi NIC on the laptop that first had the "limited connectivity" message, that laptop hasn't had the problem. So in short: try changing encryption protocols. Start with none (unsecured) to see if the problem is gone and then move on to stronger ones.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Update drivers. There is a great free tool to update almost all drivers on your system, called DriverMax. Just register and it can be used legitimately for 30 days. I am not sure why it is "freeware" if it states that you can "use it freely for 30 days". It is based around a community of users uploading drivers. It the tool detects a new driver, you can then update it. This is a bit tedious, but always better then scouring the internet manually. The current version of the driver that is going to be updated is uploaded to DriverMax first. It is stored in their driver base for other users.&lt;/li&gt;&lt;li&gt;Reset TCPIP stack. Execute the following statement at the command prompt:&lt;br /&gt;&lt;strong&gt;NETSH INT IP RESET&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Reset Winsock. Execute the following statement at the command prompt:&lt;br /&gt;&lt;strong&gt;NETSH WINSOCK RESET&lt;/strong&gt;. Or remove both winsock registry keys, reboot, and reinstall TCP/IP protocol: &lt;a href="http://support.microsoft.com/kb/811259"&gt;http://support.microsoft.com/kb/811259&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Disable auto-tuning. Execute the following statement at the command prompt:&lt;br /&gt;&lt;strong&gt;NETSH INTERFACE TCP SHOW GLOBAL. &lt;/strong&gt;Check if "Receive Window Auto-Tuning Level" is disabled. If not, then disable it:&lt;br /&gt;&lt;strong&gt;NETSH INTERFACE TCP SET GLOBAL AUTOTUNINGLEVEL=DISABLED. &lt;/strong&gt;Re-enable with "=NORMAL".&lt;/li&gt;&lt;li&gt;Disable IP6 protocol. Uncheck IPv6 protocol on the network adapters and disable in the registry. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters, add or change DWORD key "DisabledComponents", set to hex "FF".&lt;/li&gt;&lt;li&gt;Disable other protocols. Additionaly uncheck QoS Packet Scheduler, Link-Layer Topology Discovery Mapper I/O Driver, and Link-Layer Topology Discovery Responder.&lt;/li&gt;&lt;li&gt;Disable power management on NIC. Right click the wireless network adapter in Device Manager, select properties, tab "Power Management" and uncheck the box "Allow the computer to turn of this device to save power". In my case it was turned back on again at a later point in time, but that could be due to installing a new driver afterwards.&lt;/li&gt;&lt;li&gt;Change wireless channel. Try different channel numbers for the NIC. Each channel number (mostly between 1 and 13) corresponds to a different frequency. The property can be set on the advanced tab of the driver for the NIC in device manager. Set the adhoc channel accordingly in the wireless router configuration.&lt;/li&gt;&lt;li&gt;Disable and re-enable network adapter. Apparently, this sometimes fixes issues.&lt;/li&gt;&lt;li&gt;Reboot in Safe Mode. A solution like the previous one. Reboot the system, press F8, select "safe mode". After it has fully restarted, reboot again. Windows starts normally again.&lt;/li&gt;&lt;li&gt;Run the System File Checker utility. Execute the following statement at the command prompt:&lt;br /&gt;&lt;strong&gt;SFC /SCANNOW&lt;/strong&gt;. This is not of much of use to the majority of laptop owners, since they often do not own a copy of their Windows OS installation disk. When SFC finds a component (e.g. DLL) on the system, that is different from the one that was installed during the original installation, then it needs to get that original one from the installation disk.&lt;/li&gt;&lt;li&gt;Check eventviewer. I have error messages concerning a NTIOMIN service that cannot start, TCPIP.SYS signing issues, and Kerberos related messages (can supposedly be ignored when the laptop is not part of a domain). Still haven't figured out the first two. I'm also getting "informational" events about the NETw5v32 wireless driver. This is related to an incorrect driver.&lt;/li&gt;&lt;li&gt;Run registry or system cleaners: nice tools to run are HijackThis and CCleaner. The first can be used to remove questionable or corrupt services, browser helper objects, protocols, etc. The latter cleans the registry, removing orphanaged keys.&lt;/li&gt;&lt;li&gt;Repair wireless. Right click the wireless network icon in the notification area and select "diagnose and repair". Alternative method. Execute the following statement at the command prompt:&lt;br /&gt;&lt;strong&gt;%windir%\system32\rundll32.exe ndfapi,NdfRunDllDiagnoseIncident&lt;/strong&gt;. Do this before "limited connectivity" message pops up. In my case it displayed a message: "TCP/IP settings not optimized", and it optimized them. Running it again didn't display the message again, so I guess it did something the first time.&lt;/li&gt;&lt;li&gt;Run Intel PROSet/Wireless diagnostics. If using Intel on-board wireless (I am using 3945ABG), then you can run the diagnostics utility. Execute the following statement at the command prompt:&lt;br /&gt;&lt;strong&gt;%windir%\system32\iPROSet.cpl&lt;/strong&gt;. Run "diagnose" to check hardware, driver, radio, etc. Run "statistics" to check beacons, transmit errors, and power and power levels. &lt;/li&gt;&lt;li&gt;Downgrade driver. Sometimes the most recent driver is not the best one for your device. Some drivers available are: NETw3v32, NETw4v32 (11.5.0.34), NETw5v32 (12.2.0.11). In my case, the NETw4v32 driver gave 100% signal quality, while a NETw3v32 driver gave only 60%. The NETw5v32 filled my eventlog with messages (see remark elsewhere).&lt;/li&gt;&lt;li&gt;Set router to G-Only: put the router in network mode "G-Only". This way, the older B-mode is not supported, but throughput is improved.&lt;/li&gt;&lt;li&gt;(Run Network Diagnostics tool. Execute the following statement at the command prompt: &lt;strong&gt;NETSH DIAG GUI&lt;/strong&gt;. Check all scanning options and start. This should work in Vista when the command prompt is started with admin rights, but I couldn't get it to work)&lt;/li&gt;&lt;li&gt;(NIC settings. If supported, try putting the adapter in full-duplex mode, or if it is already, in half-duplex mode. Experiment what works best. I cannot do this myself and wonder if this is even possible for a wireless adapter?)&lt;/li&gt;&lt;li&gt;(Run netdiag tool. Unfortunately, this tool is only availabe in Windows XP as part of "Microsoft Windows XP Support Tools". So, only for those using Windows XP, execute the following statement at the command prompt:&lt;br /&gt;&lt;strong&gt;NETDIAG /TEST:WINSOCK /V&lt;/strong&gt;. Use the outcome of the test for further analysis.) &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Links: &lt;a href="http://ask-leo.com/what_is_limited_connectivity_and_how_do_i_fix_it.html"&gt;http://ask-leo.com/what_is_limited_connectivity_and_how_do_i_fix_it.html&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-5788161475418847349?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/5788161475418847349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=5788161475418847349' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5788161475418847349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/5788161475418847349'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2009/04/limited-connectivity-using-wireless.html' title='Limited connectivity using wireless internet in Vista Home SP1'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-867536857669587325</id><published>2008-02-15T11:28:00.013+01:00</published><updated>2010-04-23T16:13:02.527+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Simple way to read Excel or Access data in SQL Server</title><content type='html'>-- list of available providers&lt;br /&gt;exec master..xp_enum_oledb_providers&lt;br /&gt;&lt;br /&gt;-- Two ways to read in Access data (file: c:\db1.mdb, tabel: TEST)&lt;br /&gt;SELECT * FROM OPENROWSET('MSDASQL', 'Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\db1.mdb;Uid=;pwd=;','SELECT * FROM TEST')&lt;br /&gt;&lt;br /&gt;SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=C:\db1.mdb;')...[TEST]&lt;br /&gt;&lt;br /&gt;-- Read in Excel (file: c:\employee.xls, worksheet: TEST)&lt;br /&gt;SELECT * FROM OPENROWSET('MSDASQL', 'Driver={Microsoft Excel Driver (*.xls)};Dbq=C:\employee.xls;Uid=;pwd=;','SELECT * FROM [TEST$]')&lt;br /&gt;&lt;BR&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-867536857669587325?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/867536857669587325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=867536857669587325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/867536857669587325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/867536857669587325'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2008/02/simple-way-to-read-excel-or-access-data.html' title='Simple way to read Excel or Access data in SQL Server'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-7166711728727994703</id><published>2008-01-05T17:39:00.000+01:00</published><updated>2008-01-06T02:10:04.044+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Audio'/><title type='text'>Converting WAV DTS to MP3</title><content type='html'>A WAV DTS file contains a multi-channel encoded digital format called DTS and has .wav as extention. Playing such a file in Zoomplayer or WinAmp typically produces a static sound. This is because a filter and/or decoder are not installed.&lt;br /&gt;&lt;br /&gt;For Zoomplayer a filter can be installed (Gabest AC3), but a separate DTS decoder is still needed. Ffdshow contains such a decoder, but setting up this mapping in advanced options -&gt; customized media playback -&gt; source filters and splitters didn't help. Zoomplayer keeps displaying the "An ERROR has occured!" messagebox when trying to play the WAV DTS file.&lt;br /&gt;&lt;br /&gt;Foobar2000 used to have an additional component, foo_dts.dll, that could be downloaded from the site, but it is no longer available. I was unable to find out why it is no longer supplied. After searching the internet I found a version of the library, but foobar2000 0.9.5 refused to load it, reporting that it was an outdated version.&lt;br /&gt;&lt;br /&gt;A player that can play them out-of-the-box is VLC player. This player has a built-in filter and decoder to play WAV DTS files. It can also transcode files, e.g. to MP3 format, but when I use it on a WAV DTS file, the program terminates unexpectedly.&lt;br /&gt;&lt;br /&gt;So, in the end, I was unable to find a "one-click" solution. Here is how I finally managed to convert a WAV DTS file into a MP3 file:&lt;br /&gt;&lt;br /&gt;For the example, I use a WAV DTS file named c:\wavdts.wav&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download BeSplit (&lt;a href="http://www.afterdawn.com/software/audio_software/audio_tools/besplit.cfm"&gt;http://www.afterdawn.com/software/audio_software/audio_tools/besplit.cfm&lt;/a&gt;). I used version 0.9b6.2.&lt;/li&gt;&lt;li&gt;Extract the zip file to c:\&lt;/li&gt;&lt;li&gt;Start BeSliced.exe&lt;/li&gt;&lt;li&gt;Drag and drop wavdts.wav onto the besliced canvas&lt;/li&gt;&lt;li&gt;Select "DTS" when asked to select a format&lt;br /&gt;BeSplit is now ripping the DTS stream from the WAV DTS file.&lt;br /&gt;To use BeSplit without BeSliced, execute this command at the command prompt:&lt;br /&gt;BeSplit.exe -core( -input c:\wavdts.wav -fix -logfile C:\BeSliced.txt -type dtswav -output c:\wavdts_Fixed.dts ) -profile( BeSliced v0.3 )&lt;br /&gt;A file called c:\wavdts_Fixed.dts is created.&lt;/li&gt;&lt;li&gt;Download DTSDec (&lt;a href="http://www.rarewares.org/others.php"&gt;http://www.rarewares.org/others.php&lt;/a&gt;). I used version 0.0.2.7.&lt;/li&gt;&lt;li&gt;Extract the zip file to c:\&lt;/li&gt;&lt;li&gt;Execute this command at the command prompt:&lt;br /&gt;dtsdec -o wav &gt; regularwav.wav wavdts_Fixed.dts.&lt;br /&gt;DTSDec is now transcoding multi-channel DTS to a regular two-channel WAV file called regularwav.wav&lt;/li&gt;&lt;li&gt;Use your favorite MP3 converting tools, e.g. AudioGrabber with LAME, to convert this WAV file to a MP3 file.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-7166711728727994703?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/7166711728727994703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=7166711728727994703' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7166711728727994703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/7166711728727994703'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2008/01/converting-wav-dts-to-mp3.html' title='Converting WAV DTS to MP3'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-4486878911839642641</id><published>2007-11-02T15:17:00.000+01:00</published><updated>2008-01-05T17:46:09.214+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Astonishing'/><title type='text'>Money pit on Oak Island</title><content type='html'>Very bizarre story:&lt;br /&gt;&lt;a href="http://www.activemind.com/Mysterious/Topics/OakIsland/"&gt;http://www.activemind.com/Mysterious/Topics/OakIsland/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've put it here so I don't forget to check progress on the digging from time to time.&lt;br /&gt;&lt;br /&gt;Update: an anonymous poster pointed me to the site &lt;a href="http://www.oakislandtreasure.co.uk/"&gt;http://www.oakislandtreasure.co.uk/&lt;/a&gt;. Check it out, as there are updates to this story!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-4486878911839642641?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/4486878911839642641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=4486878911839642641' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/4486878911839642641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/4486878911839642641'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2007/11/money-pit-on-oak-island.html' title='Money pit on Oak Island'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-887928810072939776</id><published>2007-10-29T20:34:00.000+01:00</published><updated>2007-11-08T15:51:27.175+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Drupal'/><title type='text'>Drupal Clean URL's with IIS7</title><content type='html'>Drupal can work with clean URL's (or URL write). The most talked about solution is using Helicon's ISAPI _Rewrite ISAPI add-in, which can be found here (&lt;a href="http://www.isapirewrite.com/"&gt;http://www.isapirewrite.com/&lt;/a&gt;) if you are interested. But here I want to show you how you can accomplish clean url's using a free alternative by Ionics called IIRF.&lt;br /&gt;&lt;br /&gt;Perform the following steps to get clean URL's in Drupal 5.3 in IIS7:&lt;br /&gt;&lt;br /&gt;1) Download Ionics Isapi Rewrite Filter&lt;br /&gt;At the moment of writing this is the only quite reliable freeware URL rewriter for IIS. You can get it here:&lt;br /&gt;&lt;a href="http://www.codeplex.com/IIRF/Release/ProjectReleases.aspx?ReleaseId=5018"&gt;http://www.codeplex.com/IIRF/Release/ProjectReleases.aspx?ReleaseId=5018&lt;/a&gt;&lt;br /&gt;Download the most recent "-bin.zip" version.&lt;br /&gt;&lt;br /&gt;2) Install Ionics Isapi Rewrite Filter&lt;br /&gt;- Extract IsapiRewrite4.dll to c:\inetpub\wwwroot (or your www root folder)&lt;br /&gt;- Extract \examples\DrupalRules.ini to c:\inetpub\wwwroot (or your www root folder) as IsapiRewrite4.ini&lt;br /&gt;&lt;br /&gt;If you haven't installed Drupal in the webroot, but, like me, in a subfolder, then you have to perform the following updates to DrupalRules.ini. I use &lt;a href="http://localhost/drupal"&gt;http://localhost/drupal&lt;/a&gt;, so I had to add&lt;br /&gt;add "/drupal" to almost every RewriteRule. In stead of "/drupal" you can use any folder or level of subfolders that is necessary in your case, e.g. for &lt;a href="http://localhost/davy/dozy/tich"&gt;http://localhost/davy/dozy/tich&lt;/a&gt; you have to replace the bold "/drupal" string with "/davy/dozy/tich".&lt;br /&gt;&lt;br /&gt;Here are some examples for each of the sections defined in DrupalRules.ini:&lt;br /&gt;&lt;br /&gt;RewriteRule ^/misc/(.*)$ /misc/$1 [I,L]&lt;br /&gt;RewriteRule ^/modules/tinymce/(.*)$ /modules/tinymce/$1 [I,L]&lt;br /&gt;RewriteRule ^/cron\.php$ /cron.php [I,L]&lt;br /&gt;RewriteRule /(.*)\?(.*)$ /index.php\?q=$1&amp;amp;$2 [I,L]&lt;br /&gt;RewriteRule ^/(.*)$ /index.php?q=$1 [I,L]&lt;br /&gt;&lt;br /&gt;become&lt;br /&gt;&lt;br /&gt;RewriteRule ^&lt;strong&gt;/drupal&lt;/strong&gt;/misc/(.*)$ &lt;strong&gt;/drupal&lt;/strong&gt;/misc/$1 [I,L]&lt;br /&gt;RewriteRule ^&lt;strong&gt;/drupal/&lt;/strong&gt;modules/tinymce/(.*)$ &lt;strong&gt;/drupal&lt;/strong&gt;/modules/tinymce/$1 [I,L]&lt;br /&gt;RewriteRule ^&lt;strong&gt;/drupal/&lt;/strong&gt;cron\.php$ &lt;strong&gt;/drupal&lt;/strong&gt;/cron.php [I,L]&lt;br /&gt;RewriteRule &lt;strong&gt;/drupal&lt;/strong&gt;/(.*)\?(.*)$ &lt;strong&gt;/drupal&lt;/strong&gt;/index.php\?q=$1&amp;amp;$2 [I,L]&lt;br /&gt;RewriteRule ^&lt;strong&gt;/drupal&lt;/strong&gt;/(.*)$ &lt;strong&gt;/drupal&lt;/strong&gt;/index.php?q=$1 [I,L]&lt;br /&gt;&lt;br /&gt;The following RewriteRule has to be added to the first RewriteRule-section If you also use Gallery2:&lt;br /&gt;&lt;br /&gt;RewriteRule ^/gallery2/(.*)$ /gallery2/$1 [I,L]&lt;br /&gt;&lt;br /&gt;or if you use &lt;a href="http://localhost/drupal"&gt;http://localhost/drupal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;RewriteRule ^&lt;strong&gt;/drupal&lt;/strong&gt;/gallery2/(.*)$ &lt;strong&gt;/drupal&lt;/strong&gt;/gallery2/$1 [I,L]&lt;br /&gt;&lt;br /&gt;The RewriteRule function uses regular expressions to transform clean url's back to their non-clean equivalents.&lt;br /&gt;&lt;br /&gt;3) Add ISAPI filter to IIS7&lt;br /&gt;- Start IIS.msc&lt;br /&gt;- Select Default Web Site (&lt;strong&gt;not&lt;/strong&gt; your virtual directory or application!)&lt;br /&gt;- Double-click the ISAPI filters icon&lt;br /&gt;- Add...&lt;br /&gt;&lt;br /&gt;Filtername: IsapiRewrite4&lt;br /&gt;Executable: C:\inetpub\wwwroot\IsapiRewrite4.dll&lt;br /&gt;&lt;br /&gt;4) Set Drupal to use Clean URL's&lt;br /&gt;- Start Drupal in your web browser&lt;br /&gt;- Administer -&gt; Clean URLs&lt;br /&gt;- Click "Test for Clean URL's" (it is somewhat hidden in the paragraph text)&lt;br /&gt;- Select enable&lt;br /&gt;&lt;br /&gt;In my case, the enable check box was still greyed out. To set Clean URL's manually:&lt;br /&gt;&lt;br /&gt;- Remove write-protection from the c:\inetpub\wwwroot\drupal\sites\default\settings.php file&lt;br /&gt;- Edit the file and add:&lt;br /&gt;&lt;br /&gt;# Force Clean urls&lt;br /&gt;$conf['clean_url']=1;&lt;br /&gt;&lt;br /&gt;- Set write-protection back.&lt;br /&gt;&lt;br /&gt;Hopefully this quick and rudimentary instruction helps you setting up URL rewriting for you Drupal installation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-887928810072939776?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/887928810072939776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=887928810072939776' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/887928810072939776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/887928810072939776'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2007/10/drupal-clean-urls-with-iis7.html' title='Drupal Clean URL&apos;s with IIS7'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-1824756767414715620</id><published>2007-10-27T14:53:00.000+02:00</published><updated>2007-10-27T14:59:10.312+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Astonishing'/><title type='text'>Liger</title><content type='html'>I saw a documentary today on National Geographic about the cross-breeding product of a tiger and lion. The hybrid is called a liger. I didn't know that such a beast exists.&lt;br /&gt;&lt;br /&gt;You can read more about it here:&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Liger"&gt;http://en.wikipedia.org/wiki/Liger&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-1824756767414715620?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/1824756767414715620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=1824756767414715620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/1824756767414715620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/1824756767414715620'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2007/10/liger.html' title='Liger'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-3701245868053179007</id><published>2007-10-23T21:49:00.000+02:00</published><updated>2007-11-02T15:30:22.244+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Drupal'/><title type='text'>Fix upload of images in Drupal</title><content type='html'>Solution to messages like&lt;br /&gt;&lt;br /&gt;warning: move_uploaded_file() [&lt;a href="http://localhost/drupal/function.move-uploaded-file"&gt;function.move-uploaded-file&lt;/a&gt;]: Unable to move 'c:\progra~1\php\upload_tmp\php525F.tmp' to '' in C:\inetpub\wwwroot\drupal\includes\file.inc on line 244."&lt;br /&gt;&lt;br /&gt;when trying to upload images to Drupal 5.3.&lt;br /&gt;&lt;br /&gt;Perform or check these steps (I'm using Vista and IIS7):&lt;br /&gt;&lt;br /&gt;1) Create temporary upload folder for php&lt;br /&gt;php must have an upload folder to be able to upload files. Create one called upload_tmp under the install root of php. So if php is installed here:&lt;br /&gt;&lt;br /&gt;c:\progra~1\php\&lt;br /&gt;&lt;br /&gt;then the full path to the upload folder will be:&lt;br /&gt;&lt;br /&gt;c:\progra~1\php\upload_tmp&lt;br /&gt;&lt;br /&gt;2) Change php.ini&lt;br /&gt;Change the settings to the following values:&lt;br /&gt;file_uploads = On&lt;br /&gt;upload_tmp_dir = "c:\progra~1\php\upload_tmp"&lt;br /&gt;upload_max_filesize = 2M&lt;br /&gt;&lt;br /&gt;3) Create temporary preview and upload folder for Drupal&lt;br /&gt;Drupal must also have an upload and preview folder to be able to upload and preview files.&lt;br /&gt;&lt;br /&gt;Create the following folders under the drupal root.&lt;br /&gt;files&lt;br /&gt;files\tmp&lt;br /&gt;&lt;br /&gt;So if drupal is installed here:&lt;br /&gt;&lt;br /&gt;C:\inetpub\wwwroot\drupal\&lt;br /&gt;&lt;br /&gt;then the full path to the upload and preview folders will be:&lt;br /&gt;&lt;br /&gt;C:\inetpub\wwwroot\drupal\files&lt;br /&gt;C:\inetpub\wwwroot\drupal\files\tmp&lt;br /&gt;&lt;br /&gt;In my case it worked without setting permissions on these folders, but if it doesn't, you can try giving the web service user access.&lt;br /&gt;&lt;br /&gt;Give user IUSR permission to read/write on these folders:&lt;br /&gt;&lt;br /&gt;- Right click folder- Properties -&gt; security -&gt; edit -&gt; add -&gt; advanced -&gt; find now&lt;br /&gt;- Select IUSR, ok&lt;br /&gt;- Select full control, ok, ok&lt;br /&gt;&lt;br /&gt;4a) Change drupal settings (upload module)&lt;br /&gt;Activate the upload module:&lt;br /&gt;&lt;br /&gt;In Administer -&gt; Site building -&gt; Modules, activate module Upload&lt;br /&gt;&lt;br /&gt;4b) Change drupal settings (folders)&lt;br /&gt;In Administer -&gt; Site configuration -&gt; File system, set the following values:&lt;br /&gt;&lt;br /&gt;File system path: files&lt;br /&gt;Temporary directory: files/tmp&lt;br /&gt;&lt;br /&gt;The temporary directory must be a subfolder of the file system path folder!&lt;br /&gt;&lt;br /&gt;Now the upload should work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-3701245868053179007?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/3701245868053179007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=3701245868053179007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/3701245868053179007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/3701245868053179007'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2007/10/fix-upload-of-images-in-drupal.html' title='Fix upload of images in Drupal'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-6925322326989701262</id><published>2007-03-13T08:51:00.000+01:00</published><updated>2007-03-13T08:55:17.536+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><title type='text'>Install Windows Components from command-line</title><content type='html'>If you want to start the add/remove Windows Components dialog without using the add/remove programs interface, then use the following command:&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;Sysocmgr.exe /i:sysoc.ini&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-6925322326989701262?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/6925322326989701262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=6925322326989701262' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/6925322326989701262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/6925322326989701262'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2007/03/install-windows-components-from-command.html' title='Install Windows Components from command-line'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-1330582728218140722</id><published>2007-02-26T09:16:00.001+01:00</published><updated>2007-02-26T10:36:49.560+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><title type='text'>IE7 enable tabbed browsing</title><content type='html'>You can enable tabbed browsing in Internet Explorer 7 by using a menu command:&lt;br /&gt;&lt;br /&gt;Tools -&gt; Internet Options -&gt; Tab: settings -&gt; select Enable Tabbed Browsing.&lt;br /&gt;&lt;br /&gt;However, sometimes this is not enough, for example because the domain administrator has "disabled" tabbed browsing using a registry key. You can enable it by putting the next registry entry in a .reg text file (e.g. c:\tabbrowse.reg) and executing it:&lt;br /&gt;&lt;blockquote&gt;Windows Registry Editor Version 5.00&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]"ClassicShell"=dword:00000000&lt;br /&gt;&lt;/blockquote&gt;... or you can set the DWord keyvalue to 0 by hand.&lt;br /&gt;&lt;br /&gt;If the key value gets restored every time you log in to your system, you could add the execution of registry file to the startup folder:&lt;br /&gt;&lt;br /&gt;- create a bat file, e.g. tabbrowse.bat&lt;br /&gt;- add the following line to the bat file: regedit /s c:\tabbrowse.reg&lt;br /&gt;- add the bat file to the startup folder&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-1330582728218140722?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/1330582728218140722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=1330582728218140722' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/1330582728218140722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/1330582728218140722'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2007/02/ie7-enable-tabbed-browsing_26.html' title='IE7 enable tabbed browsing'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-115407281970713010</id><published>2006-07-28T09:32:00.000+02:00</published><updated>2007-10-27T14:57:56.700+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RS'/><title type='text'>Dynamic transparent color</title><content type='html'>The default value of most color properties is "Transparent". If you want to dynamically set a color property, you can use the IIF-statement. This statement has the following signature:&lt;br /&gt;&lt;blockquote&gt;=IIF([boolean],[return value if true],[return value if false])&lt;/blockquote&gt;A problem lies in the fact that both the true and the false part are obligatory. For setting the color the following IIF-statement can be used:&lt;br /&gt;&lt;blockquote&gt;=IIF(ReportItems!txtBox.Value=5, "Palegreen", "Transparent")&lt;/blockquote&gt;But, the value Transparent does not exist! You cannot set it! Visual Studio throws the following warning:&lt;br /&gt;&lt;blockquote&gt;The value of the background color property for the textbox ‘textbox’ is “Transparent”, which is not a valid background color.&lt;br /&gt;&lt;/blockquote&gt;It turns out that this property is not exported to the generated XML file, called rdl, if it is not explicitly set. The IIF-statement forces you to set it, but the value Transparent cannot be used. How to dynamically set the color property then?&lt;br /&gt;&lt;br /&gt;You could use the value White instead. However, the background color for example gets rendered after the borders, so a white background covers part of a visible cell border. This is clearly visible on the report. Very annoying...&lt;br /&gt;&lt;br /&gt;The only solution I could come up with is using a function that does not have an explicit return type. Then, if there is no return value, a non-existing object is returned.&lt;br /&gt;&lt;br /&gt;Like this:&lt;br /&gt;&lt;blockquote&gt;function Rank(val1)&lt;br /&gt;&lt;br /&gt;if val1=5 then Rank = "Palegreen"&lt;br /&gt;&lt;br /&gt;end function&lt;/blockquote&gt;Can you have the IIF-statement return a null (uninitialized object) value? The System.DBNull value that has replace the null value is just a type, not a value. So, this doesn't work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-115407281970713010?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/115407281970713010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=115407281970713010' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115407281970713010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115407281970713010'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2006/07/rs-dynamic-transparent-color.html' title='Dynamic transparent color'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-115346486378281048</id><published>2006-07-21T08:52:00.001+02:00</published><updated>2009-10-15T11:01:51.630+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Truncate staging tables</title><content type='html'>Before creating a backup of the database, you could clean out all staging tables to safe some space in the backup and to reduce the time it takes to make the backup. You could use the following simple SQL-loop statement:&lt;br /&gt;&lt;blockquote&gt;EXEC sp_MSforeachtable "IF LEFT('?',11)='[dbo].[STG_' BEGIN PRINT '?' TRUNCATE TABLE ? END"&lt;/blockquote&gt;The statement expects a strict naming convention: all staging table names should start with STG_ and this prefix should not be used for any other table types. Also make sure you do not have any "permanent" data in your staging environment.&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;The PRINT-statement can be left out. It could help you debug the statement. Also the truncate statement does not work if there are foreign keys referencing the table.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-115346486378281048?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/115346486378281048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=115346486378281048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115346486378281048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115346486378281048'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2006/07/sql-truncate-staging-tables.html' title='Truncate staging tables'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-115340764162707767</id><published>2006-07-20T16:58:00.000+02:00</published><updated>2007-10-27T15:04:52.271+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><title type='text'>Windows Update fix</title><content type='html'>Sometimes Windows Update gets corrupted. Some of its components or previously downloaded updates get mangled during the download or installation process. Here's a quick fix to clean out the folders that it uses (put the script in a batch file):&lt;br /&gt;&lt;blockquote&gt;@echo off&lt;br /&gt;&lt;br /&gt;NET STOP "Automatic Updates"&lt;br /&gt;&lt;br /&gt;SET D=%windir%\SoftwareDistribution\DownloadDEL /q %D%&lt;br /&gt;FOR /F %%f IN ('dir %D% /b /A:D') DO RD /s /q %D%%%f&lt;br /&gt;&lt;br /&gt;SET D=%windir%\SoftwareDistribution\DataStoreDEL /q %D%&lt;br /&gt;FOR /F %%f IN ('dir %D% /b /A:D') DO RD /s /q %D%%%f&lt;br /&gt;&lt;br /&gt;SET D=%windir%\system32\CatRoot2DEL /q %D%&lt;br /&gt;FOR /F %%f IN ('dir %D% /b /A:D') DO RD /s /q %D%%%f&lt;br /&gt;&lt;br /&gt;NET START "Automatic Updates"&lt;/blockquote&gt;On execution, it wil re-download the main components and give you a "fresh" Windows Update installation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-115340764162707767?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/115340764162707767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=115340764162707767' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115340764162707767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115340764162707767'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2006/07/os-windows-update-fix.html' title='Windows Update fix'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-115338407923172217</id><published>2006-07-20T10:17:00.000+02:00</published><updated>2007-10-27T14:57:28.191+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RS'/><title type='text'>Cannot decrypt the symmetric key...</title><content type='html'>Yesterday I got a Windows update of my .Net framework 2.0. After the update the system needed to be rebooted, so I did that. After that, my reportmanager in Internet Explorer returned with the following error:&lt;br /&gt;&lt;blockquote&gt;The report server cannot decrypt the symmetric key used to access sensitive or encrypted data in a report server database. You must either restore a backup key or delete all encrypted content and then restart the service. Check the documentation for more information. (rsReportServerDisabled)&lt;/blockquote&gt;The Reporting Services service (RSS) uses an asymmetric key to decrypt a symmetric key. This symmetric key is used to communicate with its repository in SQL Server. The asymmetric key is tied to the account with which the RSS runs. Change the account and the key is invalidated. Apparently, the update did something to this account, although it was "LocalSystem" and still is "LocalSystem".&lt;br /&gt;&lt;br /&gt;Fortunately, the problem is easily solved by issuing the following statement at the command prompt I found on Kate Gregory's blog posted by a guy named Derek:&lt;br /&gt;&lt;blockquote&gt;rsactivate -r -c"C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\RSReportServer.config"&lt;/blockquote&gt;It re-creates the assymetric key for the service account and stores it again in the rsreportserver.config file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-115338407923172217?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/115338407923172217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=115338407923172217' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115338407923172217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115338407923172217'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2006/07/rs-cannot-decrypt-symmetric-key.html' title='Cannot decrypt the symmetric key...'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-115277560805176852</id><published>2006-07-13T09:24:00.001+02:00</published><updated>2009-10-15T11:03:15.500+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Return the size of pre-selected tables</title><content type='html'>A stored procedure I use a lot to get a resultset containing the size of a selection of tables in the database:&lt;br /&gt;&lt;blockquote&gt;CREATE procedure sp_TableSize as&lt;br /&gt;begin&lt;br /&gt;SET ANSI_WARNINGS OFF&lt;br /&gt;&lt;br /&gt;CREATE TABLE #temp&lt;br /&gt;(&lt;br /&gt;TABLENAME varchar(100),&lt;br /&gt;ROWS int,&lt;br /&gt;RESERVED varchar(25),&lt;br /&gt;DATA varchar(25),&lt;br /&gt;INDEX_SIZE varchar(25),&lt;br /&gt;UNUSED varchar(25),&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;DECLARE @table nvarchar(100)&lt;br /&gt;&lt;br /&gt;-- Select the tables for which to retrieve sizes&lt;br /&gt;DECLARE cDWHTables cursor read_only for&lt;br /&gt;SELECT name FROM sysobjects&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;WHERE LEFT(name, 4) in ('STG_','ODS_','DIM_','SYS_','FCT_','RPT_') OR&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;LEFT(name,3) = 'MD_'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OPEN cDWHTables&lt;br /&gt;&lt;br /&gt;-- Store each record retrieved from sp_spaceused in temp table&lt;br /&gt;FETCH NEXT FROM cDWHTables INTO @table&lt;br /&gt;WHILE (@@fetch_status &lt;&gt; -1)&lt;br /&gt;BEGIN&lt;br /&gt;IF (@@fetch_status &lt;&gt; -2)&lt;br /&gt;BEGIN&lt;br /&gt;insert #temp exec sp_spaceused @table&lt;br /&gt;END&lt;br /&gt;FETCH NEXT FROM cDWHTables INTO @table&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;UPDATE #temp SET&lt;br /&gt;reserved = left(reserved, len(reserved) - 3),&lt;br /&gt;data = left(data, len(data) - 3),&lt;br /&gt;index_size = left(index_size, len(index_size) - 3),&lt;br /&gt;unused = left(unused, len(unused) - 3)&lt;br /&gt;&lt;br /&gt;INSERT #temp&lt;br /&gt;SELECT 'TOTAL' as tablename, sum(rows) as rows,&lt;br /&gt;sum(convert(int,reserved)) as reserved,&lt;br /&gt;sum(convert(int,data)) as data,&lt;br /&gt;sum(convert(int,index_size)) as index_size,&lt;br /&gt;sum(convert(int,unused)) as unused&lt;br /&gt;FROM #temp&lt;br /&gt;&lt;br /&gt;--Return the results as data set&lt;br /&gt;SELECT&lt;br /&gt;TABLENAME = tablename,&lt;br /&gt;ROWS = convert(int,rows),&lt;br /&gt;CONVERT(int,reserved) as RESERVED,&lt;br /&gt;convert(int,data) as DATA,&lt;br /&gt;convert(int,index_size) as INDEX_SIZE,&lt;br /&gt;convert(int,unused) as UNUSED,&lt;br /&gt;AVG_DATA = convert(numeric(18,2),case when rows&gt;0 then convert(float, data) / convert(float, [rows]) else 0 end),&lt;br /&gt;TOTAL = convert(int,data) + convert(int,index_size),&lt;br /&gt;TOTAL_MB = (convert(int,data) + convert(int,index_size))/1024&lt;br /&gt;FROM #temp&lt;br /&gt;&lt;br /&gt;-- Clean up&lt;br /&gt;DROP TABLE #temp&lt;br /&gt;CLOSE cDWHTables&lt;br /&gt;DEALLOCATE cDWHTables&lt;br /&gt;&lt;br /&gt;end&lt;/blockquote&gt;Replace the &lt;span style="FONT-WEIGHT: bold"&gt;bold&lt;/span&gt; part to set the tables for which to return the size. After all records have been returned it adds a final total row to the set.&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;The insert of the total row can alternatively be written using the COMPUTE-clause on the main select statement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-115277560805176852?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/115277560805176852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=115277560805176852' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115277560805176852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115277560805176852'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2006/07/sql-return-size-of-pre-selected-tables.html' title='Return the size of pre-selected tables'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-115262804871707119</id><published>2006-07-11T16:11:00.001+02:00</published><updated>2009-10-15T11:02:57.693+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Backup to network share</title><content type='html'>You can use the following TSQL statement to backup a database to a network share in SQL Server 2000:&lt;br /&gt;&lt;blockquote&gt;BACKUP DATABASE &lt;dbname&gt;TO DISK = '\\unc\folder\filename.bak'&lt;br /&gt;WITH RETAINDAYS=0, INIT &lt;/dbname&gt;&lt;/blockquote&gt;This will create a full backup each time it is executed. The RETAINDAYS=0 option makes sure that the previous backup will always get overwritten. Not the safest thing, but can be needed if you are in a tight spot regarding disk space.&lt;br /&gt;&lt;br /&gt;This backup file will also appear then in Enterprise Manager. Select Tools, Backup database and check the destination listbox.&lt;br /&gt;&lt;br /&gt;To check if the backup is complete and readable:&lt;br /&gt;&lt;blockquote&gt;RESTORE VERIFYONLY FROM DISK = '\\unc\folder\filename.bak'&lt;/blockquote&gt;This way you can have more control over your backup procedure than using maintenance plans, e.g. by putting them in a Execute SQL Task in a DTS package.&lt;br /&gt;&lt;br /&gt;Alternatively, using Enterprise Manager, you can add a backup device via management\backup and have in point to \\unc\folder\filename.bak. Right-click it, select "backup a database" and click "Ok".&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;It is not recommended to backup directly to a network share, but sometimes there is no alternative.&lt;br /&gt;&lt;br /&gt;Note 2:&lt;br /&gt;Setting the RETAINDAYS property to e.g. 5 days means it will be impossible to overwrite the backup file during the next 5 days! Beware of that!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-115262804871707119?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/115262804871707119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=115262804871707119' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115262804871707119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115262804871707119'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2006/07/sql-backup-to-network-share.html' title='Backup to network share'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-115261882241768934</id><published>2006-07-11T13:35:00.000+02:00</published><updated>2007-10-27T14:56:57.161+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Concatenating text files</title><content type='html'>Jamie Thomson has a post on concatenating multiple text files (using the ForEach Loop) and subsequently loading this concatenated file in one go. You can find the post here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.conchango.com/jamiethomson/archive/2006/06/22/4116.aspx"&gt;http://blogs.conchango.com/jamiethomson/archive/2006/06/22/4116.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I use to do this with a small batch file. The batch file is called concat.bat and takes in the following parameters: %1 for the extension of the files to concatenate, e.g. txt and %2 for the folder in which the files are stored.&lt;br /&gt;&lt;br /&gt;The body of the batch file is as follows:&lt;br /&gt;&lt;blockquote&gt;set I=&lt;br /&gt;for /F %%f in ('dir "%2"*.%1 /B /O:N /A:-D') do set I=%%f&lt;br /&gt;if not defined I goto EXIT&lt;br /&gt;copy "%2"*.%1 "%2"\backup&lt;br /&gt;copy "%2"*.%1 "%2"%I:~0,5%concat.tmp&lt;br /&gt;if exist "%2"%I:~0,5%concat.tmp del "%2"*.%1 &gt; NUL&lt;br /&gt;ren "%2"*concat.tmp *.%1&lt;br /&gt;:EXIT&lt;/blockquote&gt;Example of the usage of the batch file:&lt;br /&gt;The batch files is called with %1 = .txt and %2 = c:\temp. Say there are three files in c:\temp called test1.txt, test2.txt, and test3.txt with create dates 2006/01/01, 2006/01/02, and 2006/01/03 respectively. The result is one textfile called text1.txt containing the content of all three files.&lt;br /&gt;&lt;br /&gt;Explanation of each line of code:&lt;br /&gt;&lt;br /&gt;Set I=&lt;br /&gt;dimensions the variable I.&lt;br /&gt;&lt;br /&gt;for /F %%f in ('dir "%2"*.%1 /B /O:N /A:-D') do set I=%%f&lt;br /&gt;iterates over all files in folder c:\temp with extension ".txt", ordered descending by create date. Each iteration "do set I=%%f" assigns the filename to variable I. After iteration I contains the value of the last filename in the list. This is the file created first according to create date, since the list is sorted decendantly.&lt;br /&gt;&lt;br /&gt;if not defined I goto EXIT&lt;br /&gt;checks if I has a value, if not, the batch ends. I.e. there where no .txt files in the folder.&lt;br /&gt;&lt;br /&gt;copy "%2"*.%1 "%2"\backup&lt;br /&gt;copies the three sourcefiles to a backup folder. This is done for auditing purposes.&lt;br /&gt;&lt;br /&gt;copy "%2"*.%1 "%2"%I:~0,5%concat.tmp&lt;br /&gt;concatenates all .txt files to one file with the filename stored in I. So, a file called test1concat.tmp is created, containing the union/concatenation of the three files.&lt;br /&gt;&lt;br /&gt;if exist "%2"%I:~0,5%concat.tmp del "%2"*.%1 &gt; NUL&lt;br /&gt;does a check to ensure the .tmp file has been created and deletes the three source files, so the inbox in emptied.&lt;br /&gt;&lt;br /&gt;ren "%2"*concat.tmp *.%1&lt;br /&gt;renames the .tmp file to the final filename, in this case text1.txt.&lt;br /&gt;&lt;br /&gt;EXIT:&lt;br /&gt;exits the batch file.&lt;br /&gt;&lt;br /&gt;Currently it only works if all files have the same filename length, so 5 (="textX") in the case of the example. Of course this can be optimized, e.g. search for the first dot and take the left part of the file name.&lt;br /&gt;&lt;br /&gt;I have no idea if this approach is better with regard to performance. I haven't tested it on thousands of files and have not done a comparison to the approach used in the post by Jamie. On the other hand, this approach will also work nicely in DTS, where there is no ForEach Loop.&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;The "for /F" functionality is not available in all Windows versions. It is available in Windows 2003 server and Windows XP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-115261882241768934?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/115261882241768934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=115261882241768934' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115261882241768934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115261882241768934'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2006/07/ssisdts-concatenating-text-files.html' title='Concatenating text files'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30916058.post-115261218591498988</id><published>2006-07-11T12:00:00.000+02:00</published><updated>2007-10-27T14:56:47.508+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Strange HAVING-clause behaviour</title><content type='html'>Say you want to return a resultset containing the last two days per week. First, construct the demo table:&lt;br /&gt;&lt;blockquote&gt;CREATE TABLE TEST_TIME (WEEKCODE INT, ISODATE CHAR(8))&lt;br /&gt;INSERT INTO TEST_TIME VALUES (1, '20060101')&lt;br /&gt;INSERT INTO TEST_TIME VALUES (1, '20060102')&lt;br /&gt;INSERT INTO TEST_TIME VALUES (1, '20060103')&lt;br /&gt;INSERT INTO TEST_TIME VALUES (2, '20060108')&lt;br /&gt;INSERT INTO TEST_TIME VALUES (2, '20060109')&lt;br /&gt;INSERT INTO TEST_TIME VALUES (2, '20060110')&lt;br /&gt;INSERT INTO TEST_TIME VALUES (2, '20060111')&lt;/blockquote&gt;The following SQL query will give the desired resultset:&lt;br /&gt;&lt;blockquote&gt;SELECT t.WEEKCODE, t.ISODATE FROM TEST_TIME t&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;WHERE &lt;/span&gt;t.ISODATE &gt;=&lt;br /&gt;(&lt;br /&gt;SELECT TOP 1 ISODATE FROM&lt;br /&gt;(&lt;br /&gt;SELECT TOP 2 ISODATE&lt;br /&gt;FROM TEST_TIME t2&lt;br /&gt;WHERE t.WEEKCODE = t2.WEEKCODE&lt;br /&gt;ORDER BY ISODATE DESC&lt;br /&gt;) t1&lt;br /&gt;ORDER BY ISODATE ASC&lt;br /&gt;)&lt;br /&gt;ORDER BY t.WEEKCODE&lt;/blockquote&gt;It returns 4 records, as espected:&lt;br /&gt;&lt;blockquote&gt;1 20060102&lt;br /&gt;1 20060103&lt;br /&gt;2 20060110&lt;br /&gt;2 20060111&lt;/blockquote&gt;Just for fun, I tried the same thing using a GROUP BY and HAVING-clause like this:&lt;br /&gt;&lt;blockquote&gt;SELECT t.WEEKCODE, t.ISODATE FROM TEST_TIME t&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;GROUP BY&lt;/span&gt; t.WEEKCODE, t.ISODATE&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;HAVING &lt;/span&gt;t.ISODATE &gt;=&lt;br /&gt;(&lt;br /&gt;SELECT TOP 1 ISODATE FROM&lt;br /&gt;(&lt;br /&gt;SELECT TOP 2 ISODATE&lt;br /&gt;FROM TEST_TIME t2&lt;br /&gt;WHERE t.WEEKCODE = t2.WEEKCODE&lt;br /&gt;ORDER BY ISODATE DESC&lt;br /&gt;) t1&lt;br /&gt;ORDER BY ISODATE ASC&lt;br /&gt;)&lt;br /&gt;ORDER BY t.WEEKCODE&lt;/blockquote&gt;Far less efficient, but one would expect it to return the same resultset. But it does not! In fact it returns 28 records:&lt;br /&gt;&lt;blockquote&gt;1 20060102&lt;br /&gt;1 20060102&lt;br /&gt;1 20060102&lt;br /&gt;1 20060102&lt;br /&gt;1 20060102&lt;br /&gt;1 20060102&lt;br /&gt;1 20060102&lt;br /&gt;1 20060103&lt;br /&gt;1 20060103&lt;br /&gt;1 20060103&lt;br /&gt;1 20060103&lt;br /&gt;1 20060103&lt;br /&gt;1 20060103&lt;br /&gt;1 20060103&lt;br /&gt;2 20060110&lt;br /&gt;2 20060110&lt;br /&gt;2 20060110&lt;br /&gt;2 20060110&lt;br /&gt;2 20060110&lt;br /&gt;2 20060110&lt;br /&gt;2 20060110&lt;br /&gt;2 20060111&lt;br /&gt;2 20060111&lt;br /&gt;2 20060111&lt;br /&gt;2 20060111&lt;br /&gt;2 20060111&lt;br /&gt;2 20060111&lt;br /&gt;2 20060111&lt;br /&gt;&lt;/blockquote&gt;That is even more than there are in the table! This is very strange behaviour. Stripping the HAVING-clause returns 7 records, as expected. But adding it results in a cartesian product of the 7 source records by the 4 top-2 records (2 for week 1 and 2 for week 2) resulting in 7x4=28 records.&lt;br /&gt;&lt;br /&gt;From BOL:&lt;br /&gt;"The HAVING clause is &lt;span style="FONT-WEIGHT: bold"&gt;then &lt;/span&gt;applied to the rows in the result set that are produced by grouping. Only the groups that meet the HAVING conditions appear in the query output. You can apply a HAVING clause only to columns that also appear in the GROUP BY clause or in an aggregate function."&lt;br /&gt;&lt;br /&gt;So, first the grouping, THEN an extra filtering on that set. How can filtering 7 records result in 28 records? Furthermore, the 28 records are not distinct records. Something you would expect when using a GROUP BY-clause...&lt;br /&gt;&lt;br /&gt;Conclusion is that in case of a correlated having-clause query the having-clause is evaluated &lt;span style="FONT-WEIGHT: bold"&gt;before &lt;/span&gt;the group by-clause.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30916058-115261218591498988?l=locksnlatches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://locksnlatches.blogspot.com/feeds/115261218591498988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30916058&amp;postID=115261218591498988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115261218591498988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30916058/posts/default/115261218591498988'/><link rel='alternate' type='text/html' href='http://locksnlatches.blogspot.com/2006/07/sql-strange-having-clause-behaviour.html' title='Strange HAVING-clause behaviour'/><author><name>Frans van Bree</name><uri>http://www.blogger.com/profile/03133242903963879373</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
