Visual Studio Team System 2008 Database Edition GDR - RTM

Finally the moment is there, the final version of the Visual Studio Team System 2008 Database Edition GDR has been released to the web.

Although the name "GDR", which stands for "General Redistribution Release", implies otherwise, this really is a complete new release, based on a new architecture. We have taken the architectural changes from the Rosario project (Visual Studio Team System 2010) and rolled them forward in time. Rolling forward these changes help us align the GDR release with the upcoming Visual Studio Team System 2010 release and provide numerous new features and extensibility points in this release. If you would compare the GDR release with the "Visual Studio 2005 Team Edition for Database Professionals" or "Visual Studio Team System 2008 Database Edition" you will agree this is a completely new product!

The key architectural changes

  • Model based architecture - Everything underneath the covers is based on a true model representation of the SQL Server schema. This facilitates a true offline declarative database development system where the source code defines the shapes of the schema objects.
  • Models are implemented by Database Schema Providers, DSP's for short. - The introduction of a provider model enables multiple things at once. First of all the decoupling of release vehicles. For example when SQL Server will release a new version or adds new functionality in a service pack, like they did in SQL Server 2005 SP2 when adding "vardecimal" support, we can simply update an existing provider or provide a new one in case of a new SQL Server release. Overtime we will go to a model where the SQL Server providers will be an integral part of the SQL Server release. The provider model is also a key extensibility point, allowing 3rd parties to extend database project ecosystem and add support for other database platforms in Visual Studio Team System 2010.
  • Tool extensibility - In this release external tool writers have full access to the T-SQL parsers (for SQL Server 2000, 2005 and 2008), the SQL Script DOM and the schema model (when inside Visual Studio). This adds on top of the ability to write extend the tools inside the platform. You can extend T-SQL refactoring by writing your own refactoring types (operations) and refactoring targets; add T-SQL Static Code Analysis rules, data generators, data distributions and test conditions. Database Projects (.dbproj) now provide a truly extensible declarative database development platform.
  • Separation of BUILD and DEPLOY. - The separation of build & deploy makes it possible to deploy the output of your database project to many different targets and different points in time. Build now produces a single artifact file hat describes the schema inside your database, called a .DBSCHEMA file. This file is used by the deployment engine to deploy your schema.
  • Standalone Deployment Engine. - The inclusion of a standalone and redistributable deployment engine makes it possible to deploy the output of your database projects (.DBSCHEMA files) to a target database without the need of having Visual Studio Team System Database Edition installed. This enables key scenarios like the inclusion of database schema deployment as part of your application installation.

All these architectural changes enable many new usage scenarios and interesting new features. So lets walk through the list of new features and major changes.

