{"id":99,"date":"2005-07-07T11:35:02","date_gmt":"2005-07-07T10:35:02","guid":{"rendered":"http:\/\/www.craigmurphy.com\/blog\/?p=99"},"modified":"2005-07-07T11:35:31","modified_gmt":"2005-07-07T10:35:31","slug":"teched-2005-sql-server-2005-end-to-end-development","status":"publish","type":"post","link":"http:\/\/www.craigmurphy.com\/blog\/?p=99","title":{"rendered":"TechEd 2005 &#8211; SQL Server 2005 end-to-end development"},"content":{"rendered":"<p><a href=\"http:\/\/blogs.msdn.com\/euanga\/default.aspx\">Euan Garden<\/a> and <a href=\"http:\/\/www.sqljunkies.com\/weblog\/brianr\/\">Brian Randall<\/a> formed a double-act to make this an interactive session with some comedy to help things along.<\/p>\n<p>Stealing from the session&#8217;s summary slide, this is what we got to see:<\/p>\n<p><strong>Less code<\/strong><br \/>\n<em>Client \u2013 Async Execution<\/em> -great for creating more responsive user interfaces.  This was demo&#8217;d using two grids with delays introduced using T-SQL&#8217;s WAITFOR &#8211; 5 seconds and 7 seconds respectively.  Brian coded the example almost from scratch, demonstrating that without async queries the grids took 12 seconds to populate completely.  With async queries, the grids were populated with a wait time equal to the longest query, i.e. 7 seconds.  The demo&#8217;s were shown in a WinForms application and a WebForm application.<\/p>\n<p><em>Client &#8211; UDTs<\/em><br \/>\n<em>Server \u2013 Paging<\/em> &#8211; SQL Server 2005 introduces row_number() which allows us to write queries that return specific ranges, e.g. 30 thru 40: a great boon for paging those large result sets.<\/p>\n<p><em>Server \u2013 Recursive Query<\/em><\/p>\n<p><strong>More Productive<\/strong><br \/>\n<em>Server &#8211; Error Handling<\/em>&#8211; SQL Server 2005 offers structured exception handling.<\/p>\n<p><strong>New Capabilities<\/strong><br \/>\n<em>Server &#8211; DML with OUTPUT <\/em><br \/>\nThis was really cool. SQL Server 2005 lets us write something like: <code>delete top(1) from table_foo output deleted.*<\/code> &#8211; the result set containing the one record that was deleted.  And it works with inserted.* and updated.* too.  Neat.<\/p>\n<p><em>Server &#8211; XML Schema File Loading<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>With only four slides, this session went straight to the code&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-99","post","type-post","status-publish","format-standard","hentry","category-developer-events"],"_links":{"self":[{"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/99","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=99"}],"version-history":[{"count":0,"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/99\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=99"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=99"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=99"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}