Martyn Bullerwell's Blog

Adventure Works Samples Update and FILESTREAM

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.  These can now be found here.  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.   It is good to see that FILESTREAM is being used already, and Adventure Works can be used to test and demonstrate this new functionality.


Prior to SQL Server 2008 if you needed to store images, videos, PDF's, or any other binary data we used a blob data type and it was in-line with relational data.  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)


Start -> All Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager.

  • In the list of services, right-click SQL Server Services, and then click Open.

  • Locate instance of SQL Server Right-click and click Properties.

  • Click the FILESTREAM tab.

  • Select the Enable FILESTREAM for Transact-SQL access check box.

  • If you want to read and write FILESTREAM data from Windows, click Enable FILESTREAM for file I/O streaming access. Enter the name of the Windows share in the Windows Share Name box.

  • If remote clients must access the FILESTREAM data that is stored on this share, select Allow remote clients to have streaming access to FILESTREAM data.



  • Click Apply.

  • In Query Editor, enter the following Transact-SQL code:

  • EXEC sp_configure filestream_access_level, 2

    Using FILESTREAM Databases

    • Create a new database is SSMS:


    • Under the "Filegroups" Tab add a new FILESTREAM:


    • Once set up click OK. This should now have added a new folder as follows under your SQL installation:


    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.  So now we want to test the storage of some files in SQL.  So lets try and store some Pictures for example.  To begin with we will need to set up a new table.  It is worth noting here that we must add a ROWGUIDCOL column, preferably the primary key, and the unique identifier.

    CREATE TABLE [dbo].[Media] (
        [mediaId] [uniqueidentifier] NOT NULL ROWGUIDCOL PRIMARY KEY,
        [dateCreated] [datetime] NOT NULL DEFAULT(GETDATE()),
        [fileName] [nvarchar](256) NOT NULL,
        [location] [geometry] NULL,
        [file] [varbinary](max) FILESTREAM);

    This will give us a new table, that we can insert into.  So If we insert an dummy row and keep an eye on the folders created when creating this new filestream.  Execute the following statement:

    INSERT INTO [FileStreamTest].[dbo].[Media]
            convert(varbinary(max), 'Not a real Picture, but proves a point'))

    You will now notice that a new file has been added to the file system.


    The more rows we insert, the more files are added to this directory.  You will also notice that the date time stamps on the files are also reflected by when the items were added to the database.  If a row is updated with a new image, the new image is created,  however the old image remains.  This also applies when the row is deleted.  However, these directories are cleaned up periodically by the FILESTREAM garbage collector.

    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.  A Simple application could be easily written to save, update and retrieve images through SQL Server 2008, using file stream data.

    PerformancePoint Server SP2

    A good few months ago I wrote about SP1 for PerformancePoint and getting this working on SQL Server 2008.  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.  SP2 is due for release in December, and there are mentions of a Beta available on the web, although unavailable through MSDN, or Connect.  It seems that the two promises of SP2 are Hyper-V compatibility and SQL Server 2008 integration.   

    A few good resources for this are as follows:!28A6BE83102A0EB3!419.entry and

    Reporting Services 2008 - Connection Problems

    Having recently rebuilt a server entirely with "2008" technology I have a small problem with reporting services.  When trying to look at the Reports, I received the error:

    "The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."


    I found, that even though we are not trying to look at the secure site, the certificate causes issues.  For development and testing purposes I found it easiest to remove the certificate.  To do this perform the following steps:

    1. Open Reporting Services Configuration Manager


    2. Click Web Service URL and click "Advanced"


    3. Remove the SSL certificates, both for IPv4 and IPv6 and click ok, and then Apply.  This will remove the SSL certificates, you should now be able to use Reporting Services 2008. 

    PPS SP1 and SQL Server 2008 RC0

    So, one of my previous posts I explored using PPS with SQL 2008 Feb CTP.  Now with the release of PPS SP1 and SQL RC0, I thought a perfect time to re-test the installation.  With a complete new installation of Windows Server 2008, SQL 2008 RC0, and PPS SP1, the testing has started all over again.

    The installation of SQL 2008 goes smoothly now, and very easy, as does the installation of PPS and PPS SP1.  However the issues come in after installing all of PPS and then attempting to configure PPS Planning (Monitoring to come later this month). 

    After Installing SQL 2008, you will also need to install the following items from the SQL 2008 and SQL Server 2005 feature pack:

    • Analysis Management Objects 9.0 (SP2)
    • SQL Server Native Client 9.0
    • ADOMD.NET 9.0 SP2

    After installing of these, we can now get the pre-requisite page, and also allows the use of the relational part of SQL Server 2008, however Analysis Services still does not accept the SQL 2008 instance, after much investigation, it does not seem possible to install PPS, even with SP 1,  to use Analysis Services SQL 2008 instance.  With much regret, I have currently installed an Instance of SQL 2005, just Analysis Services.   This allows the install the complete.

    Now many people have said that the 2005 Instance can be upgraded to SQL 2008, however I have found that deploying a new model site, still fails once upgraded to SQL 2008. This investigation will continue.

    SQL 2008 Feature Pack

    Not so much a Pack, as a collection of very useful tools, that can be downloaded here:

    I will be investigating the Reporting Services Integration with MOSS 2007 very soon, but for the time being here is some information on the downloads, that are being called the SQL 2008 feature pack.

    • Reporting Services Add-in for Microsoft SharePoint Technologies - pretty much the same as the one for SQL 2005, but with the ability to use the enhanced reporting in 2008.

    • SQL Server Native Client - One DLL, that contains OLEDB and SQL ODBC drivers for close application integration, they allow the development of new application that take advantage of some of the new features in SQL 2008.

    • SQL Server 2005 Backward Compatibility Components - Pretty much what it says on the tin,  Data Transformation Services 2000 runtime (DTS), SQL Distributed Management Objects (SQL-DMO), Decision Support Objects (DSO),  and SQL Virtual Device Interface (SQLVDI) are all supported with this feature pack.

    • SQL Server Data Mining Add-ins for Microsoft Office 2007 - Allows you take advantage of SQL Server 2008 predictive analytics in Excel 2007 and Visio 2007. Table analysis for excel allows you to use simple data mining models on data contained within your spreadsheets.  Data Mining for Visio allows you to render data mining models directly in Visio.

    All in all pretty good stuff for nothing!

    SQL Server 2008 - CTP

    OK so we should have been getting our mitts on SQL Server 2008 RTM yesterday, but it has been delayed, until Q3 which has been know for some time.  Microsoft did, however, go ahead with the official release yesterday, regardless that the product has not been released to manufacture.  However to keep our appetites "wet" Microsoft have released another CTP (February) which can be downloaded here: Download

    SQL Server 2008 is just an enhancement to the already extremely successful end to end BI stack that delivers a well rounded platform for the majority of organisations planning, reporting and analysis needs .  Their BI and performance management offering works best when it is implemented as part of a full stack of Microsoft infrastructure that includes SQL Server (including 2008), SharePoint Server 2007 and Microsoft Office (including Excel 2007). This platform is complemented by PerformancePoint Server 2007, and the obvious tight integration with Excel. 

    Microsoft are also making further inroads into competing with Teradata, IBM and Oracle with improving the relational database engine with features such as partitioned tables and support for partitioned table parallelism that position it more effectively within the large scale enterprise data warehousing market where IBM, Oracle and Teradata all play. Although still not ready for databases that run into the 100's of terabytes and possibly petabyte range,  the company is making in-roads, it currently has customers working comfortably in the one to 15 Terabyte range and expects SQL Server 2008 to extend this into the 20 to 50 Terabyte range.

    SQL 2008 - what's changed, and what's new?

    As I am sure you can all Guess SQL 2008 is the next release of SQL Server, and does not redesign the wheel, and is more an enhancement to 2005.   Microsoft claim that they have made it more secure, more reliable, more scalable etc... etc... 

    Business Intelligence:

    • Analysis Scale and Performance: Allows more complex computations and aggregations and brings new cube design tools.
    • Block Computations: Provides a significant improvement in processing performance enabling users to increase the depth of their hierarchies and complexity of the computations.
    • Writeback: New MOLAP enabled writeback capabilities in SQL Server 2008 Analysis Services removes the need to query ROLAP partitions. This provides users with enhanced writeback scenarios from within analytical applications without sacrificing the traditional OLAP performance.
    • Enterprise Reporting Engine: Reports can easily be delivered both internally and externally with easier deployment and configuration.
    • Internet Report Deployment: Allows deploying of reports over the internet. 
    • Report Builder Enhancements: Easily build ad-hoc and author reports with any structure through Report Designer.
    • Report Server Application Embedding: Report Server application embedding enables the URLs in reports and subscriptions to point back to frontend applications.
    • Microsoft Office Integration: SQL Server 2008 provides new Word rendering that enables users to consume reports directly from within Microsoft Office Word. In addition, the existing Excel renderer has been greatly enhanced to accommodate the support of features like nested data regions, sub-reports as well as merged cell improvements. This lets users maintain layout fidelity and improves the overall consumption of reports from Microsoft Office applications.


    • Language Integrated Query (LINQ) See previos Blog Entries on LINQ: Enable developers to issue queries against data using a managed programming language such as C# or VB.NET, instead of SQL statements. Enable seamless, strongly-typed, set-oriented queries written in.NET languages to run against ADO.Net (LINQ to SQL), ADO.Net DataSets (LINQ to DataSets), the ADO.NET Entity Framework (LINQ to Entities) and to the Entity Data Service Mapping provider. Use the new LINQ to SQL provider that enables developers to use LINQ directly on SQL Server 2008 tables and columns.
    • ADO.Net Object Services: The Object services layer of ADO.NET enables the materialization, change tracking, and persistence of data as CLR objects. Developers using the ADO.NET framework can program against a database using CLR objects that are managed by ADO.NET. SQL Server 2008 introduces more efficient, optimized support that improves performance and simplifies development.
    • DATE/TIME: SQL Server 2008 introduces new date and time data types:
      • DATE – a date only type
      • TIME – a time only type
      • DATETIMEOFFSET – a time zone aware datetime type
      • DATETIME2 – a datetime type w/ larger fractional seconds and year range than the existing DATETIME type
    • HIERARCHY ID: Enable database applications to model tree structures in a more efficient way than currently possible. New system type, HierarchyId, can store values that represent nodes in a hierarchy tree. This new type will be implemented as a CLR UDT, and will expose several efficient and useful built-in methods for creating and operating on hierarchy nodes with a flexible programming model.
    • FILESTREAM Data: Allow large binary data to be stored directly in an NTFS file system while preserving an integral part of the database and maintaining transactional consistency. Enable the scale-out of large binary data traditionally managed by the database to be stored outside the database on more cost-effective storage without comprise.
    • Integrated Full Text Search: The Integrated Full Text search makes the transition between Text Search and relational data seamless while enabling users to use the Text Indexes to perform high-speed text searches on large text columns.
    • Sparse Columns: NULL data consumes no physical space which provides a highly efficient way of managing empty data in a database. For example, Sparse Columns allows object models that typically have numerous null values to be stored in a SQL Server 2005 database without experiencing large space costs.
    • Large User Defined Types: SQL Server 2008 eliminates the 8KB limit for User Defined Types (UDTs) allowing users to dramatically expand the size of their UDTs.
    • Spatial Data Types: Build spatial capabilities into your applications by using the support for spatial data.
      • Implement Round Earth solutions with the geography data type. Use latitude and longitude coordinates to define areas on the Earth's surface.
      • Implement Flat Earth solutions with the geometry data type. Store polygons, points, and lines that are associated with projected planar surfaces and naturally planar data, such as interior spaces


    • Transparent Data Encryption: Enable encryption of an entire database, data files or log files, without the need for application changes.
    • Extensible Key Management: Comprehensive solution for encryption and key management. Supports third-party key management and HSM products.
    • Auditing: Create and manage auditing via DDL enabling answers common questions such as "What data was retrieved?"
    • Built-in Forms Authentication: Built-in forms authentication enables users to easily switch between Windows and Forms.

    Redundancy and Performance:

    • Enhanced Database Mirroring: Eliminates the need to specify the failover partner which enables existing applications to take advantage of mirroring.
    • Resource Governor: Provide a consistent and predictable response to end users with the introduction of Resource Governor.
    • Predictable Query Performance: Enable greater query performance stability and predictability by providing functionality to lock down query plans.
    • Data Compression: Enable data to be stored more effectively and reduce the storage requirements for your data. Data Compression also provides significant performance improvements for large I/O bound workloads like data warehousing.
    • Hot Add CPU: Dynamically scale a database on demand by allowing CPU resources to be added.
    • Declarative Management Framework (DMF):  Use DMF with SQL Server Management Studio to create policies that manage entities on the server, such as the instance of SQL Server, databases, and other SQL Server objects.
    • Performance Data Collection: More extensive performance data collection, a new centralized data repository for storing performance data and new tools for reporting and monitoring.
    • Backup Compression: Keeping disk-based backups online is expensive and time consuming. With SQL Server 2008 backup compression, less storage is required to keep backups online and backups run significantly faster since less disk I/O is required.
    • Partitioned Table Parallelism: Partitions enable organizations to manage large growing tables more effectively by transparently breaking them into manageable blocks of data. SQL Server 2008 builds on the advances of partitioning in SQL Server 2005 by improving the performance on large partitioned tables.
    • Star Join Query Optimizations: SQL Server 2008 provides improved query performance for common data warehouse scenarios. Star Join Query optimizations reduce query response time by recognizing data warehouse join patterns.
    • Grouping Sets: Grouping Sets is an extension to the GROUP BY clause that lets users define multiple groupings in the same query. Grouping Sets produces a single result set that is equivalent to a UNION ALL of differently grouped rows making aggregation querying and reporting easier and faster.
    • Change Data Capture: With Change Data Capture, changes are captured and placed in change tables. It captures complete content of changes and maintains cross table consistency and even works across schema changes. This enables organizations to integrate the latest information into the data warehouse.
    • MERGE SQL Statement: With the introduction of the MERGE SQL Statement, developers can more effectively handle common data warehousing scenarios like checking whether a row exists and then executing an insert or update.
    • SQL Server Integration Services (SSIS) Pipeline Improvements: Data Integration packages can now scale more effectively making use of available resources and managing the largest enterprise scale workloads. The new design improves the scalability of runtime into multiple processors.
    • SQL Server Integration Services (SSIS) Persistent Lookups: The need to perform lookups is one of the most common ETL operations. This is especially prevalent in data warehousing where fact records need to use lookups to transform business keys to their corresponding surrogates. SSIS increases the performance of lookups to support the largest tables.

    Install Performancepoint Server on SQL Server 2008

    Testing the latest technology on the latest platforms is always very important to us, in order to ensure we are up to date, give our clients an unbiased view of what's out there and what's coming up, and how it will affect them.  We have been involved with PerformancePoint for sometime now and have had good success, however with the impending release of SQL Server 2008 and Windows Server 2008, we thought it time to get up to date with PPS on a Server 2008 box, running SQL 2008. 

    With Windows Server 2008 in RC1 and SQL Server 2008 in RC1, we know we are now close to testing the fully fledged version.  So, time to install it all.  Sever Installs with no dramas at all, quite hastily in-fact.  Following that is SQL 2008, which also installs without any hicup this time, however does take a very long time to install, and interestingly installs Visual Studio 2005, not 2008 (which is released the same time as SQL and Windows Server).  So we are up and running, we have a perfect install of SQL 2008 on a Windows server 2008 sever, time to install PPS.

    PPS is a small install, just 60MB download, and 4 different installations: Planning Server, Business Modeller, Excel Add-In, and Monitoring Server.  For the Server Install we just want to install the Planning Server, and the Monitoring Server for the time being.  We will start with the Planning Server. PPS Prerequisits

    On Checking the prerequisites for this we instantly come up with a problem.  PPS Planning, looks for a specific version of SQL, SQL server 2005, and therefore does not recognise SQL 2008.   This causes somewhat of a problem.  

    Changing the Registry also doesn't seem to help, while trying to trick the install of the correct version.  All the other components seem to install fine, and therefor the only issue currently is Planning.  An obvious solution would be to install SQL 2005 Side By Side, and simply use the SQL 2008 Database.  However this is not an ideal solution, and I will be continuing work with this in the new year, as well as raising this issue with Microsoft.

    I will post a follow up to this when we have resolved the installation issues.  In the meantime, have a great new year!


    Install SQL Server 2005, After 2008

    So, if like me, you wanted to look at SQL 2008, and thought it best to totally remove 2005, and then install 2008 (Katmai), then realising that the Katmai BI tools did not install properly, you may want to re-install 2005. 

    If have got to this stage you may have found and annoying installation bug, even after removing 2008. This is regarding the SQL Native Client.  It fails to install and therefore most of SQL 2005 fails to install.  After numerous more efforts to install this there is a simple fix.

    From the SQL 2005 disc, run Sqlncli.msi

     - Choose remove, repair doesn't work!

     - Once removed install SQL server 2005 as normal - easy - when you know how!