Announcing the SQL Server Modeling (née “Oslo”) CTP for November 2009

One certainty about product teams at Microsoft is that they never stop working to improve and refine their technologies. This is true even through organizational rearrangements and little things like, you know, finding a ship vehicle and landing a few real names for products!

Now as you may have read in Douglas Purdy's recent blog post (to whom we shamelessly give top billing as we're all directly reporting to him now), what has been called code name "Oslo" has become SQL Server Modeling. This should come as no surprise, because many of the formerly-"Oslo"-now-SQL-Server-Modeling technologies, such as "Quadrant", are directly tied to SQL Server. And even those that aren't so specific, such as the "M" language, have some natural synergy, as Doug explains in his follow-up post.

Of course, there are details aplenty to work out with such things, and many questions (for which there are some answers in our Q&A articles). But maybe the easiest answer is that our commitment to these technologies stays the same regardless of their collective moniker. Witness the fact that the SQL Server Modeling (née "Oslo") team has just released the November 2009 CTP of "M", "Quadrant", and what is now also called SQL Server Modeling Services (formerly the "Repository" and its included domains).

So now that we got that covered, we can once again highlight some of the many changes in this CTP, as described in the Release Notes, and give a big curtain call to our endeavoring writers in the documentation team who have published their refreshed set of topics and tutorials in the MSDN Library.


Overall Changes

Upon installing the November 2009 CTP, you'll see that the "Oslo" name no longer appears in the setup program or in the handful of Start menu items that it creates for you. To be perfectly honest, though, that's all we had time to change when the SQL Server Modeling name was handed down! In other words, you'll still see Oslo show up in your Program Files folder, and you'll still end up with a Repository database (free of charge!). In short, while the name has changed, the CTP is structurally the same as the previous May 09 CTP.

It's also important to note that this CTP requires Visual Studio 2010/.NET Framework 4 Beta 2. If you haven't installed this package yet, now is a great time.


Changes in SQL Server Modeling Services

As Modeling Services got its turn this round to be first in the Release Notes, we can start there ourselves. For one, the UML domain (System.Uml2) model has changed significantly such that code written against the old model no longer works. It's also now possible to export UML data from models in the repository database for interop with other UML tools.

The CLR domain has also seen some changes, especially in the behavior of the LoadAssembly.exe tool. If you like thinking and speaking in terms of set theory, you might enjoy hearing, for instance, that LoadAssembly "no longer calculates and loads the transitive closure of all assemblies referenced by the assemblies specified on the command line" which prevents, among other things, multiple copies of the .NET Framework metadata being loaded. A good thing, for certain.

The other highlight we want to point out is a new sample called PatternApplication that helps you easily apply standard repository patterns to a set of models, rather than applying patterns to each model individually. You can find that sample on the MSDN code gallery.

Speaking of which, the all-up SQL Server Modeling samples page, is found on

The latest information on SQL Server Modeling Services can now be found on the Data Developer Center at


"Quadrant" Changes

Now to "Quadrant". This tool continues to get more exciting. For some of us, we're most thrilled that the default color scheme has finally landed on something less sea-sick green and more my-eyes-won't-hurt blue. For the other 98.54%, what's most exciting is how much more deeply the "M" language has been integrated into "Quadrant". For example:

  • You can write "M" directly in a workpad (see File | New | M File) and deploy a database directly from that.
  • You can convert an existing database to "M", modify it, and redeploy.
  • You can view the template configuration (as it's called) in "M" for any viewer, make changes, and apply those changes to customize a viewer (try the Workpad | View Source menu).
  • "M" is now the default query language in the query bar of workpads (within which you get full syntax-checking)

The overall "Quadrant" UI has also been greatly refined, with full context menus all around, nuances like automatic workspace panning for newly-opened workpads, and a set of features around change tracking, conflict resolution, and error handling.

Something else you can really start playing with now are custom commands and custom viewers. An interesting sample in this regard is the "Media Library for ‘Quadrant'" that you can see listed along with all the other CTP samples on

A few other notables:

  • The new T-SQL Console in which you can carry out queries and other operations with direct T-SQL statements (File | New | T-SQL Console).
  • Many performance improvements including table virtualization.
  • Support for SQL Server authentication.
  • The ability to just open a fresh, empty workpad and write a query to populate it (File | New | Workpad).

We also want to thank the "Quadrant" Program Management team for producing a full set of videos that will walk you through many of the core scenarios of "Quadrant". One of our favorites is the "Quadrant" UI Overview in which UI designer Stephen Danton really shows the fluidity with which "Quadrant" can be used to visualize data in ways that no other tool can match.

The latest information on "Quadrant" can now be found on the Data Developer Center at


The "M" Language and Tools

And now we come to "M". As you can see from its integration in "Quadrant", the "M" language is finding powerful roles beyond the command line and "Intellipad" (it's worth remembering that the name "Intellipad" comes from "IntelliSense Workpad" in the context of "Quadrant".)

Some notable new language features:

  • The ability to reference labeled entity instances in expressions and across compilation episodes.
  • Entities and collections now support equality evaluations.
  • One-to-many relationships no longer create a separate join table.
  • Logical operators
  • String concatenation with the + operator
  • Member access in expressions
  • Projectors
  • .Count support
  • Type conversions
  • Right-hand side expressions in "M" grammars

In other words, the "M" team has been busy!

There are a number of breaking changes you should know about, that are again highlighted in the Release Notes. One such change will affect quite of bit of existing "M" code: the syntax for collection types. Generally speaking, collections now get wrapped with curly braces:

T* becomes { T* }T#n becomes { T#n }T#n.. becomes { T#n.. }T#..x becomes { T#..x }T#n..x becomes { T#n..x }

As a concrete example, a common form of an extent declaration looks like this, where Person is a previously-declared type:

People : {Person*};

If the collection type (like Person) is declared directly inline, then you'll see a syntax like this:

People : {{
    Name : Text;
    Age : Integer32;

In short, curly braces are needed around whatever type is used in the extent, and the multiplicity operators like * appear with the type inside the braces. (A good place to see some of these differences highlighted, the way, is in the transcript for the Modeling in Text video series where we point out code that's changed.)

There are some changes also to the "M" tools, and many to "Intellipad" such as block commenting, syntax coloring, and the ability to reverse engineer "M" from a database. And then there's much to do with Visual Studio 2010 projects. It's really quite a long list!


What Do You Mean, "Data Developer Center"?

No, those aren't typos in the text nor the URLs. The whole business of naming "Oslo" and finding its rightful home has brought us into an intimate partnership with many other existing data development technologies. To make a long story (and a whole lot of work) short, the front-side slogan of our PDC t-shirts, "It's All Data", applies to the MSDN Developer Centers: you'll find that now takes you directly to the highly-covetedURL

But we’ll save all the details for another blog post, as this Letter has become long enough already. We’ll just close then to say, as always, that we’d love to hear your feedback on this CTP through the SQL Server Modeling Forum as well as the SQL Server Modeling Connect site. You can also just send email to dpfback (at)


Kraig (Brockschmidt), Elisa (Flasko), Kent (Sharkey), and Chris (Sells) for the “It’s All Data” Developer Center Team