Feature list

  • Project System
    • Full support for SQL Server 2000, SQL Server 2005 and SQL Server 2008 support.
      • All database objects are now modeled, therefore they are compared and part of deployment. The side-effect of this is that there are no more objects that need to be stored in pre- and post-deployment scripts.
    • Server vs. Database projects
      • This change allows you to model the different behavior of shared and server level objects inside SQL Server vs. user database level objects. 
    • Partial projects
      • Partial project allow you to share implementation between projects, with a single definition of the code
    • Composite projects
      • Composite projects extend database references, allowing you to add objects from other project to the name database schema namespace. So you can compose your database from other projects and/or DBSCHEMA file references
    • Database references using literals, in addition to SQLCMD token support
      • The addition of literal support facilitates that you do not have to change your code of 3-part names, when do do not require the flexibility of name independent deployment
    • Reference support for XML Schema Collections to include .XSD files
      • Enables single sourcing of XML Schema Collections from an .XSD file which itself can be used by other developers or tools.
    • Reference support of SQL-CLR projects and / or SQL-CLR assemblies
      • Enables the inclusion of a SQL-CLR project or a binary, to represent a SQL-CLR assembly. Like XSD references, the goal is single sourcing of artifacts inside the development environment
    • Import Schema and Import Script is now available through DTE
      • This allows the creation of macros or programmatic add-in to drive these common tasks.
    • No more "DesignDB"
      • The change to a fully model driven implementation makes the need for a local SQL Server database instance obsolete. Having a sandbox for your development environment is still am advised practice though, so you can test the changes independently and in an isolated environment.
  • Build
    • Build validates the consistency of the schema model and produces all the files that you need to deploy the database
  • Deploy
    • Deploy takes the output from the build stage and deploys this information based on the settings supplied
    • Deployment settings are now isolated in to the .SQLDEPLOYMENT file, which allows you to standardize and re-use the deployment settings
    • Most of the "Schema Compare" comparison options are now available as the deployment options, to increase the symmetry between the two
    • VSDBCMD.EXE, is a command line deployment tool, which enables the standalone deployment of Database Project
  • Schema Compare:
    • Compares any combination of live databases, Database Projects and .DBSCHEMA files
    • Session level option support, which can be persisted and re-used
    • Object type level filtering allow you to exclude object types from the comparison
    • You can now quickly navigate back and forward between difference via the toolbar and optionally configurable keyboard shortcuts
    • Substitution of SQLCMD variables, allows for the comparison of projects that rely on the use of SQLCMD variables
    • Schema Compare can now be executed through DTE
  • Data Compare
  • Refactoring:
    • New refactoring types: Expand Wildcards and Fully-qualify Names (in addition to Rename, Move Schema and 3/4 part name refactoring)
    • The patented "preservation of intend" functionality makes is possible that the Deployment Engine will deploy renames and move schema operations as actual renames and move schema operations, instead of a DROP / ADD operation.
    • Extensibility enables the creation of your own refactoring types (operations) and refactoring targets.
  • Database Unit Testing
    • Added support for SQL Server 2008
  • Data Generation
    • BulkCopy based inserts in addition to the existing INSERT data sync
    • Sequential Databound Generator is now included in the product
  • T-SQL Static Code Analysis
    • Execute analysis using MS Build and/or as part of the VS IDE build process
    • Including the ability to write you own T-SQL Static Code Analysis rules
  • Extensibility
    • Public full fidelity .NET based T-SQL parser for SQL Server 2000, 2005 and 2008.
    • Public .NET based SQL Script DOM, for programmatically generation of SQL code (equivalent to the Code DOM in .NET)
    • Access to the Schema Model from within Visual Studio, this enables for example ability to write code generators based on the schema model.
    • Feature extensibility:
      • T-SQL Static Code Analysis rules
      • Refactoring types, these are the refactoring operations
      • Refactoring targets, these are the sources that you want to update as part of a refactoring operation
      • Data Generators
      • Data Distributions
      • Test Conditions

As you can see the GDR release is chockfull of new and improved functionality!  And the good things is you can get it now.

Installation

Uninstall old GDR versions

If you have a previous version of the GDR installed, you will have to uninstall these first. You can do this via Add/Remove Programs or from the command line using:

  • msiexec /X {DDF197C6-4507-3A19-A4B5-0E17CC931370}

Prerequisites

Before you start downloading and installing please check if the following pre-requisites are present on your machine!

Installation

You can download the Visual Studio Team System 2008 Database Edition GDR from the following location:

Upgrading projects

If you have existing Database Projects look at the following matrix:

Version Project upgrade supported
Visual Studio 2005 Team Edition for Database Professionals Yes
Visual Studio 2005 Team Edition for Database Professionals GDR Yes
Visual Studio Team System 2008 Database Edition Yes
Visual Studio Team System 2008 Database Edition SP1 Yes
Visual Studio Team System 2008 Database Edition GDR CTP 17 and before No *
Visual Studio Team System 2008 Database Edition GDR RC0 Yes

* If you need to upgrade GDR CTP earlier projects you can use the Import Script add-in.

Before you upgrade your project, make sure to create a backup of your project!.

During the upgrade process will update your project file (.DBPROJ) and will try to move schema objects that were earlier defined in the the pre- and post deployment scripts in to the project.

Questions

Like always we are looking forward to your feedback which you can post to our MSDN forum and please file bugs and improvement requests using our Microsoft Connect site.

On behalf of the whole "DataDude" team we want to thank you for your support and wish you a happy Thanksgiving!
-GertD

