Blogging from the SQL Connections keynote
Quentin Clark is on stage right now talking about high-level SQL Server stuff. I think I can take this time to explain how Connections is different from PASS (at least according to my first 15 minutes of experience here).
Clearly, SQL Server is not the priority of the Connections family – probably mostly due to the success of PASS. There are maybe 250 people in this keynote, which is tucked away in a little side room. Labeling at the conference sucks, so far – I'm 15 minutes late to this session precisely because the signage is poor. And it's not only the signs – I was "helped" by four support staff before I finally made my way in here, and only because the fourth person I talked to was standing right outside the door.
Anyway, back to Quentin. He's talking about SQL Server 2008 R2, how Forrester Research has stated that SQL Server is the best RDBMS bang for your buck, and how we have the lowest TCO. He's also discussing Parallel Data Warehouse, which allows you to approach massive scale with lots of low-end (and heterogeneous) hardware. Christian Kleinerman takes over, and demos some of Parallel Data Warehouse functionality. Noteworthy samples include how a SELECT COUNT(*) from a 17 billion row table spreads its work across 100+ servers, a table scan of 150 billion rows in less than 5 minutes, and a browser-based dashboard which lets you see the entire architecture at a high level – but drill down into status messages on individual nodes.
Roger Doherty demos Data-Tier Applications (acronym: DAC, for some reason, which I still love) in Visual Studio. He creates a table and demonstrates how VS can provide offline development capabilities through a T-SQL parsing service (the example he shows is an invalid data type in one of the column definitions – an error is returned even though no database connectivity exists). The database model can also be loaded into memory so that IntelliSense and syntax checking can work – again without any connectivity. He talks about static code analysis – kind of like Policy-Based Management for your procedures, functions and triggers. The example here is that it points out a SELECT * in a warning – and VS now has a Refactor command which can expand wildcards in SELECT * statements within the solution. He demonstrates deploying changes to Data-Tier Applications, and glosses over the fact that when you deploy a simple change to a stored procedure, the deployment processes creates a new database, copies all the data, swaps the names, and drops the old version. Not something I would recommend for a busy, critical system… though he does promise that they are working on an in-place rather than a side-by-side deployment.
Rick Negrin gives an Azure / spatial demo where he pulls zip/lat/long data from Melissa Data and draws a "map" representing sales in California. I can see the usefulness of this, but I think the tie-in with Azure is kind of forced.
Colin Meek demos StreamInsight – "high throughput, low latency queries." In Visual Studio he grabs twitter status updates from a web service, partitioning the stream in real time by 10-second increments. Because the twitter stream includes the time zone of the poster, he can derive latitude and longitude, and then visualize the traffic using a Bing map service. So you see a globe on the screen and it has a bunch of little pushpins showing number of tweets from specific locations. Neat I guess, but what is the real world application? Maybe lightning can tweet first when it is about to strike? I'm being facetious of course.
Now Quentin says he has a bit of a treat. I see Tobias Ternstrom on stage, so this must be about T-SQL in Denali (the next major version of SQL Server). He shows off Sequence (I'll have a blog post on this shortly), which allows you to have global sequences in place of IDENTITY columns (you can set up default values on multiple tables, pulling the "next" value in the same sequence). Initially he has a little stumble with the syntax, but he shows off multiple traits – you can use it in expressions, you can dictate assignment using the OVER() clause. There is also now support for the OFFSET clause (like MySQL's LIMIT), which he states will perform better than ROW_NUMBER() and also be represented by much more concise syntax:
SELECT ... OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
Then he talks about error handling enhancements. THROW() always throws, and it is always Level 16:
As an aside, THROW() in a CATCH block behaves like a RETHROW(), and it rethrows ALL errors, not just the last one.
So, pretty cool stuff from Tobias. The rest was largely marketing-y to me.