Thursday, April 26, 2007

Powershell & MDX

Darren Gosbell talks about Powershell & MDX 

I have been experimenting a bit more recently to see what I can do with Powershell and Analysis Services. The following small script executes an MDX query using an XMLA connection. I have borrowed the xsl files from one of Chris Harrington's excellent ThinOlap samples.

  1 [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices.Xmla") 
2 [Microsoft.AnalysisServices.xmla.xmlaclient]$xmlac = new-Object Microsoft.AnalysisServices.Xmla.XmlaClient
3 $xmlac.Connect("localhost\sql05")
4 write-output "Connected to server"
5 $XmlResult = "" # Initialise the variable so that it can be passed by [ref]
6 $qry = "SELECT {Measures.[Internet Sales Amount], Measures.[Internet Order Quantity]} ON COLUMNS, Product.Category.Members ON ROWS FROM [Adventure Works]"
7 $props = "<PropertyList><Catalog>Adventure Works DW</Catalog><Format>Native</Format></PropertyList>"
8 $xmlac.executestatement($qry,[ref] $xmlresult,0,$props,"")
9
10 write-Output "Query Executed"
11 $x = [xml]$xmlresult #cast the string result to an xml document
12
13 [System.Xml.Xsl.XslCompiledTransform] $xsl = new-Object System.Xml.Xsl.XslCompiledTransform
14 $xsl.Load("c:\data\xamd.xsl")
15 [System.Xml.XmlWriterSettings] $xws = new-Object system.Xml.XmlWriterSettings
16 $xws.ConformanceLevel = 'Auto'
17 [System.Xml.XmlWriter] $xw = [System.Xml.XmlWriter]::Create("c:\data\output.htm",$xws)
18 $xsl.Transform($x.CreateNavigator(),$xw)
19
20 # Cleaning up
21 $xw.Close
22 $xmlac.Disconnect()
23 $xmlresult = ""
24 $x = ""
25 write-Output "Operation Complete"

Now this is interesting and produces nicely formatted html results, however there are many different ways of running MDX queries against Analysis Services. One of the things I found interesting was the possiblity of running some of the XMLA discover commands.

Consider the following script:

  1 [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices.Xmla") 
2 [Microsoft.AnalysisServices.xmla.xmlaclient]$xmlac = new-object Microsoft.AnalysisServices.Xmla.XmlaClient
3 $xmlac.Connect("localhost\sql05")
4 $XmlResult = "" # Initialise the variable so that it can be passed by [ref]
5 $xmlac.Discover("DISCOVER_CONNECTIONS", "", "", [ref] $XMLResult, 0, 0, 1)
6 $x = [xml]$xmlresult
7 $xmlac.Disconnect()
8 #output discovered connections
9 $x.return.root.row |Format-Table CONNECTION_ID , CONNECTION_USER_NAME, CONNECTION_LAST_COMMAND_START_TIME

Source: Darren Gosbell [MVP] - Random Procrastination

Index of /~mlearn/databases

A whack of useful datasets from ages ago, but some are up to date.

 

How about Poker Hand Training?

http://www.ics.uci.edu/~mlearn/MLRepository.html

Link to Index of /~mlearn/databases

John C. Hancock's blog - Facebook data mining

 

These techniques involve applying complex algorithms to large sets of data.  What we need is a platform that can store the data, give us a framework to implement the required logic, and a flexible way of presenting the data to users.  SQL 2005 has all the necessary components, so I've attached a paper that describes how to start tackling this area.  The paper walks you through creating the data mining model using the Microsoft Association Rules algorithm, developing the stored procedures using C#, and then reporting on the data mining model.

Source: John C. Hancock's blog

Analysis Services Stored Procedure Project

 

  • AsymmetricSet - AsymmetricSet
  • CellTimings - TimeToCalculate
  • CubeInfo - GetCubeLastProcessedDate
  • EfficientToDate - GetEfficientPeriodsToDateSet, GetMostGranularHierarchyCurrentMember
  • FindCurrentMembers - FindCurrentMember, FindCurrentMemberVerbose
  • Multiplication - Multiply
  • SetOperations - Order, ReverseSet, RandomSample, InverseHierarchility, AsymmetricDrillDown
  • StringFilters - RegExFilter, Like
  • ListFunctions - ListFunctions
  • Parallel - Parallel
  • LinkMember - HierarchyLinkMember, LevelLinkMember
  • ClusterNaming - AutoNameClusters, DistinguishingCharacteristicsForClusters
  • Partition - CreatePartitions
  • XmlaDiscover - Discover, ClearCache, Cancel
  • MemoryUsage - SnapshotMemoryUsageTotals
  • Source: Analysis Services Stored Procedure Project

    Tuesday, April 24, 2007

    Cubegeek: Essbase going away?

     Some interesting speculation around the roadmap for Oracle/Hyperion merger:

    That's going to take years, and lots of extentions to OWB, but systems like Star Analytics' SIS could facilitate all that. Now that Oracle owns Essbase, we'll find out price/performance wise if that's a good direction to head, but I'm convinced that the two companies are going with the market leading technologies as a guide. I don't know if Express is behind Oracle BI EE, but Kurian was talking about Essbase as a source on the same level as Hyperion IR and Oracle BI EE. Meaning that pure Essbase apps may be just considered point BI solutions which don't play a major role in the EPMS world going forward.

    Source: Cubegeek: Hyperion Solutions Conference General Session

    Chris Webb's BI Blog

    Chris's blog has some good tools for performance testing Analysis Services. 

    I do a lot of performance tuning as part of my consultancy work, and quite often when I start looking at a customer's cube I find that for any given query that needs to be tuned there are several (sometimes hundreds) of calculations which affect the cells in the query and which could be the cause of performance problems. To help me work out which calculations are the ones that need to be looked at I put together a tool - the MDX Script Performance Analyser - which I've just got round to putting up on Codeplex so it can be shared:

    http://www.codeplex.com/mdxscriptperf

    Basically what it does is this:

    • First of all, you connect to the cube that your query runs against
    • Then you enter your query in the text box at the top of the screen and hit 'Run Query'
    • This then starts the following process:
      • The tool reads the cube's MDX Script and splits it up into its constituent statements, storing them in an array
      • It executes a Clear Cache command to ensure that all queries are run on a cold cache
      • It executes a Clear Calculations command so that for the current session the cube appears as though its MDX Script contains no commands
      • For each statement in the array of statements from the MDX Script, it then:
        1. Executes the first statement in the MDX Script within the session, so that the cube now acts as though its MDX Script contains only this statement and all previously executed statements
        2. Runs the query you entered in the textbox
        3. Stores how long the query took to run, plus other interesting metrics
      • Once the query has run on the equivalent of the entire MDX Script in the cube, a report is generated which contains graphs and charts illustrating the data captured earlier

    Source: Chris Webb's BI Blog

    Thursday, April 19, 2007

    Roadkil's Unstoppable Copier

     

    Recovers files from disks with physical damage. Allows you to copy files from disks with problems such as bad sectors, scratches or that just give errors when reading data. The program will attempt to recover every readable piece of a file and put the pieces together. Using this method most types of files can be made useable even if some parts were not recoverable in the end.

    Source: Roadkil's Unstoppable Copier

    Wednesday, April 18, 2007

    Geeky Storytelling : Expanding VHDs

     

    Expanding VHDs

    Published 02 April 07 02:27 PM

    I ran out of room in my VHD image (for VirtualPC 2007) I've been using while building a new image for my current project. Blogging it so I don't waste too much time looking for it the next time I need to do this.

    I was able to expand my VHD using the following:

    Use VHDResize to increase the size of the VHD disk. Important note, which I missed the first time (since I didn't RTFM :()), this does not extend the partition.

    Use DISKPART to extend the partition to use the new disk size.

    Source: Geeky Storytelling : Expanding VHDs

    Saturday, April 14, 2007

    instructables : Save $200 in 2 minutes and have the worlds best writing pen

     

    Go out and find a Mont Blanc pen you like. Ask the salesperson to let you write with it...nice, huh? Now ask the price. When you've gotten over the sticker-shock, leave and go back to your good old G2. Remember what life was like before G2? The pens were cheap and the ink was like cheese. G2s were the best thing since clickable mechanical pencils. Even after we all had G2s, I still admired the uber-extravagant Mont Blanc people. Their pens were so smooth, they nearly wrote by themselves. Alas, at $200-$2000 a pen, that miraculous ink was out of the reach of the common man.....until now.

    Source: instructables : Save $200 in 2 minutes and have the worlds best writing pen

    Wednesday, April 11, 2007

    tlbox - Programming Tools

    hundreds of links for programmers. 

    111 users
    4GuysFomRolla.com

    The website contains articles and tutorials with regard to ASP.NET 2.0 ranging from accessing & updating data and application that can be derived from using the software technology. The website also offers weekly newsletter, links & resources to other related websites, memberships, etc. to help fellows programmers understand the the software and its applications.

    80 users
    ASP.NET 2.0

    A free download with technical support that allows users to create interactive websites that work across all modern browsers.

    61 users
    The Code Project

    Articles on Visual Studio and .NET

    49 users
    CodePlex

    Microsoft's open source project site featuring downloads, discussion forums, and extensive links for multiple project tags.

    35 users
    Mono

    Mono is an open development initiative by Novell to develop an open source version of Microsoft's .NET development platform for UNIX developers.

    16 users
    W3Schools .net

    A complete list of tutorials and code sample very well formatted.

    Source: tlbox - Programming Tools

    Photoshop Tutorials and Flash Tutorials

    Over 12,000 tutorials for anything and everything here. 

  • Tutorials: 12,708
  • Categories: 555
  • Users Online: 602
  • Source: Photoshop Tutorials and Flash Tutorials

    GigaSize.com: Host and Share your Files

     

    Gigasize is probably the best way to store and share big files online. Why you ask ? Let us show you !

    Gigasize offers you virtually limitless space to store any kind of file (Documents, Photos, Music, Video ...)

    You can use our services to :

    • Share your files with your friends/family
    • Use our e-mailing services to to send your files to your Instant Messenger (IM) contact lists
    • Access your files from anywhere in the world
    • And much more ...

    Essentially, GigaSize is the new way to share anything with anybody, without the hassles of traditional ways like e-mail. And the best part is that basic accounts are free !

    Source: GigaSize.com: Host and Share your Files

    How to obtain a Microsoft Hot Fix

    First, how to obtain a Microsoft Hot Fix – go to http://www.microsoft.com/services/microsoftservices/supp.mspx and find the area that fits your current need. Call the support number, and select the option for hot fixes. Someone from Microsoft will answer; tell the support person you are calling for a hot fix. After you give your information and state your case, they send you a download link. It’s just that easy.

    Source: Windows Server Clustering & PCNews : How to obtain a Microsoft Hot Fix - or should you?

    Monday, April 09, 2007

    Dan Evans' VBA Scripts - Outlook Attachment Checker etc

     

    This macro checks for when you mention Attach in your email, and then prompts you if you forgot an attachment.  See posting for details on installation. 

    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    ' VBA program for Outlook, (c) Dan Evans. dan at danevans.co.uk
    ' Will check if your outgoing email mentions an attachment, but you've
    ' forgotten to attach it
    ' v1.03 of 10/8/04 - Modified to search through subject line as well as message body
    ' v1.02 of 16/10/02 - No change to code, but tested works with Outlook 2002 as well as Outlook 2000
    ' v1.01 of 23/9/01 - OK for "Attach" as well as "attach"
    ' v1.00 of 21/9/01 - Initial working version
    Dim intRes As Integer
    Dim strMsg As String
    Dim strThismsg As String
    Dim intOldmsgstart As Integer
    intOldmsgstart = InStr(Item.Body, "-----Original Message-----")
    ' intOldmsgstart is the location of where old/re/fwd msg starts. Will be 0 if new msg
    If intOldmsgstart = 0 Then
    strThismsg = Item.Body + " " + Item.Subject
    Else
    strThismsg = Left(Item.Body, intOldmsgstart) + " " + Item.Subject
    End If
    ' The above if/then/else will set strThismsg to be the text of this message only,
    ' excluding old/fwd/re msg
    ' IE if the original included message is mentioning an attachment, ignore that
    ' Also includes the subject line at the end of the strThismsg string
    If InStr(LCase(strThismsg), "attach") > 0 Then
    If Item.Attachments.Count = 0 Then
    strMsg = "Dan Evans' Attachment Checker:" & Chr(13) & Chr(10) & "Your message mentions an attachment, but doesn't have one." & Chr(13) & Chr(10) & "Send the message anyway?"
    intRes = MsgBox(strMsg, vbYesNo + vbDefaultButton2 + vbExclamation, "You forgot the attachment!")
    If intRes = vbNo Then
    ' cancel send
    Cancel = True
    End If
    End If
    End If
    End Sub

    Source: Dan Evans' VBA Scripts - Outlook Attachment Checker etc

    Wednesday, April 04, 2007

    Elenco prodotti Datawarehouse e Business Intelligence

     

    Huge list of OLAP products here: 

    This page contains links to companies that sell software products in the areas of  Business Intelligence and Data Warehousing.
    It's not easy to categorize Data Warehousing products, especially since nowadays many companies have expanded their offers in an effort to present themselves as suppliers of complete BI and BPM solutions.
    This page has been recently rearranged, the main change being that the first block now contains all those companies that appear in the Gartner BI magic quadrant.

    Source: Elenco prodotti Datawarehouse e Business Intelligence

    A Common Architecture for Loading Data

    Here is one generic approach to loading data files into SQL. 

    The advantage of the "Plug In" approach is that it simplifies the future addition using only metadata, this table contains unique names of extracts, names of stored procedures for uploading data from staging to production tables, unique key position in the data file and so on.

    Source: A Common Architecture for Loading Data

    Monday, April 02, 2007

    SQL Scripter

     

    Sql Scripter is a free utility to generate Sql metadata scripts, and also Reporting Services RDL scripts. 

    The April, 2007 release now exports data to flat files!

    Link to SQL Scripter

    Friday, March 30, 2007

    The BizSharpie PerformancePoint Blog

     

    Link to The BizSharpie PerformancePoint Blog

    SSW Rules to Better SQL Reporting Services 2005

     

    Rules to Better SQL Reporting Services

    1. Do you know the 4 user experiences of Reporting Services: Vanilla, Website, Email, Windows?
    2. Do you know when to use Reporting Services?
    3. Do you check that "RS Configuration Manager" is all green ticks?
    4. Do you check out the built-in samples?
    5. Do you know your 2 migration options to show your Access reports on the web?
    6. Layout - Does your report print and display on the web correctly?
    7. Layout - Do you include a useful footer at the bottom of your reports?
    8. Layout - Do you avoid using word 'Report' in your reports?
    9. Layout - Do you underline items with Hyperlink Action?
    10. Layout - Do you show errors in Red?
    11. Layout - Do you have consistent report name?
    12. Data Layout - Do you show the past 6 months of totals in a chart?
    13. Data Layout - Do you show data and chart in one?
    14. Data Layout - Do you avoid using a single chart when you need it to be scaled?
    15. Data Layout - Do you use expressions to show the correct scale on charts?
    16. Data Layout - Do you show change in your reports?
    17. Data Layout - Do you avoid showing change as a percentage?
    18. Data Layout - Do you use alternating row colors?
    19. Data Layout - Do you have nodes count like Outlook?
    20. Data Layout - Do you avoid displaying decimal places?
    21. Data Layout - Do you have consistent height of table row across all your reports?
    22. Data Layout - Do you display zero number as blank in your reports?
    23. Data Layout - Do you know the best way to show your data?
    24. Data Layout - Do you show time format clearly?
    25. Data Logic - Do you use de-normalized database fields for calculated values?
    26. Parameters - Do you avoid showing empty reports by at least setting Default parameters?
    27. Parameters - Do you avoid showing empty reports by the most intelligent default?
    28. Parameters - Do you use the DateTime data type for date parameters?
    29. Parameters - Do you have consistent parameter names?
    30. Performance - Do you cache popular reports for better performance?
    31. Performance - Do you schedule snapshots of slow reports for quicker access?
    32. Internationalization - Do you keep use regional friendly formatting?
    33. Internationalization - Do you make sure your language follows the user's regional settings?
    34. Internationalization - Do you make sure your language rule has an exception for Currency Fields?
    35. Admin - Do you validate all your reports?
    36. Admin - Do you create a separate virtual directory for Admin access?
    37. Admin - Do you take advantage of 'Integrated Security' to do Payroll reports?
    38. Admin - Do you remove ExecutionTime in Subject of Subscription email?

    Source: SSW Rules to Better SQL Reporting Services 2005

    Parse delimited string in a Stored procedure

     

    Parse delimited string in a Stored procedure

    Sometimes we need to pass an array to the Stored Procrdure and split the array inside the stored proc. For example, lets say there is a datagrid displaying sales orders, each sales order associated with an orderid (PK in the Sales table). If the user needs to delete a bunch of sales orders ( say 10-15 etc)..it would be easier to concatenate all the orderid's into one string like 10-24-23-34-56-57-....etc and pass it to the sql server stored proc and inside the stored proc, split the string into individual ids and delete each sales order.

    There can be plenty of other situations where passing a delimited string to the stored proc is faster than making n number of trips to the server.

    CREATE PROCEDURE ParseArray (@Array VARCHAR(1000),@separator CHAR(1))
    AS

    BEGIN
    SET NOCOUNT ON

    -- @Array is the array we wish to parse
    -- @Separator is the separator charactor such as a comma

    DECLARE @separator_position INT -- This is used to locate each separator character
    DECLARE @array_value VARCHAR(1000) -- this holds each array value as it is returned
    -- For my loop to work I need an extra separator at the end. I always look to the
    -- left of the separator character for each array value

    SET @array = @array + @separator

    -- Loop through the string searching for separtor characters
    WHILE PATINDEX('%' + @separator + '%', @array) <> 0
    BEGIN
    -- patindex matches the a pattern against a string
    SELECT @separator_position = PATINDEX('%' + @separator + '%',@array)
    SELECT @array_value = LEFT(@array, @separator_position - 1)
    -- This is where you process the values passed.

    -- Replace this select statement with your processing
    -- @array_value holds the value of this element of the array
    SELECT Array_Value = @array_value
    -- This replaces what we just processed with and empty string
    SELECT @array = STUFF(@array, 1, @separator_position, '')
    END
    SET NOCOUNT OFF
    END

    GO

    Source: Parse delimited string in a Stored procedure

    David Francis Blog : PerformancePoint CTP1 - Planning Assignment doesn't render issue and solution from Microsoft

     

    PerformancePoint CTP1 - Planning Assignment doesn't render issue and solution from Microsoft

    Here is a useful bit of info from Mark Yang at Microsoft if you ever get the following issue in the CTP1 build of PerformancePoint Planning.

    I had been working/playing with the assignment and workflow functionality of PerformancePoint Planning and had created a number of form templates.

    I'd set up a basic assignment using a form to be accessed by only one user and approved by another. The assignment appeared in the list but when the user clicked on the assignment they got the following:

    'Error retrieving latest timestamps from Analysis Server'

    'Internal Error Message: System.Web.Services.Protocols.SoapException: Failed to retrieve timestamp from workflow data from table Assignments'

    at the Caching Assignments stage and the form retrieval stage.

    When I ran the scenario with SQL profiler on, it appeared to be running a stored proc called bsp_BizFormGetByFormId with the GUID of the very first form I ever created in the system (different name etc etc).

    Apparently according to Mark this is a known issue with CTP1 and is to do with the storing of information about assignments in the Offline Cache.

    So here is his solution:

    Try manually deleting your assignment cache by deleting the files from \Documents and Setttings\<user_name>\Local Settings\Application Data\Microsoft\PerformancePoint\OfflineCache and restart your Excel Client.

    I have to admit I had to actually reboot my server for it to work, but work it did.

    Thanks again Mark.

    I'd highly recommend if you aren't signed up to the PerformancePoint newsgroups (microsoft.beta.office.performancepoint.planning and microsoft.beta.office.performancepoint.monitoranalyze) that you do so.

    Source: David Francis Blog : PerformancePoint CTP1 - Planning Assignment doesn't render issue and solution from Microsoft

    SQLskills.com | Immerse Yourself In SQL Server

    http://www.sqlskills.com/whitepapers.asp

    SQL Server 2005 Whitepapers

    ÞAdvantages of a 64-bit Environment
    ÞBatch Compilation, Recompilation, and Plan Caching Issues in SQL Server 2005
    ÞConnectivity and SQL Server 2005 Integration Services (written by Bob Beauchemin of SQLskills.com)
    ÞDatabase Administrator’s Guide to SQL Server Database Engine .NET CLR Environment (written by Kimberly L. Tripp of SQLskills.com)
    ÞDatabase Engine Tuning Advisor (DTA) in SQL Server 2005
    ÞDatabase Mirroring in SQL Server 2005
    ÞDatabase Mirroring: Alerting on Database Mirroring Events
    ÞDatabase Mirroring: Best Practices and Performance Considerations
    ÞEnterprise Strategy Group Information Security Brief: SQL Server Runs the Security Table
    ÞHow SQL Server 2005 Enables Service-Oriented Database Architectures
    ÞImproving Performance with SQL Server 2005 Indexed Views
    ÞOnline Indexing Operations in SQL Server 2005
    ÞPartitioned Tables and Indexes in SQL Server 2005 (written by Kimberly L. Tripp of SQLskills.com)
    ÞPerformance Tuning Using Waits and Queues
    ÞPhysical Database Storage Design
    ÞReporting Services: Planning for Scalability and Performance with Reporting Services
    ÞScalability: Internals, Troubleshooting, and Best Practices for use of Scaleout Technologies in SQL Server 2005 (written by Bob Beauchemin of SQLskills.com)
    ÞScalability: Planning, Implementing, and Administering Scaleout Solutions with SQL Server 2005 (written by Bob Beauchemin of SQLskills.com)
    ÞScalability: Solutions for Highly Scalable Database Applications: An analysis of architectures and technologies (includes details/comparisons with Oracle RAC)
    ÞSQL Server 2005 Failover Clustering White Paper
    ÞSQL Server 2005 for Oracle Professionals
    ÞSQL Server 2005 Management Tools Overview (written by Kimberly L. Tripp of SQLskills.com)
    ÞSQL Server 2005 Security Best Practices - Operational and Administrative Tasks (written by Bob Beauchemin of SQLskills.com)
    ÞSQL Server 2005 Security Overview for Database Administrators
    ÞSQL Server 2005 Snapshot Isolation (written by Kimberly L. Tripp of SQLskills.com)
    ÞSQL Server I/O Basics
    ÞSQL Server I/O Basics, Chapter 2
    ÞStatistics Used by the Query Optimizer in Microsoft SQL Server 2005
    ÞStrategies for Partitioning Relational Data Warehouses in Microsoft SQL Server
    ÞTroubleshooting Performance Problems in SQL Server 2005
    ÞWorking with Tempdb in SQL Server 2005

    SQL Server 2000 Whitepapers

    ÞDatabase Architecture: The Storage Engine
    ÞImproving Performance with Microsoft SQL Server 2000 Indexed Views
    ÞIndex Tuning Wizard for Microsoft SQL Server 2000
    ÞMicrosoft SQL Server 2000 Index Defragmentation Best Practices
    ÞQuery Recompilation in SQL Server 2000
    ÞSQL Server 2000 Incremental Bulk Load Case Study
    ÞStatistics Used by the Query Optimizer in Microsoft SQL Server 2000
    ÞUsing Partitions in a Microsoft SQL Server 2000 Data Warehouse

    Group links, blogs links to links and other useful links to links of links

    ÞWhitepapers on Microsoft.com (many NOT Listed above)
    ÞWhitepapers on MSDN - the Developer Center Whitepapers (many NOT Listed above)
    ÞWhitepapers on TechNet - SQL Server 2005 Technologies (many NOT Listed above)
    Þ"Previous Versions" Page - Information, links and resources related to previous versions of SQL Server (many NOT Listed above)

    Important Note

    ALL of these links were valid on March 26, 2007 and may no longer be valid. If companies (who shall remain nameless :) would stop breaking links ;), it would make our lives easier (well, at least for finding content :) BUT we're always going to have this issue as it's just the general nature of the web! So, I'm sorry if you hit a link and don't get where you want to go. Use the whitepaper title to search for it and then be sure to let us know if you find it. Regardless, please let us know that the link is broken and we'll try to find the current link for you as well.
    Also, if you find a whitepaper not listed (or linked to) OR you think there's a whitepaper that should specifically be called out on this list, please let us know!
    You can reach us at info@SQLskills.com and for specific questions: questions@SQLskills.com. Thanks!
    March 29, 2007: Added a few more links, fixed a few broken ones (one via a cut/paste error and the other was one I missed). All of this was thanks to comments on my whitepapers blog post here.

    Source: SQLskills.com | Immerse Yourself In SQL Server

    Friday, March 09, 2007

    SqlBI.eu

     

    Distinct 1.0

    Distinct is a partially blocking component that remove duplicates from one flow. Its main advantages against the sort component provided in SSIS are:

    • Memory usage: Distinct does not cache the whole flow (as Sort does) but retains in memory only the distincts, consuming less memory then Sort
    • Distinct is partially blocking where Sort is fully blocking
    • Distinct is freeware, you can easily download sources and adapt it to your needs

    Distinct sources can be easily download from the download section at www.sqlbi.eu.

    Read More...

    Comments (0)

    MdxScriptUpdater

    MdxScriptUpdater is a simple C# class that simplifies updating MDX Scripts into a cube in a production environment. MdxScriptUpdater is provided in form of a sample source code as is.

    There are a lot of scenarios where nightly batches would update parts of the MDX Script of a cube. For example, I had a customer with a calculated member for each year with data. We can define the calculated member by hand, but we would need to remember to create a new one each year. Another case is the customer that wants to consolidate his own calculated members, without requiring a new cube deployment.

    Read More...

    Comments (0)

    The many-to-many revolution

    This is the introduction of a paper that describes how to leverage the many-to-many dimension relationships, a feature that debuted available with Analysis Services 2005. After introducing the main concepts, the paper discusses various implementation techniques in the form of design patterns: for each model, there is a description of a business scenario that could benefit from the model, followed by an explanation of its implementation.

    Two separate downloads (available on SQLBI.EU project page) contain the full paper in PDF format and SQL Server database and Analysis Services projects with the same sample data used in the paper.

    Read More...

    Comments (5)

    SqlBulkTool 1.0

    SqlBulkTool is a command line utility that is used to quickly create a mirror of a database. It reads its configuration from an XML file containing source and destination command strings and a list of all the tables to mirror and then handles the work of copying the database in an automated and highly parallelized way.

    The parallelism can use the partition capabilities of SQL Server 2005: to handle a huge table it is enough to partition it to make the tool load it by running each single partition in a separate thread, dramatically increasing table load time. In the case where no partitioning is defined the parallelism is handled at the table level.

    Read More...

    Comments (2)

    DtsToSsisPrepare

    DtsToSsis-Prepare is a command line tool that prepares a DTS package for a better migration to an SSIS package.

    This article describes the needs for this tool and how to use it.

    The project is freeware, full source code is available. Please register on www.sqlbi.eu site if you want to receive mail notifications when bug fixes and new releases will be available.

    Read More...

    Comments (0)

    Source: SqlBI.eu

    ExoLogic

     

    CubePort™:

    Benefits:

    CubePort is helping change the BI landscape. It is a product that feasibly permits BI migration, real ROI against software licensing, and offers dramatically improved cube performance. Open up the world of "BI Standardization" possibilities.

    The product enables, in a practical way, either migration or replication from Hyperion Essbase to Microsoft SQL Server Analysis Services.

    Source: ExoLogic

    BI Blogs

     

    Book List

    Source: BI Blogs

    Monday, March 05, 2007

    James Goulding Research & Ebooks

     

    Research

    This page consists of research files, related to the financial markets. Recently, I completely rebuilt the database on this page.  I will be adding data over February and March of 2007. All links are new and all documents have been renamed. Also, some files will be moved to a new page called "Research-Historical Data". That page will be added at a later date.

    Source: Research

    Also...

    This page is an online library of ebooks. All books are in the public domain. Therefore, no copyright laws are being violated. Feel free to download any book and save it to your hard drive

    http://www.jamesgoulding.com/ebooks.html

    Plus lots of info on Cycles, Calendars, Day Trading, Bonds.

    Tuesday, February 27, 2007

    Microsoft Live Clipboard

    A simple concept and relatively new idea... cut-paste directly into a web page.

    http://rayozzie.spaces.live.com/editorial/rayozzie/demo/liveclip/liveclipsample/clipboardexample.html

    A few things to try:

    • Right-click -> copy on the orange icon next to one of the initial five contacts. Right-click > Paste on the bottom orange icon without contact data to paste the contact there.
    • Single left-click one of the orange icons so that its contact is highlighted. Type control-c or edit -> copy to copy the contact, and control-v or edit -> paste to paste it in one of the other two icons to replace their existing contacts.
    • Load the page in IE and Firefox side-by-side. Copy / Paste contacts between the two browsers.

    miniajax.com - web 2.0 revisited

    A showroom of nice looking simple downloadable DHTML and AJAX scripts

    http://www.miniajax.com/

    Why 260 characters is too long........................................................................................................................................................................................................

     

    Are your .NET apps breaking?  Using Enterprise blocks?  See this post.

    http://blogs.msdn.com/tomholl/archive/2007/02/04/enterprise-library-and-the-curse-of-max-path.aspx

    Monday, February 19, 2007

    IsNull != Coalesce

    One of the lesser used Sql functions is Coalesce.  Coalesce replaces any given value with another given value if the first value is null.

    IsNull does something similar, however there is a bit of differences.

    • IsNull performs a tad better.
    • IsNull will truncate values.
    • Coalesce looks cleaner in scripts. (if the developer knows what coalesce does)
    • Coalesce is more reliable because it doesn't truncate values.

    One scenario for using Coalesce is to toggle between selecting all values and a single value in a query.

    For example

    WHERE COALESCE(@ProductID,ProductID) = ProductID

    would select all products if @ProductID is null.

    So what happens with this statement if the Product Name column is 50 characters and the @ProductName variable is 25?

    WHERE IsNull(@ProductName, ProductName) = ProductName

    If you have a product with 26 characters or more, it will not be returned using IsNull.

    For multi-value parameters, one option is to use a split utility to parse comma-delimited parameters and use the following statement:

    WHERE (@ProductIDs is null or ProductID in in (dbo.fn_utilsplit(@ProductIDs,'''))

    Saturday, February 17, 2007

    TaporRecipes < Main < WikiTADA

     

    This page describes common or interesting sequences of actions, or recipes, for the TAPoR portal. They are organized according to the objective of the recipe. Recipes fall into the three categories of location and identification of ideas, themes or specific terms; analysis of textual devices or themes; or the construction of new entities or corpus. There are also a set of three tutorial recipes included to introduce three common and specific tasks using TAPoR Tools.

    Source: TaporRecipes < Main < WikiTADA

     

    What is TaPoR?

     

    Text Analysis Developers Alliance.

     

    If you're developing anything to do with words or text analysis, this is the place to go.

    Thursday, February 15, 2007

    Davide Mauri - SQL Server & .NET Specialist

     

    SQL Scripts
    Here you can find some SQL Scripts that I find useful in my everyday work and that may also be helpful to you. Enjoy!
    Please note that for SQL Server 2005 scripts, all my objects are created in the sys2 schema. I use this schema to reference all my "system" objects.
    If you want to do the same, you have to create the sys2 schema before. You can do it simply using the CREATE SCHEMA sys2 statements.

    sys2.indexes
    A UDF that shows all indexes present on a table. For any index shows of which column it's made.
    Usage: SELECT * FROM sys2.indexes('<schema>.<table>')
    Note: If you pass a NULL value as parameter, you'll get all the indexes in ALL tables.

    sys2.indexes_size
    A UDF that shows how much big your indexes are. For any index shows the size in kb and mb.
    Usage: SELECT * FROM sys2.indexes_size('<schema>.<table>')
    Note: If you pass a NULL value as parameter, you'll get all the indexes in ALL tables.

    sys2.indexes_stats
    A simple wrapper around dm_db_index_physical_stats that beside index fragmentation statistics also shows index names. Usage: SELECT * FROM sys2.indexes_stats('<schema>.<table>')
    Note: If you pass a NULL value as parameter, you'll get all the indexes in ALL tables.

    sys2.indexes_usage
    This UDF shows how (and if) indexes are used by SQL Server.
    Usage: SELECT * FROM sys2.indexes_usage('<schema>.<table>')
    Note: If you pass a NULL value as parameter, you'll get all the indexes in ALL tables.

    Source: Davide Mauri - SQL Server & .NET Specialist

    Wednesday, February 14, 2007

    Phidgets Inc. :: Unique and Easy to Use USB Interfaces

    I used to work for a company that created fibreglass flagpoles using a few thousand lines of Basic code and a CNC lathe.

    WPF, USB and Phidgets seem like they are going to make things a lot easier in the future.

    What Are Phidgets?

    Phidgets are an easy to use set of building blocks for low cost sensing and control from your PC. Using the Universal Serial Bus (USB) as the basis for all Phidgets, the complexity is managed behind an easy to use and robust Application Programming Interface (API). Applications can be developed quickly in Visual Basic, VBA (Microsoft Access and Excel), LabView, Java, Delphi, C and C++.

    Source: Phidgets Inc. :: Unique and Easy to Use USB Interfaces

    theWPFblog » Examples

     

    In the couple of days that I’ve been experimenting with WPF/E, I have finally come to terms with how it all works and what you need to create a new project. Microsoft has released a template for Visual Studio but I think that it does more harm than good. Plus it only currently works in the full version of VS and not in the express editions. In this post I will explain the basic building blocks that make up a WPF/E application. I’ll use the typical Hello World scenario.

    HelloWorld.xaml
    Your XAML file is the heart of the WPF/E application. Much like in WPF, XAML defines all of the visual interface and animations. You can create the XAML code in Blend, Visual Studio, or in Notepad. Visual Studio gives you Intellisense code completion but since XAML is XML-based, any XML editor will speed things up. Using Blend is great for visually laying out your graphics, but it spits out WPF XAML not WPF/E XAML so you will have strip down the resulting code to make everything Canvas-based.

    To create a compliant XAML file you need to use a Canvas as your root element with the two namespace declarations seen below. Then to add the Hello World text I’m simply adding a TextBlock control to the Canvas.

    Source: theWPFblog » Examples

    Bryant Likes's Blog : WPF/E Matrix Reloaded

     

    WPF/E Matrix Reloaded

    Last week Chad posted his Matrix style text animation which I thought was very cool. I wanted to experiment a little with keyboard events and using Glyphs. The result is the Matrix Reloaded:

    Source: Bryant Likes's Blog : WPF/E Matrix Reloaded

    Friday, February 09, 2007

    Armadillo Systems: Books

    These guys designed the British Library WPF application. 

    Armadillo Systems is probably the foremost provider of interactive solutions for books, documents and manuscripts in the world.

    We specialise in producing unique applications that provide access and interpretation for items that would otherwise remain under glass and we understand the tension that exists between the need for conservation and the requirement of access. We have been working with libraries and museums since 1997 and developed the award-winning Turning the Pages TM technology with the British Library.

    We have developed a methodology of approaching bibliographic projects that encompasses thinking about the book in 5 ways:

    • the book as object
    • the book as content
    • the book as icon
    • the book as window into the past
    • the book as gateway to future learning

    Source: Armadillo Systems: Books

    Lance's Whiteboard : Troubleshooting Sql Reporting Services custom assemblies (extensions &amp; what not)

     

    Troubleshooting Sql Reporting Services custom assemblies (extensions &amp; what not)

    I dont have time for a lengthy post, so here is some link-love for some great articles that have helped me lately with some data extensions and other custom code I am writing for Sql Server 2005 Reporting Services:

    Source: Lance's Whiteboard : Troubleshooting Sql Reporting Services custom assemblies (extensions & what not)

    WINDOWS VISTA AVALON WPF WEB3D GAMES

    A bit of background on Web 3D and where Microsoft is going with it. 

    INTRODUCTION

    IMPORTANT: We are using, at this tutorials serie, the beta version Dec CTP. Some sintax is different for the last WPF version!!!

    Web3D has a 10 years history of big disasters. Since the days of the launch of VRML until the phaseouting of the ADOBE web3D product:"Atmosphere" at 2005 , nothing works.

    It's important to say that Web3D IS NOT Internet3D. We are talking about a 3D application having a "webpage dependence", not about things like: ActiveWorlds, SecondLife or internet multiplayers games.

    One of the last available products for web3D is Shokwave3D, part of Macromedia/ADOBE Director. But it's frozen! We (DMU) have a tutorials serie about Shockwave3D that you can read here. But who knows if the product will be phaseouted soon by ADOBE , like they did with Atmosphere...

    Now Microsoft is launching its Web3D. It's part of the new Windows Presentation Foundation (codename:Avalon). It's in Beta phase now. It has a new architecture for the launching of the application: ClickOnce that can be "page dependent". We talk about how to publish WPF applications at our "WPF PROGRAMMING - BASICS" tutorials that you can find at our site (go to this link. ).

    At this tutorials serie we will work creating generic applications but you can publish them using Visual Studio, any version.

    Source: WINDOWS VISTA AVALON WPF WEB3D GAMES

    Wednesday, February 07, 2007

    Download details: Visual Studio Code Name "Orcas" January 2007 CTP

     

    Microsoft Pre-release Software Visual Studio Code Name "Orcas" - January 2007 Community Technology Preview (CTP)

    Source: Download details: Visual Studio Code Name "Orcas" January 2007 CTP

    Package Configurations not so portable? - MSDN Forums

     

    The best way we've found is to:

    1. Edit the package and create an XML configuration file with the properties you need.
    2. Save the file to a known location
    3. Create a system variable
    4. Populate the variable with the full path and file name of the above XML file
    5. Edit the package and remove the package configuration for the XML file.
    6. Create a new configuration of type Environment variable and type in the name of the system variable
    7. The new package configuration should show with "Indirect XML configuration file" once the above has been done.

    This can obviously be tuned to take keeping packages in the dark into account etc. etc.

    Source: Package Configurations not so portable? - MSDN Forums

     

     

    Everyone seems to be trying to solve the issue of the XML file path being stored in the configuration organizer and that in turn requiring all file system environments having the same structure.  If you are storing the package in a file system as opposed to MSDB, there is a very easy solution  .... remove the path and leave just the XML file name.  The XML config file will then need to be in the same folder as the package, but it then becomes file structure independent.

    Further, the tool (SSIS) should not dictate whether it is a good idea or not to maintain similar file structures across environments.  Whether it is a good idea (personally I believe it is) the tool should support a reasonable solution.

    »Rape me, my friend...

    Gates “dares anybody” to exploit Vista | The Apple Core | ZDNet.com

    February 6th, 2007
    Gates “dares anybody” to exploit Vista

    Source: » Gates “dares anybody” to exploit Vista | The Apple Core | ZDNet.com

    Getting Real

    Want to build a successful web app? Then it's time to Get Real. Getting Real is a smaller, faster, better way to build software.

    Getting Real

    Here are the 16 chapters and 91 essays that make up the book.

    Source: Getting Real

    Friday, January 26, 2007

    www.xmethods.net

     

    Welcome to XMethods.

    Emerging web services standards such as SOAP, WSDL and UDDI will enable system-to-system integration that is easier than ever before.  This site lists publicly available web services.

    Source: www.xmethods.net

    Thursday, January 25, 2007

    Eli Robillard's World of Blog. : Eli's SharePoint Resources

     

    Eli's SharePoint Resources

    What's Here

    Welcome to my new and improved list of SharePoint Resources! This is a hub for SharePoint Resources with two advantages: All resources are hand-picked and vetted for quality, and each topic contains a with hand-tuned search designed to return the latest content which you can then filter further to find what you need.

    Source: Eli Robillard's World of Blog. : Eli's SharePoint Resources

    Tuesday, January 23, 2007

    HOW TO: Get all the tech news you need (in 20 minutes a day) - Valleywag

     

    Optional time-saver: Instead of reading the sources below by going to the different sites, consider reading the RSS fees on Google Reader or Bloglines.

    1. Skim the headlines of these top news sources:
    Digg: Technology (Ranked by most popular, so you can quit halfway down)
    Techmeme (Same as above, but also note the recent stories in the right column)
    GigaOM (Industry/business news)
    Engadget (Gadget news)

    2. Skim these sources for commentary:
    Paul Kedrosky's Infectious Greed
    Valleywag (Really -- it's newsy now)
    Techdirt

    3. Read these mainstream sources:
    CNET News
    NY Times Technology
    Financial Times

    4. Once or twice a week, check in with these sources:
    BusinessWeek
    Wired News
    Wired Magazine

    5. Once a week, listen to this podcast during your commute: This Week in Tech

    Source: HOW TO: Get all the tech news you need (in 20 minutes a day) - Valleywag