Comments

  • Anonymous
    November 25, 2008
    The comment has been removed

  • Anonymous
    November 25, 2008
    Team System 2008 Database Edition dispo en RTM

  • Anonymous
    November 25, 2008
    The comment has been removed

  • Anonymous
    November 25, 2008
    Gert - you and the team ROCK! Awesome release! James World

  • Anonymous
    November 26, 2008
    Gert, you just made me happy that I'm going to work today :) Thanks for all the help from you and the team getting my issues sorted. Now it's time to clear your desk and enjoy the holiday! Best Regards, Mike Stankavich Intel Corporation

  • Anonymous
    November 26, 2008
    Al momento è disponibile solo in Inglese, le versioni localizzate (anche in Italiano) usciranno a breve.

  • Anonymous
    November 26, 2008
    The long awaited update for VSTS 2008 Database professional is now available. You may have been following

  • Anonymous
    November 26, 2008
    The comment has been removed

  • Anonymous
    November 26, 2008
    The comment has been removed

  • Anonymous
    November 26, 2008
    Nous venons d'annoncer la disponibilité de la version 2008 GDR de VSTS Database Edition. Des nombreuses

  • Anonymous
    November 26, 2008
    The comment has been removed

  • Anonymous
    November 26, 2008
    The comment has been removed

  • Anonymous
    November 27, 2008
    Dear Developers, how-to deploy project with change tracking enabled on table?

  • Anonymous
    November 27, 2008
    Great stuff, I have upgraded and built and deployed already --- just need to know how the permissions xml property file works

  • Anonymous
    November 27, 2008
    There have been two new announcements for Team System fans in the past 24 hours. First, Gert has announced...

  • Anonymous
    November 27, 2008
    遠い母国では感謝祭でお休みに入っている頃ですが、こんな時こそ日本で皆さんと対談したりユーザーさん達と触れ合う機会を設けさせてもらえることに、感謝です。 日々の悩みや苦しみは当然ありますし、製品について色々と突っ込まれて答えれない時の凹みもありますが、感謝できることが常に増してあるので、支えになっています。

  • Anonymous
    November 27, 2008
    Nuevo Release de DB: "Mejor, robusto y rápido.", el post original lo pueden ver aquí .

  • Anonymous
    November 27, 2008
    Nuevo Release de DB: "Mejor, robusto y rápido.", el post original lo pueden ver aquí .

  • Anonymous
    November 27, 2008
    The comment has been removed

  • Anonymous
    December 01, 2008
    The comment has been removed

  • Anonymous
    December 01, 2008
    In case you missed it, Gert sent word last week that the newest version of the Visual Studio Database

  • Anonymous
    December 01, 2008
    The comment has been removed

  • Anonymous
    December 02, 2008
    Does this effect those of us using Team Suite?

  • Anonymous
    December 03, 2008
    The comment has been removed

  • Anonymous
    December 04, 2008
    Visual Studio Team System 2008 Database Edition GDR - RTM - очень полезная новость, для тех кто разрабатывает...

  • Anonymous
    December 09, 2008
    Echipa "Data Dude" (sau altfel spus echipa de Visual Studio Team Edition for Database Professionals)

  • Anonymous
    December 15, 2008
    The comment has been removed

  • Anonymous
    December 19, 2008
    Visual Studio Team System 2008 Database Edition GDR 日本語版が本日正式にリリースされましたのでお知らせいたします。 ダウンロードサイト : http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&displaylang=ja

  • Anonymous
    December 23, 2008
    This blog just summarises some of the issues I picked up … some of which ‘again’ … during discussions

  • Anonymous
    December 23, 2008
    How do you figure out if you have VS 2008 RTM or beta?

  • Anonymous
    January 17, 2009
    The SqlServer 2008 support in the upgrade is awesome!  thanks.

  • Anonymous
    February 07, 2009
    [ Nacsa Sándor , 2009. február 8.] Ez a Team System változat az adatbázis változások kezeléséhez és teszteléséhez

  • Anonymous
    February 11, 2009
    Con Diego necesitando generar valores aleatorios en una base de datos, en otra oportunidad estábamos

  • Anonymous
    March 06, 2009
    Nuevo Release de DB: "Mejor, robusto y rápido.", el post original lo pueden ver aquí .

  • Anonymous
    April 14, 2009
    I have several SPs and Tabular Functions that reference each other and I get this error on a lot of them. Function: %FullyQualifiedFunctionName% contains an unresolved reference to an object.  Either the object does not exist or the reference is ambiguous because it could refer to any of the following objects: [dbo].[%Table1%].[dbo]::[%Function1%], [dbo].[%Table2%].[dbo]::[%Function1%], [dbo].[%Table3%].[dbo]::[%Function1%],[dbo].[%Table4%].[dbo]::[%Function1%] or [dbo].[%Function1%] Could you please help me why i am getting such errors? thanks, Khyati

  • Anonymous
    June 03, 2009
    The comment has been removed

  • Anonymous
    December 08, 2009
    Hello.  Will Visual Studio's Data Compare allow me to compare Data on two different SQL Servers that have two different Database schemas also?  I have redesigned my database and now need to move over data from the old to the new database.  They now have different schemas because of column name changes, etc.   How would you recommend I map the two?   Is my only choice to manually write scripts for the data migration.  Any suggestion is very much appreciated. Thanks, Oscar

  • Anonymous
    December 09, 2009
    Q: Will Visual Studio's Data Compare allow me to compare Data on two different SQL Servers that have two different Database schemas also? A: It will not allow you to do this, there is currently not enough flexibility in the tool do achieve this.

  • Anonymous
    December 23, 2009
    I have an odd side effect.  After install, I have 2 of every data dude menu items in Visual Studio Data menu.  I uninstalled "previous versions" as prescribed...now if I try to uninstall using msiexec /X {DDF197C6-4507-3A19-A4B5-0E17CC931370} I get an error that 'this action only valid for installed products'.  Why would I have 2 options for every data dude function?

  • Anonymous
    December 27, 2009
    Q: I have an odd side effect.  After install, I have 2 of every data dude menu items in Visual Studio Data menu. A: Please see http://dbproj.com/Tutorials/tabid/62/TID/19/cid/2/Default.aspx

  • Anonymous
    December 28, 2009
    The following query fails the build every time. Can anyone help? DECLARE @tableName VARCHAR(50) = 'users' ; WITH AllIndexes (tablename ,indexname ,columnname ,indexcolumnid ,isincludedcolumn)  AS  (  SELECT  OBJECT_NAME(i.object_id) table_name         ,i.name index_name         ,c.name column_name         ,ic.index_column_id         ,ic.is_included_column  FROM    sys.indexes i  INNER JOIN sys.objects o  ON      i.object_id = o.object_id  INNER JOIN sys.index_columns ic  ON      i.object_id = ic.object_id          AND i.index_id = ic.index_id  INNER JOIN sys.columns c  ON      ic.object_id = c.object_id          AND ic.column_id = c.column_id  WHERE   o.type_desc = 'USER_TABLE'  )    SELECT  i.name 'Index Name'           ,type_desc 'Index Type'           ,STUFF(( SELECT  ', ' + columnname                    FROM    AllIndexes ai2                    WHERE   ai2.indexname = i.name                            AND ai2.isincludedcolumn = 0                   ORDER BY indexcolumnid                   FOR     XML PATH('') ), 1, 2, '') 'Indexed Column(s)'           ,ISNULL(STUFF(( SELECT  ', ' + columnname                           FROM    AllIndexes ai2                           WHERE   ai2.indexname = i.name                                   AND ai2.isincludedcolumn = 1                          ORDER BY indexcolumnid                          FOR     XML PATH('') ), 1, 2, ''), '')  'Included Column(s)'           ,CASE WHEN i.is_unique = 0 THEN ''                 ELSE 'UNIQUE'            END 'Is Unique?'           ,CASE WHEN i.is_primary_key = 0 THEN ''                 ELSE 'PK'            END 'Is Primary Key?'           ,CASE WHEN i.is_unique_constraint = 0 THEN ''                 ELSE 'UNIQUE CONSTRAINT'            END 'Is Unique Constraint?'    FROM    sys.indexes i    WHERE   object_name(i.object_id) = @tableName            AND i.name IS NOT NULL    ORDER BY i.is_unique DESC    ,       i.is_primary_key DESC    ,       i.is_unique_constraint DESC    ,       i.name

  • Anonymous
    December 29, 2009
    Q: The following query fails the build every time A: Did you add a reference to the master.dbschema file? You are referencing objects like sys.indexes which are defined in there. Also using the MSDN forums for support is probably easier: http://social.msdn.microsoft.com/forums/en-US/vstsdb/threads/

  • Anonymous
    March 18, 2010
    A customer installed the GRD R2 on a Visual Studio 2008 Professional. Is this scenario supported? It's not a DB pro version neither Team Suite.