<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.adatis.co.uk/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Martyn Bullerwell&amp;#39;s blog</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>SQL Server 2012 Running Totals</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2011/11/16/sql-server-2012-running-totals.aspx</link><pubDate>Wed, 16 Nov 2011 15:48:19 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10034</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=10034</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2011/11/16/sql-server-2012-running-totals.aspx#comments</comments><description>&lt;p&gt;SQL server has sometimes come under fire with the Oracle vs SQL Server debate because of the lack of some of the more advanced (and less used) functionality that is outlined in the SQL ANSI standards.&amp;#160;&amp;#160; An example of this is Window Functions, which became an ANSI standard under the ANSI:2003 revision.&amp;#160; A Window function is an aggregate function that can be applied to a subset of a full set of data.&amp;#160; Now this can be achieved in current versions of SQL Server (2008 R2 and its predecessors), but not using Window Functions and therefore has a performance implication.&amp;#160; There are about 3 or 4 approaches to achieving a running total in SQL Server prior to the 2012 version, however none particularly elegant.&amp;#160; &lt;/p&gt;  &lt;p&gt;For my following example I will outline how to perform a running total using AdvertureWorks2008 sample data.&amp;#160; I will remind us of 1 of the method&amp;#39;s (probably the most common) of how we used to do running totals prior to SQL Server 2012, and then show how to do the same running total using a SQL Server 2012 Window Function.&amp;#160; To set the scene, we will be looking for a running total of Line Items for a given Order.&amp;#160; This may be kind of query you may wish to write to generate an invoice with a running total on it.&lt;/p&gt;  &lt;p&gt;To begin with lets look at the more traditional query: &lt;/p&gt;  &lt;p&gt;SELECT    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; A.SalesOrderID,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; A.SalesOrderDetailID,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; A.LineTotal,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SUM(B.LineTotal)     &lt;br /&gt;FROM     &lt;br /&gt;Sales.SalesOrderDetail&amp;#160; AS A     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CROSS JOIN Sales.SalesOrderDetail AS B     &lt;br /&gt;WHERE     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; B.SalesOrderDetailID &amp;lt;= A.SalesOrderDetailID     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AND     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; A.SalesOrderID = B.SalesOrderID     &lt;br /&gt;GROUP BY     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; A.SalesOrderID,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; A.SalesOrderDetailID,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; A.LineTotal     &lt;br /&gt;ORDER BY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; A.SalesOrderID,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; A.SalesOrderDetailID,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; A.LineTotal &lt;/p&gt;  &lt;p&gt;This simply works by self joining up to certain point, so works fine for any data that can be ordered easily, as running totals usually are this method usually suffices. &lt;/p&gt;  &lt;p&gt;The following query uses the new Window function in SQL Server 2012:&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;SELECT&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SalesOrderID,&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SalesOrderDetailID,&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; LineTotal,&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SUM(LineTotal)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OVER&amp;#160;&amp;#160;&amp;#160;&amp;#160; (PARTITION BY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SalesOrderID&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ORDER BY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SalesOrderDetailID) AS OrderRunningTotal     &lt;br /&gt;FROM&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Sales.SalesOrderDetail     &lt;br /&gt;ORDER BY&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SalesOrderID,&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SalesOrderDetailID,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; LineTotal&lt;/p&gt;  &lt;p&gt;You will instantly notice that the second query is far more elegant, and more simplistic to understand.&amp;#160; In short, in this query, we are telling SQL server to Sum the “Line Total” over an ordered partition of the data.&amp;#160; Both queries return the same result, however it becomes interesting when we look at the execution plans, relative to each other.&amp;#160; This is shown below (apologies for the size of these): &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/image_5AC83C0A.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/image_thumb_610F1298.png" width="964" height="372" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;What is important to note that the second (bottom) plan is smaller, and simpler.&amp;#160; the other, very significant point is that the Query Cost (relative to batch) is a whopping 97% for the old method of running totals, meaning that the new Windowing Functions are far more efficient.&amp;#160; &lt;/p&gt;  &lt;p&gt;In summary, I believe that this is an example of where SQL server is becoming a firm competitor to some of its perceived rivals, its one of the few points that can be raised as a valid point in the argument of SQL Server vs Oracle, but not any more! &lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10034" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/Denali/default.aspx">Denali</category><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/SQl+Server+2012/default.aspx">SQl Server 2012</category><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/Window+Function/default.aspx">Window Function</category></item><item><title>Installing SharePoint 2007 on Windows Server 2008 R2</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2009/10/10/installing-sharepoint-2007-on-windows-server-2008-r2.aspx</link><pubDate>Sat, 10 Oct 2009 22:07:42 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7532</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7532</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2009/10/10/installing-sharepoint-2007-on-windows-server-2008-r2.aspx#comments</comments><description>&lt;p&gt;Obviously when we get a new development machine, we install the latest Microsoft software in order to test the latest applications.&amp;#160; All in all Windows Server 2008 R2, is basically the server version on Windows 7, therefore it shares many drivers, and many common issues with its counterpart.&amp;#160; Therefore its no surprise that SharePoint 2007 does not install from disk to a Windows 7, or Windows Server 2008 R2 installation.&amp;#160; &lt;/p&gt;  &lt;p&gt;In order to install SharePoint, you need to create what is called a “Slipstream” version, which in essence means rolling up all the latest service packs into the installation.&amp;#160; Something that Microsoft I&amp;#39;m sure will get round to releasing in due course.&amp;#160; However in the meantime you can follow these simple instructions.&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Download the following Service packs: &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=79bada82-c13f-44c1-bdc1-d0447337051b" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=79bada82-c13f-44c1-bdc1-d0447337051b"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=79bada82-c13f-44c1-bdc1-d0447337051b&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=b7816d90-5fc6-4347-89b0-a80deb27a082" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=b7816d90-5fc6-4347-89b0-a80deb27a082"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=b7816d90-5fc6-4347-89b0-a80deb27a082&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Copy all installation files from the installation disc to your local hard disk. &lt;/li&gt;    &lt;li&gt;Remove &lt;strong&gt;EVERYTHING&lt;/strong&gt; from the Updates Folder, from within the following directory:&amp;#160; [&lt;strong&gt;ExtractedPath&lt;/strong&gt;]\X64 or [&lt;strong&gt;ExtractedPath&lt;/strong&gt;]\X32&lt;/li&gt;    &lt;li&gt;Run the following from a command prompt:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;wssv3sp2-kb953338-x64-fullfile-en-us.exe /extract:&lt;b&gt;[ExtractedPath]&lt;/b&gt;\Updates /quiet&lt;/li&gt;      &lt;li&gt;officeserver2007sp2-kb953334-x64-fullfile-en-us.exe /extract:&lt;b&gt;[ExtractedPath]&lt;/b&gt;\Updates /quiet&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Now Install SharePoint 2007 as you would have done before. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I would advise burning that back to a disk, so you don&amp;#39;t have to do it in the future.&amp;#160;&amp;#160; You may still get a few compatibility issues, but it seems to install and run as expected. &lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7532" width="1" height="1"&gt;</description></item><item><title>PerformancePoint 2007 SP2 and SQL 2008 (Continued)</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2009/01/19/performancepoint-2007-sp2-and-sql-2008-continued.aspx</link><pubDate>Mon, 19 Jan 2009 23:36:04 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7499</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7499</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2009/01/19/performancepoint-2007-sp2-and-sql-2008-continued.aspx#comments</comments><description>&lt;p&gt;Following on from my previous &lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/12/31/performance-point-sp2-and-sql-server-2008.aspx" target="_blank"&gt;post&lt;/a&gt; prior to Christmas – it looks like I have been beaten to it.&amp;#160; For a pure installation of SQL 2008 and PPS have a look &lt;a href="http://hmorgenstern.spaces.live.com/blog/cns!28A6BE83102A0EB3!461.entry?wa=wsignin1.0&amp;amp;sa=552690013" target="_blank"&gt;here&lt;/a&gt;, it details the installation process to ensure a smooth installation.&amp;#160;&amp;#160;&amp;#160; I have now tried this and it seems that installation works seamlessly, and all set up on SQL 2008.&amp;#160; Hopefully I will get chance to continue testing.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7499" width="1" height="1"&gt;</description></item><item><title>Performance Point SP2 and SQL Server 2008</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/12/31/performance-point-sp2-and-sql-server-2008.aspx</link><pubDate>Wed, 31 Dec 2008 11:39:57 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7489</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7489</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/12/31/performance-point-sp2-and-sql-server-2008.aspx#comments</comments><description>&lt;p&gt;Well, given the break over Christmas I have finally managed to get round to some testing.&amp;#160; This has begun with getting PPS SP2 set up on our development environment, running solely on SQL Server 2008 and Windows 2008.&lt;/p&gt;  &lt;p&gt;To test it fully I have removed everything from our test environment and started from scratch.&amp;#160; Note that to install the latest version of SQL Server 2008, you must have Visual Studio SP1 and .NET 3.5 SP1 installed. If however, you do not have .NET 3.5 SP1 installed, the installation process will attempt to install it.&lt;/p&gt;  &lt;p&gt;To install PerformancePoint you may need to use the SKIPREQCHECK command to ensure it will install. I installed all the planning components to ensure I could test all aspects fully.&amp;#160; DO NOT run the configuration of any of these planning components until you have applied SP2.&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Now install PPS SP2, ensuring you run all of the installers contained within the executable.&amp;#160; Unfortunately the prerequisites check still does not seem to recognize later versions of the SQL components that are required, I had difficulty with ADOMD.NET, which still requires version 9 SP2, and even after installing version 10 from the SQL Server 2008 feature pack, it still didn&amp;#39;t work.&amp;#160; This is an issue as it is required for two of the main components of PerformancePoint Planning:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Planning Process Service&lt;/li&gt;    &lt;li&gt;Planning Web Service &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I found that the December 2008 SQL Server 2005 Feature Pack did the trick (can be found &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=536fd7d5-013f-49bc-9fc7-77dede4bb075&amp;amp;DisplayLang=en" target="_blank"&gt;here&lt;/a&gt;), and allowed configuration of all four planning components.&amp;#160; &lt;/p&gt;  &lt;p&gt;Having installed PPS SP2 however, it still seems as though I can not get PerformancePoint to connect to Analysis Services 2008.&amp;#160; The connection information does not fill me with joy, when is specifically mentions Analysis Services 2005.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;It is Christmas, so I will do some more investigation and see if I can get past this issue, before the new year.&amp;#160; More to come soon.&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7489" width="1" height="1"&gt;</description></item><item><title>Reporting Services Parameters and Oracle</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/12/30/reporting-services-parameters-and-oracle.aspx</link><pubDate>Tue, 30 Dec 2008 15:03:35 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7487</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7487</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/12/30/reporting-services-parameters-and-oracle.aspx#comments</comments><description>&lt;p&gt;Recently a colleague of mine needed to access Oracle to build a report but did not have the rights to create a stored procedure, which would be the obvious method of choice. We therefore need to pass parameters from Reporting Services to Oracle using the &amp;quot;Query Type&amp;quot; of text.&amp;#160; To do this in SQL Server it is relatively intuitive.&lt;/p&gt;  &lt;p&gt;Create a shared Data Source - I have used Adventure Works. &lt;/p&gt;  &lt;p&gt;Then add a DataSet: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServicesParametersandOracle_C14A/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="44" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServicesParametersandOracle_C14A/image_thumb.png" width="310" align="left" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServicesParametersandOracle_C14A/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="265" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServicesParametersandOracle_C14A/image_thumb_1.png" width="337" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This query will return all records from the Adventure Works &amp;#39;people&amp;#39; table,&amp;#160; showing the following fields; FirstName, MiddleName, LastName and Email Address. If you wanted to restrict this list using a parameter, all you would need to do is add a parameter to the report. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServicesParametersandOracle_C14A/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="149" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServicesParametersandOracle_C14A/image_thumb_2.png" width="244" align="left" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServicesParametersandOracle_C14A/image_10.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="333" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServicesParametersandOracle_C14A/image_thumb_4.png" width="401" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In this instance I have added a parameter titled &amp;quot;EndsWith&amp;quot;, so we can use a WHERE with any character or string to filter by the last characters of the FirstName.&amp;#160; I have also added a parameter called &amp;quot;BeginsWith&amp;quot;. Now you can edit the DataSet to add the where statement as follows: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SELECT&amp;#160;&amp;#160;&amp;#160;&amp;#160; FirstName, MiddleName, LastName, EmailAddress     &lt;br /&gt;FROM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Person.Contact      &lt;br /&gt;WHERE&amp;#160;&amp;#160;&amp;#160;&amp;#160; (FirstName LIKE @BeginsWith +&amp;#39;%&amp;#39; + @EndsWith)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now this will work perfectly with SQL Server, however should you wish to connect to Oracle, you will need to make a few simple, but not obvious, changes.&amp;#160; These are as follows: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SELECT&amp;#160;&amp;#160;&amp;#160;&amp;#160; FirstName, MiddleName, LastName, EmailAddress     &lt;br /&gt;FROM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Person.Contact      &lt;br /&gt;WHERE&amp;#160;&amp;#160;&amp;#160;&amp;#160; (FirstName LIKE :BeginsWith +&amp;#39;%&amp;#39; + :EndsWith)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So in short all you have to do is change the @ sign to a : (colon), easy when you know how, a real pain when you don&amp;#39;t!&amp;#160; &lt;/p&gt;  &lt;p&gt;This report will appear as follows when connected to Oracle, or SQL (as long as there are the same databases). &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServicesParametersandOracle_C14A/image_12.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="201" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServicesParametersandOracle_C14A/image_thumb_5.png" width="582" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7487" width="1" height="1"&gt;</description></item><item><title>Adventure Works Samples Update and FILESTREAM</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/11/30/adventure-works-samples-update-and-filestream.aspx</link><pubDate>Sun, 30 Nov 2008 23:58:25 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7475</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7475</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/11/30/adventure-works-samples-update-and-filestream.aspx#comments</comments><description>&lt;p&gt;A bit late (released at the beginning of the month), but a follow up to post I made earlier this year, there is a new release of the Adventure Works Databases.&amp;#160; These can now be found &lt;a href="http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=18407"&gt;here&lt;/a&gt;.&amp;#160; They are simplified into just 4 downloads, which makes things a lot easier! Also the install is a lot more straight forward, although for the install to complete you must have full text search and FILESTREAM installed and enabled.&amp;#160;&amp;#160; It is good to see that FILESTREAM is being used already, and Adventure Works can be used to test and demonstrate this new functionality.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What is &lt;strong&gt;FILESTREAM?&lt;/strong&gt; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Prior to SQL Server 2008 if you needed to store images, videos, PDF&amp;#39;s, or any other binary data we used a blob data type and it was in-line with relational data.&amp;#160; Now SQL Server 2008 can store blobs in its own private namespace on the file system, which simplifies the storage of blob data. Adventure Works examples have now used it to store instructions in word doc files. (See table Production.Documents) &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Enable FILESTREAM&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Start&lt;/strong&gt; -&amp;gt; &lt;strong&gt;All Programs -&amp;gt; &lt;/strong&gt;&lt;strong&gt;Microsoft SQL Server 2008&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Configuration Tools&lt;/strong&gt; -&amp;gt; &lt;strong&gt;SQL Server Configuration Manager&lt;/strong&gt;.&lt;/p&gt;  &lt;li&gt;   &lt;p&gt;In the list of services, right-click &lt;strong&gt;SQL Server Services&lt;/strong&gt;, and then click &lt;strong&gt;Open&lt;/strong&gt;.&lt;/p&gt; &lt;/li&gt;  &lt;li&gt;   &lt;p&gt;Locate instance of SQL Server Right-click and click &lt;strong&gt;Properties&lt;/strong&gt;.&lt;/p&gt; &lt;/li&gt;  &lt;li&gt;   &lt;p&gt;Click the &lt;strong&gt;FILESTREAM&lt;/strong&gt; tab.&lt;/p&gt; &lt;/li&gt;  &lt;li&gt;   &lt;p&gt;Select the &lt;strong&gt;Enable FILESTREAM for Transact-SQL access&lt;/strong&gt; check box.&lt;/p&gt; &lt;/li&gt;  &lt;li&gt;   &lt;p&gt;If you want to read and write FILESTREAM data from Windows, click &lt;strong&gt;Enable FILESTREAM for file I/O streaming access&lt;/strong&gt;. Enter the name of the Windows share in the &lt;strong&gt;Windows Share Name&lt;/strong&gt; box.&lt;/p&gt; &lt;/li&gt;  &lt;li&gt;   &lt;p&gt;If remote clients must access the FILESTREAM data that is stored on this share, select &lt;strong&gt;Allow remote clients to have streaming access to FILESTREAM data&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/AdventureWorksSamplesUpdate_128B3/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="350" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/AdventureWorksSamplesUpdate_128B3/image_thumb.png" width="313" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/li&gt;  &lt;li&gt;   &lt;p&gt;Click &lt;strong&gt;Apply&lt;/strong&gt;.&lt;/p&gt; &lt;/li&gt;  &lt;li&gt;   &lt;p&gt;In Query Editor, enter the following Transact-SQL code:&lt;/p&gt; &lt;/li&gt;  &lt;blockquote&gt;   &lt;p&gt;EXEC sp_configure filestream_access_level, 2      &lt;br /&gt;RECONFIGURE&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Using FILESTREAM Databases&lt;/strong&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create a new database is SSMS:&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/AdventureWorksSamplesUpdate_128B3/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="347" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/AdventureWorksSamplesUpdate_128B3/image_thumb_1.png" width="387" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Under the &amp;quot;Filegroups&amp;quot; Tab add a new FILESTREAM:&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/AdventureWorksSamplesUpdate_128B3/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="361" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/AdventureWorksSamplesUpdate_128B3/image_thumb_2.png" width="402" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Once set up click OK. This should now have added a new folder as follows under your SQL installation: &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/AdventureWorksSamplesUpdate_128B3/image_8.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="327" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/AdventureWorksSamplesUpdate_128B3/image_thumb_3.png" width="414" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;From here we can see that we have our new FileStreamTestData directory as well as documents folder, which has been added from the install of the SQL2008 AdventureWorks samples.&amp;#160; So now we want to test the storage of some files in SQL.&amp;#160; So lets try and store some Pictures for example.&amp;#160; To begin with we will need to set up a new table.&amp;#160; It is worth noting here that we must add a ROWGUIDCOL column, preferably the primary key, and the unique identifier. &lt;/p&gt;  &lt;p&gt;CREATE TABLE [dbo].[Media] (   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [mediaId] [uniqueidentifier] NOT NULL ROWGUIDCOL PRIMARY KEY,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [dateCreated] [datetime] NOT NULL DEFAULT(GETDATE()),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [fileName] [nvarchar](256) NOT NULL,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [location] [geometry] NULL,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [file] [varbinary](max) FILESTREAM);    &lt;br /&gt;GO&lt;/p&gt;  &lt;p&gt;This will give us a new table, that we can insert into.&amp;#160; So If we insert an dummy row and keep an eye on the folders created when creating this new filestream.&amp;#160; Execute the following statement: &lt;/p&gt;  &lt;p&gt;INSERT INTO [FileStreamTest].[dbo].[Media]   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [mediaId]    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,[fileName]    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,[file]    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; VALUES    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (NEWID(),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#39;NewFile.jpg&amp;#39;,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; convert(varbinary(max), &amp;#39;Not a real Picture, but proves a point&amp;#39;))&lt;/p&gt;  &lt;p&gt;You will now notice that a new file has been added to the file system.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/AdventureWorksSamplesUpdate_128B3/image_10.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="322" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/AdventureWorksSamplesUpdate_128B3/image_thumb_4.png" width="426" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The more rows we insert, the more files are added to this directory.&amp;#160; You will also notice that the date time stamps on the files are also reflected by when the items were added to the database.&amp;#160; If a row is updated with a new image, the new image is created,&amp;#160; however the old image remains.&amp;#160; This also applies when the row is deleted.&amp;#160; However, these directories are cleaned up periodically by the FILESTREAM garbage collector. &lt;/p&gt;  &lt;p&gt;So, in short it seems that this will become the way forward for storing all sorts of files in your database that can be centrally stored, managed and backed up.&amp;#160; A Simple application could be easily written to save, update and retrieve images through SQL Server 2008, using file stream data.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;   &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:61377306-e24f-4d2a-bf08-62a3ce617c3e" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SQL%20Server%202008" rel="tag"&gt;SQL Server 2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AdventureWorks" rel="tag"&gt;AdventureWorks&lt;/a&gt;&lt;/div&gt; , FILESTREAM&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7475" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/FILESTREAM/default.aspx">FILESTREAM</category><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/AdventureWorks/default.aspx">AdventureWorks</category></item><item><title>So where is Microsoft Master Data Management (MDM)?</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/11/25/so-where-is-microsoft-master-data-management-mdm.aspx</link><pubDate>Tue, 25 Nov 2008 22:17:57 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7467</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7467</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/11/25/so-where-is-microsoft-master-data-management-mdm.aspx#comments</comments><description>&lt;p&gt;Well, back in June 2007, Microsoft acquired Stratature, who had a product named +EDM.&amp;#160; +EDM,&amp;#160; was&amp;#160; a master&amp;#160; data&amp;#160; hub with a web UI,&amp;#160; business&amp;#160; rules,&amp;#160; simple human workflow&amp;#160; and&amp;#160; notification,&amp;#160; entity&amp;#160; and&amp;#160; hierarchy management,&amp;#160; versioning,&amp;#160; transaction&amp;#160; logging, and an open subscription interface.&amp;#160; Microsoft has not continued a release of +EDM, but has continued support for existing customers.&amp;#160; In November a technology preview was released to those who applied and were accepted onto the program.&amp;#160; Well since then we have seen a CTP on Connect, which Jamie explored &lt;a href="http://blogs.conchango.com/jamiethomson/archive/2008/03/01/mdm-gt-entity-framework-gt-ado-net-data-services-better-together.aspx"&gt;here&lt;/a&gt;.&amp;#160; This Blog was written back in March 2008, and since then Microsoft has acquired yet another company called &lt;a href="http://www.zoomix.com/"&gt;Zoomix&lt;/a&gt;, who focuses on MDM data quality.&amp;#160; Information on this acquisition, and what Zoomix is can be found &lt;a href="http://it.toolbox.com/blogs/infosphere/microsoft-acquires-zoomix-a-data-quality-golden-goose-25986"&gt;here&lt;/a&gt;.&amp;#160;&amp;#160; The hope is that all of this will be integrated into Microsoft MDM.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;The official release plan was as follows: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Technology Preview&lt;/b&gt; - February, 2008 to a select group of customers.&amp;#160; Near identical functionality to Stratature release (actually released earlier than that, in November 2007). &lt;/li&gt;    &lt;li&gt;&lt;b&gt;TAP&lt;/b&gt; - Program commenced first half of 2008.&amp;#160;&amp;#160; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;CTP&lt;/b&gt; - First CTP release available Q3, 2008.&amp;#160;&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The codename for Microsoft MDM is &amp;quot;Bulldog&amp;quot;, and it seems that Microsoft MDM will ship in Microsoft SharePoint - Office 14 Release which is currently due for release late 2009, early 2010, around the same time as Windows 7.&amp;#160;&amp;#160; The codename for the subsequent release of the Microsoft MDM product is &amp;quot;Greenwich&amp;quot;. Apparently major new features will be released in the &amp;quot;Greenwich&amp;quot; timeframe, including integration, analytical &amp;amp; transactional capabilities.&amp;#160; But for the mean time let&amp;#8217;s see how &amp;#8220;Bulldog&amp;#8221; does. &lt;/p&gt;  &lt;p&gt;I will continue to keep an eye on MDM, from here on in, although it might be a long wait until you all get your hands on it.&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7467" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/Master+Data+Management/default.aspx">Master Data Management</category></item><item><title>PerformancePoint Server SP2</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/11/12/performancepoint-server-sp2.aspx</link><pubDate>Wed, 12 Nov 2008 21:54:50 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7459</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7459</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/11/12/performancepoint-server-sp2.aspx#comments</comments><description>&lt;p&gt;A good few months ago I wrote about SP1 for PerformancePoint and getting this working on SQL Server 2008.&amp;#160; There were a number of attempts, and with a great deal of hacking, I got an untested environment set up, however this was not very stable and never fully tested.&amp;#160; SP2 is due for release in December, and there are mentions of a Beta available on the web, although unavailable through MSDN, or Connect.&amp;#160; It seems that the two promises of SP2 are Hyper-V compatibility and SQL Server 2008 integration.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;A few good resources for this are as follows: &lt;/p&gt;  &lt;p&gt;&lt;a title="http://hmorgenstern.spaces.live.com/Blog/cns!28A6BE83102A0EB3!419.entry" href="http://hmorgenstern.spaces.live.com/Blog/cns!28A6BE83102A0EB3!419.entry"&gt;http://hmorgenstern.spaces.live.com/Blog/cns!28A6BE83102A0EB3!419.entry&lt;/a&gt; and &lt;a title="http://performancepointing.blogspot.com/2008/11/performance-point-server-sp2-pre.html" href="http://performancepointing.blogspot.com/2008/11/performance-point-server-sp2-pre.html"&gt;http://performancepointing.blogspot.com/2008/11/performance-point-server-sp2-pre.html&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7459" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/PerformancePoint+Server+2007/default.aspx">PerformancePoint Server 2007</category></item><item><title>SQL Server 2005 Service Pack 3</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/10/31/sql-server-2005-service-pack-3.aspx</link><pubDate>Fri, 31 Oct 2008 15:51:26 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7443</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7443</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/10/31/sql-server-2005-service-pack-3.aspx#comments</comments><description>&lt;p&gt;SQL Server 2005 SP3 is just a Beta at this stage, however it is available for download here, and it includes all the patches released to date: &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyId=D22317E1-BC64-4936-A14B-7A632B50A4CA&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=D22317E1-BC64-4936-A14B-7A632B50A4CA&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=D22317E1-BC64-4936-A14B-7A632B50A4CA&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Not a huge amount of fixes, but a few for Reporting Services that caught my eye:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Optimised Sharepoint Integration, to make reports respond faster. &lt;/li&gt;    &lt;li&gt;Connector to Teradata &lt;/li&gt;    &lt;li&gt;Enhanced PDF rendering &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;On the subject of service packs, it has now been released that PerformancePoint Server SP2 &amp;quot;should&amp;quot; support SQL Server 2008, lets hope we get our hands on this soon.&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7443" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/SQL+Server+2005/default.aspx">SQL Server 2005</category></item><item><title>Connection Strings in PPS Monitoring</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/10/31/connection-strings-in-pps-monitoring.aspx</link><pubDate>Fri, 31 Oct 2008 01:45:25 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7442</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7442</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/10/31/connection-strings-in-pps-monitoring.aspx#comments</comments><description>&lt;p&gt;ODBC connection string in PPS Monitoring can become a little awkward, therefore I thought it wise to write a quick blog post with various connection strings in for a quick reference.&amp;#160; &lt;/p&gt;  &lt;p&gt;Using ODBC connection strings, you can connect to many data sources including: SQL Server, Access, Oracle, Excel etc. Lets remember that PPS monitoring is best used when connection to multidimensional data sources, and the built in reports can use only Multidimensional sources.&amp;#160; KPI&amp;#39;s can however use these connection strings and therefore, it is often a requirement to connect to relational stores. Here are a few examples of connections strings&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SQL Server: Driver = {SQL Server}; Server=&lt;strong&gt;SERVERNAME&lt;/strong&gt;; Database=&lt;strong&gt;ADVENTUREWORKS&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Access: Driver= {Microsoft Access Driver (*.mdb)}; dbq=&lt;strong&gt;c:\SourceLocation\SourceAccessDB.mdb&lt;/strong&gt;; uid=&lt;strong&gt;USERNAME&lt;/strong&gt;; pwd=&lt;strong&gt;PASSWORD&lt;/strong&gt;;&lt;/li&gt;    &lt;li&gt;Oracle: Driver= {Microsoft ODBC for Oracle}; server=&lt;strong&gt;SERVER&lt;/strong&gt;; uid=&lt;strong&gt;USERNAME&lt;/strong&gt;; pwd=&lt;strong&gt;PASSWORD&lt;/strong&gt;;&lt;/li&gt;    &lt;li&gt;Excel: Driver={Microsoft Excel Driver (*.xls)}; dbq=&lt;strong&gt;C:\SOURCELOCATION\WORKBOOK.xls;&lt;/strong&gt; ReadOnly=True;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7442" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/PerformancePoint+Server+2007/default.aspx">PerformancePoint Server 2007</category><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/Monitoring/default.aspx">Monitoring</category></item><item><title>Slow report in Reporting Services, even though the stored procedure runs so quickly?</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/08/27/slow-report-in-reporting-services-even-though-the-stored-procedure-runs-so-quickly.aspx</link><pubDate>Wed, 27 Aug 2008 16:52:03 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7392</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7392</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/08/27/slow-report-in-reporting-services-even-though-the-stored-procedure-runs-so-quickly.aspx#comments</comments><description>&lt;p&gt;Apologies for the long title, however it had to be said.&amp;#160; I have been working with Reporting Services recently, with very complex reports, not from a reporting services point of view, but from a T-SQL stored procedure aspect.&amp;#160; The query in question is over 1500 lines long, and needs to perform well when the report is run.&amp;#160; So with a little bit of performance tuning we managed to get said stored procedure to run in under 4 seconds (on a fairly powerful box).&amp;#160; However as soon as this was run through Reporting Services, the performance ground to a halt.&amp;#160; We are talking about 1 minute 30 seconds to run this report. So after a little help from my friends (thanks to Tim for finding &lt;a href="http://www.lockergnome.com/sqlsquirrel/2007/12/14/victim-of-parameter-sniffing/" target="_blank"&gt;this&lt;/a&gt; blog) we found that this was the exact problem.&amp;#160; &lt;/p&gt;  &lt;p&gt;So - its all down to &amp;quot;Parameter Sniffing&amp;quot; !!&amp;#160; But what on earth is parameter sniffing, and how does it help/hinder us? &lt;/p&gt;  &lt;p&gt;As taken from a Microsoft white paper:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;quot;Parameter sniffing&amp;quot; refers to a process whereby SQL Server&amp;#39;s execution environment &amp;quot;sniffs&amp;quot; the current parameter values during compilation or recompilation, and passes it along to the query optimizer so that they can be used to generate potentially faster query execution plans. The word &amp;quot;current&amp;quot; refers to the parameter values present in the statement call that caused a compilation or a recompilation.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Just a bit of &amp;quot;Googling&amp;quot; will get you many more resources on the subject, and well worth reading. &lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7392" width="1" height="1"&gt;</description></item><item><title>SQL Server 2008 Intellisense</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/08/26/sql-server-2008-intellisense.aspx</link><pubDate>Tue, 26 Aug 2008 20:44:32 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7391</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7391</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/08/26/sql-server-2008-intellisense.aspx#comments</comments><description>&lt;p&gt;One of the under mentioned, but long awaited feature of SQL Server 2008 is intellisense.&amp;#160; Up to now it has always been add on available from companies like RedGate, called &lt;a href="http://www.red-gate.com/products/SQL_Prompt/index.htm?gclid=CMienPKnrJUCFQpYQgod7ld-jw"&gt;SQL Prompt&lt;/a&gt;, or &lt;a href="http://roundpolygons.com/"&gt;SQL Assist&lt;/a&gt;.&amp;#160; To get it working is SQL 2008; you pretty much have to do nothing, however sometimes it doesn&amp;#39;t come up without pressing Ctrl + Space.&amp;#160; So it works well with T-SQL, however does it work with MDX?&amp;#160; In short - not really, when writing an MDX query in SSMS, you do get some intellisense prompts, however none of which are representations of the data within the cube.&amp;#160; However you do get keyword prompts, which could be useful.&amp;#160; So next stop, full intellisense for MDX queries - hopefully. &lt;/p&gt;  &lt;p&gt;For those of you who haven&amp;#39;t yet used SQL 2008, here are some screen shot of intellisense in action. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/SQLServer2008Intellisense_11C72/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="146" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/SQLServer2008Intellisense_11C72/image_thumb.png" width="313" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/SQLServer2008Intellisense_11C72/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="145" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/SQLServer2008Intellisense_11C72/image_thumb_1.png" width="421" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:97c060f9-ae03-4cfc-b32a-86deec161671" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SQL%20Server%202008" rel="tag"&gt;SQL Server 2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Intellisense" rel="tag"&gt;Intellisense&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7391" width="1" height="1"&gt;</description></item><item><title>Exploring the PerformancePoint Planning Web Service Part 2</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/08/23/exploring-the-performancepoint-planning-web-service-part-2.aspx</link><pubDate>Sat, 23 Aug 2008 13:38:02 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7389</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7389</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/08/23/exploring-the-performancepoint-planning-web-service-part-2.aspx#comments</comments><description>&lt;p&gt;Sorry for those who have been waiting for this, but here it finally is, Part 2 of using the planning web service.&amp;#160; In &lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/06/30/exploring-the-performancepoint-planning-webservice.aspx" target="_blank"&gt;Part 1&lt;/a&gt; we looked at the Web services exposed by PerformancePoint Planning. We also looked at the difficulties of de-serializing the XML, into the the object that are generated from the WSDL.&amp;#160; Today we will look into how to get the BizSystem information from the web service. &lt;/p&gt;  &lt;p&gt;Firstly lets remind ourselves what we are looking to get from the web service. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ExploringthePerformancePointPlanningWebS_AB49/GetSystem_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="307" alt="GetSystem" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ExploringthePerformancePointPlanningWebS_AB49/GetSystem_thumb.jpg" width="709" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As we can see form XML document we have a node called Applications which contains an ArrayOfBizApplications, which contains, in this case 2 BizApplications.&amp;#160; In turn if we try and use the object created from the WSDL in code, we find that we have an object called BizSystem.&amp;#160; Lets have a look at this object.&amp;#160; &lt;/p&gt;  &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;   &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;public partial class BizSystem : MetadataObjectBase {
     
     private System.Data.DataSet applicationsField;
     
     /// &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;remarks&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
     public System.Data.DataSet Applications {
         get {
             return this.applicationsField;
         }
         set {
             this.applicationsField = value;
         }
     }
 }

