<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BI Monkey</title>
	<atom:link href="http://www.bimonkey.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bimonkey.com</link>
	<description>James Beresford on Microsoft BI and Consulting in Sydney, Australia</description>
	<lastBuildDate>Tue, 09 Mar 2010 09:57:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SSIS Command Line Utilities part 2: dtexec</title>
		<link>http://www.bimonkey.com/2010/03/ssis-command-line-utilities-part-2-dtexec/</link>
		<comments>http://www.bimonkey.com/2010/03/ssis-command-line-utilities-part-2-dtexec/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 09:57:06 +0000</pubDate>
		<dc:creator>BI Monkey</dc:creator>
				<category><![CDATA[Integration Services]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[dtexec]]></category>

		<guid isPermaLink="false">http://www.bimonkey.com/?p=712</guid>
		<description><![CDATA[In my previous post on dtutil, I looked at the command line utility to move and alter SSIS packages. In this post I will be looking at dtexec, the command line utility that executes packages. It allows for significant alteration of run-time options, including configured values, connections, logging and so on.
dtexec: Basic Package Execution
Like dtutil, [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a title="SSIS Command Line Utilities part 1: dtutil" href="http://www.bimonkey.com/2010/01/ssis-command-line-utilities-part-1-dtutil/">previous post on dtutil</a>, I looked at the command line utility to move and alter SSIS packages. In this post I will be looking at <strong>dtexec</strong>, the command line utility that executes packages. It allows for significant alteration of run-time options, including configured values, connections, logging and so on.</p>
<h2>dtexec: Basic Package Execution</h2>
<p>Like dtutil, dtexec uses a similar set of basic options to identify where the package you are operating on is located: <strong>/F</strong>ile, <strong>/D</strong>TS &amp; <strong>/SQ</strong>L. The eagle eyed among you will note that while the full option name is the same the abbreviated is slightly different, though their operation is the same. There is also a slight difference in the /SQL additional options &#8211; because no movement of the package is taking place, you only need to specify the <strong>/Ser</strong>ver, <strong>/P</strong>assword and <strong>/U</strong>ser for the package being executed (rather than separate identification of the Source and Destination package). Similarly there is a <strong>/De</strong>crypt option for providing the password to encrypted packages. For details on this, check either my previous post or MSDN documentation.</p>
<p>There are two important options around basic execution. First is the <strong>/X86</strong> option. This forces SQL Agent to to execute the package in 32-bit mode on a 64-bit server, which can be important in scenarios where 64-bit compatibility isn&#8217;t available. This commonly is an issue with drivers &#8211; however this is ignored when running from the command line. When running scenarios where you have SSIS servers in your environment running in 32 and 64-bit you probably want to read this MSDN article first: <a title="64-bit Considerations for Integration Services" href="http://msdn.microsoft.com/en-us/library/ms141766.aspx">64-bit Considerations for Integration Services</a>.</p>
<p>The second is the the option to <strong>/Va</strong>lidate the package instead of executing it. What this does is halt the package after the validation phase &#8211; this can be useful for testing in deployment scenarios. How I sometimes use it is following deployment with a dtutil script, I run a dtexec script to validate the deployed packages, which helps catch any issues with missing / incorrect configurations etc. before you do a test run. This can be used in conjunction with the <strong>/W</strong>[arnAsError] option, which will treat a warning as an Error and cause validation to fail.</p>
<p>As a side note, you can place comments in the dtexec command line using the <strong>/Rem</strong> option.</p>
<h2>dtexec: Configuring Execution</h2>
<p>Execution can be configured using a number of options. First up is the ability to get dtexec to reference a file with all your dtexec options set in it, using the <strong>/Com</strong>[mandFile] {filespec} option. This can be handy if you are in an environment where you call dtexec via a remote tool such as Control M that has a character limit in terms of the batch command it can send.</p>
<p>You can provide or override the configurations used in execution using the <strong>/Conf</strong>[igFile] {filespec} to point at an XML configuration file. Similarly you can override specified connection settings using the <strong>/Conn</strong>[ection] id_or_name;{connection_string} option &#8211; multiple instances of this option are allowed and you can either point at a connection name or the GUID of the connection. You can associate an SSIS logging type with package execution using the <strong>/L</strong>[ogger] classid_orprogid;{configstring} option &#8211; this could be useful in troubleshooting if you don&#8217;t want logging enabled during normal execution but want to be able to turn it on for debug.</p>
<p>Individual Package properties such as variable values can be <strong>/Set</strong> &#8211; and you can set as many as is required. Finally you can set the Maximum number of executables permitted using the <strong>/M</strong>[axConcurrent] {concurrent_executables} option.</p>
<h2>dtexec: Using Checkpoints</h2>
<p>dtexec can make a package override its defined checkpoint usage settings &#8211; though as i&#8217;ve alluded to before, be very careful when using checkpointing as you won&#8217;t always get the expected results. But the options available are to turn <strong>/CheckP</strong>ointing {on\off}, specify the actual file using <strong>/CheckF</strong>ile and specify the usage of Checkpoints at package start using <strong>/Res</strong>tart {deny | force | ifPossible}. These options match the settings in the package of SaveCheckpoints, CheckpointFile and CheckpointUsage.</p>
<h2>dtexec: Execution Logging and Reporting</h2>
<p>When running packages from dtexec, you get some additional logging options which can be useful when you are trying to do a more detailed debug on a package. Some are useful for immediate visualisation in the console window as you execute while others create file based logs.</p>
<p>The first console option is <strong>/Cons</strong>oleLog, which allows you to write to the console window the same entries that would normally be captured by SSIS execution logging. You can select which of these columns you want to capture, the most important of these likely to be <strong>M</strong>essage. Further fine tuning in the settings for this option allow you to tighten the logging to a specific task or event &#8211; again as per standard logging. Next is <strong>/Rep</strong>orting  level, which tunes what type of event to capture &#8211; <strong>E</strong>rrors, <strong>I</strong>nformation, <strong>W</strong>arnings and so on. Usually when you want this level of reporting i&#8217;d advise using the <strong>V</strong>erbose switch to just capture everything. There is also the capability to create an event exclusion list for this option. Finally, <strong>/Su</strong>m will put a count of the number of rows the next component will receive in the log.</p>
<p>If you want to push all this logging out to a file (and the logs can get pretty big so they can blow out the console window pretty quickly) you can write them out using the <strong>/VLog</strong> option. If you need to venture further into debugging you can create the dump files <span><span>.mdmp and .tmp using either the </span></span><strong>/DumpOnError</strong> option to dump on any error<strong> </strong>or <strong>/Dump</strong> with a specified error to only generate the files under certain circumstances. These are advanced options and to understand the output i&#8217;d advise reading the MSDN article <a title="Working with Debug Dump Files" href="http://msdn.microsoft.com/en-us/library/cc280548.aspx">Working with Debug Dump Files</a> first.</p>
<h2>dtexec: Package Verification</h2>
<p>The dtexec utility offers a few options to verify the package you are pointing at is the one you intend to execute. First up is the option to verify the build versions using the <strong>/VerifyB</strong>uild option which allows you to tell dtexec to only run the package if it has the specified Major (and optionally Minor) build version. These are the values set at the control flow level in the SSIS package you are calling. You can check the package has a valid digital signature using <strong>/VerifyS</strong>igned option. Finally are the options to match the GUID of the package you are executing using <strong>/VerifyP</strong>ackageId and the version GUID of the package using the <strong>/VerifyV</strong>ersionID option.</p>
<p>All of the options above are interesting additional protections to ensure your system is running the code that it should be, but realistically they are poor and fiddly substitutes for a proper release management process.</p>
<h2>Why use dtexec?</h2>
<p>Most of the options above are of course covered in SQL Agent execution options, but there are scenarios where dtexec can prove useful &#8211; most commonly where SQL Agent isn&#8217;t available or isn&#8217;t permitted to be used by IT policy. It also has value in deployment and testing scenarios. Most of the time I would advocate using SQL Agent to schedule and automate your jobs, but it&#8217;s good to have such a flexible tool available.</p>
<p>There is also a GUI option, dtexecui.exe which allows for the configuration of almost all the above options using a simple GUI. It also has the advantage of being able to generate the dtexec command line prompt as well, making syntax errors much more avoidable.</p>
<p>Official MSDN documentation can be found <a title="dtexec Utility for SQL2008" href="http://msdn.microsoft.com/en-us/library/ms162810.aspx">here for 2008</a> and <a title="dtexec Utility for SQL2005" href="http://msdn.microsoft.com/en-us/library/ms162810(SQL.90).aspx">here for 2005</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bimonkey.com/2010/03/ssis-command-line-utilities-part-2-dtexec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AUSSUG Upcoming Sessions</title>
		<link>http://www.bimonkey.com/2010/02/aussug-upcoming-sessions/</link>
		<comments>http://www.bimonkey.com/2010/02/aussug-upcoming-sessions/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 10:54:45 +0000</pubDate>
		<dc:creator>BI Monkey</dc:creator>
				<category><![CDATA[BI Monkey News]]></category>
		<category><![CDATA[Microsoft BI]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Integration Services]]></category>
		<category><![CDATA[PerformancePoint]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.bimonkey.com/?p=734</guid>
		<description><![CDATA[In case you aren&#8217;t in the Australian SQL Server User Group, AUSSUG, there are a few upcoming sessions in Sydney which will be pretty useful &#8211; check out the official site to register. Sessions are free and always useful.
Lunchtime Wed 3rd March, 2010 &#8211; Ensuring Optimal Performance in SQL Server 2008 Based Applications with Viktor [...]]]></description>
			<content:encoded><![CDATA[<p>In case you aren&#8217;t in the Australian SQL Server User Group, <a title="Australian SQL Server User Group" href="http://www.sqlserver.org.au/">AUSSUG</a>, there are a few upcoming sessions in Sydney which will be pretty useful &#8211; check out the official site to register. Sessions are free and always useful.</p>
<p><strong>Lunchtime Wed 3rd March, 2010</strong> &#8211; Ensuring Optimal Performance in SQL Server 2008 Based Applications with Viktor Isakov</p>
<p><strong>Evening * Thu * 4th Mar 2010</strong> &#8211; What&#8217;s new in Reporting Services 2008 R2 and PerformancePoint Services 2010 with Peter Myers, presenting what&#8217;s new in the upcoming release of Reporting Services 2008 R2 and PerformancePoint Services 2010</p>
<p>And TBA date in <strong>April 2010</strong> &#8211; Knights of the SSIS Round Table &#8211; Kevin Wong, Glyn Llewelyn and <strong>myself </strong>will be presenting a series of mini demos followed by Q&amp;A, so a chance to pick some expert brains</p>
<p>Hope to catch you at one of the sessions!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bimonkey.com/2010/02/aussug-upcoming-sessions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrating from Cognos to Microsoft BI</title>
		<link>http://www.bimonkey.com/2010/02/migrating-from-cognos-to-microsoft-bi/</link>
		<comments>http://www.bimonkey.com/2010/02/migrating-from-cognos-to-microsoft-bi/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 09:37:48 +0000</pubDate>
		<dc:creator>BI Monkey</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Microsoft BI]]></category>
		<category><![CDATA[cognos]]></category>
		<category><![CDATA[migration]]></category>

		<guid isPermaLink="false">http://www.bimonkey.com/?p=718</guid>
		<description><![CDATA[If you are considering moving from Cognos BI to Microsoft BI (and as a Microsoft BI guy, I&#8217;ll usually recommend it), it&#8217;s worth knowing what&#8217;s what in each stack and where the similarities lie. It&#8217;s also important to understand how much effort is going to be involved to see if there&#8217;s a genuine business benefit. [...]]]></description>
			<content:encoded><![CDATA[<p>If you are considering moving from Cognos BI to Microsoft BI (and as a Microsoft BI guy, I&#8217;ll usually recommend it), it&#8217;s worth knowing what&#8217;s what in each stack and where the similarities lie. It&#8217;s also important to understand how much effort is going to be involved to see if there&#8217;s a genuine business benefit. I&#8217;ll frame the discussion from a Cognos to Microsoft Equivalent perspective, though some matches are more approximate than others. My reference for the anatomy of the Cognos stack is here: http://www.cognos-bi.info/cognos8.html</p>
<h2>Why Migrate from Cognos to Microsoft?</h2>
<p>There are myriad reasons why anyone may want to move from Cognos to Microsoft, but i&#8217;ll probably surprise you by saying functionality isn&#8217;t one of the bigger drivers. Each suite has its own strengths and weaknesses and on balance there&#8217;s probably not enough strength on either side to move for that alone, unless addressing specific business needs. I&#8217;d view the main reasons as:</p>
<ol>
<li><strong>Licensing</strong>- Cognos is a suite of separate applications that need to be licenced separately, as opposed to SQL Server which is a single product. There can be significant cost and administrative savings from moving to the Microsoft suite. How much this works out to be will depend on your licensing agreements, but reality is Microsoft is the cheaper option.</li>
<li><strong>Existing SQL Assets</strong> &#8211; Many times companies have SQL Server licences for their databases and want to extract more value from those licences</li>
<li><strong>Cognos 8 upgrade</strong>- Your business may be looking at the cost of moving to Cognos 8 from Cognos 7 and not seeing enough ROI potential.</li>
<li><strong>Performance</strong>- many Cognos users report unsatisfactory performance from deployments</li>
<li><strong>Uncertainty</strong>- With the IBM buyout of Cognos, the number of products likely to be in the mix has gone up &#8211; what&#8217;s going to stop being supported? What other tools will I need? With Microsoft you have the certainty of a single integrated platform with a long and clear roadmap</li>
<li><strong>Skills availablity</strong> &#8211; there are simply more Microsoft BI developers out there, and generally they cost less to employ and are cheaper to train.</li>
<li><strong>Application Integration</strong>- Microsoft applications are quite open in terms of connectivity, customisation and integration with other applications. Cognos is a closed box . For example anyone can talk to an Analysis Services cube, but no non-Cognos application can talk to a Cognos cube. Reporting services can easily be extended with custom controls.</li>
</ol>
<h2>Decision Stream / Data Manager = SSIS (Integration Services)</h2>
<p>Decision Stream (Cognos 7) and Data Manager (Cognos <img src='http://www.bimonkey.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> &#8211; though there is minimal difference between the two &#8211; are Cognos&#8217; ETL tools. They are showing their age badly, and are very &#8220;black box&#8221;. I personally loathe the clunky interface and untunable performance. But &#8211; they work. The SQL Server equivalent tool is Integration Services &#8211; a much more up to date, faster and configurable ETL tool. SSIS is a more generalist tool compared to Data Manager, and so it requires a bit more thought (though not a lot) for building Data Warehouses. However if you have large volumes of data to shift, Cognos simply cannot compete.</p>
<p>The reality is ETL is one of the hardest components to migrate. It often has a lot of business rules (and in Data Manager it&#8217;s possible to hide them in a million different places) and if you get the migration wrong, you stand to devalue your existing DW. In any migration scenario this would likely be the last on the list, unless addressing a specific need. I would generally leave this as a legacy system that gets superseded over time.</p>
<h2>PowerPlay = SSAS (Analysis Services)</h2>
<p>Cognos cubes are built in PowerPlay in both Cognos 7 and 8 (in fact there was no upgrade of Powerplay in Cognos 8). Whilst adequate, there are many stories of business migrating to SSAS for significant performance benefits &#8211; I am aware of one client whose cubes processing time went from 24 hours to 30 minutes by migrating. SSAS has significant market penetration &#8211; getting hard figures is difficult (without paying a lot of money &#8211; <a title="Market Analysis for Business Intelligence OLAP Tools " href="http://jdedwardsoracle.blogspot.com/2009/08/market-analysis-for-business.html">last public figures are to 2006</a>) but Microsoft is the leading vendor by a significant margin &#8211; so obtaining expertise is less difficult (though as with ETL, true OLAP wizards are rare and expensive creatures).</p>
<p>Cubes are one of the easier components to migrate (unless you have very complex ones), as any well designed cube is usually sat on top of a robust ETL which handles the really complex business rules. In the best case scenario you just have to build your dimensions and measures and the job is done.</p>
<h2>Report Studio = SSRS (Reporting Services)</h2>
<p>Technically speaking, Visual Studio is the direct equivalent as that is the design environment, but Reporting Services is SQL Servers&#8217; Reporting engine. It provides fixed parameterised reporting with the capacity to provide automated deliveries through easily managed dynamic lists. SQL2005 was functional but a little lacklustre, but in SQL2008 has come on leaps and bounds. It&#8217;s not the most stellar part of the Microsoft BI stack, but flat reports don&#8217;t usually need stellar functionality.</p>
<p>Migration of reports is usually pretty straightforward &#8211; you have the layout and formats already &#8211; and once the underlying cubes are set up it&#8217;s simply a matter of rebuilding each report.</p>
<h2>Query Studio = SSRS Report Builder or Excel</h2>
<p>Query Studio is a user tool for building simple reports, functionality which is carried out in the SQL world using a tool called Report Builder, or even just though Excel (see the section below on Analysis Studio). Personally, I don&#8217;t like Report Builder, though the next edition (3.0) is supposed to be an improvement &#8211; but then so was 2.0, so I&#8217;m a little sceptical. However if you have good cubes, or have access to the forthcoming PowerPivot, most analysts who want ad hoc data will migrate rapidly to Excel.</p>
<p>This is unlikely to be a significantly used application so the change in functionality probably won&#8217;t be an issue, but here Cognos has a better offering.</p>
<h2>Analysis Studio = Excel</h2>
<p>For working with cubes from an analytical context, Excel is Microsoft&#8217;s tool for the job. Using functionality based on Pivot Tables you get a capable (though admittedly not perfect) tool for drilling down, slicing and performing analysis on OLAP data. Unless you have very demanding users, Excel will meet most needs &#8211; especially if you have upgraded to 2007 (and if you haven&#8217;t, you really really should). If you do have demanding users, there&#8217;s a host of 3rd party applications which plug in to excel and can dress specific needs.</p>
<p>Further to this basic functionality, workbooks with connections to SSAS can then be uploaded to SharePoint and distributed via a set of technologies called Excel Services, allowing for fast dissemination of results.</p>
<h2>Metric Studio = SharePoint</h2>
<p> Metric Studio is aimed at Dashboarding and Scorecarding. Microsoft at one point had an offering called PerformancePoint to address this, but it suffered a premature demise, but the relevant components migrated into SharePoint, and anyone with an Enterprise licence can install them. This isn&#8217;t a particularly exciting tool for either suite so I&#8217;ll move on. The migration path is similar to that to SSRS.</p>
<h2>Cognos Connection = SharePoint</h2>
<p>Cognos Connection is the BI portal for the Cognos suite. Sharepoint is the same for the Microsoft stack&#8230; and  an Enterprise CMS to boot, plus a whole heap of other things I have only limited awareness of. Cognos Connection will have better integration with the BI Metadata, Sharepoint will have better integration with your Enterprise generally. It depends what matters more to your business.</p>
<p>Migration here depends on the extent to which you have SharePoint deployed in the organisation already. If it&#8217;s there, it becomes a manual exercise in migrating content. If its not, then it&#8217;s a major enterprise change.</p>
<h2>Bits that don&#8217;t match on either side</h2>
<p>Of course there are areas where the two suites don&#8217;t quite tie up. Cognos has Planning, which Microsoft did, but now doesn&#8217;t. Microsoft has PowerPivot, an in memory analysis tool which Cognos hasn&#8217;t got a counter offer for. Framework Manager has an approximate equivalent in the Data Source Views that underpin SSAS cubes, but the implementation is quite different and more database oriented. Content Store, the Cognos metadata store has no match in the Microsoft stack and can be perceived as one of the MS BI stacks bigger weaknesses. Event Studio is approximately matched by SQL Server Notification Services. Of course Microsoft&#8217;s whole underpinning is based on SQL Server, a robust enterprise database system with scaling for massive warehouses and Master Data Management which Cognos has no direct offering for.</p>
<h2>Final Comments</h2>
<p>Undoubtedly i&#8217;ve got a few things wrong here &#8211; my knowledge of the Cognos stack is not as detailed as that of the Microsoft Stack &#8211; and I&#8217;ll welcome any corrections from the Cognos Community. This post is intended to help those with Cognos installations understand what Microsoft has to offer, the applications involved and what they translate to in Cognos speak. Some of the features I mention are due in SQL2008R2 which will be released in a few months.</p>
<p>If you are looking for an answer to the question &#8220;Should I Migrate?&#8221; then the answer will always be that it depends on your circumstances. As I said at the outset, each stack has its own strengths and weaknesses and each one may address your business needs better than the other. This is something that needs careful analysis from experienced BI professionals. I look forward to the debate this is likely to promote!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bimonkey.com/2010/02/migrating-from-cognos-to-microsoft-bi/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Multiple LIKE clauses in a single WHERE statement</title>
		<link>http://www.bimonkey.com/2010/01/multiple-like-clauses-in-a-single-where-statement/</link>
		<comments>http://www.bimonkey.com/2010/01/multiple-like-clauses-in-a-single-where-statement/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 07:20:31 +0000</pubDate>
		<dc:creator>BI Monkey</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://www.bimonkey.com/?p=723</guid>
		<description><![CDATA[I recently came up against a scenario where, in amongst a number of other filters, I had to deal with a couple of wildcard criteria. As there is no option to have multiple LIKE clauses in native SQL, such as WHERE Field LIKE IN (&#8217;%Option1%&#8217;,'%Option2%&#8217;), I feared I was stuck with having to duplicate my [...]]]></description>
			<content:encoded><![CDATA[<p>I recently came up against a scenario where, in amongst a number of other filters, I had to deal with a couple of wildcard criteria. As there is no option to have multiple LIKE clauses in native SQL, such as WHERE Field LIKE IN (&#8217;%Option1%&#8217;,'%Option2%&#8217;), I feared I was stuck with having to duplicate my WHERE clause in its entirety for each LIKE operation &#8211; until I found this cunning bit of code (from the thread <a title="SELECT multiple LIKE clauses and return how many columns match" href="http://www.eggheadcafe.com/software/aspnet/30423583/select-multiple-like-clau.aspx">here</a>):</p>
<blockquote><p><span style="color: #339966;">/* Apply Multiple LIKE clauses in a single WHERE clause */</span><br />
<span style="color: #0000ff;">SELECT </span>*<br />
 <br />
<span style="color: #0000ff;">FROM</span> [AdventureWorks].[Person].[Contact]<br />
 <br />
<span style="color: #0000ff;">WHERE</span> CASE<br />
  <span style="color: #0000ff;">WHEN</span> FirstName <span style="color: #808080;">LIKE<span style="color: #ff0000;"> </span></span><span style="color: #ff0000;">&#8216;Gusta%&#8217;</span> <span style="color: #0000ff;">THEN</span> 1<br />
  <span style="color: #0000ff;">WHEN</span> FirstName <span style="color: #808080;">LIKE</span><span style="color: #ff0000;"> &#8216;Cath%&#8217;</span> <span style="color: #0000ff;">THEN</span> 1<br />
  <span style="color: #0000ff;">END</span> = 1</p></blockquote>
<p>An elegant solution!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bimonkey.com/2010/01/multiple-like-clauses-in-a-single-where-statement/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SSIS Command Line Utilities part 1: dtutil</title>
		<link>http://www.bimonkey.com/2010/01/ssis-command-line-utilities-part-1-dtutil/</link>
		<comments>http://www.bimonkey.com/2010/01/ssis-command-line-utilities-part-1-dtutil/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 09:16:45 +0000</pubDate>
		<dc:creator>BI Monkey</dc:creator>
				<category><![CDATA[Integration Services]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[dtutil]]></category>

		<guid isPermaLink="false">http://www.bimonkey.com/?p=703</guid>
		<description><![CDATA[I am back on the study wagon, getting ready for Exam 70-448: TS: Microsoft SQL Server 2008, Business Intelligence Development and Maintenance. One topic that is key for is understanding the command line utilities that allow you to carry out various functions across all the BI technologies. Possibly in excessive depth, but no-one can accuse [...]]]></description>
			<content:encoded><![CDATA[<p>I am back on the study wagon, getting ready for Exam <a title="Exam 70-448: TS: Microsoft SQL Server 2008, Business Intelligence Development and Maintenance" href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-448&amp;locale=en-us">70-448: TS: Microsoft SQL Server 2008, Business Intelligence Development and Maintenance</a>. One topic that is key for is understanding the command line utilities that allow you to carry out various functions across all the BI technologies. Possibly in excessive depth, but no-one can accuse the MS BI certifications of being easy.</p>
<p>There are two that impact SSIS &#8211; <strong>dtutil</strong> and <strong>dtexec</strong>. In simple terms, dtutil moves packages, and dtexec executes them. In this post I will be focussing on dtutil. dtexec will be covered in a later post.</p>
<h2>dtutil: deploying packages</h2>
<p>The main use of dtutil is to script the deployment of packages. For file operations it is equivalent to a simple copy operation, though you can add SSIS specific operations, such as changing the package GUID. However it also allows for movement to and from the SQL Server msdb store, which can&#8217;t be done via copy / paste.</p>
<p>Deploying a package requires you specify its source location using one of the following options:</p>
<ul>
<li><strong>/Fi</strong> (or /File) + File Path + Package Name.dtsx &#8211; for packages in the File System</li>
<li><strong>/DT</strong> (or /DTS) + Package Name &#8211; for packages in the SSIS Package Store</li>
<li><strong>/SQ</strong> (or /SQL) + Package Name &#8211; for packages in msdb</li>
</ul>
<p>There are a few important things to note about the above options. Firstly for File System operations, you need to specify the .dtsx extension. Secondly, for SSIS Package store operations you don&#8217;t need to, even though it is still strictly speaking a file system operation. Finally, you don&#8217;t need to know where the Package Store is &#8211; dtutil works that out for you, which is handy if you have custom setups of the package store.</p>
<p>For packages located in msdb, you may also need to provide connection details using the following options:</p>
<ul>
<li><strong>/SourceS </strong>(or /SourceServer) &#8211; the source server name. If not used, it assumes localhost</li>
<li><strong>/SourceU</strong> (or /SourceUser) &#8211; the SQL Authentication user name</li>
<li><strong>/SourceP</strong> (or /SourcePassword) &#8211; the SQL Authentication Password</li>
</ul>
<p>Note that the username and password options are only required if SQL Authentication is being used. If left out, dtutil will try and authenticate to msdb using Windows Authentication for the current user. </p>
<p>Next up, you need to tell dtutil to copy the package and specify the destination. The option to move it is <strong>/C</strong> or (/Copy). This is then followed by the same options as specifying the source - though without the preceding backslash (i.e. Fi, DT or SQ) &#8211; then a semicolon, and finally the destination path. If you are using a SQL Server destination you may also need to provide connection details with the /DestS, /DestU and /DestP options.</p>
<p>As usual, an example is worth its weight in gold, so heres some to help you understand. In each case I will give the Full and Abbreviated versions &#8211; both of which do exactly the same job.</p>
<p>Moving a package from File to SSIS Package Store:</p>
<blockquote><p>dtutil <strong>/File</strong> C:\Package.dtsx <strong>/Copy</strong> DTS;Package</p>
<p>dtutil <strong>/Fi</strong> C:\Package.dtsx <strong>/C</strong> DT;Package</p></blockquote>
<p>Moving a package from msdb on a Named Instance of SQL Server using SQL Server Authentication to the file system</p>
<blockquote><p>dtutil <strong>/SQL</strong> Folder\Package <strong>/SourceServer</strong> SQLSERVER.INSTANCE <strong>/SourceUser</strong> Monkey_User <strong>/SourcePassword</strong> P@$$word <strong>/Copy</strong> File;C:\Package.dtsx</p>
<p>dtutil <strong>/SQ</strong> Folder\Package <strong>/SourceS</strong> SQLSERVER.INSTANCE <strong>/SourceU</strong> Monkey_User <strong>/SourceP </strong>P@$$word<strong> /C</strong> FI;C:\Package.dtsx</p></blockquote>
<p>Using a little batch scripting these can easily be converted into jobs which will deploy a bundle of packages quickly and easily.</p>
<h2>dtutil: altering packages</h2>
<p>dtutil is more than a deployment tool &#8211; it can also alter packages using the following options:</p>
<ul>
<li><strong>/En</strong>crypt &#8211; copies and encrypts the package with a specified password and protection level</li>
<li><strong>/I</strong>DRegenerate &#8211; Generates a new GUID for the package</li>
<li><strong>/Si</strong>gn  &#8211; Applies a digital signature to a package</li>
</ul>
<p>The last two can be useful as options within the deployment process, where the Encrypt can replace the Copy operation if you want the deployed environments packages to be more secure.</p>
<h2>dtutil: file and folder operations</h2>
<p>Finally, dtutil can work components of the file system or MSDB folder structures, creating and deleting files and folders</p>
<ul>
<li><strong>/Del</strong>ete &#8211; Delete a package</li>
<li><strong>/Ex</strong>ists &#8211; Test if a package exists</li>
<li><strong>/FC</strong>reate &#8211; Create a folder</li>
<li><strong>/FDe</strong>lete &#8211; Delete a folder</li>
<li><strong>/FDi</strong>rectory &#8211; List the contents of a folder</li>
<li><strong>/FE</strong>xists &#8211; Test if a folder exists</li>
<li><strong>/FR</strong>ename &#8211; Rename a folder</li>
<li><strong>/M</strong>ove &#8211; Move a package from one location to another</li>
</ul>
<p>Most of these would be useful in an initial deployment or for tidying up.</p>
<h2>dtutil: other things</h2>
<p>There are a few leftover functions which I don&#8217;t have a categorisation, so here they are.</p>
<ul>
<li><strong>/Q</strong>uiet &#8211; suppress prompts</li>
<li><strong>/R</strong>emark &#8211; add a comment</li>
<li><strong>/Dec</strong>rypt &#8211; decrypt a package as an operation is performed</li>
</ul>
<h2>Why use dtutil?</h2>
<p>The main reason for using dtutil is simply that the BIDS supplied deployment options, and all that mucking about with Deployment Manifests, is limited, not as scriptable, and also has been buggy, having problems with configuration files (though I believe this is now fixed in 2008, but since I stopped using it long ago, I can&#8217;t be sure). dtutil also offers additional functionality, such as being able to script package operations such as encryption.</p>
<p>Official MSDN documentation can be found <a title="SQL 2008: dtutil Utility" href="http://msdn.microsoft.com/en-us/library/ms162820.aspx">here for 2008</a> and here for <a title="SQL 2005: dtutil Utility" href="http://msdn.microsoft.com/en-us/library/ms162820(SQL.90).aspx">here for 2005</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bimonkey.com/2010/01/ssis-command-line-utilities-part-1-dtutil/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BIDS Helper</title>
		<link>http://www.bimonkey.com/2009/12/bids-helper/</link>
		<comments>http://www.bimonkey.com/2009/12/bids-helper/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 05:16:29 +0000</pubDate>
		<dc:creator>BI Monkey</dc:creator>
				<category><![CDATA[Integration Services]]></category>
		<category><![CDATA[Microsoft BI]]></category>
		<category><![CDATA[BIDS]]></category>

		<guid isPermaLink="false">http://www.bimonkey.com/?p=701</guid>
		<description><![CDATA[When you are a BI Monkey like me, you probably spend a fair bit of your time buried deep in Business Intelligence Development Studio (BIDS) and probably wishing it was a little less frustrating to work with.
Enter&#8230; BIDS Helper
Over at codeplex there is a project called BIDS Helper, which adds some useful additional functionality to the standard BIDS [...]]]></description>
			<content:encoded><![CDATA[<p>When you are a BI Monkey like me, you probably spend a fair bit of your time buried deep in Business Intelligence Development Studio (BIDS) and probably wishing it was a little less frustrating to work with.</p>
<h2>Enter&#8230; BIDS Helper</h2>
<p>Over at codeplex there is a project called <a title="BIDS Helper" href="http://bidshelper.codeplex.com/">BIDS Helper</a>, which adds some useful additional functionality to the standard BIDS environment.  It improves the development environment for integration, analysis and reporting services.  In this post I will focus more on the SSIS capabilities that are added.  The additional functionality is fully documented on the codeplex site, and I will highlight some of the more useful functions below &#8211; the links are to the documentation which is nice and visual, making it easy to understand.</p>
<p><a href="http://bidshelper.codeplex.com/wikipage?title=Expression%20and%20Configuration%20Highlighter&amp;referringTitle=Home">Expression and Configuration Highlighter</a> - this adds a highlight to components, connection managers and variables that are controlled by an expression and / or configuration, which allows you to rapidly see what is subject to change at runtime.</p>
<p><a href="http://bidshelper.codeplex.com/wikipage?title=Expression%20List&amp;referringTitle=Home">Expression List</a> &#8211; this lists every property that is set by a variable (though currently not expressions that set the value of variables) &#8211; great for finding out what is actually in the package, as these things can be easily overlooked otherwise</p>
<p><a href="http://bidshelper.codeplex.com/wikipage?title=Non-Default%20Properties%20Report&amp;referringTitle=Home">Non-Default Properties Report</a> &#8211; this lists any property in the package that is set to a non-default value. Very handy for debugging and seeing what is non standard.</p>
<p><a href="http://bidshelper.codeplex.com/wikipage?title=SSIS%20Performance%20Visualization&amp;referringTitle=Home">SSIS Performance Visualization</a>- this executes the package and presents a gantt chart of the execution time, and also can present performance over time &#8211; useful when performance tuning.</p>
<p><a href="http://bidshelper.codeplex.com/wikipage?title=Variables%20Window%20Extensions&amp;referringTitle=Home">Variables Window Extensions</a> - this adds the functionality of being able to change a variables scope &#8211; very handy for when you create a variable at the wrong scope (something I do all the time).</p>
<p><a title="BIDS Helper" href="http://bidshelper.codeplex.com/">BIDS Helper</a> is a handy little tool that adds a few nice functions for SSIS developers without intefering with the existing UI or design environment &#8211; I thoroughly recommend installing it, especially as it&#8217;s free!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bimonkey.com/2009/12/bids-helper/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SQL Server 2008 Auditing</title>
		<link>http://www.bimonkey.com/2009/12/sql-server-2008-auditing/</link>
		<comments>http://www.bimonkey.com/2009/12/sql-server-2008-auditing/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 11:52:08 +0000</pubDate>
		<dc:creator>BI Monkey</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Audit]]></category>

		<guid isPermaLink="false">http://www.bimonkey.com/?p=694</guid>
		<description><![CDATA[I recently got presented with this challenge: How do you monitor people disabling your SQL Agent Jobs? Not prevent, warn or notify&#8230; just be able to monitor and find out who did what, when?
Enter SQL Server Auditing, introduced in 2008.
What is SQL 2008 Auditing?
Well, you could read the official documentation on MSDN, but it&#8217;s a little [...]]]></description>
			<content:encoded><![CDATA[<p>I recently got presented with this challenge: How do you monitor people disabling your SQL Agent Jobs? Not prevent, warn or notify&#8230; just be able to monitor and find out who did what, when?</p>
<p>Enter <strong>SQL Server Auditing</strong>, introduced in 2008.</p>
<h2>What is SQL 2008 Auditing?</h2>
<p>Well, you could <a title="Understanding SQL Server Audit" href="http://msdn.microsoft.com/en-us/library/cc280386.aspx">read the official documentation on MSDN</a>, but it&#8217;s a little overwhelming, so here&#8217;s the view from 500 ft. SQL Server Audit provides a secure means of tracking access and changes made to the database schema or its data. What this means is you can trace who tried to access what and when. If any command was issued to change the data, you can track this as well. You <span style="text-decoration: underline;">cannot</span> track the changes made to the data. So for example if someone made an insert into a table, you could track that someone made an insert, who did it, when that insert was made and what the SQL of the insert statement looked like &#8211; except for what data was inserted. That task falls to Change Data capture (CDC) which isn&#8217;t directly tied to Auditing (currently).</p>
<h2>How do I implement Auditing?</h2>
<p>A SQL Server Audit is made up of two components, the first of which is the SQL Server Audit. This is a server level object (created in the <strong>master</strong> database) that defines where logs will be written. Logs can be written to either a file, the Application Log or Security Log. These must be created before you create any actual Audits.</p>
<p>The second component is either a Server Audit or Database Audit. Server Audits again exist at the server level, and track activities that occur at the server level, such as login attempts or permission changes. Database Audits exist within an individual database and track activities at a database level such as schema changes or data operations.</p>
<p>You can have multiple SQL Server Audits defining multiple log target locations. Multiple Server and Database audits can be created to use a given SQL Server Audit. This probably makes more sense when explained in pictures:</p>
<div class="wp-caption alignnone" style="width: 571px"><a href="http://www.bimonkey.com/uploads/sql/SQLAudit.jpg"><img class=" " title="SQL 2008 Auditing Hierarchy" src="http://www.bimonkey.com/uploads/sql/SQLAudit.jpg" alt="SQL 2008 Auditing Hierarchy" width="561" height="398" /></a><p class="wp-caption-text">Fig 1: SQL 2008 Auditing Hierarchy</p></div>
<p> </p>
<h2>So how do I audit my SQL Agent Jobs?</h2>
<p>Setting up Audits can either be done through SQL Server Management Studio (SSMS) or through SQL scripts. As usual any action carried out through the Wizard, so I will do the wizard first, then show the generated scripts.</p>
<p>Step 1 is setting up the SQL Server Audit. To create this in SSMS, under the Security Node of the Server is a folder called &#8220;Audits&#8221;. To create a new Audit, simply right click on the folder and choose &#8220;New Audit..&#8221;, as set out below:</p>
<div class="wp-caption alignnone" style="width: 382px"><img class="   " title="Creating a SQL Server Audit" src="http://www.bimonkey.com/uploads/sql/sqlserveraudit_ssms.jpg" alt="Creating a SQL Server Audit" width="372" height="409" /><p class="wp-caption-text">Fig 2: Creating a SQL Server Audit</p></div>
<p>Then in the Wizard just enter the Audit name and in the dropdown select &#8220;Application Log&#8221;, as shown below. The alternatives are to the Security Log or to a File, but I won&#8217;t be covering those in this simple example. Click on OK and you&#8217;re done.</p>
<div class="wp-caption alignnone" style="width: 691px"><img class="   " title="Creating a SQL Server Audit" src="http://www.bimonkey.com/uploads/sql/sqlserveraudit_ssms_new_audit.jpg" alt="Creating a SQL Server Audit" width="681" height="250" /><p class="wp-caption-text">Fig 3: Creating a SQL Server Audit</p></div>
<p>The equivalent SQL script is below:</p>
<blockquote><p><span style="color: #0000ff;">USE </span>[master]</p>
<p><span style="color: #0000ff;">GO</span></p>
<p><span style="color: #0000ff;">CREATE SERVER</span> AUDIT [My Sample Audit]<br />
<span style="color: #0000ff;">TO</span> APPLICATION_LOG<br />
<span style="color: #0000ff;">WITH</span><br />
( QUEUE_DELAY = 1000<br />
 ,ON_FAILURE = <span style="color: #0000ff;">CONTINUE</span><br />
)</p>
<p><span style="color: #0000ff;">GO</span></p></blockquote>
<p>Now you have somewhere to write your log. Note that by default SQL Server Audits are <strong>disabled</strong> when they are created, which means nothing will be written to your log until until it is enabled. This can be done just by right clicking on it in SSMS and choosing &#8220;Enable&#8221;.</p>
<p>The next bit is to set up the Database Audit on the SQL Agent Jobs table, which is in the system table [msdb].[dbo].[sysjobs]. Under the msdb database, open up the &#8220;Security&#8221; folder and within there is the &#8220;Database Audit Specifications&#8221; folder. Right click here and choose &#8220;New Database Audit Specification&#8230;&#8221; as shown below.</p>
<div class="wp-caption alignnone" style="width: 572px"><img class="    " title="Creating a Database Audit Specification" src="http://www.bimonkey.com/uploads/sql/databaseaudit_ssms.jpg" alt="Creating a Database Audit Specification" width="562" height="647" /><p class="wp-caption-text">Fig 4: Creating a Database Audit Specification</p></div>
<p>This will open the Create Database Audit Specification dialog. Because we are operating on msdb, unless you are logged in as <strong>sa</strong>, you probably won&#8217;t be able to create objects and the process will fail. So ensure the user you are logged in as has appropriate permissions on msdb. Because I&#8217;m playing on a Dev environment, I just allowed my own user access to msdb and gave them db_owner rights &#8211; this probably won&#8217;t fly in a production environment, of course!</p>
<p>The dialog is shown below. First task is to choose which SQL Server Audit to write to &#8211; so we use the one we created above called &#8221;My Sample Audit&#8221;. You choose the Audit Action Type &#8211; i.e. what you want to log. In our case we want to see when changes are made to our jobs in SQL Agent, so we choose the &#8220;UPDATE&#8221; Action Type. Next we have the Object Class, which for this case is a Database Object, so &#8220;Object&#8221; is selected, and then the Object Name. Finally the Principal defines who is Audited &#8211; in the example I have selected &#8220;public&#8221; because every user is in the public role, so I will capture any users UPDATE commands issued on my selected table.</p>
<div class="wp-caption alignnone" style="width: 1052px"><img class="   " title="Creating a Database Audit Specification" src="http://www.bimonkey.com/uploads/sql/sqlserveraudit_ssms_new_dbaudit.jpg" alt="Creating a Database Audit Specification" width="1042" height="288" /><p class="wp-caption-text">Fig 5: Creating a Database Audit Specification</p></div>
<p>Now here we hit a minor hiccup &#8211; you will note in the example above I have selected the object sysdtslog90 &#8211; it&#8217;s the only non-system view in the database, and the only one I can get to come up in the browser. The solution here is just to hit the &#8220;Script&#8221; button, and modify the generated code to point at the right table, as shown below:</p>
<blockquote><p><span style="color: #0000ff;">USE</span>[msdb]</p>
<p><span style="color: #0000ff;">GO</span></p>
<p><span style="color: #0000ff;">CREATE DATABASE</span> AUDIT SPECIFICATION [SQL Agent Audit]<br />
<span style="color: #0000ff;">FOR SERVER</span> AUDIT [My Sample Audit]<br />
<span style="color: #0000ff;">ADD</span> (<span style="color: #0000ff;">UPDATE ON OBJECT</span>::<strong>[dbo].[sysjobs]</strong> <span style="color: #0000ff;">BY</span> [public])</p>
<p>GO</p></blockquote>
<p>This code runs just fine, and as you will see has the desired effect. As with SQL Server Audits, Database Audit Specifications are created in a disabled state. As before, just right click to enable and the Auditing will begin.</p>
<p>Finally to test, just change the Enabled state of any SQL Agent job on your server, then check the Application Log, where you will find an Event detailing who just changed its status!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bimonkey.com/2009/12/sql-server-2008-auditing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7 Security &amp; Bitlocker Drive Encryption</title>
		<link>http://www.bimonkey.com/2009/12/windows-7-security-bitlocker-drive-encryption/</link>
		<comments>http://www.bimonkey.com/2009/12/windows-7-security-bitlocker-drive-encryption/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 00:05:23 +0000</pubDate>
		<dc:creator>BI Monkey</dc:creator>
				<category><![CDATA[Microsoft BI]]></category>
		<category><![CDATA[Bitlocker]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://www.bimonkey.com/?p=688</guid>
		<description><![CDATA[Having got my hands on Windows 7 at last, one of the important things I wanted to do was secure my data using Bitlocker Drive Encryption. After losing 2 laptops to a burglar with large amounts of personal data on them, I am being a little more careful from here on, so that the physical loss [...]]]></description>
			<content:encoded><![CDATA[<p>Having got my hands on Windows 7 at last, one of the important things I wanted to do was secure my data using Bitlocker Drive Encryption. After losing 2 laptops to a burglar with large amounts of personal data on them, I am being a little more careful from here on, so that the physical loss of the laptop will be the worst possible outcome, and ID theft or misuse of my data (e.g. raiding my pitiful bank accounts!) won&#8217;t be a concern. Bitlocker is only available on Ultimate and Enterprise editions &#8211; this I think is an uncalled for feature restriction &#8211; to enhance its reputation for security, Microsoft would be better off opening this up to all editions of Windows 7. Users of other editions will have to use Folder Level encryption, which I&#8217;ll cover towards the end.</p>
<p>Bitlocker Drive Encryption encrypts the entire disk transparently. What &#8220;Transparent&#8221; really means to me and you is that if you copy a file from a Bitlocker Encrypted disk to an unencrypted disk, that file is readable by any machine. However should someone try to read the encrypted disk directly they wouldn&#8217;t see anything except encrypted garbage. So if your disks are Bitlocker Encrypted, unless someone has the Recovery Key, your drives and data are unreadable.</p>
<h2>How do I enable Bitlocker?</h2>
<p>So how does this work in practice? Well, a lot depends on whether your computer has a <a title="Trusted Platform Module" href="http://en.wikipedia.org/wiki/Trusted_Platform_Module">TPM 1.2 chip</a> on the motherboard. If you do, you can simply open the  Bitlocker control panel (just type Bitlocker in the search bar) and enable Bitlocker. The TPM chip manages the storage of the Bitlocker keys &#8211; and Windows 7 will stop the process if you don&#8217;t have a key. You set a PIN and after that your computer won&#8217;t boot without a PIN, and if someone tries to remove the drives to read them &#8211; well, they can get the drives out but reading theier content is impossible.</p>
<p>If you don&#8217;t have a TPM chip, you can put the Bitlocker key on a USB Key. To do this requires a bit of a workaround as by default Bitlocker will only work if you have a TPM chip installed, and the wizard will block progress if you don&#8217;t. Fortunately the nice folks over at sevenforums.com have posted a guide on <a title="How to Turn BitLocker On or Off without a TPM for Windows 7" href="http://www.sevenforums.com/tutorials/4681-bitlocker-drive-encryption-windows-7-drive-turn-off-no-tpm.html">How to Turn BitLocker On or Off without a TPM for Windows 7</a>. It involves going into the Group Policy Editor (some sort of security thing) but is incredibly simple to do. Again, not 100% sure why Microsoft decided to make this a bit awkward to set up, so hopefully this will change in the future.</p>
<p>You can then apply Bitlocker and store the key on a USB drive. From now on your computer will only boot if you have the USB Key plugged in (you can &#8211; and should - remove it after the computer has booted). This is a minor inconvenience and you have to remember to keep the USB key seperate from the machine &#8211; otherwise if someone steals your computer and you&#8217;ve left the USB key in, your encryption efforts are wasted.</p>
<h2>How do I prevent me locking myself out with Bitlocker?</h2>
<p>This applies to those of us using USB Keys, but the advice is simple:</p>
<ul>
<li>Keep multiple copies of the Bitlocker recovery keys somewhere accessible and safe &#8211; such as on a external HDD, Live Mesh, a webmail account&#8230;</li>
<li>Create multiple USB keys &#8211; from the Bitlocker control panel you can load the startup key on as many USB keys as you like. I have 3 copies so if a USB drive fails, or goes walkies, I don&#8217;t have to worry about not being able to use my computer. You can also store multiple computers bitlocker keys on one USB key.</li>
</ul>
<h2>I don&#8217;t have Ultimate / Enterprise &#8211; what are my options?</h2>
<p>Well, option 1 is to upgrade using Windows Anytime. But assuming you don&#8217;t want to, the other option is Folder Level encryption. All you need to do is pick a folder, right click, select Properties and under the Advanced options choose to Encrypt the folder. If this is the first time you are encrypting something on your machine it will prompt you to back up the security certificate &#8211; as with the Bitlocker recovery keys I strongly recommend making multiple copies in multiple safe locations . Your folder will then encrypt and turn green so they are easy to spot. They aren&#8217;t angry, like the Hulk <img src='http://www.bimonkey.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Now this isn&#8217;t transparent &#8211; if you move a file from your encrypted folder to another location it remains encrypted and unreadable without the security certificate. But if someone stole your PC, unless you have autologin set, those files are unreadable, which for the purposes of this discussion is what we intended</p>
<h2>So, am I safe and secure now?</h2>
<p>Well, maybe, as long as you have done a few other basic things:</p>
<ol>
<li>Require a password on startup</li>
<li>Have a screensaver that requires a password to unlock</li>
<li>Backed up recovery keys</li>
<li>Backed up your data</li>
<li>Backed up your data</li>
<li>Backed up your data</li>
</ol>
<p>Good luck, and keep your data safe!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bimonkey.com/2009/12/windows-7-security-bitlocker-drive-encryption/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows 7 first impressions + BI Monkey news</title>
		<link>http://www.bimonkey.com/2009/11/windows-7-first-impressions-bi-monkey-news/</link>
		<comments>http://www.bimonkey.com/2009/11/windows-7-first-impressions-bi-monkey-news/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 02:27:58 +0000</pubDate>
		<dc:creator>BI Monkey</dc:creator>
				<category><![CDATA[BI Monkey News]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://www.bimonkey.com/?p=679</guid>
		<description><![CDATA[My posting rate has taken a little dip of late so I thought i&#8217;d better explain myself  
A BI Monkey update
The BI Monkey has been a little short of access to computers for a while, as burglary took his laptop, being on holiday in Japan and Hong Kong distracted him and just to add [...]]]></description>
			<content:encoded><![CDATA[<p>My posting rate has taken a little dip of late so I thought i&#8217;d better explain myself <img src='http://www.bimonkey.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>A BI Monkey update</h2>
<p>The BI Monkey has been a little short of access to computers for a while, as burglary took his laptop, being on holiday in Japan and Hong Kong distracted him and just to add some extra confusion into the mix, I switched consultancies towards someone a bit more Microsoft focused. However I am almost back in the saddle, having finally got SQL2008 up and running on 64-bit Windows 7. Once i&#8217;ve dealt with the vast amounts of admin that seem to accompany joining my new company, i&#8217;ll carry on with my quest to cover every component in depth. However I may end up delivering all my new samples on a 64-bit architecture &#8211; though i&#8217;m still looking at setting up a virtual PC to stick with 32-bit SQL2005 for creating my demo files.</p>
<p>None of this seems to have slowed down the growth of the site, though it is starting to calm down &#8211; bimonkey.com had it&#8217;s first<strong> 5,000</strong> hit day earlier this month and will easily top <strong>100,000</strong> hits this month. This makes me very happy! Now, if only the Google ad revenue would come pouring in!</p>
<h2>Windows 7 first impressions</h2>
<p>My new work machine is loaded with Windows 7 Enterprise, and I have to say, i&#8217;m impressed. I wasn&#8217;t much of a Vista hater so perhaps I am an easier sell, but there are a few features that really stand out for me:</p>
<ul>
<li>Taskbar &#8211; the new smaller icons are nice and the way you can manage multiple windows from a single icon is very slick</li>
<li>Libraries &#8211; Being able to collect several disparate folders under a single master folder makes managing files much easier</li>
<li>Snap &#8211; a simple but easy way of pulling windows to cover half the screen for side by side review is handy</li>
<li>Speech &#8211; I was a fan in Vista, and whilst not much has changed, it does seem better behaved &#8211; so will be dictating more in future</li>
</ul>
<p>The introductory videos <a title="Getting started with Windows 7" href="http://windows.microsoft.com/en-US/windows7/help/getting-started">here are a great and easy introduction to these features</a>, and I reccommend all new 7 users take a peek.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bimonkey.com/2009/11/windows-7-first-impressions-bi-monkey-news/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile BI, or why Big Bang warehouses should (sometimes) be shot</title>
		<link>http://www.bimonkey.com/2009/11/agile-bi-or-why-big-bang-warehouses-should-sometimes-be-shot/</link>
		<comments>http://www.bimonkey.com/2009/11/agile-bi-or-why-big-bang-warehouses-should-sometimes-be-shot/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 04:30:52 +0000</pubDate>
		<dc:creator>BI Monkey</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://www.bimonkey.com/?p=647</guid>
		<description><![CDATA[Recently I wrapped up on a project that could have been a money pit with uncertain results, but managed to be steered into something that delivered results quickly and made the business very happy. To give a real high level overview, the client in question had a collection of mainframe delivered text files which fed Excel [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I wrapped up on a project that could have been a money pit with uncertain results, but managed to be steered into something that delivered results quickly and made the business very happy. To give a real high level overview, the client in question had a collection of mainframe delivered text files which fed Excel reports via Access via SQL2000. The project was being pushed by IT (usually a Bad Thing) primarily to solve a business problem (which meant it turned back into a Good Thing). The root business problem was mostly being the Access databases kept falling over for various reasons so the analysts couldn&#8217;t do their work.</p>
<p>As the requirements were scoped out, it became apparent that the resultant Data Warehouse was going to be a very large and complex thing that would take a long time to develop. We did a quick pilot to demonstrate that the ETL could deliver results in a structured and controlled manner into the Warehouse, which delivered about 5% of the files through from end to end. IT were pleased as it all went well. Their first thought was then to deliver the remaining 95% of data.</p>
<h2>Do you need to put <em>all</em> the Data in the Warehouse?</h2>
<p>I asked the client to pause for thought at this point. In delivering the 5% of data we had proved that the DW process was feasible to IT &#8211; but had given nothing to the business. We had solved an IT problem, not a business one. In order to get the business excited we needed to deliver someting to <em>them</em>. The IT side of the client saw the wisdom of this &#8211; if the business had something tangible and helpful it helped sell the project. Also, if they hated it, we could find out we were on the wrong track in a far cheaper manner than after delivering a monster DW that nobody wanted!</p>
<p>So what did we do next? We focused on satisfying just one business problem &#8211; in this case the data needs of a single department, and set about building the parts of the DW required to meet those needs. At the end of this we could throw them a shiny new cube and see if it stuck. This way we would:</p>
<ul>
<li>Deliver initial results at minimum cost</li>
<li>Establish if we were on the right track from an early stage</li>
<li>Get business visibility of the DW faster</li>
</ul>
<p>If all went well, we could focus on delivering the next 5%, then the next&#8230;  and probably find that there was probably a big chunk that wasn&#8217;t used anyway, thus giving more savings &#8211; or identifying areas for new insight. Much better that delivering the big bang DW that may actually be a damp squib!</p>
<h2>So was that Agile BI then?</h2>
<p>It was a form of it, yes! The idea of Agile Development is to deliver results quickly, allowing the business to see what they are getting sooner and tune the results. Now, this isn&#8217;t all good &#8211; it can lead to massive scope creep, drift of purpose and even failure to deliver anything at all. So there is a need to be very cautious and apply this methodology only where appropriate. Cases such as Cubes for analysis and Reports are things that can benefit from a rapid development cycle carried out in close conjunction with the business. A good example of where <span style="text-decoration: underline;">not</span> to apply it is the ETL &#8211; it&#8217;s something that needs rigour and structure to be delivered effectively, and in practice is something business users neither understand or care about.</p>
<p>Sometimes with BI it is the right approach in greenfield sites because of one significant issue - clients can have a poor grasp on the capability of BI solutions and need leading into the wonderful world of BI. Often they can be skeptical about the promises made by consultants and by using an Agile approach on the first build you can get them into the BI mode of thinking rapidly. The client sees what they are getting and can get excited &#8211; whereas with standard waterfall delivery  they can wait months to see results after an long analysis / design phasse, and if the consultants have misjudged the business needs &#8211; kill the DW in its infancy.</p>
<h2>But how can we deliver BI without the Warehouse?</h2>
<p>I&#8217;m now on another project which has become lost in the design phase and the client is wondering what is going to come out of it all. We shifted approach to an Agile method where instead of focusing on getting the solution letter perfect in Design (Waterfall style) we are going to deliver a functioning SSAS Cube based on a sample of real data and build the design off of that. This way the client gets to see the light at the end of the tunnel and we know we are building the right solution even before the design is finalised.</p>
<p>The key in this case is to establish what the end deliverable is as quickly as possible and demonstrate that we, as consultants, have identified the right target in order to give the business confidence. The DW can follow to support that deliverable.</p>
<h2>So when should a project go agile?</h2>
<p>There&#8217;s no hard and fast rule, but I would suggest the following indicators may guide you towards an initial Agile build:</p>
<ul>
<li>Requirements are sparse / undefined &#8211; and the goalposts can move</li>
<li>It is the first BI project and BI capabilities are poorly understood</li>
<li>Business users are highly available</li>
<li>You need to give confidence you can deliver the right thing</li>
</ul>
<p>In case you want to know more, here are a few additional articles on Agile BI that I have found:</p>
<ul>
<li><a title="Agile Best Practices for Data Warehousing (DW)/Business Intelligence (BI) Projects" href="http://www.agiledata.org/essays/dataWarehousingBestPractices.html">Agile Best Practices for Data Warehousing (DW)/Business Intelligence (BI) Projects</a> from Scott W. Ambler @ agiledata.org</li>
<li><a title="Agile Development for BI" href="http://biguru.wordpress.com/2008/04/06/agile-development-for-bi/">Agile Development for BI</a> from BI Guru</li>
<li><a title="Architecting an Agile Data Warehouse" href="http://www.information-management.com/infodirect/20020927/5831-1.html">Architecting an Agile Data Warehouse</a> from Lee Arnett @ information-management.com</li>
<li><a title="Agile Data Warehousing: Delivering World-Class Business Intelligence Systems" href="http://books.google.com.au/books?id=AFtxwlJpqZQC&amp;dq=agile+data+warehousing&amp;printsec=frontcover&amp;source=bl&amp;ots=UpbpFA5M6w&amp;sig=5hebeDJyQcA81nGfTuDHb3Zy5UE&amp;hl=en&amp;ei=sAkKS6uPNNCjkAXhv5DXCQ&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=4&amp;ved=0CB0Q6AEwAw#v=onepage&amp;q=&amp;f=false">Agile Data Warehousing: Delivering World-Class Business Intelligence Systems</a> by Ralph Hughes &#8211; a comprehensive book on the subject</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bimonkey.com/2009/11/agile-bi-or-why-big-bang-warehouses-should-sometimes-be-shot/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
