<?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-4742114022404761409</id><updated>2012-02-16T23:56:33.778+13:00</updated><title type='text'>sortitious</title><subtitle type='html'>(randomly selected)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>oscil8er</name><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>93</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4742114022404761409.post-2468158849999485638</id><published>2011-11-29T14:20:00.001+13:00</published><updated>2011-11-29T14:23:02.655+13:00</updated><title type='text'>Subclipse overlay icons</title><content type='html'>&lt;div class="post-text"&gt;&lt;span style="font-style: italic;"&gt;Lifted from &lt;/span&gt;&lt;a style="font-style: italic;" href="http://stackoverflow.com/questions/3917925/what-do-the-arrow-icons-in-subclipse-mean/3920248#3920248"&gt;http://stackoverflow.com/questions/3917925/what-do-the-arrow-icons-in-subclipse-mean/3920248#3920248&lt;/a&gt;&lt;span style="font-style: italic;"&gt; because something this valuable should be an article - not just an answer.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When working with the Subversion repository,  remote changes (those on the repository) are incoming changes (remote →  local), while local changes are outgoing changes (local → remote).  &lt;p&gt;In views that compare the local and remote copies, incoming changes  are denoted with a blue, left-facing arrow, while outgoing changes are  denoted with a gray, right-facing arrow. These arrows may be decorated  to indicate more specific operations.&lt;/p&gt;  &lt;p&gt;The Package Explorer view, on the other hand, indicates a file's  status with a different set of icons representing its local state. These  icons are the ones most commonly seen, so let's start with them:&lt;/p&gt;  &lt;p&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/uKpNO.png" alt="Ignored File" /&gt;&lt;/sub&gt; - A file ignored by version control. You can control what resources will be ignored by going to &lt;em&gt;Window → Preferences → Team → Ignored Resources&lt;/em&gt;.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/UWf9X.png" alt="Unversioned File" /&gt;&lt;/sub&gt; - A file not under version control. These are typically new files that you have not committed to the repository yet.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/RMTXE.png" alt="New File" /&gt;&lt;/sub&gt;  - A versioned file that needs to be added to the remote repository.  These are typically files you have either renamed, or moved to a  different directory.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/NS1OG.png" alt="Deleted File" /&gt;&lt;/sub&gt;  - A deleted folder. These are folders that you have deleted locally  without yet committing the changes to the repository. Note that files  are usually removed from the view when they're deleted locally, so they  are normally not seen with this icon.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/iee2g.png" alt="Synchronized File" /&gt;&lt;/sub&gt; - A file with no local changes.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/jS8wu.png" alt="Local Changes" /&gt;&lt;/sub&gt; - A file with local, uncommitted changes.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/kioVk.png" alt="Locked File" /&gt;&lt;/sub&gt; - A &lt;a href="http://svnbook.red-bean.com/en/1.5/svn.advanced.locking.html"&gt;locked&lt;/a&gt; file.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/HyV5B.png" alt="Conflicted File" /&gt;&lt;/sub&gt; - A conflicted file. These are typically files that had a commit/update conflict that you marked to resolve later.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/m3v8P.png" alt="Tree Conflicted File" /&gt;&lt;/sub&gt;  - A file that has a tree conflict. These are typically files that have  local changes, but have since been moved, removed, or renamed in the  repository since the last local copy update.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/tIRZZ.png" alt="External File" /&gt;&lt;/sub&gt; - A file that is external to the project. Linked external files cannot be committed to the repository.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/QhHYs.png" alt="Switched File" /&gt;&lt;/sub&gt; - A file that has been &lt;a href="http://svn.haxx.se/subusers/archive-2007-06/0052.shtml"&gt;switched&lt;/a&gt;. These are files which belongs to a different working copy than their local parent directory.&lt;/p&gt;  &lt;p&gt;In a synchronization view (e.g. via &lt;em&gt;Synchronize with Repository&lt;/em&gt; or &lt;em&gt;Commit&lt;/em&gt;),  as previously described, there are icons which indicate which direction  a change is occurring in as well as additional information about that  change. These are described below:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Outgoing&lt;/strong&gt;&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/BGt41.png" alt="Commit Changes" /&gt;&lt;/sub&gt; - A file whose contents have been modified and will be committed to the repository.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/RO2hZ.png" alt="Commit Addition" /&gt;&lt;/sub&gt;  - A file that will be newly added to the repository. This may coincide  with a file removal in cases where a file is moved or renamed..&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/01aZm.png" alt="Commit Removal" /&gt;&lt;/sub&gt;  - A file that will be removed from the repository. This may coincide  with a file addition in cases where a file is moved or renamed.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/CeV6D.png" alt="Property Change" /&gt;&lt;/sub&gt; - A file with &lt;a href="http://svnbook.red-bean.com/nightly/en/svn.advanced.props.html"&gt;property changes&lt;/a&gt;, in the Commit dialog. On the Synchronize tab, property changes are currently reflected as a normal file modification (&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/BGt41.png" alt="Commit Changes" /&gt;&lt;/sub&gt;).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Incoming&lt;/strong&gt;&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/3XXOX.png" alt="Remote Changes" /&gt;&lt;/sub&gt; - A file that has content changes committed to the repository that will be applied to the local copy.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/PVH4L.png" alt="Pull Addition" /&gt;&lt;/sub&gt;  - A new file that will be added to the local copy from the repository.  Like the outgoing file addition, this may be the result of a move or  rename.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/OJme5.png" alt="Pull Removal" /&gt;&lt;/sub&gt;  - A file that will be removed from the local copy because it has been  removed from the repository. Like the outgoing file removal, this may be  the result of a move or rename.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Conflict&lt;/strong&gt;&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/9wrQQ.png" alt="Conflicting Versions" /&gt;&lt;/sub&gt;  - A file that has been changed in both the local copy and repository  independently, causing a need for conflict resolution. Fixing this  condition involves opening up the conflict view or forcibly overwriting  changes locally or remotely.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/KwULa.png" alt="Synchronization Tree Conflict" /&gt;&lt;/sub&gt; - A file that has a &lt;a href="http://svnbook.red-bean.com/nightly/en/svn.tour.treeconflicts.html"&gt;tree conflict&lt;/a&gt;.  This can occur when there are new changes to a file on one end (either  local or remote), and the file is moved, removed, or renamed on the  other. &lt;/p&gt;  &lt;p&gt;Finally, the &lt;em&gt;Synchronize with Repository&lt;/em&gt; option opens the Synchronize tab (&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/lPBhk.png" alt="Synchronize Tab" /&gt;&lt;/sub&gt;) with the following buttons:&lt;/p&gt;  &lt;p&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/zY07z.png" alt="Synchronize Source" /&gt;&lt;/sub&gt;  - Synchronizes the local copy with the currently selected repository  when clicked. Selecting from the drop-down allows switching between  different remote code bases.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/Inal5.png" alt="Show Incoming" /&gt;&lt;/sub&gt; - Shows only incoming changes (remote → local).&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/PKM5L.png" alt="Show Outgoing" /&gt;&lt;/sub&gt; - Shows only outgoing changes (local → remote).&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/bdp8P.png" alt="Show Incoming and Outgoing" /&gt;&lt;/sub&gt; - Shows both incoming and outgoing changes (remote ↔ local).&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/EyWVU.png" alt="Show Conflicts" /&gt;&lt;/sub&gt; - Shows conflicting changes.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/brjg1.png" alt="Update Incoming" /&gt;&lt;/sub&gt; - Updates all local resources with incoming changes after prompt.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/e42Oa.png" alt="Commit Outgoing" /&gt;&lt;/sub&gt; - Brings up the commit dialog to commit all outgoing changes.&lt;br /&gt;&lt;sub&gt;&lt;img src="http://i.stack.imgur.com/nhsqV.png" alt="Show Changesets" /&gt;&lt;/sub&gt; - Breaks up the change lists by revisions.&lt;/p&gt;  &lt;p&gt;There are a few other views which weren't covered that have  additional icons, but this should hopefully be a good start. Let me know  if there is anything important missing, or any of these descriptions  seem to differ from your actual experience.&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-2468158849999485638?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/2468158849999485638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=2468158849999485638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2468158849999485638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2468158849999485638'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2011/11/subclipse-overlay-icons.html' title='Subclipse overlay icons'/><author><name>oscil8er</name><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-4742114022404761409.post-7498306710408094240</id><published>2011-11-29T10:30:00.007+13:00</published><updated>2011-11-29T10:54:02.080+13:00</updated><title type='text'>Salesforce.com activity - parent field is Subject</title><content type='html'>I needed to be able to restrict the criteria for a Salesforce.com workflow rule so that it was only triggered if an activity belonging to a particular custom object was changed.&lt;br /&gt;&lt;br /&gt;To identify the object type I wanted to check the first 3 characters in the GUI field that's equivalent to the API WhatId.&lt;br /&gt;&lt;br /&gt;Finding out from googleland which field I should use for this was surprisingly fruitless. Wrong choices:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Opportunity/AccountId&lt;/li&gt;&lt;li&gt;Contact/LeadId&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Through trial and error it turns out that Subject was the right field! (!?!?Subject!?!?)&lt;br /&gt;&lt;br /&gt;So my simple filter looks like "Subject starts with a99"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-7498306710408094240?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/7498306710408094240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=7498306710408094240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7498306710408094240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7498306710408094240'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2011/11/custom-object-parent-of-salesforcecom.html' title='Salesforce.com activity - parent field is Subject'/><author><name>oscil8er</name><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-4742114022404761409.post-4241748949660938241</id><published>2011-11-23T09:43:00.007+13:00</published><updated>2011-11-23T10:11:45.243+13:00</updated><title type='text'>Finding my way around the Force.com Eclipse IDE</title><content type='html'>I find that it's easy to accidentally close tabs and views in Eclipse, or send them to Fast View. The bottom right panel in particular seems to have a high mistake rate for me.&lt;br /&gt;&lt;br /&gt;Views are easy to bring back if they were accidentally closed:&lt;br /&gt;&lt;br /&gt;Force.com views - e.g. Window: Show View: Problems&lt;br /&gt;Standard Eclipse views used by the Force.com perspective - e.g. Window: Show View: Other: Progress&lt;br /&gt;&lt;br /&gt;If the views aren't visible after using Show View then they have probably ended up in Fast View.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-5B_lnzNq6yg/TswNajSomEI/AAAAAAAAAEY/HlEgb8a2cwY/s1600/eclipsefastview.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 67px; height: 64px;" src="http://1.bp.blogspot.com/-5B_lnzNq6yg/TswNajSomEI/AAAAAAAAAEY/HlEgb8a2cwY/s320/eclipsefastview.JPG" alt="" id="BLOGGER_PHOTO_ID_5677927980008511554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Fast view is in the bottom left corner. In the image shown there are two icons: the Fast View menu and the Progress view.&lt;br /&gt;&lt;br /&gt;To rescue the Progress view, click it and it will be displayed on top of the Project Explorer. Then move the view back to its rightful place.&lt;br /&gt;&lt;br /&gt;To rescue other views, select the view you want from the Fast View menu and move it.&lt;br /&gt;&lt;br /&gt;Don't select views in the Fast View menu that are already in the right place - they will disappear into Fast View.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-4241748949660938241?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/4241748949660938241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=4241748949660938241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4241748949660938241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4241748949660938241'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2011/11/finding-my-way-around-forcecom-eclipse.html' title='Finding my way around the Force.com Eclipse IDE'/><author><name>oscil8er</name><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/-5B_lnzNq6yg/TswNajSomEI/AAAAAAAAAEY/HlEgb8a2cwY/s72-c/eclipsefastview.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4742114022404761409.post-4781847131717773485</id><published>2011-03-23T11:07:00.010+13:00</published><updated>2011-03-24T09:47:10.501+13:00</updated><title type='text'>Salesforce.com and validation rules</title><content type='html'>Salesforce.com supports validation rules that are evaluated when DML is performed on a record. These rules can be defined using formulae (which means you can get far more sophisticated than "required field") and the error messages can be presented in user-friendly language.&lt;br /&gt;&lt;br /&gt;This is a far better experience than specifying &lt;span style="font-family:courier new;"&gt;required="true"&lt;/span&gt; for each apex:inputField, which can be too simplistic to meet business rules and will return field labels that may not necessarily be user-friendly (e.g. "Date Customer Last Contacted for Product Category A" is not suitable for customers completing a satisfaction survey).&lt;br /&gt;&lt;br /&gt;Unfortunately these validation rules are not evaluated simultaneously - they are worked through one by one until there is an error or no rules are left. This means that for a page with 20 validation rules, the end user may have to fix 'n' click 20 times before they can save the page contents.&lt;br /&gt;&lt;br /&gt;The only way I'm aware of at present to perform simultaneous evaluation AND present user-friendly error messages is to codify the validation rules in the controller class - bleagh!&lt;br /&gt;&lt;br /&gt;Any better suggestions?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-4781847131717773485?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/4781847131717773485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=4781847131717773485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4781847131717773485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4781847131717773485'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2011/03/visualforce-and-validation-rules.html' title='Salesforce.com and validation rules'/><author><name>oscil8er</name><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-4742114022404761409.post-8952499501013214259</id><published>2011-03-04T11:34:00.002+13:00</published><updated>2011-03-04T11:43:58.838+13:00</updated><title type='text'>Forcing numeric data type in Excel</title><content type='html'>Excel data types are particularly significant in the following situations:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Formulae that perform comparisons such as Vlookup&lt;/li&gt;&lt;li&gt;Using Excel as a data source in a join query when you have poor control over type casts e.g. while using Microsoft Query&lt;/li&gt;&lt;/ul&gt;You can set the formats of cells, but this won't update until you actually edit the cells. If you have a lot of cells it's not feasible to edit them all individually.&lt;br /&gt;&lt;br /&gt;I find the quickest way to force the conversion of text to number is to do the following:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Enter 1 in a cell&lt;/li&gt;&lt;li&gt;Copy the cell&lt;/li&gt;&lt;li&gt;Paste special into the range of cells you want to convert&lt;/li&gt;&lt;li&gt;Specify Value and Multiply&lt;/li&gt;&lt;/ol&gt;The cells you selected will be converted to numeric type.&lt;br /&gt;&lt;br /&gt;Numeric is the easiest as Paste Special has number-specific options. For other data types I think you have to create a copy of the cells using a casting formula and use the calculated values instead of the originals. If I find any faster ways for non-numbers I will update this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-8952499501013214259?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/8952499501013214259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=8952499501013214259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8952499501013214259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8952499501013214259'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2011/03/forcing-numeric-data-type-in-excel.html' title='Forcing numeric data type in Excel'/><author><name>oscil8er</name><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-4742114022404761409.post-9079072978195372964</id><published>2011-02-21T12:08:00.003+13:00</published><updated>2011-02-21T12:31:45.540+13:00</updated><title type='text'>User friendly object lookups in Force.com</title><content type='html'>The typical approach to user lookups and searches in form development would be to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;fetch a list of object IDs and descriptions&lt;/li&gt;&lt;li&gt;display the descriptions to the user and allow them to select&lt;/li&gt;&lt;li&gt;return the ID(s)&lt;/li&gt;&lt;/ul&gt;This is tricky in Force.com because there is one standard object identifier field that is always used for lookups and searches. You can make this field an ID for referential integrity purposes, or you can make it a text field for user readability - but you can't do both.&lt;br /&gt;&lt;br /&gt;Another ugliness is that the identifier field can't be removed from the object creation page and is editable by default.&lt;br /&gt;&lt;br /&gt;A workaround is as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In the object page layout, move the identifier field to the system information section. This shifts it out of the way a bit.&lt;/li&gt;&lt;li&gt;Create a custom button that puts a default value into the identifier field&lt;/li&gt;&lt;li&gt;Add a workflow rule to copy a value into the identifier field from another field&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/4742114022404761409-9079072978195372964?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/9079072978195372964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=9079072978195372964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/9079072978195372964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/9079072978195372964'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2011/02/user-friendly-object-lookups-in.html' title='User friendly object lookups in Force.com'/><author><name>oscil8er</name><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-4742114022404761409.post-9210630546897627452</id><published>2010-06-25T11:41:00.003+12:00</published><updated>2010-06-25T14:21:34.961+12:00</updated><title type='text'>SQL Server search all table columns code</title><content type='html'>&lt;a href="http://www.codekeep.net/snippets/3b38d646-a7ba-45db-ba08-f94e8b4226bd.aspx"&gt;Codekeep.net&lt;/a&gt; has a great stored-proc-free code snippet for text searching SQL Server database columns.&lt;br /&gt;&lt;br /&gt;Unfortunately this code fails due to single quotes in the column names of the database I'm working with (I know I know, don't get me started!)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;It's a simple fix.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;On line 43, replace&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;@ColumnName&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;with&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;replace(@ColumnName,'''','')&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-9210630546897627452?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/9210630546897627452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=9210630546897627452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/9210630546897627452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/9210630546897627452'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2010/06/sql-server-search-all-table-columns.html' title='SQL Server search all table columns code'/><author><name>oscil8er</name><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-4742114022404761409.post-2443158645818527461</id><published>2010-06-24T09:03:00.004+12:00</published><updated>2010-06-25T13:00:16.743+12:00</updated><title type='text'>Permissions required to access SQL Server from MS Query</title><content type='html'>MS Query relies on system stored procedures to perform actions like fetching table lists from SQL Server.&lt;br /&gt;&lt;br /&gt;Stored procedures that have been identified as required:&lt;br /&gt;&lt;br /&gt;mssqlsystemresource.sys.sp_tables&lt;br /&gt;mssqlsystemresource.sys.sp_datatype_info&lt;br /&gt;mssqlsystemresource.sys.sp_columns&lt;br /&gt;&lt;br /&gt;(to be completed)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-2443158645818527461?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/2443158645818527461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=2443158645818527461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2443158645818527461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2443158645818527461'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2010/06/permissions-required-to-access-sql.html' title='Permissions required to access SQL Server from MS Query'/><author><name>oscil8er</name><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-4742114022404761409.post-5850202900326364766</id><published>2010-03-25T22:17:00.002+13:00</published><updated>2010-03-25T22:22:15.501+13:00</updated><title type='text'>Visio Viewer 2007 Red X Problem</title><content type='html'>&lt;strong&gt;Symptom&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Red X appears when attempting to open Visio documents from Internet Explorer via Visio Viewer 2007&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Download and install &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9733a0b0-e0f4-477c-b682-b11bda63cd19&amp;amp;displaylang=en"&gt;Visio Viewer 2007 SP2&lt;/a&gt;&lt;br /&gt;Download and install &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=d20004c5-dd01-459e-8120-5f127e20c085&amp;amp;displaylang=en"&gt;Security Update for Visio Viewer 2007 (KB973709)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en/office2007deployment/thread/49b7da89-b320-48a4-901a-3455ab49bf7d"&gt;Originally posted at technet forums by CCI_Dave&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en/office2007deployment/thread/49b7da89-b320-48a4-901a-3455ab49bf7d"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-5850202900326364766?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/5850202900326364766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=5850202900326364766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5850202900326364766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5850202900326364766'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2010/03/visio-viewer-2007-red-x-problem.html' title='Visio Viewer 2007 Red X Problem'/><author><name>oscil8er</name><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-4742114022404761409.post-1660110898313096198</id><published>2010-02-23T10:28:00.004+13:00</published><updated>2010-02-23T10:45:53.291+13:00</updated><title type='text'>Recovering lost offline files</title><content type='html'>See &lt;a href="http://www.jacksontechnical.com/article.htm?id=34"&gt;http://www.jacksontechnical.com/article.htm?id=34&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The steps are:&lt;br /&gt;1. Download a Microsoft tool called &lt;a href="http://www.jacksontechnical.com/pubfiles/csccmd_v1.1.zip"&gt;CSCCMD.EXE&lt;/a&gt;&lt;br /&gt;2. Run the following command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CSCCMD /extract /target:c:\yourrestorefolder /recurse&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This will pull the entire contents of the offline files repository from c:\windows\csc into c:\yourrestorefolder&lt;br /&gt;&lt;br /&gt;Make sure that c:\yourrestorefolder is completely empty when using the /recurse switch.&lt;br /&gt;&lt;br /&gt;A common cause of this problem is if you have a storage quota on your network drive and are trying to sync more files from your laptop than you're allowed to keep.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1660110898313096198?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1660110898313096198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1660110898313096198' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1660110898313096198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1660110898313096198'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2010/02/recovering-lost-offline-files.html' title='Recovering lost offline files'/><author><name>oscil8er</name><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-4742114022404761409.post-7973791099217379385</id><published>2010-02-15T11:03:00.003+13:00</published><updated>2010-02-15T13:31:19.912+13:00</updated><title type='text'>Virtual PC performance problems on Lenovo T61</title><content type='html'>Virtual PC guy has &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2005/09/19/471612.aspx"&gt;written&lt;/a&gt; about how laptop power management can impair virtual pc performance - resulting in jerky mouse behaviour and delayed/lost keystrokes.&lt;br /&gt;&lt;br /&gt;The specific fix depends on the laptop brand and model.&lt;br /&gt;&lt;br /&gt;For a Lenovo T61 or similar, posts and comments I have read out there suggest disabling power management completely. However this will cause shortened battery life when not on AC.&lt;br /&gt;&lt;br /&gt;So I tried to disable power management only when connected to AC, as follows (based on the assumption that virtual pc won't be used when running on battery):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Reboot&lt;/li&gt;&lt;li&gt;Hold down F1 to go into BIOS&lt;/li&gt;&lt;li&gt;Select Config: Power: Intel SpeedStep: Mode for AC&lt;/li&gt;&lt;li&gt;Change from Automatic to Maximum Performance&lt;/li&gt;&lt;/ol&gt;Unfortunately this didn't improve things noticeably.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-7973791099217379385?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/7973791099217379385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=7973791099217379385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7973791099217379385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7973791099217379385'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2010/02/virtual-pc-performance-problems-on.html' title='Virtual PC performance problems on Lenovo T61'/><author><name>oscil8er</name><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-4742114022404761409.post-7231618408896515161</id><published>2010-02-10T14:12:00.003+13:00</published><updated>2010-02-12T11:07:21.555+13:00</updated><title type='text'>Board 7 prerequisites</title><content type='html'>&lt;strong&gt;Symptom&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Board 7 Client launch fails with unexpected error&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cause and Solution&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Missing prerequisites&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=790d631b-bff9-4f4a-b648-e9209e6ac8ad&amp;amp;displaylang=en"&gt;ADOMD.Net 8.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;amp;displaylang=en"&gt;DotNet Framework 3.5 SP1&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;If you're installing Board 7 on a sandboxed environment with limited or no internet connectivity then you have to manually install the prerequisites from redistributable executables.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Symptom&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Can't connect to Local Engine from Client&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cause and Solution&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;No "first user" (i.e. administrator) specified. This is achieved from Server Configuration.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;Subsequent users are created in the client.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-7231618408896515161?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/7231618408896515161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=7231618408896515161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7231618408896515161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7231618408896515161'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2010/02/board-7-prerequisites.html' title='Board 7 prerequisites'/><author><name>oscil8er</name><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-4742114022404761409.post-1937070889426685041</id><published>2010-02-09T11:37:00.007+13:00</published><updated>2010-02-09T13:49:10.939+13:00</updated><title type='text'>Windows Server 2003 sandbox and activation</title><content type='html'>&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Windows Server 2003 in its own workgroup installed and connected to a domain that uses a proxy server for handling external connections&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;How to activate Windows Server 2003 over the internet?&lt;br /&gt;&lt;br /&gt;All external connections must be authenticated by providing a domain username and password to the proxy. Windows Activation doesn't provide an opportunity to enter these - it only offers custom specification of the proxy.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution Options:&lt;/strong&gt; &lt;ul&gt;&lt;li&gt;Use a volume license key instead - this doesn't require activation (however you have to have the volume license version of the software)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use telephone activation. Tedious but it works&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If you are mute or can't use telephone activation for other reasons? To be completed&lt;/li&gt;&lt;/ul&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/4742114022404761409-1937070889426685041?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1937070889426685041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1937070889426685041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1937070889426685041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1937070889426685041'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2010/02/windows-server-2003-sandbox-activation.html' title='Windows Server 2003 sandbox and activation'/><author><name>oscil8er</name><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-4742114022404761409.post-6600715170644440484</id><published>2009-12-22T15:13:00.002+13:00</published><updated>2009-12-22T15:18:15.685+13:00</updated><title type='text'>SSIS handling errors in control flow</title><content type='html'>To ensure that errors don't cause the package to stop, but all errors are reported back to parent containers, set the following:&lt;br /&gt;&lt;br /&gt;FailParentOnFailure = True&lt;br /&gt;MaximumErrorCount = 99999 (an "infinite" value)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-6600715170644440484?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/6600715170644440484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=6600715170644440484' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/6600715170644440484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/6600715170644440484'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/12/ssis-handling-errors-in-control-flow.html' title='SSIS handling errors in control flow'/><author><name>oscil8er</name><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-4742114022404761409.post-8480212902618458041</id><published>2009-12-21T14:15:00.024+13:00</published><updated>2009-12-21T15:53:28.326+13:00</updated><title type='text'>SQL Server Agent Jobs and GUI Automation</title><content type='html'>&lt;strong&gt;Scenario&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;An application vendor has provided an application database maintenance utility that only has a GUI interface. You want to automate this maintenance activity as a SQL Server Agent job.&lt;br /&gt;&lt;br /&gt;The best solution would probably be to tell the vendor to add a command line interface to the utility to facilitate unattended use. Unfortunately the vendor may be unable or unwilling to achieve this.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;A Solution&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Use AutoIt to script and compile an executable that will perform unattended execution of the ute&lt;/li&gt;&lt;li&gt;Call the AutoIt-generated exe from a SQL job using CmdExec&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Step 1 is challenging, particularly if the vendor's utility is complex or poorly documented. Step 2 can be difficult to implement due to environment constraints.&lt;/p&gt;&lt;p&gt;With AutoIt you have the choice of&lt;/p&gt;&lt;ul&gt;&lt;li&gt;installing the AutoIt environment and running the .au3 script file&lt;/li&gt;&lt;li&gt;compiling a .exe from the script&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In my experience you'll have far less trouble getting the exe approved by change control than requesting deployment of the entire AutoIt installation.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. AutoIt&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.autoitscript.com/autoit3/downloads.shtml"&gt;AutoIt v3&lt;/a&gt; is the latest available version. The download contains a useful help file and example scripts. The web also has plenty of documentation and forum discussions on most topics you might be interested in. I'll just cover off a few points I thought were important:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The language is a variant of Pascal&lt;/li&gt;&lt;li&gt;Line continuation is performed with _&lt;/li&gt;&lt;li&gt;Carriage return &amp;amp; line feed is represented by @CRLF&lt;/li&gt;&lt;li&gt;Variable $CmdLine[0] contains the number of command line parameters provided&lt;/li&gt;&lt;li&gt;ConsoleWrite() can be used to provide feedback and debug info&lt;/li&gt;&lt;li&gt;The included Au3Info.exe is a handy GUI spy for identifying those much-needed CLASS and INSTANCE values&lt;/li&gt;&lt;li&gt;Some functions are not suited to unattended use (see Q21 excerpt from AutoIt FAQ below)&lt;/li&gt;&lt;li&gt;If your script is too fast, add some Sleep(n) statements to let the GUI catch up&lt;/li&gt;&lt;li&gt;With the WinExists() function, AutoIt is able to handle GUI events that are too fast for a human to intercept or even perceive. Therefore writing a script based on manual user steps may be insufficient to properly control the GUI&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;Q21. Why my script doesn't work on locked station&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;A21. On locked station any window will never be active (active is only dialog with text "Press Ctrl+Alt+Del")In Windows locked state applications runs hidden (behind that visible dialog) and haven't focus and active status.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;So generally don't use Send() MouseClick() WinActivate() WinWaitActive() WinActive() etc.Instead use ControlSend() ControlSetText() ControlClick() WinWait() WinExists() WinMenuSelectItem() etc.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;This way you may have your script resistive against another active windows.and it's possibe to run such script from scheduler on locked Windows station.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. SQL job&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The SQL Server Agent is a service. By default, services do not interact with the desktop. This means your AutoIt exe can launch the utility but will be unable to detect or use any of its GUI elements.&lt;br /&gt;&lt;br /&gt;To allow SQL Server Agent to interact with the desktop:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Start:Administrative Tools:Services&lt;/li&gt;&lt;li&gt;Right-click SQL Server Agent and select Properties&lt;/li&gt;&lt;li&gt;Select the Log On tab&lt;/li&gt;&lt;li&gt;Select Local System Account, check "Allow service to interact with desktop" and click OK&lt;/li&gt;&lt;li&gt;Restart SQL Server Agent (right-click and Restart)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Note the checkbox "Allow service to interact with desktop" is only available for the Local System Account. To use other accounts, they would need to be enabled to "Act as part of the operating system".&lt;/p&gt;&lt;p&gt;Potential problems are around whether Local System is suitable for running the agent service. Local System may not be suitable for other jobs on the same server. Some jobs may need permissions to other servers and it may not be appropriate to grant them to Local System.&lt;/p&gt;&lt;p&gt;A workaround would be to create a separate SQL Server Agent instance on the same server, just for jobs that need to interact with the desktop. However the additional instance will consume server resources.&lt;/p&gt;&lt;p&gt;A minor annoyance: a desktop-interaction-enabled SQL Server Agent will insist on keeping a Command Prompt window open while it's running.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-8480212902618458041?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/8480212902618458041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=8480212902618458041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8480212902618458041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8480212902618458041'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/12/sql-server-agent-task-and-gui.html' title='SQL Server Agent Jobs and GUI Automation'/><author><name>oscil8er</name><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-4742114022404761409.post-3975274129919987487</id><published>2009-12-15T11:51:00.002+13:00</published><updated>2009-12-15T11:58:39.455+13:00</updated><title type='text'>SSIS - annoying animated data viewer creation</title><content type='html'>Why is there an animation when creating a data viewer in Visual Studio? Was Thwarted Game Dev Guy given the job of implementing this?&lt;br /&gt;&lt;br /&gt;Mild irritation becomes serious annoyance when a live issue is being tested on a box under heavy load and the lil data viewers are taking a minute each to parachute into the data flow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-3975274129919987487?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/3975274129919987487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=3975274129919987487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3975274129919987487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3975274129919987487'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/12/ssis-annoying-animated-data-viewer.html' title='SSIS - annoying animated data viewer creation'/><author><name>oscil8er</name><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-4742114022404761409.post-8737165235942915218</id><published>2009-12-08T16:27:00.004+13:00</published><updated>2009-12-08T16:42:13.949+13:00</updated><title type='text'>Copying SQL Server 2005 push replication using Generate Scripts</title><content type='html'>On the server where the existing replication is:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Right-click the publication (in SSMS, Replication: Local Publications) and select Generate Scripts...&lt;/li&gt;&lt;li&gt;Select &lt;em&gt;To Create or Enable the Components&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Choose file location and Save&lt;/li&gt;&lt;li&gt;OK and Close&lt;/li&gt;&lt;/ol&gt;On the server you want to copy it to:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;If the server has never had replication before, manually create and delete a test publication (right-click Local Publications &amp;amp; select New Publication, choose some random stuff, then right-click the test publication and Delete). This will ensure the distribution database is created along with other stuff needed for replication&lt;/li&gt;&lt;li&gt;Open the script, replace the servers and logins as appropriate&lt;/li&gt;&lt;li&gt;Run on the target server&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/4742114022404761409-8737165235942915218?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/8737165235942915218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=8737165235942915218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8737165235942915218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8737165235942915218'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/12/copying-sql-server-replication-using.html' title='Copying SQL Server 2005 push replication using Generate Scripts'/><author><name>oscil8er</name><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-4742114022404761409.post-3497264940713727568</id><published>2009-12-07T16:17:00.002+13:00</published><updated>2009-12-07T16:22:41.867+13:00</updated><title type='text'>Using sp_msforeachtable on remote databases</title><content type='html'>Yes you can! The only proviso is that your linked server must have RPC and RPC Out enabled.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Right-click the Linked Server and select properties&lt;/li&gt;&lt;li&gt;Select Server Options&lt;/li&gt;&lt;li&gt;Click RPC &amp;amp; RPC Out and OK&lt;/li&gt;&lt;/ol&gt;Then you can do wild stuff like&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;exec [remoteserver].[remotedb].[dbo].sp_MSforeachtable "ALTER TABLE ? DISABLE TRIGGER ALL"&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-3497264940713727568?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/3497264940713727568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=3497264940713727568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3497264940713727568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3497264940713727568'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/12/using-spmsforeachtable-on-remote.html' title='Using sp_msforeachtable on remote databases'/><author><name>oscil8er</name><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-4742114022404761409.post-839496773193352088</id><published>2009-11-23T15:01:00.004+13:00</published><updated>2009-11-23T15:43:59.951+13:00</updated><title type='text'>SSAS and percentage measures</title><content type='html'>&lt;strong&gt;Scenario&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Let's say you have the following base measures that are the raw data held in the source system:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;ListPriceDollars&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;StandardDiscountPercentage&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The cube users require these two measures and an additional &lt;em&gt;StandardDiscountPriceDollars&lt;/em&gt; measure to be available for use.&lt;/p&gt;&lt;p&gt;In this situation, it's easy to get stuck at the point of ensuring StandardDiscountPercentage displays sensible numbers at all aggregation levels. There are plenty of options to play with - aggregation functions, measure expressions, calculated members, etc. For people with more of a SQL than MDX background there's a lot to understand here. Throw in some null values and a parent-child relationship and you'll be torturing yourself trying to find the best way to represent this in SSAS.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution Option&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;One possibility is to completely avoid trying to aggregate percentages.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Change your source view or named query to calculate StandardDiscountPriceDollars (=Product.ListPriceDollars / (1 - (Product.StandardDiscountPercentage/100))&lt;/li&gt;&lt;li&gt;Don't use the raw StandardDiscountPercentage value in the cube - instead, create a simple replacement calculated member (= 1 - ([Measures].[Standard Discount Price Dollars] / [Measures].[List Price Dollars])&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;With a little bit of zero and null handling the job will be done.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-839496773193352088?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/839496773193352088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=839496773193352088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/839496773193352088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/839496773193352088'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/11/ssas-and-percentage-measures.html' title='SSAS and percentage measures'/><author><name>oscil8er</name><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-4742114022404761409.post-776568975965345686</id><published>2009-11-12T16:42:00.003+13:00</published><updated>2009-11-12T16:45:12.120+13:00</updated><title type='text'>Getting MDX from Excel pivot tables</title><content type='html'>&lt;ol&gt;&lt;li&gt;Data: Connections&lt;/li&gt;&lt;li&gt;Properties&lt;/li&gt;&lt;li&gt;Select Definition Tab&lt;/li&gt;&lt;li&gt;Add &lt;span style="font-family:courier new;"&gt;Log File=c:\temp\pivotlog.txt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;OK&lt;/li&gt;&lt;li&gt;Close&lt;/li&gt;&lt;li&gt;Refresh Pivot&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Note: the definition text provided above is case sensitive! Particularly &lt;span style="font-family:courier new;"&gt;Log File&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-776568975965345686?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/776568975965345686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=776568975965345686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/776568975965345686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/776568975965345686'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/11/getting-mdx-from-excel-pivot-tables.html' title='Getting MDX from Excel pivot tables'/><author><name>oscil8er</name><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-4742114022404761409.post-8052658453826458437</id><published>2009-11-10T12:04:00.005+13:00</published><updated>2009-11-10T12:20:00.113+13:00</updated><title type='text'>Displaying data source information in Reporting Services reports using expressions</title><content type='html'>The following expression is about the best I have come up with:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=DataSources("myDataSource").DataSourceReference &amp;amp; " " &amp;amp; DataSources("myDataSource").Type&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This will display:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Data source name - probably also "myDataSource" in this example. The full path is provided when the report is run in Report Manager&lt;/li&gt;&lt;li&gt;Data source type e.g. "OLEDB-MD" is an Analysis Services data source&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Limitations:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You can't use expressions referring to data sources in the header or footer. But who wants the data source details displayed in the report body??&lt;/li&gt;&lt;li&gt;The data source reference has to be hard coded in every report. I'm not aware of any way to enumerate this to just fetch the first datasource. It would be fantastic if the following worked, &lt;u&gt;but it doesn't:&lt;/u&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:courier new;"&gt;=DataSources[0].DataSourceReference &amp;amp; " " &amp;amp; DataSources[0].Type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-8052658453826458437?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/8052658453826458437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=8052658453826458437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8052658453826458437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8052658453826458437'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/11/displaying-data-source-information-in.html' title='Displaying data source information in Reporting Services reports using expressions'/><author><name>oscil8er</name><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-4742114022404761409.post-4493920914762847971</id><published>2009-11-02T11:38:00.004+13:00</published><updated>2009-11-03T13:15:02.700+13:00</updated><title type='text'>Pausing SQL Server transactional replication without losing queue contents</title><content type='html'>&lt;strong&gt;To Pause:&lt;/strong&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open SSMS and connect to the distributor&lt;/li&gt;&lt;li&gt;Disable and Stop the "Distribution clean up: distribution" job&lt;/li&gt;&lt;li&gt;Expand SQL Server Agent, right-click on Jobs, select View Job Categories and choose REPL-Distribution&lt;/li&gt;&lt;li&gt;Disable and Stop all listed jobs&lt;/li&gt;&lt;/ol&gt;&lt;strong&gt;To Continue:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enable and Start all the jobs that were stopped&lt;/li&gt;&lt;/ul&gt;I have seen countless forum discussions for this topic but no succinct list of steps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-4493920914762847971?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/4493920914762847971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=4493920914762847971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4493920914762847971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4493920914762847971'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/11/pausing-sql-server-transactional.html' title='Pausing SQL Server transactional replication without losing queue contents'/><author><name>oscil8er</name><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-4742114022404761409.post-145564327117408645</id><published>2009-10-30T14:22:00.008+13:00</published><updated>2009-10-30T16:06:46.695+13:00</updated><title type='text'>SSIS OLE DB Command error with NOT NULL constrained columns</title><content type='html'>&lt;strong&gt;Symptom:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;OLE DB Command fails with the following error reported to the package log:&lt;br /&gt;&lt;br /&gt;SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E14. An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80040E14 Description: "The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. The RPC name is invalid.".&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Possible Cause:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The data flow task is experiencing a constraint violation.&lt;br /&gt;&lt;br /&gt;For a table ThisTable defined as follows:&lt;br /&gt;&lt;br /&gt;ThisTableKey int not null&lt;br /&gt;ThisTableValue varchar(10)&lt;br /&gt;&lt;br /&gt;and OLE DB Command data flow task containing the following statement:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;update ThisTable set ThisTableValue = 'UpdateVal' where ThisTableKey = ?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;where ? has been mapped to a data flow column.&lt;br /&gt;&lt;br /&gt;If the data flow column contains a NULL value then the task will fail because of the NOT NULL constraint on the column.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Diagnosis:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This is hard to diagnose in SSMS because the SQL statement above will run fine (and do nothing) when ? is substituted with NULL.&lt;br /&gt;&lt;br /&gt;Instead add data viewers to the outputs of the offending OLE DB Command. You should see the following columns at debug time:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ErrorCode: -1071607702&lt;/li&gt;&lt;li&gt;ErrorColumn: 12345 (this is an example value)&lt;/li&gt;&lt;li&gt;ErrorDescription: The data value violated the schema constraint.&lt;/li&gt;&lt;/ul&gt;Open the package in a text editor and search for 12345. You will find a LineageId recorded against it. Search for the LineageId and you will find the column name (should be ThisTableKey).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Use a Conditional Split task to filter out all NULL values in the data flow column before the OLE DB Command.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-145564327117408645?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/145564327117408645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=145564327117408645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/145564327117408645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/145564327117408645'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/10/ssis-ole-db-command-error-with-not-null.html' title='SSIS OLE DB Command error with NOT NULL constrained columns'/><author><name>oscil8er</name><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-4742114022404761409.post-3515113672953815899</id><published>2009-09-21T19:02:00.003+12:00</published><updated>2009-09-22T10:05:49.129+12:00</updated><title type='text'>SSAS Aggregation Design error</title><content type='html'>&lt;p&gt;&lt;strong&gt;Symptom:&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;The following error appears when deploying the cube or designing aggregations&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;The reference to attribute is not valid&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cause:&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;The partitions file has gotten out of sync with the cube file. Perhaps the cube file got checked back in to source control but the partitions file changes were undone.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution Options:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You may be able to hack the partitions file to clean up invalid attribute references.&lt;/p&gt;&lt;p&gt;Then again it may be easier just to roll back and reapply your changes.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-3515113672953815899?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/3515113672953815899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=3515113672953815899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3515113672953815899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3515113672953815899'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/09/ssas-aggregation-design-errors.html' title='SSAS Aggregation Design error'/><author><name>oscil8er</name><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-4742114022404761409.post-8793933176822442222</id><published>2009-08-27T14:24:00.003+12:00</published><updated>2009-08-27T15:28:10.359+12:00</updated><title type='text'>SSAS processing error could be due to proactive caching settings</title><content type='html'>&lt;strong&gt;Symptom:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;"Errors in the high-level relational engine. The data source view does not contain a definition for the [object] table or view. The Source property may not have been set."&lt;br /&gt;&lt;br /&gt;But the data source view doesn't contain this table.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Possible Cause:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A table has been specified for tracking in the notifications for proactive caching, but isn't available any more for some reason.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution Options:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Update the table name and location as required&lt;/li&gt;&lt;li&gt;Disable proactive caching for the partition&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;See &lt;a href="http://www.mssqltips.com/tip.asp?tip=1563"&gt;http://www.mssqltips.com/tip.asp?tip=1563&lt;/a&gt; for more details.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-8793933176822442222?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/8793933176822442222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=8793933176822442222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8793933176822442222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8793933176822442222'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/08/ssas-proactive-caching-and-views.html' title='SSAS processing error could be due to proactive caching settings'/><author><name>oscil8er</name><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-4742114022404761409.post-3692368957481381026</id><published>2009-07-20T18:58:00.003+12:00</published><updated>2009-07-20T19:03:50.008+12:00</updated><title type='text'>Stupid SSIS variable list bug</title><content type='html'>&lt;ol&gt;&lt;li&gt;Bring up the variable list and start editing the name of the first variable&lt;/li&gt;&lt;li&gt;Click the Name column of the variable list to sort the list&lt;/li&gt;&lt;li&gt;Hit Escape to cancel the edit&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The variable name you were editing has now replaced the name of the variable that was top of the list after your sort! Cancelling the edit didn't stop this from happening.&lt;/p&gt;&lt;p&gt;Workaround: remember and reenter the variable name that was overwritten. Bleagh.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-3692368957481381026?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/3692368957481381026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=3692368957481381026' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3692368957481381026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3692368957481381026'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/07/stupid-ssis-variable-list-bug.html' title='Stupid SSIS variable list bug'/><author><name>oscil8er</name><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-4742114022404761409.post-2716688484783506592</id><published>2009-07-02T12:19:00.008+12:00</published><updated>2009-07-02T13:45:01.122+12:00</updated><title type='text'>Adding folders to SSMS project</title><content type='html'>&lt;strong&gt;Problem:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Can't create folders in a SQL Server 2005 Management Studio project.&lt;br /&gt;&lt;br /&gt;It would be handy to be able to separate scripts into folders. Unfortunately only three default folders are available: Connections, Queries and Miscellaneous&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Workaround:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open the .ssmssqlproj file in a text editor&lt;/li&gt;&lt;li&gt;Copy one of the LogicalFolder tags e.g. Miscellaneous&lt;/li&gt;&lt;li&gt;Replace the Folder Name and Type. Make sure the Type value is different from all of the existing folders&lt;/li&gt;&lt;li&gt;Your new folder(s) should now be available in SSMS&lt;/li&gt;&lt;/ol&gt;Example insertion:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;logicalfolder sorted="true" type="4" name="Stored Procedures"&gt;&amp;lt;LogicalFolder Name="Stored Procedures" Type="4" Sorted="true"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;Items /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;/LogicalFolder&amp;gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;items&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/logicalfolder&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-2716688484783506592?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/2716688484783506592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=2716688484783506592' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2716688484783506592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2716688484783506592'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/07/adding-folders-to-ssms-project.html' title='Adding folders to SSMS project'/><author><name>oscil8er</name><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-4742114022404761409.post-1427589804654740105</id><published>2009-06-30T18:04:00.004+12:00</published><updated>2009-06-30T18:12:29.606+12:00</updated><title type='text'>Getting excel into a sharepoint list</title><content type='html'>&lt;p&gt;&lt;span style="font-family:georgia;"&gt;Symptom: &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="font-family:georgia;font-size:100%;"&gt;When you try to import an Excel spreadsheet into a Sharepoint list using the "Import Spreadsheet" option, the following message appears.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;The website declined to show this webpage  HTTP 403     &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Most likely causes:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;This website requires you to log in.     &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;What you can try:      &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Go back to the previous page.       &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;More information &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;This error (HTTP 403 Forbidden) means that Internet Explorer was able to connect to the website, but it does not have permission to view the webpage.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;For more information about HTTP errors, see Help.&lt;/span&gt;&lt;/p&gt;Cause and Resolution:&lt;br /&gt;&lt;br /&gt;Some have suggested reinstalling Office components on the server or formatting your spreadsheet in table format. Dunno, haven't tried.&lt;br /&gt;&lt;br /&gt;Workaround:&lt;br /&gt;&lt;br /&gt;Push from Excel as follows:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Data: List: Create List&lt;/li&gt;&lt;li&gt;Choose your list range and click OK&lt;/li&gt;&lt;li&gt;Data: List: Publish List&lt;/li&gt;&lt;li&gt;Enter url and name, and click Finish. All done!&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/4742114022404761409-1427589804654740105?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1427589804654740105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1427589804654740105' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1427589804654740105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1427589804654740105'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/06/getting-excel-into-sharepoint-list.html' title='Getting excel into a sharepoint list'/><author><name>oscil8er</name><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-4742114022404761409.post-1428762817459204806</id><published>2009-06-17T13:03:00.002+12:00</published><updated>2009-06-17T13:14:49.203+12:00</updated><title type='text'>SSIS can't find environment variables</title><content type='html'>Scenario: Deploying SSIS packages that use environment variables and setting up a SQL Server scheduled task to kick them off.&lt;br /&gt;&lt;br /&gt;Symptom: Can run packages manually, but the scheduled task fails.&lt;br /&gt;&lt;br /&gt;Cause: Environment variables. You have probably logged off and on to the server a few times while attempting to run the packages manually, which means your login has the latest environment variables. However the SQL Server Agent may not have "logged in" recently and will be unaware of the new environment variables.&lt;br /&gt;&lt;br /&gt;Resolution: Restart the SQL Server Agent (which is the equivalent of logging it back on to pick up the latest environment variables).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1428762817459204806?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1428762817459204806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1428762817459204806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1428762817459204806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1428762817459204806'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/06/ssis-cant-find-environment-variables.html' title='SSIS can&apos;t find environment variables'/><author><name>oscil8er</name><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-4742114022404761409.post-96863856629118529</id><published>2009-06-16T13:56:00.002+12:00</published><updated>2009-06-16T13:59:26.777+12:00</updated><title type='text'>SSIS package location selection criteria</title><content type='html'>Kirk Haselden's SSIS blog posts circa 2005-2006 are no more, so I am saving what little I have managed to copy or scrounge.&lt;br /&gt;&lt;br /&gt;Advantages of Saving to Files:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Easier to do shared source control &lt;/li&gt;&lt;li&gt;Ultra secure when using the Encrypt with User Key encryption option &lt;/li&gt;&lt;li&gt;Not subject to network downtime problems (saved locally) &lt;/li&gt;&lt;li&gt;May escrow deployment bundles including miscellaneous files &lt;/li&gt;&lt;li&gt;Less steps to load into the designer &lt;/li&gt;&lt;li&gt;Easier direct access for viewing &lt;/li&gt;&lt;li&gt;May store packages hierarchically in file system &lt;/li&gt;&lt;li&gt;Projects in Visual Studio are disk based and require the package to be in the file system &lt;/li&gt;&lt;li&gt;Generally, a better experience during development&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Advantages of Saving to SQL Server:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Easier access by multiple individuals &lt;/li&gt;&lt;li&gt;Benefits of database security, DTS roles and Agent interaction &lt;/li&gt;&lt;li&gt;Packages get backed up with normal DB backup processes &lt;/li&gt;&lt;li&gt;Able to filter packages via queries &lt;/li&gt;&lt;li&gt;May store packages hierarchically via new package folders &lt;/li&gt;&lt;li&gt;Generally, a better in-production experience&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/4742114022404761409-96863856629118529?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/96863856629118529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=96863856629118529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/96863856629118529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/96863856629118529'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/06/ssis-package-location-selection.html' title='SSIS package location selection criteria'/><author><name>oscil8er</name><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-4742114022404761409.post-5101283300238930187</id><published>2009-05-16T22:46:00.003+12:00</published><updated>2009-05-16T22:54:00.532+12:00</updated><title type='text'>x:\desktop refers to a location that is unavailable</title><content type='html'>If you get this error (I got it in Internet Explorer) then you probably had My Documents pointing to x: drive and moved the files to somewhere else (by right-clicking My Documents, selecting Properties and clicking Move).&lt;br /&gt;&lt;br /&gt;One of the registry settings wasn't updated by the move.&lt;br /&gt;&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders&lt;br /&gt;&lt;br /&gt;This probably still has a value of x:\desktop. Change it to %USERPROFILE%\Desktop&lt;br /&gt;&lt;br /&gt;I'm using Windows XP Pro SP2, I have no idea which other OS's &amp;amp; versions are affected.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-5101283300238930187?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/5101283300238930187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=5101283300238930187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5101283300238930187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5101283300238930187'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/05/xdesktop-refers-to-location-that-is.html' title='x:\desktop refers to a location that is unavailable'/><author><name>oscil8er</name><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-4742114022404761409.post-4092644218531011213</id><published>2009-03-27T09:31:00.003+13:00</published><updated>2009-03-27T09:44:16.136+13:00</updated><title type='text'>SSIS Breakpoint and other debug problems</title><content type='html'>&lt;span style="font-size:180%;"&gt;Symptoms:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When you add a or remove breakpoint from a breakpoint, the breakpoints of other tasks in other packages also change&lt;/li&gt;&lt;li&gt;SSIS ignores breakpoints or breaks unexpectedly during debug&lt;/li&gt;&lt;li&gt;Tasks execute unexpectedly during debug&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:180%;"&gt;Cause:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Duplicate Task Ids&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;When a package is created by copying another package, all the object IDs will be identical to the original package's IDs. This confuses visual studio with symptoms as described.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Resolution:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Install &lt;a href="http://bidshelper.codeplex.com/"&gt;BIDS Helper&lt;/a&gt; if you haven't already, and use &lt;a href="http://bidshelper.codeplex.com/Wiki/View.aspx?title=Reset%20GUIDs&amp;amp;referringTitle=Home"&gt;Reset GUIDs&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-4092644218531011213?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/4092644218531011213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=4092644218531011213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4092644218531011213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4092644218531011213'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/03/ssis-breakpoint-and-other-debug.html' title='SSIS Breakpoint and other debug problems'/><author><name>oscil8er</name><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-4742114022404761409.post-8921476803495166768</id><published>2009-01-29T16:04:00.025+13:00</published><updated>2009-02-10T18:12:28.047+13:00</updated><title type='text'>SSIS Parent Package variables - reading and writing in both directions</title><content type='html'>This is an old old topic which I'm revisiting after a long time away, and I'm finding the available info quite bitsy, so here's my own writeup about it:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Discounted Option&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The Set Variable Custom Task. It errors when referring to non local variables.&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;What's Left&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Script Task in the Child Package (bleagh)&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;"The Parent Variable Read"&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Public Sub Main()&lt;br /&gt;Dim vars As Variables&lt;br /&gt;'If package executed directly then no parent variables exist!&lt;br /&gt;Try&lt;br /&gt;Dts.VariableDispenser.LockForRead("ParentVar")&lt;br /&gt;Dts.VariableDispenser.LockForWrite("ChildVar")&lt;br /&gt;Dts.VariableDispenser.GetVariables(vars)&lt;br /&gt;vars("ChildVar").Value = vars("ParentVar").Value&lt;br /&gt;vars.Unlock()&lt;br /&gt;Catch ex As Exception&lt;br /&gt;'Do Nothing&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Finally&lt;br /&gt;Dts.TaskResult = Dts.Results.Success&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;End Try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"The Parent Variable Write"&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Public Sub Main()&lt;br /&gt;Dim vars As Variables&lt;br /&gt;'If package executed directly then no parent variables exist!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Try&lt;br /&gt;Dts.VariableDispenser.LockForWrite("ParentVar")&lt;br /&gt;Dts.VariableDispenser.LockForRead("ChildVar")&lt;br /&gt;Dts.VariableDispenser.GetVariables(vars)&lt;br /&gt;vars("ParentVar").Value = vars("ChildVar").Value&lt;br /&gt;vars.Unlock()&lt;br /&gt;Catch ex As Exception&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'Do Nothing&lt;br /&gt;Finally&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Dts.TaskResult = Dts.Results.Success&lt;br /&gt;End Try&lt;br /&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Notes&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No need for Parent Package Configurations if the child and parent variables are differently named&lt;/li&gt;&lt;li&gt;There's no need to do anything in the Parent Package.&lt;/li&gt;&lt;li&gt;Don't put anything in ReadVariables or ReadWriteVariables! This will cause additional LockForRead, LockForWrite and Unlock method calls.&lt;/li&gt;&lt;/ul&gt;Wishlist - AFAIK these don't exist. I don't have time to give it a crack just now. It may be harder than it appears because nothing has been created in the past 3 years.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Set Parent Variable Custom Task&lt;/li&gt;&lt;li&gt;Set Multiple Variables Custom Task&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Hard to Template&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;If you want to go large with a deep package invocation hierarchy then it will be somewhat tiresome to code. This is because local variables override parent variables if they have the same name, so you can't use the same package template for all hierarchy levels.&lt;/p&gt;&lt;p&gt;e.g. if you have a package template with variables var1 and localvar1, create two packages from it and call one package from the other, the child package will use the local var1 and ignore the parent var1.&lt;/p&gt;&lt;p&gt;This is unfortunate because it's becoming steadily easier to work with templates in SSIS using tools such as &lt;a href="http://www.codeplex.com/pacman"&gt;Pacman&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/4742114022404761409-8921476803495166768?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/8921476803495166768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=8921476803495166768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8921476803495166768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8921476803495166768'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2009/01/ssis-parent-package-variables-reading.html' title='SSIS Parent Package variables - reading and writing in both directions'/><author><name>oscil8er</name><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-4742114022404761409.post-6968218926600819062</id><published>2008-11-12T17:00:00.005+13:00</published><updated>2008-11-12T17:13:06.841+13:00</updated><title type='text'>MDX Query Designer Design Mode - smart in one direction, dumb in the other</title><content type='html'>(Visual Studio 2005 Report Designer using Reporting Services 2005 with Analysis Services 2005 data source)&lt;br /&gt;&lt;br /&gt;Let's say you've created a great query with the MDX Query Designer and you want to reuse it in another report. So you select the dataset and click the Design Mode button to view the underlying MDX, copy it and switch to your new report to paste the MDX. Now you want to use the designer to tweak the query...but you can't. When you click the Design Mode button again, you get the following message:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Changing to design view will result in the current query being lost.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now that's pretty annoying - unlike Microsoft Access or most other GUI query tools you could choose to name, the MDX Query Designer doesn't parse the MDX to reconstitute the GUI.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-6968218926600819062?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/6968218926600819062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=6968218926600819062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/6968218926600819062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/6968218926600819062'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/11/mdx-query-designer-design-mode-smart.html' title='MDX Query Designer Design Mode - smart in one direction, dumb in the other'/><author><name>oscil8er</name><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-4742114022404761409.post-2462962798474404152</id><published>2008-11-01T22:03:00.007+13:00</published><updated>2008-11-01T22:25:51.939+13:00</updated><title type='text'>SSIS as sledgehammer, transcript as nut</title><content type='html'>The Register &lt;a href="http://www.theregister.co.uk/2008/10/31/bi_sarah_palin/"&gt;plays host&lt;/a&gt; to yet another pointless attempt to sell the universal applicability of BI tools - this time by Microsoft. The compleat Palinalysis could be performed with an advanced text editor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-2462962798474404152?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/2462962798474404152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=2462962798474404152' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2462962798474404152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2462962798474404152'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/11/ssis-as-sledgehammer-transcript-as-nut.html' title='SSIS as sledgehammer, transcript as nut'/><author><name>oscil8er</name><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-4742114022404761409.post-5884228708943308816</id><published>2008-10-28T15:26:00.003+13:00</published><updated>2008-10-28T15:32:34.993+13:00</updated><title type='text'>SQL Server 2005 Report Builder - displaying prompted parameter values</title><content type='html'>This has already been covered off long ago by&lt;br /&gt;&lt;a href="http://blogs.msdn.com/bobmeyers/archive/2006/03/26/561147.aspx"&gt;http://blogs.msdn.com/bobmeyers/archive/2006/03/26/561147.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=String.Format("Sales Year: {0}", Parameters!OrderYear.Value)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But if you get System.Object[] as the returned value, this is because the parameter is multivalued.&lt;br /&gt;&lt;br /&gt;The solution is on this page:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms157328(SQL.90).aspx"&gt;http://msdn.microsoft.com/en-us/library/ms157328(SQL.90).aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;=String.Format("Sales Year: {0}", Join(Parameters!OrderYear.Value))&lt;br /&gt;&lt;br /&gt;The Join function concatenates all the parameter values into a single string.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-5884228708943308816?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/5884228708943308816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=5884228708943308816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5884228708943308816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5884228708943308816'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/10/sql-server-2005-report-builder.html' title='SQL Server 2005 Report Builder - displaying prompted parameter values'/><author><name>oscil8er</name><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-4742114022404761409.post-3170216990469212830</id><published>2008-09-12T16:09:00.013+12:00</published><updated>2008-09-16T16:03:20.925+12:00</updated><title type='text'>Using Microsoft Metadata Samples Remotely</title><content type='html'>Everything documented in this post was a complete waste of time as you can launch DependencyViewer from the command line using the /depDb: switch to specify the remote repository. Example below&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DependencyViewer.exe /depDb:"Server=myservername;database=SSIS_META;Integrated Security=SSPI;"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This switch is documented for DependencyAnalyzer, but there are no such instructions about command line usage of DependencyViewer except when you launch it from the command line with the standard /? switch. Must learn to mentally join up very widely spaced dots...&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Microsoft provides &lt;/em&gt;&lt;a href="http://www.ssistalk.com/2008/03/28/microsoft-bi-metadata-toolkit/"&gt;&lt;em&gt;sample code&lt;/em&gt;&lt;/a&gt;&lt;em&gt; showing how to interrogate the metadata of the SQL Server 2005 tool suite. The process is as follows:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;em&gt;&lt;/em&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Run scripts to create the SSIS_META database&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Run DependencyAnalyzer on your warehouse, which populates SSIS_META with lots of juicy metadata&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Use DependencyViewer to view the metadata in a graphical layout&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;em&gt;I spotted an SSIS_META database on a remote server and naturally wanted to peruse its contents with DependencyViewer. However DependencyViewer assumes a local repository, so the person who created this database either had local login rights to the server or had a modified build that could connect to remote repositories. I had neither, so I set about making the necessary changes to the solution.&lt;br /&gt;&lt;br /&gt;Form1.cs has a hard coded connection string:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;private string connectionString = "server=&lt;span style="color:#cc0000;"&gt;localhost&lt;/span&gt;;database=SSIS_META;Integrated Security=SSPI;";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;which I changed to:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;private string connectionString = "server=&lt;span style="color:#009900;"&gt;myservername&lt;/span&gt;;database=SSIS_META;Integrated Security=SSPI;";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The rebuilt app threw an error on clicking the Load button as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;************** Exception Text **************System.Security.SecurityException: Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=gfjhs98s90s67a6dssd' failed. at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark&amp;amp; stackMark, Boolean isPermSet) at System.Security.PermissionSet.Demand() at System.Data.Common.DbConnectionOptions.DemandPermission() at System.Data.SqlClient.SqlConnection.PermissionDemand() at System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.Samples.DependencyViewer.Form1.buttonTest_Click(Object sender, EventArgs e) at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message&amp;amp; m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message&amp;amp; m) at System.Windows.Forms.ButtonBase.WndProc(Message&amp;amp; m) at System.Windows.Forms.Button.WndProc(Message&amp;amp; m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp;amp; m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp;amp; m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;The action that failed was:Demand&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;The type of the first permission that failed was:System.Data.SqlClient.SqlClientPermission&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;The Zone of the assembly that failed was:Intranet&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I was trying to run it from a network share, never a good idea - so I copied the exe to a local location. Next the load button gave me an hourglass for a while before throwing the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;************** Exception Text **************System.Data.SqlClient.SqlException: An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.Samples.DependencyViewer.Form1.buttonTest_Click(Object sender, EventArgs e) at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message&amp;amp; m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message&amp;amp; m) at System.Windows.Forms.ButtonBase.WndProc(Message&amp;amp; m) at System.Windows.Forms.Button.WndProc(Message&amp;amp; m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp;amp; m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp;amp; m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I put the connection string in a message box in at the start of ButtonTest_Click and found that the connection string was still pointing to localhost. More searching turned up another reference in Program.cs. The following change in this file got it connecting.&lt;br /&gt;&lt;br /&gt;From:&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="font-family:courier new;"&gt;[Argument(ArgumentType.AtMostOnce, HelpText = "ADO.Net SqlConnection compatible connection string to dependency database location.", DefaultValue = "Server=&lt;span style="color:#990000;"&gt;localhost&lt;/span&gt;;database=SSIS_Meta;Integrated Security=SSPI;")]&lt;br /&gt;public string depDb;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To:&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;span style="font-family:courier new;"&gt;&lt;em&gt;[Argument(ArgumentType.AtMostOnce, HelpText = "ADO.Net SqlConnection compatible connection string to dependency database location.", DefaultValue = "Server=&lt;span style="color:#009900;"&gt;myservername&lt;/span&gt;;database=SSIS_Meta;Integrated Security=SSPI;")]public string depDb;&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;em&gt;&lt;/em&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-3170216990469212830?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/3170216990469212830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=3170216990469212830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3170216990469212830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3170216990469212830'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/09/using-microsoft-metadata-samples.html' title='Using Microsoft Metadata Samples Remotely'/><author><name>oscil8er</name><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-4742114022404761409.post-3025728178145904650</id><published>2008-07-31T15:11:00.012+12:00</published><updated>2008-08-23T23:26:18.617+12:00</updated><title type='text'>VMWare Server Remote Console problems</title><content type='html'>&lt;u&gt;Common situation&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;You have a VMWare Server 2.0 RC1 box (let's call it vmhost) that's being used as a sandbox and isn't allowed to be added to the primary company domain that everyone uses. Consequently it's set up in its own workgroup using DHCP.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Known Problem&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The default url to access VMWare Server would be https://vmhost:8333/. However launching the console within Web Access by clicking the picture of the overlapping boxes will result in the following error:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Error opening the remote virtual machine vmhost: The host name could not be resolved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;VMWare Commentary&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;This is listed as a known issue in the &lt;a href="http://www.vmware.com/products/beta/vmware_server/releasenotes_vmserver2.html"&gt;release notes&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;On Windows, the VMware Server desktop and Start menu shortcuts use the NetBIOS name in the connection URL. This might cause VI Web Access to fail to connect to VMware Server. VMware Remote Console connections might also fail, with the error Error opening the remote virtual machine machine_name: The host name could not be resolved.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Workaround: Enter the correct host name as the Fully Qualified Domain Name (FQDN) when prompted by the Windows installer. Or, if the URL specified in the shortcut does not work, use the correct host name, IP address, or localhost, as appropriate, in the connection URL. You can also manually enter the short name and the FQDN, or localhost, in the /etc/hosts file.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;For the situation described, the IP address isn't static and the FQDN is not defined in DNS. Therefore none of this will work.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Workaround&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Create an ASP page on the server including the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;a href="https://&amp;lt;%=Request.ServerVariables("LOCAL_ADDR")%&amp;gt;:8333" target="_blank"&amp;gt;VMWare Server&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;This will interrogate the server for the local IP address and construct a url that will work for both Web Access and Remote Console.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Edit: corrected the asp code which got messed up by unescaped characters. "Sorry about that, chief"&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-3025728178145904650?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/3025728178145904650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=3025728178145904650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3025728178145904650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3025728178145904650'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/07/vmware-server-remote-console-problems.html' title='VMWare Server Remote Console problems'/><author><name>oscil8er</name><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-4742114022404761409.post-8430200097209181515</id><published>2008-07-22T12:19:00.010+12:00</published><updated>2008-07-22T14:52:25.381+12:00</updated><title type='text'>Classic ASP on IIS7 (for IIS6 old farts)</title><content type='html'>So you've got a shiny new Vista or Windows Server 2008, and now you want to create a test site with one classic asp page.&lt;br /&gt;&lt;br /&gt;The problem is, if you're like me you had no idea how to navigate around the new UI. I had assumed&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Roles = security&lt;/li&gt;&lt;li&gt;Features = bugs I'm insisting are by design&lt;/li&gt;&lt;/ul&gt;But it turns out I was soooo IIS6 in my thinking. I had to pull my head out of 2003 to understand.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Installing IIS7&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Start Menu:Administrative Tools:Server Manager&lt;/li&gt;&lt;li&gt;Find the Roles Summary section&lt;/li&gt;&lt;li&gt;Add Roles:Web Server (IIS)&lt;/li&gt;&lt;li&gt;Follow the wizard and it's done. Web Server (IIS) will show up as an installed role in the Roles Summary&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Adding ASP etc&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Click Web Server (IIS)&lt;/li&gt;&lt;li&gt;Find the Role Services section&lt;/li&gt;&lt;li&gt;Click Add Role Services&lt;/li&gt;&lt;li&gt;Check Application Development (or you can just select ASP if that's really all you want)&lt;/li&gt;&lt;li&gt;Complete the wizard and you're done. Application Development including ASP will show up as installed role services&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;u&gt;Using Classic ASP in IIS7&lt;/u&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Start Menu:Administrative Tools:Internet Information Services (IIS) Manager&lt;/li&gt;&lt;li&gt;Expand the server&lt;/li&gt;&lt;li&gt;Select Application Pools. Look! There's a Classic .NET AppPool ready for your use&lt;/li&gt;&lt;li&gt;Select your site&lt;/li&gt;&lt;li&gt;Click Basic (or Advanced) Settings in the right panel&lt;/li&gt;&lt;li&gt;Select the Classic App Pool&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;u&gt;Troubleshooting Errors in Classic ASP&lt;/u&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Start Menu:Accessories:Command Prompt&lt;/li&gt;&lt;li&gt;%windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:true&lt;/li&gt;&lt;li&gt;This turns on detailed error messages&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Congratulations, you've turned a hybrid into a Fred Flintstone car!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-8430200097209181515?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/8430200097209181515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=8430200097209181515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8430200097209181515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8430200097209181515'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/07/classic-asp-on-iis7-for-old-iis6-farts.html' title='Classic ASP on IIS7 (for IIS6 old farts)'/><author><name>oscil8er</name><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-4742114022404761409.post-443394472207177605</id><published>2008-07-17T16:53:00.004+12:00</published><updated>2008-07-17T16:57:53.421+12:00</updated><title type='text'>Happy 1st anniversary, blog</title><content type='html'>Or personal (but heavily sanitised) technical note diary or whatever...&lt;br /&gt;&lt;br /&gt;Today someone asked me how long I've been writing to this blog and I got a surprise to find it's been exactly one year since my first article.&lt;br /&gt;&lt;br /&gt;Let's see who's reading today by throwing in a few search terms on topics I've covered: wherescape businessobjects cognos oracle microsoft windows sql server p2v vmware db2&lt;br /&gt;&lt;br /&gt;Thanks to everyone for searching, visiting and groaning!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-443394472207177605?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/443394472207177605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=443394472207177605' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/443394472207177605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/443394472207177605'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/07/happy-1st-anniversary-blog.html' title='Happy 1st anniversary, blog'/><author><name>oscil8er</name><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-4742114022404761409.post-4124514348677707960</id><published>2008-07-17T09:43:00.009+12:00</published><updated>2008-07-17T16:28:01.078+12:00</updated><title type='text'>Setting up an old Proliant for virtualization</title><content type='html'>I'm configuring an old DL580 G3 for virtualisation - both MS and VMWare. I blithely assumed it would have hardware virtualization, so I installed Windows Server 2008 with a view to using Hyper-V. Unfortunately I couldn't add the role.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;strong&gt;Hyper-V cannot be installed&lt;/strong&gt;. Server Manager has detected that the processor on this computer is not compatible with Hyper-V. To install this role, the processor must have a supported version of hardware-assisted virtualisation, and the feature must be turned on in the BIOS.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I had enabled VT ("Intel Hardware Virtualization") and XD Bit ("In-Memory Execution Prevention" in Advanced Settings) in the bios and powered down fully. (note to self: Ctrl-S followed by F9 to get to bios)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.grc.com/securable.htm"&gt;Securable&lt;/a&gt;, &lt;a href="http://www.intel.com/support/processors/tools/piu/sb/cs-014921.htm"&gt;Intel Processor Identification Utility&lt;/a&gt; &amp;amp; &lt;a href="http://www.vmware.com/download/server/drivers_tools.html"&gt;VMWare Processor Checker&lt;/a&gt; all gave the thumbs down on hardware virtualisation support for the aging Xeons. Desperate for a positive answer, I almost went into the server room with &lt;a href="http://files.filefront.com/vtiso/;9197570;/fileinfo.html"&gt;vt.iso&lt;/a&gt; burnt onto a cd but decided I had to give it up as I had plenty enough expert opinions.&lt;br /&gt;&lt;br /&gt;What now?&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;XenServer also requires VT.&lt;/li&gt;&lt;li&gt;VMWare ESX does not, but I want to use MS as well.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So I installed&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Virtual Server 2005 R2 SP1 - 64 bit&lt;/li&gt;&lt;li&gt;VMWare Server 2.0 RC1 - unspecified, claims to support 64 bit VMs but installed to Program Files (x86) so guessing it's not&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I followed &lt;a href="http://blogs.technet.com/virtualization/archive/2007/07/31/installing-virtual-server-r2-sp1-on-windows-server-2008-beta-3.aspx"&gt;Virtual PC Guy's instructions&lt;/a&gt; for setting up IIS, and after this Virtual Server installed with no problems.&lt;/p&gt;&lt;p&gt;VMWare Server had trouble with the url for opening up remote consoles. This is because the host server isn't part of the domain I'm on, so the hostname wasn't always available. This situation was easily worked around by using the ip address in the url (https://a.b.c.d:8333/ui) to login to VMWare Infrastructure Web Access.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-4124514348677707960?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/4124514348677707960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=4124514348677707960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4124514348677707960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4124514348677707960'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/07/setting-up-old-proliant-for.html' title='Setting up an old Proliant for virtualization'/><author><name>oscil8er</name><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-4742114022404761409.post-2061879426631451208</id><published>2008-06-15T21:07:00.004+12:00</published><updated>2008-06-15T21:19:39.880+12:00</updated><title type='text'>IBM DB2 - ready for the gold watch and retirement</title><content type='html'>It's IBM DB2's 25th Anniversary this year, as discussed in &lt;a href="http://www.intelligententerprise.com/showArticle.jhtml?articleID=208403093"&gt;this article&lt;/a&gt; at Intelligent Enterprise.&lt;br /&gt;&lt;br /&gt;Page 3 is titled "A Vision Out Of Many Ideas", the author's intention being to emphasise the cross-disciplinary origins of DB2. But based on IBM's patchy track record in the database and business intelligence industry, I think it would be more accurate to drop the word "Many".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-2061879426631451208?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/2061879426631451208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=2061879426631451208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2061879426631451208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2061879426631451208'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/06/ibm-db2-ready-for-gold-watch-and.html' title='IBM DB2 - ready for the gold watch and retirement'/><author><name>oscil8er</name><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-4742114022404761409.post-1640092882529993356</id><published>2008-06-06T22:24:00.002+12:00</published><updated>2008-06-06T22:28:49.938+12:00</updated><title type='text'>"CSC Cuts Corners"</title><content type='html'>I try to limit the quantity of regurgitated industry news that ends up in my blog, but &lt;a href="http://www.theregister.co.uk/2008/06/06/csc_rebrand/"&gt;this&lt;/a&gt; gave me an ABIMCL* moment. It goes to show that rebranding can be risky...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;* Arch Back In My Chair Laughing&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1640092882529993356?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1640092882529993356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1640092882529993356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1640092882529993356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1640092882529993356'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/06/csc-cuts-corners.html' title='&quot;CSC Cuts Corners&quot;'/><author><name>oscil8er</name><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-4742114022404761409.post-959760297432871801</id><published>2008-05-30T20:55:00.008+12:00</published><updated>2008-05-30T21:35:01.769+12:00</updated><title type='text'>Proclarity visualisations included in AdCenter Analytics</title><content type='html'>Check out the screenshots &lt;a href="http://www.adcentercommunity.com/blogs/analytics/archive/2008/03/26/introduction-to-new-functionality-in-recent-adcenter-analytics-beta-refresh.aspx"&gt;here&lt;/a&gt;. Anyone who's familiar with Proclarity or PerformancePoint will recognise the Heat map (or "Tree Map" in AdCenter parlance - confusingly, Heat Map seems to refer to something else again).&lt;br /&gt;&lt;br /&gt;I understand this particular visualisation won't be in the first release.&lt;br /&gt;&lt;br /&gt;Since AdCenter Analytics is free, I trust this means that CALs will no longer be required to view Proclarity visualisations used in PerformancePoint solutions? (Somehow I suspect MS begs to differ on that point).&lt;br /&gt;&lt;br /&gt;I'm pretty late to this news, and frankly it's because enterprise and soho/consumer analytics are poles apart. For what it's worth, I couldn't find anyone else out there who has commented on this either.&lt;br /&gt;&lt;br /&gt;I considered signing up to the AdCenter Analytics beta but it looks like they'll only invite people with sites that have a bare minimum of 25000 page views a month. I have only had (google) analytics enabled for a week now, but with some optimistic extrapolation I might be racking up a mighty 500 or so...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-959760297432871801?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/959760297432871801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=959760297432871801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/959760297432871801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/959760297432871801'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/05/proclarity-visualisations-included-in.html' title='Proclarity visualisations included in AdCenter Analytics'/><author><name>oscil8er</name><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-4742114022404761409.post-3015373316910104206</id><published>2008-05-26T11:16:00.007+12:00</published><updated>2008-05-26T11:32:18.926+12:00</updated><title type='text'>Use Oracle install defaults if you want a crap character set</title><content type='html'>My big lesson with Oracle installations:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Never install a starter database&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Never "next through" the default options when creating a database&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;This is because the default character set is usually something like WE8MSWIN1252, but a lot of apps require Unicode these days.&lt;br /&gt;&lt;br /&gt;These default character sets are never strict subsets of Unicode character sets and consequently require a &lt;a href="http://www.oracle.com/technology/tech/globalization/pdf/TWP_Character_Set_Migration_Best_Practices_10gR2.pdf"&gt;lengthy migration process&lt;/a&gt; to convert to something like AL32UTF8.&lt;br /&gt;&lt;br /&gt;Instead use the Database Configuration Assistant to create your database, and make sure you select something suitable on the Character Sets tab.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;I'm fully aware that best practice is to work through a 10 page checklist to tick off all the prerequisites, but sometimes life's just too short.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-3015373316910104206?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/3015373316910104206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=3015373316910104206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3015373316910104206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3015373316910104206'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/05/use-oracle-install-defaults-if-you-want.html' title='Use Oracle install defaults if you want a crap character set'/><author><name>oscil8er</name><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-4742114022404761409.post-1161227544168443034</id><published>2008-05-21T11:46:00.003+12:00</published><updated>2008-05-21T14:01:12.660+12:00</updated><title type='text'>Out of Disk Space with VMWare Player and Virtual Disk Mount</title><content type='html'>My mounted vmdk file wouldn't accept any more contents - out of disk space. All the instructions I found for increasing the disk space required VMWare Workstation or Server.&lt;br /&gt;&lt;br /&gt;I really really really didn't want to install these. Unfortunately I really really really had to.&lt;br /&gt;&lt;br /&gt;I followed the instructions as per &lt;a href="http://www.leonmeijer.nl/archive/2007/05/07/25.aspx"&gt;http://www.leonmeijer.nl/archive/2007/05/07/25.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This type of maintenance is totally unnecessary with Virtual PC. What's worse, VMWare have made it very command-liney to do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1161227544168443034?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1161227544168443034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1161227544168443034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1161227544168443034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1161227544168443034'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/05/out-of-disk-space-with-vmware-player.html' title='Out of Disk Space with VMWare Player and Virtual Disk Mount'/><author><name>oscil8er</name><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-4742114022404761409.post-1273167916747657565</id><published>2008-05-20T13:55:00.001+12:00</published><updated>2008-05-20T13:57:19.070+12:00</updated><title type='text'>Enabling Shared Folders in VMWare Player</title><content type='html'>Add this to the .vmx file&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sharedFolder0.present = "TRUE"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sharedFolder0.enabled = "TRUE"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sharedFolder0.readAccess = "TRUE"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sharedFolder0.writeAccess = "TRUE"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sharedFolder0.hostPath = "C:\"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sharedFolder0.guestName = "C"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sharedFolder0.expiration = "never"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sharedFolder.maxNum = "1"&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1273167916747657565?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1273167916747657565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1273167916747657565' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1273167916747657565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1273167916747657565'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/05/enabling-shared-folders-in-vmware.html' title='Enabling Shared Folders in VMWare Player'/><author><name>oscil8er</name><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-4742114022404761409.post-6582127552781111586</id><published>2008-04-09T08:52:00.005+12:00</published><updated>2008-04-16T10:12:23.601+12:00</updated><title type='text'>Installing Business Objects on Windows Server 2003</title><content type='html'>Hit an error during BO XI R2 install at the CMS Log On step:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Unable to log on to the CMS.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;The install was unable to log on to the CMS. Please ensure that your User Name and Password are correct, and try again.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;I attempted to use the local Administrator login but the solution I found out there is to use a blank password!&lt;br /&gt;&lt;br /&gt;Infoview comes up with&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;The XML page cannot be displayed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later.&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;A name was started with an invalid character. Error processing resource 'http://servername/businessobjects/enterprise115/In...&lt;br /&gt;&amp;lt;%@ Register TagPrefix="ce" Namespace="CrystalDecisions.Enterprise.WebControls" Assembly="CrystalDecisions.Enterprise.Web...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span &gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;The problem appears to be that IIS did not have a default dotnet version selection before the BOXI setup. There seemed to be nothing I could do to repair the situation - I had to reinstall BOXI after setting the dotnet version as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open IIS Manager&lt;/li&gt;&lt;li&gt;Right-click Default Web Site and select Properties&lt;/li&gt;&lt;li&gt;Select the ASP.NET tab&lt;/li&gt;&lt;li&gt;Select an ASP.NET version in the dropdown and click OK&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/4742114022404761409-6582127552781111586?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/6582127552781111586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=6582127552781111586' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/6582127552781111586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/6582127552781111586'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/04/installing-business-objects-on-windows.html' title='Installing Business Objects on Windows Server 2003'/><author><name>oscil8er</name><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-4742114022404761409.post-9034504036198950783</id><published>2008-03-07T14:31:00.016+13:00</published><updated>2008-03-19T11:24:41.558+13:00</updated><title type='text'>Cognos Oracle Content Store Creation</title><content type='html'>Cognos "Quick" Start Installation and Configuration Guide transcript&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Error: Cognos Configuration error creating new data store &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Database connection failed&lt;br /&gt;Content Manager failed to start because it could not load driver "oracle.jdbc.driver.OracleDriver"&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This went away when I copied classes12.jar from ORACLE_HOME\jdbc\lib to c8_location\webapps\p2pd\WEB-INF\lib&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Error: Cognos Configuration error creating new data store #2&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Content Manager is unable to initialize the content store by using the initialization file "C:\Program Files\cognos\c8\configuration\schemas\content\oracle\dbInitTest_oracle.sql"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It appears the Schema user has insufficient privileges. I have given the following:&lt;br /&gt;&lt;br /&gt;Roles&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Connect&lt;/li&gt;&lt;/ul&gt;System Privileges&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Alter any procedure, sequence, table, trigger&lt;/li&gt;&lt;li&gt;Create any procedure, sequence, table, trigger, view&lt;/li&gt;&lt;li&gt;Delete any table&lt;/li&gt;&lt;li&gt;Drop any procedure, sequence, table, trigger, view&lt;/li&gt;&lt;li&gt;Insert any table&lt;/li&gt;&lt;li&gt;Update any table&lt;/li&gt;&lt;/ul&gt;When I execute the script in SqlPlus the error is &lt;span style="font-family:courier new;"&gt;ORA-01950: no privileges on tablespace 'X'.&lt;/span&gt; Apparently this means no quota has been allocated for this user.&lt;br /&gt;&lt;br /&gt;I attempted to grant unlimited quota on all tablespaces but got an error &lt;span style="font-family:courier new;"&gt;ORA-30041: Cannot grant quota on the tablespace.&lt;/span&gt; I forgot that the temp table space doesn't have a quota, so I was a bit more specific in my selection.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Error: Cognos Configuration error creating new data store #3&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Content Manager cannot start because the database character set for the content store is not supported. Before you restart Content Manager, you may need to recreate the content store database or clean it using dbClean_*.sql.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Following the instructions regarding character set, I found NLS_NCHAR_CHARACTERSET = AL16UTF16. Unfortunately this doesn't appear to be sufficient. &lt;span style="font-family:courier new;"&gt;SELECT NLS_CHARACTERSET FROM NLS_DATABASE_PARAMETERS&lt;/span&gt; returned WE8MSWIN1252. Some guidance on changing character set is that it's safest to &lt;a href="http://forums.databasejournal.com/archive/index.php/t-40481.html"&gt;export-create new db-import&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;My steps for export are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Bring up Database Control&lt;/li&gt;&lt;li&gt;Select Maintenance tab&lt;/li&gt;&lt;li&gt;Select Export to Export Files&lt;/li&gt;&lt;li&gt;Select Database and enter OS admin user and password&lt;/li&gt;&lt;li&gt;(Create the export folder before doing the next step)&lt;/li&gt;&lt;li&gt;Create Directory Object, enter name and folder path and select OK&lt;/li&gt;&lt;li&gt;Select the name of the newly created dir object from Directory Object dropdown and select Next&lt;/li&gt;&lt;li&gt;Select the dir object again and select Next&lt;/li&gt;&lt;li&gt;Enter a job name and description and select Next&lt;/li&gt;&lt;li&gt;Select Submit&lt;/li&gt;&lt;/ul&gt;The job kicked off but produced some errors saying it couldn't find the export directory object. Makes no sense to me, I thought I would just try and sneak on by.&lt;br /&gt;&lt;br /&gt;I created a new instance with Database Configuration Assistant using character set AL32UTF8 and tried to import the export files into it but I hit a lot of errors.&lt;br /&gt;&lt;br /&gt;I decided to use a separate instance just for Cognos. Phew, I could finally connect ok to the Content Database.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cognos 8 Cryptographic Services&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Copied c8_location\bin\jre\version\lib\ext\bcprov-jdk13-125.jar to java_home\lib\ext. I have no idea if this has to be done but I did it anyway.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Starting the Service&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Selected Root node in Cognos Configuration and Action:Test. All came back good except mail server which I don't care about for the moment. Selected Action:Start which was also successful.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Getting the web server to respond&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Created virtual directory for cognos8 at c8_location\. Worked through the IE settings and browsed to &lt;a href="http://localhost/cognos8"&gt;http://localhost/cognos8&lt;/a&gt;. 404 Page not found. Trawled around on web and found that I could Allow All Unknown CGI Extensions in IIS Web Extensions. This time I got 403 Not authorised to view this page.&lt;br /&gt;&lt;br /&gt;Figured out that I didn't read the instructions correctly - there are 2 nested virtual directories.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;cognos8 points to c8_location\webcontent&lt;/li&gt;&lt;li&gt;cgi-bin points to c8_location\cgi-bin. Created by right-clicking the previously created cognos8 virtual directory&lt;/li&gt;&lt;/ul&gt;At last it works! The Framework Manager install was straightforward after this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-9034504036198950783?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/9034504036198950783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=9034504036198950783' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/9034504036198950783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/9034504036198950783'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/03/cognos-oracle-jdbc-driver-installation.html' title='Cognos Oracle Content Store Creation'/><author><name>oscil8er</name><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-4742114022404761409.post-1533975296640816378</id><published>2008-02-27T12:11:00.004+13:00</published><updated>2008-02-27T12:18:57.042+13:00</updated><title type='text'>OWB - table upsert mapping</title><content type='html'>Error:&lt;br /&gt;&lt;br /&gt;VLD-2750: Missing update matching criteria in YOUR_DIM Match by Constraint is set to all constraints or a specific constraint for YOUR_DIM, then all mapped attributes of this constraint will be included in the WHERE clause in the UPDATE statement. If there is no constraint on the target, or none of the constraint attributes are mapped, set Match by Constraint to no constraints for YOUR_DIM, and define the match condition on the attributes of the target&lt;br /&gt;&lt;br /&gt;Solution excerpted from Oracle forums:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;When you use a surrogate key (eg. generated with a sequence, presumably for&lt;br /&gt;a slowly changing dimension) you also have to define a unique natural key on&lt;br /&gt;your target table, and use the natural key for matching/updating.&lt;br /&gt;&lt;br /&gt;If you change your target table columns or constraints after the operator&lt;br /&gt;was put on the mapping canvas, there is a possibility that OWB doesn't change&lt;br /&gt;the "Loading Properties" correspondingly. To fix this;&lt;/p&gt;&lt;p&gt;1) first finish up your constraints work, then&lt;br /&gt;2) set operator property "Match by constraint" to "No constraints", then&lt;br /&gt;3) check column attribute properties "Loading Properties" for all&lt;br /&gt;columns;&lt;br /&gt;a) columns being part of the unique natural key should have "Load column when&lt;br /&gt;Updating Row" set to "No", other columns should normally have this property set&lt;br /&gt;to "Yes"&lt;/p&gt;&lt;p&gt;b) the "Match Column ...." properties should be set to "Yes" if part of the&lt;br /&gt;natural key, "No" otherwise&lt;/p&gt;&lt;p&gt;c) "Load column when Inserting Row" should normally be "Yes".&lt;/p&gt;4) Finally, you can change the operator property "Match by constraint" from&lt;br /&gt;"No constraints" to your natural key&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1533975296640816378?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1533975296640816378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1533975296640816378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1533975296640816378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1533975296640816378'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/02/owb-table-upsert-mapping.html' title='OWB - table upsert mapping'/><author><name>oscil8er</name><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-4742114022404761409.post-5197993433402822171</id><published>2008-02-22T11:36:00.005+13:00</published><updated>2008-02-22T14:50:06.858+13:00</updated><title type='text'>SSIS Oracle RDB to 10G source</title><content type='html'>Lessons for me from this exercise:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I had to throw away the custom ODBC script tasks I had built for RDB and create a new OLE DB based extraction package&lt;/li&gt;&lt;li&gt;Data that previously loaded into SQL Server Int columns now caused a datatype mismatch error. I had to change the target columns to Numeric&lt;/li&gt;&lt;li&gt;This had the flow-on effect of causing many data flow data sources to break with an invalid index error. These data sources had to be recreated&lt;/li&gt;&lt;li&gt;Some text data that had previously loaded in a trimmed state now had trailing spaces&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So that was the dev environment. To get the packages to work via IIS required:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Had to allow inprocess in SQL Management Studio for the provider OraOLEDB.Oracle &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=766133&amp;amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=766133&amp;amp;SiteID=1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Working my way through the steps in &lt;a href="http://support.microsoft.com/kb/255084"&gt;http://support.microsoft.com/kb/255084&lt;/a&gt;. The reboot actually made a difference&lt;/li&gt;&lt;/ul&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/4742114022404761409-5197993433402822171?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/5197993433402822171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=5197993433402822171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5197993433402822171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5197993433402822171'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/02/ssis-oracle-rdb-to-10g-source.html' title='SSIS Oracle RDB to 10G source'/><author><name>oscil8er</name><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-4742114022404761409.post-4548842815504927440</id><published>2008-02-21T12:05:00.002+13:00</published><updated>2008-02-21T12:15:53.640+13:00</updated><title type='text'>SSIS Oracle OLE DB connection</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Set AlwaysUseDefaultCodePage=TRUE on the OLE DB Source component&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://blogs.conchango.com/jamiethomson/archive/2005/10/25/SSIS_3A00_-Connect-to-Oracle.aspx"&gt;&lt;span style="font-family:georgia;"&gt;http://blogs.conchango.com/jamiethomson/archive/2005/10/25/SSIS_3A00_-Connect-to-Oracle.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;So how do you do set this attribute for an Oracle ODBC source?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-4548842815504927440?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/4548842815504927440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=4548842815504927440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4548842815504927440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4548842815504927440'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/02/ssis-oracle-ole-db-connection.html' title='SSIS Oracle OLE DB connection'/><author><name>oscil8er</name><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-4742114022404761409.post-6073234300230252191</id><published>2008-02-07T14:02:00.001+13:00</published><updated>2008-05-30T21:17:19.620+12:00</updated><title type='text'>Everybody positioned in Leaders Quadrant for Business Intelligence</title><content type='html'>Is the recent BI M&amp;amp;A activity rendering this Gartner report meaningless?&lt;br /&gt;&lt;br /&gt;&lt;del&gt;Microsoft's rating upgrade is unfortunately overshadowed by their being too cheap to license a copy of the report. You have to go back to the old guard for this (thank you Cognos):&lt;/del&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mediaproducts.gartner.com/reprints/cognos/vol4/article3/article3.html"&gt;http://mediaproducts.gartner.com/reprints/cognos/vol4/article3/article3.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mea culpa, MS did actually dip into its wallet but didn't refer to the report location in their press release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-6073234300230252191?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/6073234300230252191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=6073234300230252191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/6073234300230252191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/6073234300230252191'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/02/everybody-positioned-in-leaders.html' title='Everybody positioned in Leaders Quadrant for Business Intelligence'/><author><name>oscil8er</name><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-4742114022404761409.post-8306394700125304559</id><published>2008-01-24T16:36:00.001+13:00</published><updated>2008-01-29T14:59:50.969+13:00</updated><title type='text'>OWB - External Table to Dimension</title><content type='html'>&lt;span style="font-family:arial;"&gt;I have a dev OWB 10g R2 environment into which I want to load up some reference dimensions from production. I don't have a connection to production so I thought I could load the dimensions as files since they are small. However they have a large number of attributes that I wanted to avoid rekeying if I possibly can.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Consequently I was looking for a way to load the dimensions from files with no transformation and minimum effort.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The following approaches don't work: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;ul&gt;&lt;li&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Create the file location, create the external table using the import option and create the dimension using the import option. What appears to be a dimension import is actually a reimport of the external table.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/li&gt;&lt;li&gt;Create the file location, create the external table using the import option and create a mapping to generate the dimension operator. Unbound dimension operators aren't allowed in the mapping.&lt;/li&gt;&lt;/ul&gt;It looks like I wasn't going to be able to avoid rekeying the huge numbers of attributes until I discovered the Create Dimension expert, a free unsupported wizard that can be added to the OWB IDE.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-8306394700125304559?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/8306394700125304559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=8306394700125304559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8306394700125304559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8306394700125304559'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/01/owb-external-table-to-dimension.html' title='OWB - External Table to Dimension'/><author><name>oscil8er</name><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-4742114022404761409.post-4246653580884935332</id><published>2008-01-22T16:25:00.001+13:00</published><updated>2008-01-22T16:44:38.042+13:00</updated><title type='text'>My way to migrate or upgrade Oracle XE</title><content type='html'>&lt;p&gt;Start from scratch! (assumes no apex stuff to migrate)&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Backup Oracle XE&lt;/li&gt;&lt;li&gt;Install Oracle Standard 10.2.0.1&lt;/li&gt;&lt;li&gt;Install the Microsoft Loopback Adapter&lt;/li&gt;&lt;li&gt;Disable Microsoft Enhanced Internet Security Configuration&lt;/li&gt;&lt;li&gt;Restore Oracle XE databases to Standard and test&lt;/li&gt;&lt;li&gt;Uninstall Oracle XE&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Advantages:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;No need to patch Standard to 10.2.0.3&lt;/li&gt;&lt;li&gt;No need to run the upgrade wizard&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Disadvantages:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Shame about the apex&lt;/li&gt;&lt;/ul&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/4742114022404761409-4246653580884935332?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/4246653580884935332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=4246653580884935332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4246653580884935332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4246653580884935332'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/01/best-way-to-migrate-or-upgrade-oracle.html' title='My way to migrate or upgrade Oracle XE'/><author><name>oscil8er</name><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-4742114022404761409.post-2176280102432926304</id><published>2008-01-21T15:03:00.000+13:00</published><updated>2008-01-22T09:47:33.938+13:00</updated><title type='text'>Oracle patch recursion - down the rabbit hole</title><content type='html'>I'm trying to migrate my Oracle XE database to Standard. I have Standard 10.2.0.1 and the instructions say they it needs to be 10.2.0.3 before this can be done. So I downloaded the upgrade "patch" (which is larger than the Standard install package). Once I downloaded it, I found that one of the prerequisites for this patch is another patch. So I downloaded that patch, only to find that it has a patch prerequisite also - opatch needs upgrading.&lt;br /&gt;&lt;br /&gt;Cue one of those 60's rotating spiral patterns in conjunction with paranoid sound effects...&lt;br /&gt;&lt;br /&gt;How difficult would it be to create a one-shot 10.2.0.3 install? I wouldn't mind having to reboot half way through, honest...&lt;br /&gt;&lt;br /&gt;One of the patches required disabling of the Distributed Transaction Coordinator. If you don't restart it, you won't be able to do things like &lt;span style="font-family:courier new;"&gt;connect / as sysdba&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;If you can't get restarted with Sqlplus as per instructions, you'll want to get on to the Enterprise Manager site. But you won't be able to without setting up "&lt;a href="http://weblogs.asp.net/wallym/archive/2005/01/03/345818.aspx"&gt;logon as a batch job&lt;/a&gt;" rights for your windows user.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-2176280102432926304?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/2176280102432926304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=2176280102432926304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2176280102432926304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2176280102432926304'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2008/01/oracle-patch-recursion-down-rabbit-hole.html' title='Oracle patch recursion - down the rabbit hole'/><author><name>oscil8er</name><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-4742114022404761409.post-5596125758641202762</id><published>2007-12-18T14:12:00.000+13:00</published><updated>2007-12-18T14:17:59.832+13:00</updated><title type='text'>8007000e error when deploying Analysis Services 2005 project</title><content type='html'>I had some kind of machine specific project corruption, possibly to do with SourceSafe. Before troubleshooting your project, try deploying from another workstation - this worked for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-5596125758641202762?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/5596125758641202762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=5596125758641202762' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5596125758641202762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5596125758641202762'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/12/8007000e-error-when-deploying-analysis.html' title='8007000e error when deploying Analysis Services 2005 project'/><author><name>oscil8er</name><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-4742114022404761409.post-1489849338445838629</id><published>2007-12-14T14:56:00.000+13:00</published><updated>2007-12-14T15:54:58.257+13:00</updated><title type='text'>Visual Studio using analysis services based report models is broken</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Designing reports using a report model based on an Analysis Services database seems such an obvious and natural thing to do.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Analysis Services provides a rapid querying engine&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;The report model requires no development to generate&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Report developers can avoid having to learn MDX&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;"&gt;Unfortunately this appears not to have been an area of focus for Microsoft. Prior to SQL Server 2005 SP2 it was workable but annoying, but now it is unusable.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:0;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;"A connection cannot be made to the database. Set and test the connection string. Additional information: TODO - change code to use RsProxy object (Microsoft.ReportingServices.QueryDesigners)"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This error is thrown on the data tab of a Visual Studio 2005 Reporting Services project if:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Your data source is a report model generated from an Analysis Services 2005 database via Report Manager&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;You have SQL Server 2005 SP2 Client Tools installed on your workstation&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;You have manually added Perspective xml to your rdl code in an attempt to work around a known issue (Perspective not specified automatically for a report created in Report Designer)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-family:verdana;"&gt;If you remove the&lt;/span&gt; Perspective xml then the data tab won't error, but the prior known issue will kick in with one of the following errors when you attempt to execute the query or preview the report:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;"An error occurred while executing the query. Failed to execute query. Additional information: Failed to execute query. (Microsoft.ReportingServices.DataExtensions)"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;"The ‘PerspectiveID’ custom property for the ‘query’ perspective is either not set or is not set to the string data type."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Plenty TODO if you ask me.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1489849338445838629?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1489849338445838629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1489849338445838629' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1489849338445838629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1489849338445838629'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/12/visual-studio-using-analysis-services.html' title='Visual Studio using analysis services based report models is broken'/><author><name>oscil8er</name><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-4742114022404761409.post-5639964107376139826</id><published>2007-10-23T17:20:00.000+13:00</published><updated>2007-10-23T17:34:47.429+13:00</updated><title type='text'>Wherescape Red and Oracle Express - take 2</title><content type='html'>The Validate Privileges option in Wherescape Setup Administrator (WSA) is supposed to assist you in getting your admin user granted up and ready to go.&lt;br /&gt;&lt;br /&gt;So based on its recommendations you go into the XE home page and tick the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create Database Link&lt;/li&gt;&lt;li&gt;Create Materialized View&lt;/li&gt;&lt;li&gt;Create Procedure&lt;/li&gt;&lt;li&gt;Create Table&lt;/li&gt;&lt;li&gt;Create View&lt;/li&gt;&lt;/ul&gt;and then run a little script as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;grant select any table to bob;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;grant query rewrite to bob;  --why the heck is this deprecated stuff here??&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;grant execute on sys.dbms_lock to bob;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;grant select on sys.v_$session to bob;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and you should now be good to go, right?&lt;br /&gt;&lt;br /&gt;Nope. If you haven't created any tablespaces and you don't select any on metadata creation, you will get a ton of errors related to availability of tablespace "USERS". Where did this come from? I didn't specify a tablespace anywhere and there doesn't appear to be a WSA default tablespace option, but WSA has gone and decided to plug it in the metadata creation sql.&lt;br /&gt;&lt;br /&gt;The quick and dirty for getting round this is to give bob DBA rights. Thankfully this is just a tickbox away in XE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-5639964107376139826?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/5639964107376139826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=5639964107376139826' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5639964107376139826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5639964107376139826'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/10/wherescape-red-and-oracle-express-take.html' title='Wherescape Red and Oracle Express - take 2'/><author><name>oscil8er</name><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-4742114022404761409.post-1004542423466704164</id><published>2007-10-19T17:01:00.000+13:00</published><updated>2007-10-25T11:10:01.789+13:00</updated><title type='text'>Getting Oracle XE on Windows with Virtual PC to work</title><content type='html'>Pretty much every time I have installed Oracle XE on Windows without taking any preparatory steps, I have had:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the home page go "page not found"&lt;/li&gt;&lt;li&gt;"shared memory realm does not exist" errors in sqlplus&lt;/li&gt;&lt;li&gt;port 8080 failed to come up in &lt;span style="font-family:courier new;"&gt;lsnrctl status&lt;/span&gt;/&lt;span style="font-family:courier new;"&gt;netstat -an find "TCP"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;inaccessible Oracle odbc dsns with "tns:no listener" errors&lt;/li&gt;&lt;/ul&gt;My main preparation steps before installing XE on a Windows VPC:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Install the Microsoft Loopback Adapter&lt;/li&gt;&lt;li&gt;Use a static IP address&lt;/li&gt;&lt;li&gt;Disable all other networking&lt;/li&gt;&lt;/ol&gt;If this doesn't get it working, forget about checking whether the services are up - they will be.&lt;br /&gt;&lt;br /&gt;Instead open up a command prompt and enter the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;startup;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And this gets rid of the various problems I experience. This is in no way comprehensive. Oracle seems to be happy to leave their customers to trawl google for laundry lists of symptoms and fixes compiled by various bloggers and tweakers.&lt;br /&gt;&lt;br /&gt;This isn't a bad article (though not specific to XE).&lt;br /&gt;&lt;a href="http://www.dba-oracle.com/oracle9iAS_tips_windows_service.htm"&gt;http://www.dba-oracle.com/oracle9iAS_tips_windows_service.htm&lt;/a&gt;&lt;br /&gt;Neither is this&lt;br /&gt;&lt;a href="http://psst0101.wordpress.com/2007/06/13/getting-oracle-10201-to-start-automatically/"&gt;http://psst0101.wordpress.com/2007/06/13/getting-oracle-10201-to-start-automatically/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1004542423466704164?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1004542423466704164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1004542423466704164' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1004542423466704164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1004542423466704164'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/10/getting-oracle-xe-on-windows-with.html' title='Getting Oracle XE on Windows with Virtual PC to work'/><author><name>oscil8er</name><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-4742114022404761409.post-1515812735129586</id><published>2007-09-28T14:55:00.000+12:00</published><updated>2007-09-28T14:57:52.786+12:00</updated><title type='text'>isnumber in sql</title><content type='html'>&lt;a href="http://laurentschneider.com/wordpress/2007/09/isnumber-in-sql.html"&gt;http://laurentschneider.com/wordpress/2007/09/isnumber-in-sql.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;select x,&lt;br /&gt;  case when&lt;br /&gt;    regexp_like(:x, ‘^[+-]?(\d+\.?\d*\.\d+)([eE][+-]?\d+)?$’)&lt;br /&gt;    then to_number(x)&lt;br /&gt;  end n&lt;br /&gt;from t;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1515812735129586?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1515812735129586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1515812735129586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1515812735129586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1515812735129586'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/09/isnumber-in-sql.html' title='isnumber in sql'/><author><name>oscil8er</name><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-4742114022404761409.post-9118798997703384327</id><published>2007-09-24T17:27:00.001+12:00</published><updated>2007-09-24T17:41:35.955+12:00</updated><title type='text'>Wherescape Red and multi stage ETL</title><content type='html'>In Red, you associate dimensions with a fact in the Stage table. If your load table has data that needs to be transformed before it can be used to join to the appropriate dimension business keys then you may want a 2 step stage process to keep the transformations readable.&lt;br /&gt;&lt;br /&gt;For instance if your load table has a column that contains data in the form ddmon (e.g. 01SEP) this can be converted to a date before joining to dim_date to get the dim_date_key. So stage_table_1 would have a date column derived from the ddmon column and stage_table_2 would have the date column plus a dim_date_key column using the relevant join criteria.&lt;br /&gt;&lt;br /&gt;Of course stage_table_2 could be derived in one step but my preference is to keep the transformations simple.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-9118798997703384327?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/9118798997703384327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=9118798997703384327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/9118798997703384327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/9118798997703384327'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/09/wherescape-red-and-multi-stage-etl.html' title='Wherescape Red and multi stage ETL'/><author><name>oscil8er</name><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-4742114022404761409.post-1056722569987280616</id><published>2007-09-19T11:17:00.001+12:00</published><updated>2007-09-19T14:07:55.974+12:00</updated><title type='text'>Wherescape Red and data repositories</title><content type='html'>I wanted to create a separate data repository from WslWarehouse (which is full of metadata), so I created a new SQL Server database instance called Test_Warehouse on the same server.&lt;br /&gt;&lt;br /&gt;I had to create a system DSN called Test_Warehouse pointing to this instance. I don't see the need for this step. Red supports SQL Server in theory which means that I should be able to specify the server, database and credentials somewhere.&lt;br /&gt;&lt;br /&gt;Then in Red I right-clicked Connections, selected New Object and specified properties as follows:&lt;br /&gt;&lt;br /&gt;Name of object: Test_Warehouse&lt;br /&gt;Connection Method: IP&lt;br /&gt;ODBC Source: Test_Warehouse&lt;br /&gt;(No need for credentials as I specified Windows Authentication in the DSN)&lt;br /&gt;&lt;br /&gt;The next step is to get the load table to create itself in Test_Warehouse. I thought that Change Connect/Schema would do the trick but it made no difference. After much messing around and consulting help files I still didn't figure out how to do it. So it's back to mingling meta and data...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1056722569987280616?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1056722569987280616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1056722569987280616' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1056722569987280616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1056722569987280616'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/09/wherescape-red-and-data-repositories.html' title='Wherescape Red and data repositories'/><author><name>oscil8er</name><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-4742114022404761409.post-1789142187960772846</id><published>2007-09-19T10:49:00.000+12:00</published><updated>2007-09-19T14:52:38.179+12:00</updated><title type='text'>Wherescape Red and fixed width text source</title><content type='html'>Two annoyances:&lt;br /&gt;&lt;br /&gt;1. The data load wizard doesn't let you throw anything away in the source. You have to create junk columns to hold separators and other unneeded file content.&lt;br /&gt;&lt;br /&gt;2. If you use the Back button in the data load wizard, it appears that you lose your column specifications. Actually the column definition has already been created and you are creating a duplicate. Clicking ok to Create and Load when you finish the wizard will not work because of this, and you will have to go back and delete the old column definitions.&lt;br /&gt;&lt;br /&gt;If you get the following errors, create a c:\temp directory.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Attempt to bulk insert has FAILED![Microsoft][SQL Native Client][SQL Server]Cannot bulk load because the file "c:\temp\wsl6.fmt" could not be opened. Operating system error code 3(The system cannot find the path specified.).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[Microsoft][SQL Native Client][SQL Server]Cannot bulk load because the file "c:\temp\wsl6.fmt" could not be opened. Operating system error code 3(The system cannot find the path specified.).&lt;/span&gt;&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/4742114022404761409-1789142187960772846?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1789142187960772846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1789142187960772846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1789142187960772846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1789142187960772846'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/09/wherescape-red-and-fixed-width-text.html' title='Wherescape Red and fixed width text source'/><author><name>oscil8er</name><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-4742114022404761409.post-3337233808749838445</id><published>2007-09-19T10:27:00.000+12:00</published><updated>2007-09-19T10:29:33.562+12:00</updated><title type='text'>Wherescape Red and creating facts</title><content type='html'>Much the same as dimensions but I got stuck going from load to fact - I eventually figured out that stage tables are not just a nice to have, they are pretty much essential as there are wizard steps that won't appear when constructing facts directly from load tables.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-3337233808749838445?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/3337233808749838445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=3337233808749838445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3337233808749838445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3337233808749838445'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/09/wherescape-red-and-creating-facts.html' title='Wherescape Red and creating facts'/><author><name>oscil8er</name><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-4742114022404761409.post-1230703032226324955</id><published>2007-09-18T15:22:00.000+12:00</published><updated>2007-09-19T10:29:50.382+12:00</updated><title type='text'>Wherescape Red and projects</title><content type='html'>At first I couldn't figure out how to drag-drop or multi-drag objects into a newly created project. Surely I wouldn't have to do them one at a time?? Turns out the trick is to select the container (for instance, Load Table) then make my selections from the middle pane, right-click and Add to Project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1230703032226324955?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1230703032226324955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1230703032226324955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1230703032226324955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1230703032226324955'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/09/wherescape-red-and-projects.html' title='Wherescape Red and projects'/><author><name>oscil8er</name><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-4742114022404761409.post-2450416032107963899</id><published>2007-08-23T10:13:00.000+12:00</published><updated>2007-08-23T14:21:08.166+12:00</updated><title type='text'>Wherescape Red and creating dimensions</title><content type='html'>My data source is a very denormalised reporting-style source system extract. I need to pluck out the dimensions and facts that are embedded in this source data, and I was hoping Red's much touted code generation would help me through this.&lt;br /&gt;&lt;br /&gt;Dimension #1&lt;br /&gt;- Dragged a load table into the dimension middle panel and specified the name&lt;br /&gt;- Selected Normal dimension type&lt;br /&gt;- Clicked OK to accept definition&lt;br /&gt;- Clicked Finish to avoid creating the dimension based on the load table&lt;br /&gt;- Deleted lots of irrelevant columns&lt;br /&gt;- Right-clicked the dimension (in the left panel) and selected Create (recreate)&lt;br /&gt;- Right-clicked the dimension and selected Properties&lt;br /&gt;- Specified Update Procedure as ***Create New Procedure ***&lt;br /&gt;- Selected the business key column&lt;br /&gt;- Right-clicked the dimension and selected Update&lt;br /&gt;&lt;br /&gt;Phew, I'm done! It didn't take long but I had a lot of steps to remember. It strikes me that a suitably constructed wizard could have completed a cycle of creating multiple dimensions and facts from one load table.&lt;br /&gt;&lt;br /&gt;Dimension #2&lt;br /&gt;More of the same, except that the Update failed with error:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;-2 dim_2 update FAILED with error 2601 Step 100. Error Msg: Cannot insert duplicate key row in object 'dbo.dim_2' with unique index 'dim_2_idx_A'.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The dim_2 table was partially populated, so it appears a specific cursor row upset it partway through the data load. My first guess was there were multiple cursor rows for the same business key. However queries on the load table didn't find any.&lt;br /&gt;&lt;br /&gt;Turns out that the generated update procedure doesn't handle nulls. To fix this I had to:&lt;br /&gt;- right-click the dimension&lt;br /&gt;- select properties&lt;br /&gt;- click Rebuild for the update procedure&lt;br /&gt;- tick &lt;span style="font-family:courier new;"&gt;Allow where clause editing &lt;/span&gt;and click OK to leave the business key as is&lt;br /&gt;- type &lt;span style="font-family:courier new;"&gt;where business_key_column is not null &lt;/span&gt;and click OK&lt;br /&gt;&lt;br /&gt;I guess there may be a tick box somewhere to make the procedure ignore nulls but I couldn't find it.&lt;br /&gt;&lt;br /&gt;Now on to dimension hierarchies! I right-clicked the dimension and selected Add Hierarchy and it only offered me the option to reorganise the existing fields. I had to create separate dimension columns for calculated hierarchies by right-clicking the dimension and selecting Add Column.&lt;br /&gt;&lt;br /&gt;Comments:&lt;br /&gt;- The fields are mostly self explanatory but not very typo-proof, being free text fields.&lt;br /&gt;- At various points it is necessary to update the dialog box which is done by clicking the Update button. Annoyingly this closes the dialog box and I had to reopen the column properties to be able to continue defining the column.&lt;br /&gt;- The transformation tab could potentially hold some serious sql but is fixed size with limited IDE functionality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-2450416032107963899?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/2450416032107963899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=2450416032107963899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2450416032107963899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2450416032107963899'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/wherescape-red-and-creating-dimensions.html' title='Wherescape Red and creating dimensions'/><author><name>oscil8er</name><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-4742114022404761409.post-1077070968583582785</id><published>2007-08-22T14:31:00.000+12:00</published><updated>2007-08-23T10:00:26.097+12:00</updated><title type='text'>Wherescape Red and Excel data source</title><content type='html'>I wanted to use a multi tab multi column Excel file as a data source. I didn't do any prior reading of the help file or documentation, apart from my previous walk through of the tutorial. Call it an ease of use test :)&lt;br /&gt;&lt;br /&gt;I dragged the xls file in to the load table area and was presented with a dialog box &lt;span style="font-family:courier new;"&gt;Specify the type of load required&lt;/span&gt;. I selected the 2nd option &lt;span style="font-family:courier new;"&gt;File Load (columns parsed)&lt;/span&gt; which superficially appeared to be the right choice, but nothing appeared to happen. I couldn't get the corresponding load table to be displayed in the browser.&lt;br /&gt;&lt;br /&gt;I closed and reopened the browser, and the load table was displayed in the browser. However as soon as I tried to look at its properties etc I got the message &lt;span style="font-family:courier new;"&gt;The specified load table could not be found&lt;/span&gt;. I performed a validity check of the metadata and a problem was reported: &lt;span style="font-family:courier new;"&gt;There are no objects in ws_load_tab with an object key of n&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I wasn't prompted with any metadata cleanup options and I couldn't find any repair functions on the menus. So I opened up the wslwarehouse database in SQL Mgt Studio* and poked around in the metadata, eventually identifying the load table object definition in ws_obj_object. I deleted the offending row and ran another validity check which advised that the metadata was clean.&lt;br /&gt;&lt;br /&gt;I've revisited the help file and I can't find anything specifically saying Excel &lt;em&gt;isn't&lt;/em&gt; usable as a source, but I can't find instructions for loading Excel either. I think I can assume by omission that it's unsupported. Regardless this was pretty ungraceful error handling.&lt;br /&gt;&lt;br /&gt;So I saved each xls tab as a separate tab-delimited text file and dragged them in. This time a dialog box popped up and the load definition process started. My thoughts on the wizard:&lt;br /&gt;&lt;br /&gt;- It doesn't make any effort to identify the delimiter, header row or row separator. And char(9) isn't adequate to specify a tab; it has to be CHAR(09)&lt;br /&gt;- It makes rather poor data type suggestions given that it's obviously sampling the data.&lt;br /&gt;- Manual entry of data types aren't added to the data type drop down.&lt;br /&gt;- The data happened to have a column header called Procedure which caused table creation and population to fail because it's a sql keyword. The wizard didn't identify this and change the column name to something else.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;* Yes I've given up on XE/APEX which has become unavailable on reboot too many times for my limited patience. SQL Server doesn't die inexplicably on reboot, doesn't get upset when used on a virtual machine with no network adapters, doesn't stop working because it was installed by a domain admin, etc etc.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1077070968583582785?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1077070968583582785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1077070968583582785' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1077070968583582785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1077070968583582785'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/wherescape-red-and-excel-data-source.html' title='Wherescape Red and Excel data source'/><author><name>oscil8er</name><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-4742114022404761409.post-1942820784814761567</id><published>2007-08-20T23:01:00.000+12:00</published><updated>2007-08-20T23:15:06.161+12:00</updated><title type='text'>The Wherescape Red Sucks Honeypot Post</title><content type='html'>I've been writing boring notes to self in this blog, fully expecting nobody to bother commenting. Now that someone has actually written a comment, I'm completely freaking out! I can't help but suspect that the commenter has undisclosed interests and is engaging in viral marketing. A lot of vendor-aligned consultants these days are expected to provide product discussion forum feedback as a background task - perhaps some vendors have stipulated public comms responsibilities too for their consultants?&lt;br /&gt;&lt;br /&gt;Apologies if you think this is all too cynical and even somewhat misanthropic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1942820784814761567?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1942820784814761567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1942820784814761567' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1942820784814761567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1942820784814761567'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/wherescape-red-sucks-honeypot-post.html' title='The Wherescape Red Sucks Honeypot Post'/><author><name>oscil8er</name><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-4742114022404761409.post-2403098374526480554</id><published>2007-08-20T10:47:00.000+12:00</published><updated>2007-08-20T10:53:46.659+12:00</updated><title type='text'>Oracle Express and VPC</title><content type='html'>The Apex site was unavailable afte reboot, and sqlplus returned this error:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ORA-1034: ORACLE not available&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ORA-27101: Shared memory realm does not exist&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.garayed.com/oracle/209168-ora-27101-shared-memory-realm-does-not-exist.html"&gt;This thread&lt;/a&gt; discusses possibilities and suggests searching on OTN forums but the forums are currently unavailable!&lt;br /&gt;&lt;br /&gt;I think it may be something to do with assigned ip address but discussion suggests Oracle should still be available via sqlplus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-2403098374526480554?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/2403098374526480554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=2403098374526480554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2403098374526480554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2403098374526480554'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/oracle-express-and-vpc.html' title='Oracle Express and VPC'/><author><name>oscil8er</name><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-4742114022404761409.post-7283499671520096546</id><published>2007-08-17T13:54:00.000+12:00</published><updated>2007-08-20T10:05:21.070+12:00</updated><title type='text'>Wherescape Red and Oracle Express</title><content type='html'>&lt;p&gt;Before installing the Red tutorials, do the following to save yourself manual tidyups:&lt;br /&gt;* Create tablespaces called DATA and INDEX&lt;br /&gt;* Create a user called wtutorial&lt;/p&gt;&lt;p&gt;What does this error mean during tutorial install?&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;insert rows into ws_hie_link(hl_hie_key, hl_obj_key, hl_child_key, hl_parent_col_key) values(ws_hierarchy_seq.currval, 71, 027city#) [Microsoft][ODBC Driver for Oracle][Oracle]ORA-00917: missing comma&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Haven't figured out what to do about Red's attempts to create bitmap indexes. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-7283499671520096546?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/7283499671520096546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=7283499671520096546' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7283499671520096546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7283499671520096546'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/wherescape-red-and-oracle-express.html' title='Wherescape Red and Oracle Express'/><author><name>oscil8er</name><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-4742114022404761409.post-4897015359281036817</id><published>2007-08-17T10:22:00.000+12:00</published><updated>2007-08-17T11:52:21.190+12:00</updated><title type='text'>PerformancePoint CTP4 appears overnight like a tent city</title><content type='html'>&lt;a href="http://connect.microsoft.com/"&gt;http://connect.microsoft.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Announcement came in the form of a handful of posts by independent bloggers.&lt;br /&gt;&lt;br /&gt;I'm guessing that a VPC image will be available in about 3 weeks time based on previous track record.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-4897015359281036817?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/4897015359281036817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=4897015359281036817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4897015359281036817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4897015359281036817'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/performancepoint-ctp4-appears-overnight.html' title='PerformancePoint CTP4 appears overnight like a tent city'/><author><name>oscil8er</name><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-4742114022404761409.post-1376916563012056980</id><published>2007-08-16T14:30:00.000+12:00</published><updated>2007-08-16T14:41:01.578+12:00</updated><title type='text'>Don't use @ symbol in passwords if Oracle is in the building</title><content type='html'>The standard administrator password for Microsoft Virtual PC images is pass@word1&lt;br /&gt;&lt;br /&gt;If you install an Oracle database on one of these images then the administrator will never be able to connect to the database.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;connect user/password@destination&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1376916563012056980?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1376916563012056980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1376916563012056980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1376916563012056980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1376916563012056980'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/dont-use-symbol-in-passwords-if-oracle.html' title='Don&apos;t use @ symbol in passwords if Oracle is in the building'/><author><name>oscil8er</name><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-4742114022404761409.post-5199619960244764093</id><published>2007-08-10T14:39:00.000+12:00</published><updated>2007-08-10T14:43:08.721+12:00</updated><title type='text'>Forum post about asp.net locales</title><content type='html'>From bhughes10 on 9/28/2006 4:51:02 PM&lt;br /&gt;I saw a question from Norman Yuan several months back with the same problem I'm having now. Never saw an answer.My currency that should be displayed as $200.00 is displayed as A200.00 randomly when my production server is under load. It doesn't happen on the dev computers. An IIS reset temp fixes it but soon returns. I'm running ASP.NET app, .NET 1.1, developed on VS.NET2003. Windows Server 2003 Std. with latest SP, IIS6.0&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;From bhughes10 on 10/4/2006 4:43:01 AM&lt;br /&gt;It's been 2 days with heavy loads on my server and no problems. I took your suggestion and created a new application pool for the site. Thanks Carl.&lt;br /&gt;"Carl Daniel [VC++ MVP]" wrote:&lt;br /&gt;&gt; Norman Yuan wrote:&lt;br /&gt;&gt; &gt; Still no solution here. Originally, I though it could have something&lt;br /&gt;&gt; &gt; to do with our incapable server (PIII700Hz, 512MB, running Win2003&lt;br /&gt;&gt; &gt; IIS6 and SQL Server2000 on the same box). But after upgrading to a&lt;br /&gt;&gt; &gt; brand new, powerful server, the problem is still there. The $ sign&lt;br /&gt;&gt; &gt; randomly changed, but not alway on the same web page. That is,&lt;br /&gt;&gt; &gt; browsing the same page with different query string parameters, the $&lt;br /&gt;&gt; &gt; sign sometimes is OK, sometimes is not.&lt;br /&gt;&gt; &gt; Very frustrated with no cause found.&lt;br /&gt;&gt;&lt;br /&gt;&gt; This is caused by something running on a threadpool thread that changed the&lt;br /&gt;&gt; default locale. We ran into this issue with an ASP.NET application as well&lt;br /&gt;&gt; and through trial and error identified another ASP.NET application running&lt;br /&gt;&gt; in the same app pool that was changing the locale to German for some reason.&lt;br /&gt;&gt;&lt;br /&gt;&gt; There are two approaches you can take that might help:&lt;br /&gt;&gt;&lt;br /&gt;&gt; 1. Explicitly specify your intended locale (i.e. IFormatProvider) every&lt;br /&gt;&gt; where you convert numbers to strings.&lt;br /&gt;&gt; 2. Separate all applications into their own completely isolated application&lt;br /&gt;&gt; pools to keep locale changes from one application from "leaking" into&lt;br /&gt;&gt; another.&lt;br /&gt;&gt;&lt;br /&gt;&gt; -cd&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-5199619960244764093?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/5199619960244764093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=5199619960244764093' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5199619960244764093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5199619960244764093'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/forum-post-about-aspnet-locales.html' title='Forum post about asp.net locales'/><author><name>oscil8er</name><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-4742114022404761409.post-755845363077105576</id><published>2007-08-09T17:38:00.000+12:00</published><updated>2007-08-14T10:38:29.182+12:00</updated><title type='text'>P2V, SSIS, asp.net and datetime</title><content type='html'>Recently I did a P2V of a production Windows 2003 server in order to create a dev environment.&lt;br /&gt;&lt;br /&gt;Among other things it comprises an asp.net site that calls an SSIS package.&lt;br /&gt;&lt;br /&gt;When I attempted to debug the existing SSIS package in visual studio, it failed with "string was not recognized as a valid datetime". When I checked the regional settings of the windows server I found they had not survived the P2V process and had reverted to US english. &lt;a href="http://blogs.conchango.com/jamiethomson/archive/2005/03/12/SSIS_3A00_-Datetime-variables-don_2700_t-always-do-what-you-expect.aspx"&gt;This post&lt;/a&gt; discusses the language translation issues that can occur with SQL Server, so as per previous blog post I updated the windows default regional settings. I left SQL Server as us_english as this is how it's set up in prod.&lt;br /&gt;&lt;br /&gt;End to end debugging was fine after this. However when I deployed assemblies into the dev environment but I got exactly the same error at the point of calling the SSIS package from asp.net. Suspicion immediately fell on the app pool identity. However its database user has the same default language as all the other users - us_english.&lt;br /&gt;&lt;br /&gt;I then noticed that Sharepoint on the same box was displaying US style dates. So it appeared that IIS or asp.net had a different default locale from windows! But no, updating the Sharepoint locale info didn't fix the asp.net site. It turns out that Sharepoint sites have their own locale info which is drawn from Sharepoint's own settings.&lt;br /&gt;&lt;br /&gt;I decided to repair IIS but found that I couldn't get to Add/Remove Windows Components from the Add or Remove Programs control panel - I got an error as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Setup library ocgen.dll could not be loaded, or OcOMEntry could not be found. Contact your system administrator. The specific error code is 0x7F.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Presumably this was another P2V side effect. I ran &lt;span style="font-family:courier new;"&gt;sfc /scannow&lt;/span&gt; but this didn't help.&lt;br /&gt;&lt;br /&gt;Giving up on this, I went back to investigate the site's asp.net global configuration and noticed that the application settings had dates stored in the local format! So the translation was happening on the site itself. On the application tab I found that the culture and UI culture had changed to af-ZA (Afrikaans). Actually I suspected the values were blank and the dropdowns were just displaying the first entries on the lists. So I updated them to local culture and reset iis. The sites were now using local dates.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-755845363077105576?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/755845363077105576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=755845363077105576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/755845363077105576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/755845363077105576'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/p2v-ssis-aspnet-and-datetime.html' title='P2V, SSIS, asp.net and datetime'/><author><name>oscil8er</name><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-4742114022404761409.post-7223939993325246455</id><published>2007-08-09T13:05:00.000+12:00</published><updated>2007-08-09T13:19:23.874+12:00</updated><title type='text'>Some forum post</title><content type='html'>RE: SSIS, relative path configuration file references and asp.net David Norman2/28/2006 7:19:28 PM&lt;br /&gt;&lt;br /&gt;Sorry, this information is not correct. I was viewing logs that excluded OnWarning messages.&lt;br /&gt;As far as I am currently aware, the only guaranteed place to put configuration files where they will be found by an asp.net site using an app pool identity other than Admnistrator is in \windows\system32\inetsrv&lt;br /&gt;&lt;br /&gt;"David Norman" wrote:&lt;br /&gt;&gt; Config files for child packages called from asp.net will also be found during&lt;br /&gt;&gt; execution relative to this directory:&lt;br /&gt;&gt;&lt;br /&gt;&gt; \Documents and Settings\App Pool Identity User\&lt;br /&gt;&gt;&lt;br /&gt;&gt; So to have two separate package collections on the same server e.g. for test&lt;br /&gt;&gt; and live, you need two sites using different app pools with different&lt;br /&gt;&gt; identities. Otherwise both collections will use the same config files.&lt;br /&gt;&gt; &gt; I think the way to structure this so you still have the flexibility to run&lt;br /&gt;&gt; the packages both directly and via the site is to put copies of the config&lt;br /&gt;&gt; files in the app pool home dir. The downside is you can get out of sync and&lt;br /&gt;&gt; access to the directory needs to be opened up to more people.&lt;br /&gt;&gt;&lt;br /&gt;&gt; But I won't add my voice to the chorus of SSIS bloggers who trumpet the need&lt;br /&gt;&gt; to follow disciplined practices - template packages, carefully designed&lt;br /&gt;&gt; folder structures, etc. These are just workarounds for a not very easy to use&lt;br /&gt;&gt; environment.&lt;br /&gt;&gt;&lt;br /&gt;&gt; One thing I believe IS good practice is to not edit live packages directly.&lt;br /&gt;&gt; If you're happy to hack away at the config file paths in live .dtsx files&lt;br /&gt;&gt; then you can you ignore these posts entirely.&lt;br /&gt;&gt;&lt;br /&gt;&gt; Hope this helps somebody, it's taken me a long time to figure all this out.&lt;br /&gt;&gt; David&lt;br /&gt;&gt;&lt;br /&gt;&gt; "David Norman" wrote:&lt;br /&gt;&gt; &gt;&lt;br /&gt;&gt; Found it!!!!! Desperation wins through!!!&lt;br /&gt;&gt; &gt;&lt;br /&gt;&gt; &gt; \Windows\system\inetsrv (app pool location)&lt;br /&gt;&gt; &gt;&lt;br /&gt;&gt; &gt; But it's not going to be a very well structured package environment. And I&lt;br /&gt;&gt; &gt; don't know if I can different locations for test and live will be possible.&lt;br /&gt;&gt; &gt;&lt;br /&gt;&gt; &gt; All in all, fairly ridiculous if you ask me.&gt; &gt; &gt; &gt; "David Norman" wrote:&lt;br /&gt;&gt; &gt;&lt;br /&gt;&gt; &gt; &gt; I have a package collection with one parent package that calls several child&lt;br /&gt;&gt; &gt; &gt; packages that share a common configuration file referred to using a relative&lt;br /&gt;&gt; &gt; &gt; path (everything is in the same folder).&lt;br /&gt;&gt; &gt; &gt;&lt;br /&gt;&gt; &gt; &gt; If I put the child packages and config file in a different folder execute&lt;br /&gt;&gt; &gt; &gt; the parent package, the child packages fail to find the config file. If I put &gt; &gt; &gt; the config file with the parent package, the child packages find it.&lt;br /&gt;&gt; &gt; &gt;&lt;br /&gt;&gt; &gt; &gt; With an asp.net site - the child packages don't find the config file in&lt;br /&gt;&gt; &gt; &gt; either their own or the parent package folder.&lt;br /&gt;&gt; &gt; &gt;&lt;br /&gt;&gt; &gt; &gt; This has led me to believe that the location where the "executable" is&lt;br /&gt;&gt; &gt; &gt; launched dictates where the config file needs to be. On this basis I have&lt;br /&gt;&gt; &gt; &gt; tried putting it in the following (increasingly desperate) locations:&lt;br /&gt;&gt; &gt; &gt;&lt;br /&gt;&gt; &gt; &gt; virtual dir root&lt;br /&gt;&gt; &gt; &gt; virtual dir bin&lt;br /&gt;&gt; &gt; &gt; site root&lt;br /&gt;&gt; &gt; &gt; drive root&lt;br /&gt;&gt; &gt; &gt; \Program Files\SQL Server\90\Binn (location of MsDtsSrvr.exe)&lt;br /&gt;&gt; &gt; &gt; \Windows\System (location of W3SVC)&gt; &gt; &gt; the "My Documents" directory of the app pool identity&lt;br /&gt;&gt; &gt; &gt;&lt;br /&gt;&gt; &gt; &gt; One exception is that the config file is found if the app pool identity is&lt;br /&gt;&gt; &gt; &gt; an administrator of the SQL Server box - but this is not an acceptable&lt;br /&gt;&gt; &gt; &gt; solution. However at the rate I'm removing security in my search for a&lt;br /&gt;&gt; &gt; &gt; working setup, it won't be long before everyone's an administrator anyway!&lt;br /&gt;&gt; &gt; &gt;&lt;br /&gt;&gt; &gt; &gt; Can anyone give me any guidance?&lt;br /&gt;&gt; &gt; &gt;&lt;br /&gt;&gt; &gt; &gt; Ta in advance,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-7223939993325246455?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/7223939993325246455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=7223939993325246455' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7223939993325246455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7223939993325246455'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/some-forum-post.html' title='Some forum post'/><author><name>oscil8er</name><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-4742114022404761409.post-8834588756238387933</id><published>2007-08-09T11:19:00.001+12:00</published><updated>2007-08-14T11:19:33.192+12:00</updated><title type='text'>Multiple SSIS environments on the same server</title><content type='html'>Got Dev and Test (and even Prod) environments on the same box? Want to avoid hacking the package xml when promoting SSIS solutions? There are a couple of configuration options:&lt;br /&gt;&lt;br /&gt;1. XML configuration file&lt;br /&gt;&lt;br /&gt;The key here is to use a &lt;strong&gt;relative path&lt;/strong&gt;. The wizard guides you to click the Browse button and specify an absolute reference e.g. &lt;span style="font-family:courier new;"&gt;c:\ssisdev\config.dtsconfig&lt;/span&gt;. Instead, just type in &lt;span style="font-family:courier new;"&gt;config.dtsconfig&lt;/span&gt;. SSIS will look for the config file in the package location.&lt;br /&gt;&lt;br /&gt;Depending on how you structure your solution, you don't necessarily want your config files in the same location as the packages that use them. I suggest you give up on this now and accept all config files will have to be in the same location as the packages that use them.&lt;br /&gt;&lt;br /&gt;This is because longer relative paths such as &lt;span style="font-family:courier new;"&gt;..\config.dtsconfig&lt;/span&gt; don't work (this particular example saves the config file to C:\Program Files\Microsoft Visual Studio 8\Common7 !!!)&lt;br /&gt;&lt;br /&gt;2. SQL Server&lt;br /&gt;&lt;br /&gt;This is a two phase approach. Firstly, set up a SQL Server configuration table. As part of this process you will reference or create a database connection. Then (and this is the cunning bit) create an XML config file with a relative path (as per option #1) that contains the connection string for the connection. You can then specify different configuration table locations in the xml config files.&lt;br /&gt;&lt;br /&gt;This option also uses xml config files and is hampered by the same difficulties as option #1. You will need a separate config file for every package location, and you will need to maintain these config files individually. You could design to ensure your config files are all identical and write a script to copy them as part of the build; whether this is worth the effort depends on your solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-8834588756238387933?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/8834588756238387933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=8834588756238387933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8834588756238387933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8834588756238387933'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/multiple-ssis-environments-on-same.html' title='Multiple SSIS environments on the same server'/><author><name>oscil8er</name><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-4742114022404761409.post-3348387679082875575</id><published>2007-08-09T09:08:00.000+12:00</published><updated>2007-08-09T09:14:56.898+12:00</updated><title type='text'>SSIS package deployment does SOMETHING</title><content type='html'>Everything I read out there says that SSIS package deployment to file system does nothing more than a file copy.&lt;br /&gt;&lt;br /&gt;I created some SSIS packages and called them from an asp.net site on the same box. However the asp.net site couldn't find the packages until I deployed them to the file system.&lt;br /&gt;&lt;br /&gt;So deployment does something, either to the permissions of the deployed packages or by registering them as available somehow. Is there a hidden GAC equivalent for packages (GPC??)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-3348387679082875575?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/3348387679082875575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=3348387679082875575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3348387679082875575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3348387679082875575'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/ssis-package-deployment-does-something.html' title='SSIS package deployment does SOMETHING'/><author><name>oscil8er</name><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-4742114022404761409.post-7559057336965370271</id><published>2007-08-06T13:51:00.001+12:00</published><updated>2007-08-09T14:55:39.074+12:00</updated><title type='text'>SSRS setup</title><content type='html'>Tried to bring up http://server/reports and got the error:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&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. Check the documentation for more information. (rsReportServerDisabled) (rsRPCError) Get Online Help Bad Data. (Exception from HRESULT: 0x80090005)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Following instructions &lt;a href="http://blog.devstone.com/aaron/archive/2006/04/27/1580.aspx"&gt;here&lt;/a&gt; got me nowhere as I got the same error on attempting to extract the symmetric key.&lt;br /&gt;&lt;br /&gt;Apparently this is the wrong approach for SQL2K5, I found in the following comment:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;For Sql Server 2005 you can change, backup and restore via Reporting Services Configuration Manager.&lt;br /&gt;If you have no backup of the Encryption key you can delete the key and re-create using the change option. BUT BE WARNED!, you must re-enter connection strings and stored credentials in the reports and shared data sources after this.&lt;br /&gt;Refer to the follow technet article BEFORE doing &lt;a href="http://technet.microsoft.com/en-us/library/ms189422(SQL.90).aspx"&gt;this&lt;/a&gt;.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;Unfortunately I couldn't get the Initialization to change from x to tick. So I reinstalled SSRS and went through the Reporting Services Configuration Manager step by step to reconnect SSRS services to the SSRS database. At database setup it moaned about existing keys and the Initialization icon stayed as an X. So I went to the Encryption Keys step and deleted keys. At first this didn't look like it had improved things as the Initialization still appeared to have failed, but a refresh updated it to a tick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-7559057336965370271?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/7559057336965370271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=7559057336965370271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7559057336965370271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7559057336965370271'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/ssrs-setup.html' title='SSRS setup'/><author><name>oscil8er</name><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-4742114022404761409.post-101244148707626492</id><published>2007-08-03T17:07:00.000+12:00</published><updated>2007-08-09T11:18:05.140+12:00</updated><title type='text'>Business Scorecard Manager development notes</title><content type='html'>It's a typical requirement to have a scorecard that needs regular updating to refer to a new current period. It's also typical that the database contains data for future periods which means Time Intelligence can't be used to get the scorecard to dynamically update itself. So what options does MOBSM give us for programmatic control?&lt;br /&gt;&lt;br /&gt;For the scorecard, all the necessary objects are exposed as per the sample code which updates the current and previous members for all kpis in all scorecards.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;IBpm pmServer = PmService.CreateInstance(BsmServerUrl); ScorecardCollection scorecards = pmServer.GetScorecards();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;for (int i = 0; i &lt;&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Scorecard scorecard = scorecards[i];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;KpiCollection kpis = pmServer.GetKpisFromScorecard(scorecard.Guid);&lt;br /&gt;for (int j = 0; j &lt;&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Kpi kpi = kpis[j];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;KpiMeasure kpiactual = kpi.Actual;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;kpiactual.TimeIntelligenceCurrentMember = new Member(&lt;em&gt;specify member here&lt;/em&gt;&lt;specify&gt;&lt;assign&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;kpiactual.TimeIntelligencePreviousMember = new Member(&lt;em&gt;specify member here&lt;/em&gt;&lt;specify&gt;&lt;assign&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;pmServer.CreateKpi(kpi);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Unfortunately it's not quite so easy to update the periods displayed in chart report views. The Kpi.ReportView.CustomData attribute is an xml string that contains the report view definition, and lurking within this is more encapsulated xml containing the chart definitions. By the time you're finished you will know xml traversal like the back of your hand (and if you have the same attitude to xml as me, you will like the back of your hand a LOT better!).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Addendum:&lt;br /&gt;I realised that I'd be a lot better off adding some calculated members and hierarchies to the time dimension and referring to these instead of updating the current and previous time intelligence members for the scorecard and traversing the chart's IncludedMembers.&lt;br /&gt;&lt;br /&gt;The techniques described above are more appropriate for dynamic update based on user selection than as part of a period end process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-101244148707626492?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/101244148707626492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=101244148707626492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/101244148707626492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/101244148707626492'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/business-scorecard-manager-development.html' title='Business Scorecard Manager development notes'/><author><name>oscil8er</name><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-4742114022404761409.post-2015324805462227181</id><published>2007-08-01T09:56:00.000+12:00</published><updated>2007-08-09T13:24:12.253+12:00</updated><title type='text'>SSAS development notes</title><content type='html'>When the data source has changed, use menu option Data Source View:Refresh to update the dsv.&lt;br /&gt;&lt;br /&gt;After creating dimensions, open the Cube definition and right-click in the Dimensions tree to add the new dimensions.&lt;br /&gt;&lt;br /&gt;Deployment error:Failed trust relationship between workstation and server&lt;br /&gt;&lt;a href="http://prologika.com/CS/blogs/blog/archive/2007/06/11/trust-relationships.aspx"&gt;http://prologika.com/CS/blogs/blog/archive/2007/06/11/trust-relationships.aspx&lt;/a&gt;&lt;br /&gt;Fix: Remove all old domain references from roles&lt;br /&gt;&lt;br /&gt;If you're having problems getting changes to display in your cubes, reprocess and redeploy &lt;u&gt;absolutely everything&lt;/u&gt;. Reconnect and refresh the cube browser too.&lt;br /&gt;&lt;br /&gt;I updated the solution deployment target to a different server but it kept reverting back to the previous target. Sourcesafe informed me that the only file that changed when I updated the deployment info was the .suo file. Further reading on the web suggests that source should be managed from within Visual Studio only, not via SourceSafe, and things are more likely to work properly.&lt;br /&gt;&lt;br /&gt;Some guy wrote in a newsgroup:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Figured out how to get the members to appear in date order - it's not as simple as setting attribute orderby properties. The steps I took are as follows:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;open the time dim&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;dimension:add business intelligence&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;specify attribute ordering&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;for my mmm-yy attribute, select ordering attribute = new attribute&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;select a suitable ordering attribute e.g. one with date data type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;new attribute appears: "ordering mmm-yy onwhateverorderingattributeyouselected"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;next and finish&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Hope that helps somebody&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;David&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;"David Norman" wrote:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; If I have date data 2005-01-01, 2005-02-01, 2005-03-01 in Excel and use this&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; as the X axis for a chart, I can format it as "mmm-yy" and the axis will&gt; display Jan-05, Feb-05, Mar-05.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; How do I achieve the same result using the OWC chart component and cube data&gt; source?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; If I drag the date dimension level from the field list to the category axis&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; containing the same data, I don't have the equivalent date formatting options.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; If I create a named calculation Left(Month,3)+'-'+Year then the members list&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; in alphabetical order instead of date order i.e. Feb-05 appears before Jan-05&gt; on the axis.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; Any suggestions appreciated,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; David&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:0;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:+0;"&gt;New ordering attributes can break existing ordering that use the same attribute. It may be necessary to remove all ordering attributes and recreate them together.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-2015324805462227181?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/2015324805462227181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=2015324805462227181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2015324805462227181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2015324805462227181'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/08/ssas-development-notes.html' title='SSAS development notes'/><author><name>oscil8er</name><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-4742114022404761409.post-1139043438006824513</id><published>2007-07-27T09:57:00.000+12:00</published><updated>2007-07-27T10:16:35.121+12:00</updated><title type='text'>Attaching to network printer without directory or dns assistance</title><content type='html'>If you visit another company's office and connect your laptop to their windows network, you'll find that you aren't a member of their domain which can make a lot of typical office activities a bit more difficult to achieve. Printing is a biggie.&lt;br /&gt;&lt;br /&gt;First step is to find out from someone on the domain what the ip address of the printer is. Get them to bring up the Printer Properties dialog and go to the Sharing tab. The printer will have a sharing name. Pinging the sharing name from the command prompt will give you the ip address.&lt;br /&gt;&lt;br /&gt;Now you can Add Printer. Here's where is gets a bit counterintuitive: you select Local Printer &lt;em&gt;(not Network Printer - I always thought local meant directly connected to your PC, but there are more options in this wizard path than I realised)&lt;/em&gt;. Select Create a New Port and choose Standard TCP/IP Port. Enter the IP address (the port will be completed for you).&lt;br /&gt;&lt;br /&gt;Then you have to select the Manufacturer and Model. My experience has been that if I choose something in the ballpark then plain old document printing will usually work. e.g. the model HP Laserjet 4000 Series PS provides printing for a HP Laserjet 4345 mfp printer, but its other fancy features may be unavailable.&lt;br /&gt;&lt;br /&gt;The guidance out there on the web is to choose PS first followed by PCL6 followed by PCL if confronted with multiple similar choices.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-1139043438006824513?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/1139043438006824513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=1139043438006824513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1139043438006824513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/1139043438006824513'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/07/attaching-to-network-printer-without.html' title='Attaching to network printer without directory or dns assistance'/><author><name>oscil8er</name><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-4742114022404761409.post-7390314275849820502</id><published>2007-07-27T09:35:00.000+12:00</published><updated>2007-08-02T10:58:57.831+12:00</updated><title type='text'>SSIS development notes</title><content type='html'>&lt;p&gt;Mirror any settings you change in the package in your development package configuration. Otherwise you risk the config values blatting your changes.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Click OK to save transformation changes, don't just close the editor!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;When tidying up the dtsConfig xml formatting, don't put newlines and tabs between the ConfiguredValue tags.&lt;/p&gt;&lt;p&gt;This error:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;Error at Create x Table [DTS.Pipeline]: The index is not valid.ADDITIONAL INFORMATION:Exception from HRESULT: 0xC0048004 (Microsoft.SqlServer.DTSPipelineWrap)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;just means that SSIS is playing up. Recreate the offending data source (I wonder if any of the service packs fix this?)&lt;/p&gt;&lt;p&gt;When copying and pasting data flow elements, unselect the copied elements before pasting.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;You've added a dozen package variables in the wrong scope, and the scope can't be edited in the variable view. Aaargh! Do you have to delete and recreate them? No, you can open the code designer view of the package, find the xml for the variables and move them to the appropriate place. It's not really much easier I'm afraid.&lt;/p&gt;&lt;p&gt;When columns are added to the data source, the Union All transformation fails to recognise their existence. This transformation has to be recreated.&lt;/p&gt;&lt;p&gt;If you're developing on a virtual machine that has been created by restoring from a windows backup, the first tab of the Regional and Language Options control panel may revert back to US English. Changing all the settings on the front tab will get your usual desktop apps behaving properly, but SSIS may still be confused! If you have a SQL task that calls a stored procedure with a date parameter, you may find that the sp will receive a date in the wrong format. The way to fix this is to select the Default User Account Settings tick box on the Advanced tab of the Regional and Language Options control panel.&lt;/p&gt;&lt;p&gt;When executing solutions or packages within Visual Studio I get duplicate designer windows opening up. The icons for these dupes are the same as for miscellaneous files. The main nuisance is if after execution I decide to make further changes and I mistakenly change the dupes instead of the originals. What are these windows for?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-7390314275849820502?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/7390314275849820502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=7390314275849820502' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7390314275849820502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7390314275849820502'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/07/ssis-development-notes.html' title='SSIS development notes'/><author><name>oscil8er</name><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-4742114022404761409.post-4017146164035666126</id><published>2007-07-26T11:34:00.000+12:00</published><updated>2007-07-26T14:59:49.716+12:00</updated><title type='text'>Restoring windows backup didn't restore all regional and language options</title><content type='html'>Strange, restoring into a vanilla os from a backup file didn't bring across the regional settings on the first tab of Regional and Language Options.&lt;br /&gt;&lt;br /&gt;I only noticed this because I hit a &lt;a href="http://support.microsoft.com/kb/918038"&gt;documented SSIS error&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-4017146164035666126?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/4017146164035666126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=4017146164035666126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4017146164035666126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/4017146164035666126'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/07/restoring-windows-backup-didnt-restore.html' title='Restoring windows backup didn&apos;t restore all regional and language options'/><author><name>oscil8er</name><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-4742114022404761409.post-2351705891474567993</id><published>2007-07-25T17:42:00.001+12:00</published><updated>2007-07-26T09:36:06.795+12:00</updated><title type='text'>SQL Server 2005, Visual Studio 2005 and Visual Studio 2005 SP1</title><content type='html'>If you have installed both SQL Server 2005 and Visual Studio 2005 then probably both of the following will be installed:&lt;br /&gt;&lt;br /&gt;Microsoft Visual Studio 2005 Premier Partner Edition - ENU&lt;br /&gt;Microsoft Visual Studio 2005 X Edition - ENU&lt;br /&gt;&lt;br /&gt;Sure it's untidy that the VS2005 X install doesn't detect and replace Premier, but it hasn't caused any problems (so far). If you're like me, you haven't dared remove Premier because you're worried about regression, and probably you just use X because it is a superset of Premier anyway.&lt;br /&gt;&lt;br /&gt;However now it's time to put Visual Studio 2005 SP1 on. What's it going to do?&lt;br /&gt;&lt;br /&gt;It asked me if I want to install on Premier. But I don't use Premier! Oh no, it's chosen the wrong one! I cancelled the installation and to my surprise it then asked if I wanted to install on X? Phew! But now I'm not sure if I need to install on Premier also. Considering it's supposed to take a minimum of 90 minutes, do I really want to sit through that twice?&lt;br /&gt;&lt;br /&gt;I decided to install only on X, and hit a "digital signature check" error. &lt;a href="http://www.mindsharpblogs.com/Aaron/archive/2007/05/03/1740.aspx"&gt;This post&lt;/a&gt; describes the fix for a software stack that's very similar to mine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-2351705891474567993?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/2351705891474567993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=2351705891474567993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2351705891474567993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2351705891474567993'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/07/sql-server-2005-visual-studio-2005-and.html' title='SQL Server 2005, Visual Studio 2005 and Visual Studio 2005 SP1'/><author><name>oscil8er</name><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-4742114022404761409.post-995216039167167059</id><published>2007-07-25T10:02:00.000+12:00</published><updated>2007-07-25T10:30:40.443+12:00</updated><title type='text'>More P2V travails</title><content type='html'>Before restoring from backup I changed the registry for intelppm.sys as per previous posting. The settings didn't revert on restore so the stop error went away.&lt;br /&gt;&lt;br /&gt;Since stop errors that require registry fixes are a nuisance to sort out, it's tempting to preemptively disable intelppm.sys and processr.sys as part of the basic steps, immediately after firing up the restore vmc.&lt;br /&gt;&lt;br /&gt;The runtime error I posted about previously was solved by repairing dotnetframework2.0. Not really sure why it broke. Probably for the same reason I was prompted for the dotnetfx install during the Win2K3 repair.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-995216039167167059?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/995216039167167059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=995216039167167059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/995216039167167059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/995216039167167059'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/07/more-p2v-travails.html' title='More P2V travails'/><author><name>oscil8er</name><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-4742114022404761409.post-6574922190194348215</id><published>2007-07-24T13:57:00.001+12:00</published><updated>2007-07-25T10:28:09.493+12:00</updated><title type='text'>Better (but probably not best) practice for Windows/Virtual PC P2V</title><content type='html'>&lt;p&gt;&lt;strong&gt;Basic steps:&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Back up the physical system to a bkf file&lt;br /&gt;Create a vanilla vhd using the operating system of the physical system&lt;br /&gt;Make a copy of the vanilla vhd to a restore vhd&lt;br /&gt;Create an empty backup vhd&lt;br /&gt;Mount the backup vhd using vhdmount&lt;br /&gt;Copy the bkf file into the backup vhd (might need to compact or split it)&lt;br /&gt;Unmount the backup vhd&lt;br /&gt;Configure a vmc with restore vhd as disc 1 and backup vhd as disc 2&lt;br /&gt;Fire up the vmc and restore the backup&lt;br /&gt;Reboot, cross fingers and troubleshoot device issues&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;If there are issues:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Configure another vmc with the vanilla vhd as disc 1 and restore vhd as disc 2&lt;/p&gt;&lt;p&gt;Fire up the vmc and use windows tools to copy required files, edit offline registry etc&lt;br /&gt;&lt;br /&gt;Don't faff around with recovery console or utility boot discs more than necessary - it's all a big pain and you'll end up having to juggle various iso's and vfd's.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-6574922190194348215?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/6574922190194348215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=6574922190194348215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/6574922190194348215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/6574922190194348215'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/07/better-but-probably-not-best-practice.html' title='Better (but probably not best) practice for Windows/Virtual PC P2V'/><author><name>oscil8er</name><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-4742114022404761409.post-3956203126883724816</id><published>2007-07-23T17:05:00.001+12:00</published><updated>2007-07-25T10:26:21.553+12:00</updated><title type='text'>Getting big files into vhds via vhdmount</title><content type='html'>Having trouble using or copying big files from shared folders or linked drives because of throughput or memory constraints?&lt;br /&gt;&lt;br /&gt;Mount a disc ,and copy in your files, then unmount and commit changes. Vhdmount then takes a loooong time merging undo discs, but at least it works!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2007/06/20/double-clicking-on-a-vhd-to-mount-it-take-2.aspx"&gt;Windows explorer integration for vhdmount&lt;/a&gt; helps out a lot with this.&lt;br /&gt;&lt;br /&gt;I find this a great way to get image or backup files into blank vhds. I partition with the appropriate windows setup cd and then do a quick-format as prompted on mounting the vhd, followed by the file copy.&lt;br /&gt;&lt;br /&gt;My experience is that if the file is really big (say 10GB) then at the end of the copy it will sit there saying "5 seconds remaining" for a long time. I haven't been patient enough to let it sit for a day to see if it completes, but there's very little activity of any kind so I think it just dies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-3956203126883724816?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/3956203126883724816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=3956203126883724816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3956203126883724816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/3956203126883724816'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/07/p2v-via-vhdmount.html' title='Getting big files into vhds via vhdmount'/><author><name>oscil8er</name><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-4742114022404761409.post-8220814915568329194</id><published>2007-07-23T09:49:00.000+12:00</published><updated>2007-07-24T10:49:32.169+12:00</updated><title type='text'>Resetting recovery console password and mounting vhd</title><content type='html'>Instructions at &lt;a href="http://www.petri.co.il/change_recovery_console_password.htm"&gt;petri.co.il&lt;/a&gt; and &lt;a href="http://support.microsoft.com/kb/322672"&gt;http://support.microsoft.com/kb/322672&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Didn't work with login used due to error: 0x32 Request not supported.&lt;br /&gt;&lt;br /&gt;Googling for this error returned &lt;a href="http://www.microsoft.com/italy/technet/community/mvp/editoriali/recovery/avvio.mspx"&gt;this page&lt;/a&gt; which unfortunately is only available in Italian. Excerpt:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Attenzione: non è possibile modificare la password di DSRM mediante l’utility NTDSUTIL nel mentre si opera in DSRM (Errore: “Setting password failed. Win32 Error Code: 0x32. Error Message: The request is not supported.”). Viceversa è possibile farlo da DSRM mediante la sequenza di tasti Control+Alt+Del e cliccando sul bottone “Change Password...” oppure inserendo il comando seguente: “net user Administrator *”.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Babelfish translated this as:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Attention: Error is not possible to meanwhile modify password of DSRM by means of utility the NTDSUTIL the work in DSRM (: "Setting password failed. Win32 Error Tails: 0x32. Error Message: The request is not supported."). Viceversa is possible to make it from DSRM by means of the sequence of Control+Alt+Del keys and cliccando on the button "Change Password..." or inserting the following commando: "net user Administrator *". &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;In the end I didn't need to figure this out because loginrecovery.com succeeded in deciphering the local administrator password.&lt;br /&gt;&lt;br /&gt;I put a load of command line registry editing tools on a disc and mounted it on the guest. Unfortunately they all page faulted - they're obviously pretty old and haven't been updated to latest windows versions. I'm really surprised that I couldn't find a registry editor that can be used in the recovery console.&lt;br /&gt;&lt;br /&gt;So then I decided to try and mount the vhd on the host so I could use the host's regedit to manually fix the guest's registry file.&lt;br /&gt;&lt;br /&gt;I downloaded and installed vhdmount (part of Virtual Server) and from the command line I did the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cd c:\program files\microsoft virtual server\vhdmount&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;vhdmount /m /f vhdfile.vhd &lt;virtual&gt;V:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;which gave me the error "Invalid command line parameters."&lt;br /&gt;&lt;br /&gt;I then tried just plugging in instead of mounting&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;vhdmount /p /f vhdfile.vhd&lt;virtual&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;which resulted in error "Failed to plug in the Virtual Hard Disk (VHD). The specified file is not a valid VHD."&lt;br /&gt;&lt;br /&gt;I then typed &lt;span style="font-family:courier new;"&gt;SET VHD_MOUNT_TRACE=1&lt;/span&gt; and tried this command again which gave me:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[Info] Default user locale is 0x1409[Warning] Dictionary VhdMountStrings.dll doesn't exist.[Info] GetSCSIAddress called for VHD: vhdfile.vhd[Info] Verifying file: vhdfile.vhd[Error] Query failed: 0x57[Error] GetSCSIAddress failed. error code = 0x37[Info] MountVHD called for VHD: vhdfile.vhd[Info] Verifying file: vhdfile.vhd[Error] Invalid VHD signature found: 0x00[Warning] Footer of the given VHD is incorrect. Hence checking the VHD's header&lt;br /&gt;The Virtual Hard Disk is successfully plugged in as a virtual disk device.[Info] VHDMount successful.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"Successful", huh. VHDMount is obviously very pleased to come anywhere near my vhd without crashing itself.&lt;br /&gt;&lt;br /&gt;The vhd is split so perhaps this explains incorrect footer. I then tried to fire up Virtual PC to compact the vhd, but it hanged on the splash screen. So now I know what VHDMount was successful at: giving itself exclusive access to the vhd without doing anything useful! I had to kill VPC, unmount the vhd and start VPC again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-8220814915568329194?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/8220814915568329194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=8220814915568329194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8220814915568329194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/8220814915568329194'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/07/resetting-recovery-console-password.html' title='Resetting recovery console password and mounting vhd'/><author><name>oscil8er</name><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-4742114022404761409.post-5363975284023414200</id><published>2007-07-19T08:54:00.000+12:00</published><updated>2007-07-25T10:24:26.901+12:00</updated><title type='text'>P2V dramas with Virtual PC and NTBackup</title><content type='html'>I've been following the instructions in this &lt;a href="http://www.vmware.com/community/message.jspa?messageID=444988"&gt;discussion group posting&lt;/a&gt; with the exception that I'm using Virtual PC.&lt;br /&gt;&lt;br /&gt;Installing a vanilla os on to a vpc is obviously no big deal. But it got harder sooner than I would have liked - restoring the bkf file. I have hit the following problems:&lt;br /&gt;&lt;br /&gt;I couldn't restore from a a shared folder due to known issues.&lt;br /&gt;&lt;br /&gt;I tried to copy the bkf file from a shared folder to the guest c drive but I kept getting a device i/o error. It appears that the host needs to have almost as much memory available as the size of the file being copied. Obviously this is problematic for bkf files that can be in the multi gigabyte range.&lt;br /&gt;&lt;br /&gt;I then split the bkf file into multiple parts with winzip and minimised the amount of guest memory to maximise the chances of the copy completing successfully.&lt;br /&gt;&lt;br /&gt;Finally I could restore the bkf file!&lt;br /&gt;&lt;br /&gt;However when I restarted, I got an error box at the login screen as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Microsoft Visual C++ 6.0 program&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;C:\Prog...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Annoyingly this error box was right in front of the login box and I couldn't move the error box or close it (the mouse stopped working).&lt;br /&gt;&lt;br /&gt;I tried entering login credentials blind without success (couldn't see what domain was selected and couldn't see the contents of any dialog boxes that popped up).&lt;br /&gt;&lt;br /&gt;Finally I rebooted the image in the hope the error or the mouse failure would go away but I got a boot error on a black screen instead:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Windows could not start because of an error in the software.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Please report this problem as :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;load needed DLLs for HAL.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Please contact your support person to report this problem.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Aha! Here was something referred to in the instructions. I booted from the Win2K3 CD and went to the recovery console to replace the hal file but found that it wouldn't take the current administrator password.&lt;br /&gt;&lt;br /&gt;It turns out that the recovery console admin password will be the one used when Win2K3 was initially installed, and subsequent password changes don't affect this. I don't have that password and had to use &lt;a href="http://www.loginrecovery.com/"&gt;http://www.loginrecovery.com/&lt;/a&gt; to get the password back.&lt;br /&gt;&lt;br /&gt;While I was waiting 48 hours (to get the password for free) I impatiently tried to repair the server using the Win2K3 CD to see if that would sort things out.&lt;br /&gt;&lt;br /&gt;A required file called cpqteam.hlp could not be found. Who requires a help file?? Cancelled.&lt;br /&gt;&lt;br /&gt;The next one was a bit tougher to figure out: install.exe. The default path on the c drive was c:\windows\microsoft.net\v2.0.50727\Microsoft .NET Framework 2.0. So I downloaded dotnetfx.exe, extracted the files, converted them to iso, captured the image as a cd and selected the file.&lt;br /&gt;&lt;br /&gt;The repair chugged on a bit further and then crashed dramatically with stop error 0x000000CE DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS for file intelppm.sys.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2005/10/24/484461.aspx"&gt;Virtual PC Guy&lt;/a&gt; reckons I should disable the driver in the registry but with a non booting guest and no access to recovery console (at least until I hear from loginrecovery) I think I've hit the wall...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-5363975284023414200?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/5363975284023414200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=5363975284023414200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5363975284023414200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/5363975284023414200'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/07/p2v-with-virtual-pc-and-ntbackup.html' title='P2V dramas with Virtual PC and NTBackup'/><author><name>oscil8er</name><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-4742114022404761409.post-7715837028058436012</id><published>2007-07-17T15:27:00.000+12:00</published><updated>2007-07-17T15:28:05.502+12:00</updated><title type='text'>More P2V info from some forum</title><content type='html'>“The Path To Fast P2V” – The Quicksilver Project&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;We all have tons of physical machines we want to migrate to Virtual Hosts, and we all want to do it in a smooth low administrative cost process.&lt;br /&gt;&lt;br /&gt;Well, all we have to do is to use the VSMT  right? (Virtual Server Migration Toolkit). The problem is that its too complex to use it, and in the end the hours you spend  to run all the VSMT process is maybe even bigger than the one you would take to set it up the hole thing again without VSMT at all!!&lt;br /&gt;&lt;br /&gt;This is what I came up after some small researching.&lt;br /&gt;&lt;br /&gt;I Managed to P2V in 2 Single Steps, and I would like to share my experience with you.&lt;br /&gt;&lt;br /&gt;Suppose you have a nice Windows 2003 Sp1 Machine running on a old Server, and you want to P2V it to Virtual Server. Simply you use your cloning solution of you choise (preferably I use Acronis and Ghost), and deliver the image to the Virtual machine as it was a physical one.&lt;br /&gt;&lt;br /&gt;Logical when the Virtual Machine boots you get a “Blue Screen of Death” because of the hardware Incompatibility.&lt;br /&gt;&lt;br /&gt;All you have to do is to boot up the Virtual Machine with the Windows 2003 Sp1 CD, choose the R option to go to the Recovery Console, when you just get the famous “Dos Like Console”&lt;br /&gt;&lt;br /&gt;This is the amazing part.. you copy from the CD  of Windows 2003 Sp1 the hal.dll and ntoskrnl.exe and override in the Windows system32 directory.&lt;br /&gt;&lt;br /&gt;In simple Commands you do as follows..&lt;br /&gt;&lt;br /&gt;1.boot the Virtual machine with the cd of Windows 2003 SP1&lt;br /&gt;&lt;br /&gt;2. Press R for the Recovery Console&lt;br /&gt;&lt;br /&gt;3. choose your Windows Installation (usually option 1)&lt;br /&gt;&lt;br /&gt;Go to windows system32 folder by typping cd c:\windows\system32&lt;br /&gt;&lt;br /&gt;Then enter the drive letter of cd-rom (usually dJ&lt;br /&gt;&lt;br /&gt;At d: prompt type cd i386&lt;br /&gt;&lt;br /&gt;Then type as follows&lt;br /&gt;&lt;br /&gt;Expand ntoskrnl.ex_ c:&lt;br /&gt;&lt;br /&gt;Expand hal.dl_ c:&lt;br /&gt;&lt;br /&gt;For each command you will take a notification for overwriting the original files.. we choose yes to replace the files.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Then rebout the machine, remove the cd-rom of window 2003 sp1, let the machine boot and press F8 to go to option menu for Safe Boot.&lt;br /&gt;&lt;br /&gt;THERE YOU ARE, THE TARGET MACHINE IS BOOTING WITH NO ERRORS.&lt;br /&gt;&lt;br /&gt;IT WILL AUTO DISCOVER ALL THE HARDWARE AND IT WILL PLAY OK&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;100% TESTED, MIGRATED MANY MACHINES LIKE THAT.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;PLEASE FEEL FREE TO CONTACT ME FOR ANY INFORMATION YOU MAY NEED.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;BEST REGARDS.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;ALEXOPOULOS IOANNIS MCSE MCT  MVP Candidate.&lt;br /&gt;&lt;br /&gt;Ioannis_alexopoulos@hotmail.com (my msn account, feel  free to add me)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-7715837028058436012?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/7715837028058436012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=7715837028058436012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7715837028058436012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7715837028058436012'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/07/more-p2v-info-from-some-forum.html' title='More P2V info from some forum'/><author><name>oscil8er</name><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-4742114022404761409.post-7232981701103196762</id><published>2007-07-17T15:25:00.001+12:00</published><updated>2007-07-17T15:26:33.371+12:00</updated><title type='text'>P2V info from microsoft.public.virtualserver</title><content type='html'>1.  Sylvain Lafontaine fill the blanks, no spam please  &lt;br /&gt;&lt;a href="http://groups.google.ca/groups/profile?enc_user=" target="_top"&gt;View profile&lt;/a&gt;&lt;br /&gt; More options Mar 18, 5:40 am&lt;br /&gt;Newsgroups: microsoft.public.virtualserver&lt;br /&gt;From: "Sylvain Lafontaine" &lt;sylvain&gt;&lt;br /&gt;Date: Sat, 17 Mar 2007 13:40:47 -0400&lt;br /&gt;Local: Sun, Mar 18 2007 5:40 am&lt;br /&gt;Subject: Re: Migrating a physical server as VM&lt;br /&gt;&lt;a class="l" id="ra" href="http://groups.google.ca/group/microsoft.public.virtualserver/post?inreplyto=6df49d113927c6e6&amp;reply_to=author&amp;amp;_done=%2Fgroup%2Fmicrosoft.public.virtualserver%2Fbrowse_frm%2Fthread%2Fe3148b61d4fbf067%2F6df49d113927c6e6%3F" target="_top"&gt;Reply to author&lt;/a&gt;  &lt;a class="l" id="f" href="http://groups.google.ca/group/microsoft.public.virtualserver/post?inreplyto=6df49d113927c6e6&amp;forward=1&amp;amp;_done=%2Fgroup%2Fmicrosoft.public.virtualserver%2Fbrowse_frm%2Fthread%2Fe3148b61d4fbf067%2F6df49d113927c6e6%3F" target="_top"&gt;Forward&lt;/a&gt;  &lt;a class="l" href="http://groups.google.ca/group/microsoft.public.virtualserver/msg/6df49d113927c6e6?dmode=print" target="_blank"&gt;Print&lt;/a&gt;  &lt;a class="l" href="http://groups.google.ca/group/microsoft.public.virtualserver/msg/6df49d113927c6e6" target="_top"&gt;Individual message&lt;/a&gt;  &lt;a class="l" href="http://groups.google.ca/group/microsoft.public.virtualserver/msg/6df49d113927c6e6?dmode=source" target="_blank"&gt;Show original&lt;/a&gt;  &lt;a class="l" href="http://groups.google.ca/groups/abuse?group=microsoft.public.virtualserver&amp;type=message&amp;amp;url=http%3A%2F%2Fgroups.google.ca%2Fgroup%2Fmicrosoft.public.virtualserver%2Fmsg%2F6df49d113927c6e6&amp;_done=%2Fgroup%2Fmicrosoft.public.virtualserver%2Fbrowse_frm%2Fthread%2Fe3148b61d4fbf067%2F6df49d113927c6e6%3F" target="_blank"&gt;Report this message&lt;/a&gt;  &lt;a href="http://groups.google.ca/groups/search?enc_author=&amp;amp;scoring=d" target="_top"&gt;Find messages by this author&lt;/a&gt;&lt;br /&gt;&lt;a name="msg_6df49d113927c6e6"&gt;&lt;/a&gt;Yes, there are other tools to migrate a physical machine to a virtual. However, it's not always easy and with some of these tools/methods, you will have to make a reparation step to replace the HAL layer before Windows will be able to boot under its new virtualized environment.  The ACPI set up in the BIOS is also another thing that you must check up before making the P2V migration:&lt;br /&gt;&lt;a href="http://www.rtfm-ed.co.uk/docs/vmwdocs/whitepaper-upgrading-cpus-on-non-acpi-p2v.pdf" target="_blank" rel="nofollow"&gt;http://www.rtfm-ed.co.uk/docs/vmwdocs/whitepaper-upgrading-cpus-on-no...&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2004/11/24/269412.aspx" target="_blank" rel="nofollow"&gt;http://blogs.msdn.com/virtual_pc_guy/archive/2004/11/24/269412.aspx&lt;/a&gt; &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2004/11/30/272662.aspx" target="_blank" rel="nofollow"&gt;http://blogs.msdn.com/virtual_pc_guy/archive/2004/11/30/272662.aspx&lt;/a&gt; &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2004/12/10/279667.aspx" target="_blank" rel="nofollow"&gt;http://blogs.msdn.com/virtual_pc_guy/archive/2004/12/10/279667.aspx&lt;/a&gt;&lt;br /&gt;Here are some other automated tools or manual methods for doing your P2V (Physical to Virtual) migration:&lt;br /&gt;&lt;a href="http://4sysops.com/archives/p2v-for-vmware-migrate-physical-to-virtual-resources/" target="_blank" rel="nofollow"&gt;http://4sysops.com/archives/p2v-for-vmware-migrate-physical-to-virtua...&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.invirtus.com/content/view/808/394/" target="_blank" rel="nofollow"&gt;http://www.invirtus.com/content/view/808/394/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.acronis.com/enterprise/products/ATISWin/universal-restore.html" target="_blank" rel="nofollow"&gt;http://www.acronis.com/enterprise/products/ATISWin/universal-restore....&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vmware.com/products/beta/converter/" target="_blank" rel="nofollow"&gt;http://www.vmware.com/products/beta/converter/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.rtfm-ed.eu/docs/vmwdocs/whitepaper-ultimatep2v-quickstart.pdf" target="_blank" rel="nofollow"&gt;http://www.rtfm-ed.eu/docs/vmwdocs/whitepaper-ultimatep2v-quickstart.pdf&lt;/a&gt;&lt;br /&gt;In the case of VMWare converter, you will have to convert it back to VHD but only after removing the previous VMWare additions; see:&lt;br /&gt;&lt;a href="http://vmtoolkit.com/files/default.aspx" target="_blank" rel="nofollow"&gt;http://vmtoolkit.com/files/default.aspx&lt;/a&gt; &lt;a href="http://vmtoolkit.com/blogs/paul/archive/2006/12/14/preparing-a-windows-vmdk-for-conversion.aspx" target="_blank" rel="nofollow"&gt;http://vmtoolkit.com/blogs/paul/archive/2006/12/14/preparing-a-window...&lt;/a&gt;&lt;br /&gt;If you want to use an imaging software like Ghost or Acronis, you will have to set up a second virtual environment for the sole purpose of restoring an image directly to a vhd: first you create two empty VHD then you attach them to the virtual environment as second and third virtual hard drives, you copy the image file(s) to the second hard drive and you restore it to the third one.  All you have to do now is to detach this last vhd and use it as the main virtual hard drive for creating a new virtual environment.  (There are other methods like using a booting DVD or a network connectin but these are often more complicated to set up.)&lt;br /&gt;When using some older imaging softwares, it's also a good idea to partition the target VHD before making the restoration to make sure that the master boot record on the virtual drive has been correctly written or you can take the precaution of imaging the whole physical hard drive which is used as the source instead of just backing/restoring a single partition (and you must do it even if there is only one single partition on it); otherwise the MBR might be incorrectly written on the target virtual drive after the restoration.  (Probably that you won't have this problem with a more recent version of these softwares but it's better to be safe then sorry.)&lt;br /&gt;You might have some other problems, for example if your operating system was on the D:\ drive and you want it now to be on the C:\ drive.  For a discussion of this, take a look at:&lt;br /&gt;&lt;a href="http://help.lockergnome.com/windows/Cloned-Drive-Ghost-10-Log-Drive-ftopict555352.html" target="_blank" rel="nofollow"&gt;http://help.lockergnome.com/windows/Cloned-Drive-Ghost-10-Log-Drive-f...&lt;/a&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.hardware/browse_frm/thread/9b00b92a2e7b865/81a9dbdf1dc4e7e7?lnk=st&amp;q=%22+have+XP+Pro+with+a+40GB+HD+(partitioned+20GB%2F20GB)+NTFS.+I+installed%22&amp;amp;rnum=1#81a9dbdf1dc4e7e7" target="_blank" rel="nofollow"&gt;http://groups.google.com/group/microsoft.public.windowsxp.hardware/br...&lt;/a&gt;&lt;br /&gt;-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC E-mail: sylvain aei ca (fill the blanks, no spam please)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-7232981701103196762?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/7232981701103196762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=7232981701103196762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7232981701103196762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/7232981701103196762'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/07/p2v-info-from-microsoftpublicvirtualser.html' title='P2V info from microsoft.public.virtualserver'/><author><name>oscil8er</name><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-4742114022404761409.post-2930035425973750885</id><published>2007-07-17T14:41:00.001+12:00</published><updated>2007-07-25T10:23:45.210+12:00</updated><title type='text'>Virtual PC P2V and linked disc</title><content type='html'>&lt;span style="font-family:lucida grande;"&gt;Following the process of creating the virtual machine as per &lt;/span&gt;&lt;a href="http://support.microsoft.com/kb/912826"&gt;&lt;span style="font-family:lucida grande;"&gt;KB912826&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:lucida grande;"&gt; and starting the &lt;/span&gt;&lt;a href="http://www.helpwithwindows.com/WindowsXP/howto-18.html"&gt;&lt;span style="font-family:lucida grande;"&gt;ASR Restore&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:lucida grande;"&gt; to restore the backup to it:&lt;br /&gt;&lt;br /&gt;If after pressing F2 to initiate ASR you get the following error:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;Setup was unable to restore the configuration of your system because of the following error: The capacity of the replacement hard disk drives is insufficient, and cannot be used to recover the partitions on the original system disk. The replacement hard disk drives must be at least as large as the disks present on the original system.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;And you've read &lt;/span&gt;&lt;a href="http://support.microsoft.com/kb/314686"&gt;&lt;span style="font-family:lucida grande;"&gt;KB314686&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:lucida grande;"&gt; and tweaked the dynamically expanding disc size but still can't get rid of the error message:&lt;br /&gt;&lt;br /&gt;Then you've probably got the vhds the wrong way round! The dynamically expanding vhd is attached to the vm first and the linked vhd is attached second. It's possible to make this mistake if you aren't careful following the instructions in KB912826, because step 5f incorrectly refers to the "expandable virtual disk file that you created in step 3", but it's the linked disc file that's created in step 3.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4742114022404761409-2930035425973750885?l=sortitious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sortitious.blogspot.com/feeds/2930035425973750885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4742114022404761409&amp;postID=2930035425973750885' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2930035425973750885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4742114022404761409/posts/default/2930035425973750885'/><link rel='alternate' type='text/html' href='http://sortitious.blogspot.com/2007/07/virtual-pc-p2v-and-troubleshooting.html' title='Virtual PC P2V and linked disc'/><author><name>oscil8er</name><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></feed>