public abstract partial class MetadataObjectBase {
       
       private string nameField;
       
       private string descriptionField;
       
       private IdRef bizTypeIdRefField;
       
       private System.Guid idField;
       
       private string labelField;
       
       private System.Guid parentIdField;
       
       /// &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;remarks&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
       public string Name {
           get {
               return this.nameField;
           }
           set {
               this.nameField = value;
           }
       }
       
       /// &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;remarks&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
       public string Description {
           get {
               return this.descriptionField;
           }
           set {
               this.descriptionField = value;
           }
       }
       
       /// &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;remarks&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
       public IdRef BizTypeIdRef {
           get {
               return this.bizTypeIdRefField;
           }
           set {
               this.bizTypeIdRefField = value;
           }
       }
       
       /// &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;remarks&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
       [System.Xml.Serialization.XmlAttributeAttribute()]
       public System.Guid Id {
           get {
               return this.idField;
           }
           set {
               this.idField = value;
           }
       }
       
       /// &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;remarks&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
       [System.Xml.Serialization.XmlAttributeAttribute()]
       public string Label {
           get {
               return this.labelField;
           }
           set {
               this.labelField = value;
           }
       }
       
       /// &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;remarks&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
       [System.Xml.Serialization.XmlAttributeAttribute()]
       public System.Guid ParentId {
           get {
               return this.parentIdField;
           }
           set {
               this.parentIdField = value;
           }
       }
   }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;As we can see, the BizSystem contains one property, that is BizApplication, which is quite simply a DataSet.&amp;#160; We can see from the XML that the Biz Application is unlikely to be able to be de-serialized into a dataset, and when we do try and access the dataset, we do not get any data tables contained within the dataset, nor any data from the XML.&lt;/p&gt;

&lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;
  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;private void LoadBizSystem()
      {
          MetaDataManager.MetadataManagerWebService ppsMDM = new MetaDataManager.MetadataManagerWebService();

          System.Net.CredentialCache myCredentials = new System.Net.CredentialCache();
          NetworkCredential netCred = new NetworkCredential(&amp;quot;Administrator&amp;quot;, &amp;quot;LetMeIn&amp;quot;, &amp;quot;AServer&amp;quot;);
          myCredentials.Add(new Uri(ppsMDM.Url), &amp;quot;Basic&amp;quot;, netCred);
          ppsMDM.Credentials = myCredentials;

          MetaDataManager.BizSystem bizSystem = ppsMDM.GetSystem(false);

          DataSet ds = bizSystem.Applications;
          DataTable dt = ds.Tables[0];
      }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Although not necessarily the best way, what we can do is write a custom class that the XML can be de-serialized to, thus giving us the data from the Biz System. To begin with we need to create an object that will allow us to de-serialize the BizSystem into it, and therefore allowing us to access the properties of the BizSystem.&amp;#160; From the XML we can work out that there are a number of attributes, and to keep this simple we will just prove that we can get the data from the BizSystem; these are: &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Name &lt;/li&gt;

  &lt;li&gt;Id &lt;/li&gt;

  &lt;li&gt;Label &lt;/li&gt;

  &lt;li&gt;ParentId &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Creating this object will allow us to retrieve the the attributes of a BizApplication. The object can be created as follows: &lt;/p&gt;

&lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;
  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;[XmlRoot(&amp;quot;BizApplication&amp;quot;)]
    [Serializable]
    public class BizApplication
    {
        private string element_Name;
        private string attribute_id;
        private string attribute_Label;
        private string attribute_ParentId;

        [XmlElement(&amp;quot;Name&amp;quot;)]
        public string Name
        {
            get { return element_Name; }
            set { element_Name = value; }
        }

        [XmlAttribute(&amp;quot;Id&amp;quot;)]
        public string Id
        {
            get { return attribute_id; }
            set { attribute_id = value; }
        }

        [XmlAttribute(&amp;quot;Label&amp;quot;)]
        public string Label
        {
            get { return attribute_Label; }
            set { attribute_Label = value; }
        }

        [XmlAttribute(&amp;quot;ParentId&amp;quot;)]
        public string ParentId
        {
            get { return attribute_ParentId; }
            set { attribute_ParentId = value; }
        }

    }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This object will allow us to gain access the the 4 attributes named above, however, the BizApplication are is contained in an array of applications, so we need to create another object that contains an array of BizApplications. Also in this object we can embed the de-serialization routine, and create a method that takes an XML Document of BizSystem, to de-serialize.&amp;#160; So we need to get the XML returned from the web service, as opposed to the attempted de-serialized version.&amp;#160; So we need to alter what the call to biz system returns.&amp;#160; Now this is a bit of a hack, however I can assure you that it does work.&amp;#160; We need to change the object that is returned from the web service, so if we go to the definition of Biz System, and alter the reference so it returns an XmlNode[].&amp;#160; &lt;/p&gt;

&lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;
  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;[System.CodeDom.Compiler.GeneratedCodeAttribute(&amp;quot;System.Xml&amp;quot;, &amp;quot;2.0.50727.3031&amp;quot;)]
   [System.SerializableAttribute()]
   [System.Diagnostics.DebuggerStepThroughAttribute()]
   [System.ComponentModel.DesignerCategoryAttribute(&amp;quot;code&amp;quot;)]
   [System.Xml.Serialization.XmlTypeAttribute(Namespace=&amp;quot;http://www.microsoft.com/PerformancePoint/MetadataManager&amp;quot;)]
   public partial class BizSystem : MetadataObjectBase {

       private System.Xml.XmlNode[] applicationsField;
       
       /// &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;remarks&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
       public System.Xml.XmlNode[] Applications
       {
           get {
               return this.applicationsField;
           }
           set {
               this.applicationsField = value;
           }
       }
   }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;So now we have the object returned as an XmlNode, so its time to write the ArrayOfBizApplications object, and the de-serialize method. &lt;/p&gt;

&lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;
  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;[Serializable]
    [XmlRoot(&amp;quot;ArrayOfBizApplication&amp;quot;)]
    public class ArrayOfBizApplication
    {
        private BizApplication[] element_BizApplicationList;
        
        [XmlElement(&amp;quot;BizApplication&amp;quot;)]
        public BizApplication[] BizApplication
        {
            get { return element_BizApplicationList; }
            set { element_BizApplicationList = value; }
        }

        public static ArrayOfBizApplication LoadApplications(BizSystem bizSystem)
        {
            //Get the Applicaiotn list as an object. 
                Object bizApplication = null;
                ArrayOfBizApplication arrayOfBizApplicaion = null;
                try
                {
                    bizApplication = bizSystem.Applications;
                }
                catch (Exception err)
                {
                    //Log Exceltion here.. 
                    //Try and Cast it! (Untested)
                    bizApplication = (Object)bizSystem.Applications;
                }

                //We know this is an XML object - it has come back from the webservice
                XmlNode[] xmlNodes = (XmlNode[])bizApplication;

                StringBuilder sb = new StringBuilder();

                sb.Append(&amp;quot;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ArrayOfBizApplication&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&amp;quot;);
                //We Only want an array of BizApplicaiotoins
                foreach (XmlNode xmlNode in xmlNodes)
                {
                    if (xmlNode.Name.ToLower() == &amp;quot;arrayofbizapplication&amp;quot;)
                    {
                        sb.Append(xmlNode.InnerXml.ToString());
                    }
                }
                sb.Append(&amp;quot;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ArrayOfBizApplication&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&amp;quot;);

                XmlSerializer serializer;

                System.IO.StringReader sr = new System.IO.StringReader(sb.ToString());
                XmlTextReader xmlTReader = new XmlTextReader(sr);

                try
                {
                    serializer = new XmlSerializer(typeof(ArrayOfBizApplication));
                    arrayOfBizApplicaion = (ArrayOfBizApplication)serializer.Deserialize(xmlTReader);
                }
                catch (Exception err)
                {
                    string test = err.Message;
                    throw err;
                }

                finally
                {
                    //Close the reader. 
                    xmlTReader.Close();
                }
                // return the list of BizApplication.
            return arrayOfBizApplicaion;
            }
    }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;We finally have some data from the Get System, we can browse our objects, which has some basic data within them. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ExploringthePerformancePointPlanningWebS_AB49/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="150" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ExploringthePerformancePointPlanningWebS_AB49/image_thumb.png" width="393" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Upon more investigation and examination of the XML that is returned you can easily extend these objects to return as much data as you require from Biz System.&amp;#160; If you have any questions, or have had more success with the Planning Web service please contact me.&amp;#160; For now, I hope to make more progress with the web service over the coming months. &lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7389" width="1" height="1"&gt;</description></item><item><title>Reporting Services 2008 - Connection Problems</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/07/31/reporting-services-2008-connection-problems.aspx</link><pubDate>Wed, 30 Jul 2008 23:05:37 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7377</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7377</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/07/31/reporting-services-2008-connection-problems.aspx#comments</comments><description>&lt;p&gt;Having recently rebuilt a server entirely with &amp;quot;2008&amp;quot; technology I have a small problem with reporting services.&amp;#160; When trying to look at the Reports, I received the error:&lt;/p&gt;  &lt;p&gt;&amp;quot;The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.&amp;quot;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServices2008ConnectionProblems_14DBE/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="179" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServices2008ConnectionProblems_14DBE/image_thumb.png" width="369" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I found, that even though we are not trying to look at the secure site, the certificate causes issues.&amp;#160; For development and testing purposes I found it easiest to remove the certificate.&amp;#160; To do this perform the following steps:&lt;/p&gt;  &lt;p&gt;1. Open Reporting Services Configuration Manager &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServices2008ConnectionProblems_14DBE/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="484" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServices2008ConnectionProblems_14DBE/image_thumb_2.png" width="640" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2. Click Web Service URL and click &amp;quot;Advanced&amp;quot; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServices2008ConnectionProblems_14DBE/image_8.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="339" alt="image" src="http://blogs.adatis.co.uk/blogs/martynbullerwell/WindowsLiveWriter/ReportingServices2008ConnectionProblems_14DBE/image_thumb_3.png" width="362" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. Remove the SSL certificates, both for IPv4 and IPv6 and click ok, and then Apply.&amp;#160; This will remove the SSL certificates, you should now be able to use Reporting Services 2008.&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7377" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/Reporting+Services/default.aspx">Reporting Services</category></item><item><title>AdventureWorks for SQL Server 2008</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/07/28/adventureworks-for-sql-server-2008.aspx</link><pubDate>Mon, 28 Jul 2008 22:55:20 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7374</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.adatis.co.uk/blogs/martynbullerwell/rsscomments.aspx?PostID=7374</wfw:commentRss><comments>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/07/28/adventureworks-for-sql-server-2008.aspx#comments</comments><description>&lt;p&gt;For those of you who wish to learn SQL Server 2008, The Adventure Works databases are available for download here for some of the same data we are familiar with: &lt;a href="http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=14274"&gt;http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=14274&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There are a number of downloads available, so choose carefully.&amp;#160; There are 4 main versions, however I would recommend that you download the full Zipped version, which will give you all four of the AdventureWorks databases, it is around an 85mb download.&amp;#160;&amp;#160; If you download the MSI version, it does not install and configure the databases for you; however the files are placed here:&amp;#160; C:\Program Files\Microsoft SQL Server\100\Tools\Samples. Once downloaded, there are a few ways to load the samples, the easiest being restoring the .BAK file to SQL, remember to do this for both DW and the OLTP AdventureWorks Databases.&amp;#160;&amp;#160; For the Cube, you get a project that opens in SQL Server 2008, and from my experience simply deploys (as long as you have set up security correctly). &lt;/p&gt;  &lt;p&gt;&lt;b&gt;SQL2008.AdventureWorks_DB_Scripts_v [2005|2008].[ia64.msi|x64.msi|x86.msi|zip]:&lt;/b&gt; T-SQL scripts and CSV files for loading all four databases in the AdventureWorks family of databases and diagrams for one year-model, either v2005 or v2008. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;SQL2008.AdventureWorks_DW_BI_v[2005|2008].[ia64.msi|x64.msi|x86.msi|zip]:&lt;/b&gt; T-SQL scripts, CSV files and database backups for loading the AdventureWorks Data Warehouse database, diagrams and Visual Studio/BIDS projects for Analysis Services projects for business intelligence samples for one year-model, either v2005 or v2008. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;SQL2008.AdventureWorks_LT_DB_v[2005|2008].[ia64.msi|x64.msi|x86.msi|zip]:&lt;/b&gt; T-SQL scripts and diagrams for the AdventureWorks &amp;quot;Lite&amp;quot; database for one year-model, either v2005 or v2008. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;SQL2008.AdventureWorks_OLTP_DB_v[2005|2008].[ia64.msi|x64.msi|x86.msi|zip]:&lt;/b&gt; T-SQL scripts, CSV files and database backups for loading the AdventureWorks OLTP database and diagrams for one year-model, either v2005 or v2008.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:89aeafba-e388-4b4b-801d-6af55c08d8bc" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SQL%20Server%202008" rel="tag"&gt;SQL Server 2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AdventureWorks" rel="tag"&gt;AdventureWorks&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=7374" width="1" height="1"&gt;</description></item></channel></rss>
