<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-7085364525717171484</id><updated>2009-11-27T03:26:52.224-08:00</updated><title type='text'>.NET, Silverlight, Windows Azure, and other ramblings (from the UK)</title><subtitle type='html'>My ramblings in Silverlight, Windows Azure, .NET, ASP.NET, C# (all the way from the UK)

A little place where i can store the snippets of information, which usually get lost in my tiny little brain, and will now forever remain enshrined in the google archives forever.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default?start-index=26&amp;max-results=25'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>357</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-1380827021307780494</id><published>2009-09-09T15:22:00.001-07:00</published><updated>2009-09-09T15:22:04.754-07:00</updated><title type='text'>Roadtrip and Deep Fried Bytes</title><content type='html'>&lt;p&gt;I just offered to do a family favor which means I will be taking a roadtrip up to the north of Scotland via my parents next week.&amp;#160; I have to admit I’m really looking forward to the drive and a small break from the book :)&lt;/p&gt;  &lt;p&gt;I’m gonna load up my iPhone with the backlog of &lt;a href="http://deepfriedbytes.com/"&gt;Deep Fried Bytes episodes&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you haven’t checked it out, it really is an awesome podcast show.&amp;#160; I’ve listened to the first 4 episodes so far and they are just great.&amp;#160; The shows are particularly cool for me as I hung out with one of the hosts (Keith Elder) and many of the guests at Nashville.&amp;#160; I’m especially looking forward to listening to the Devlink podcast, which is just out.&lt;/p&gt;  &lt;p&gt;So far I’ve listened to the interview war stories (awesome), twitter podcast (very good), digg interview (really cool, nice to hear a non .net perspective), and the developing .net on a mac episode (again awesome episode).&amp;#160; I’m incredibly impressed with the diversity off the podcast and really looking forward to listening to more on the trip.&lt;/p&gt;  &lt;p&gt;This show is just as good as DNR or Hanselminutes but has a bit of a different flavor (a deep fried one even), if you haven’t checked it out yet, do it now.&amp;#160; Listening to the show on the way to Scotland is obviously appropriate with it being the land of the Deep Fried Mars bar, Pizza and well anything really.&lt;/p&gt;  &lt;p&gt;Obviously looking forward to spending a little time with my family, I don’t think I’ve been back across the border in a while now.&amp;#160; So will be nice to see how much my accent digresses back to it’s Scottish roots :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-1380827021307780494?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/1380827021307780494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=1380827021307780494' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/1380827021307780494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/1380827021307780494'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/09/roadtrip-and-deep-fried-bytes.html' title='Roadtrip and Deep Fried Bytes'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-53316719681322677</id><published>2009-08-31T08:59:00.001-07:00</published><updated>2009-08-31T08:59:41.044-07:00</updated><title type='text'>Silverlight: Offline talk at Devlink</title><content type='html'>&lt;p&gt;I just want to say a big thanks to everyone who came to my session at Devlink.&amp;#160; I had an absolutely fantastic time and I really enjoyed presenting this session to you guys.&lt;/p&gt;  &lt;p&gt;I really felt that this session was more than just a presentation but also a conversation and I thank you for participating in it with me.&lt;/p&gt;  &lt;p&gt;I really hope to return to Devlink next year (and other U.S. Conferences) so I hope to see you again.&amp;#160; I will post up my Devlink experiences later on this week hopefully.&lt;/p&gt;  &lt;p&gt;Again, a big thank you for coming to my talk and &lt;a href="http://cid-f6bb92b5df4cfec0.skydrive.live.com/self.aspx/Public/Speaking/devlink/devlink.zip" target="_blank"&gt;the slides and demo code are available from here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-53316719681322677?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/53316719681322677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=53316719681322677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/53316719681322677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/53316719681322677'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/08/silverlight-offline-talk-at-devlink.html' title='Silverlight: Offline talk at Devlink'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-2340809623991306827</id><published>2009-08-30T16:14:00.001-07:00</published><updated>2009-08-30T16:14:19.522-07:00</updated><title type='text'>SQL Azure Database Session Database</title><content type='html'>&lt;p&gt;Ok, so here is the good news and the bad news.&lt;/p&gt;  &lt;p&gt;The good news is that I created my SQL Azure Session Database Script (from hacking InstallPersistSQLState.SQL) you can’t use InstallSQLState.sql as it uses tempdb.&lt;/p&gt;  &lt;p&gt;The bad news is that to make it work you need to create a custom session provider (no easy task).&amp;#160; You need a custom provider as the SQL Session Provider needs to use the @@ parameter in the GetMajorVersion Stored Procedure which SQL Azure database doesn’t support.&amp;#160; I also haven’t tested this script, so use at your own risk&lt;/p&gt;  &lt;p&gt;I am realizing I don’t have time to write the provider at the moment as I am still in the middle of writing my “Azure in Action” book (along with Brian Prince), so here is the script for the database.&lt;/p&gt;  &lt;p&gt;All you need to do is Create a Database in SQL Azure called ASPState and run this script.&lt;/p&gt;  &lt;p&gt;/*********************************************************************    &lt;br /&gt;&amp;#160; InstallPersistSqlState.SQL&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; Installs the tables, and stored procedures necessary for&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; supporting ASP.NET session state.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160; Copyright Microsoft, Inc.    &lt;br /&gt;&amp;#160; All Rights Reserved.     &lt;br /&gt;&amp;#160; Modified by chrishayuk to work in SQL Azure Database     &lt;br /&gt;&amp;#160; P.S. You will need a worker role or console session to clean up expired sessions &lt;/p&gt;  &lt;p&gt;*********************************************************************/ &lt;/p&gt;  &lt;p&gt;--SET QUOTED_IDENTIFIER OFF    &lt;br /&gt;--GO     &lt;br /&gt;--SET ANSI_NULLS ON     &lt;br /&gt;--GO &lt;/p&gt;  &lt;p&gt;PRINT ''    &lt;br /&gt;PRINT '------------------------------------------------'     &lt;br /&gt;PRINT 'Starting execution of InstallPersistSqlState.SQL'     &lt;br /&gt;PRINT '------------------------------------------------'     &lt;br /&gt;PRINT ''     &lt;br /&gt;PRINT '--------------------------------------------------'     &lt;br /&gt;PRINT 'Note:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; '     &lt;br /&gt;PRINT 'This file is included for backward compatibility&amp;#160; '     &lt;br /&gt;PRINT 'only.&amp;#160; You should use aspnet_regsql.exe to install'     &lt;br /&gt;PRINT 'and uninstall SQL session state.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; '     &lt;br /&gt;PRINT ''     &lt;br /&gt;PRINT 'Run ''aspnet_regsql.exe -?'' for details.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; '     &lt;br /&gt;PRINT '--------------------------------------------------'     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/ &lt;/p&gt;  &lt;p&gt;-- chrishayuk -- Commented out the creation of the database    &lt;br /&gt;--/* Create and populate the session state database */     &lt;br /&gt;--IF DB_ID(N'ASPState') IS NULL BEGIN     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; DECLARE @cmd nvarchar(500)     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; SET @cmd = N'CREATE DATABASE [ASPState]'     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; EXEC(@cmd)     &lt;br /&gt;--END&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;--GO &lt;/p&gt;  &lt;p&gt;/* Drop all tables, startup procedures, stored procedures and types. */ &lt;/p&gt;  &lt;p&gt;/* Drop the DeleteExpiredSessions_Job */ &lt;/p&gt;  &lt;p&gt;-- chrishayuk -- Commented out the dropping of the DeleteExpiredSessions Job    &lt;br /&gt;--DECLARE @jobname nvarchar(200)     &lt;br /&gt;--SET @jobname = N'ASPState' + '_Job_DeleteExpiredSessions'     &lt;br /&gt;-- Delete the [local] job     &lt;br /&gt;-- We expected to get an error if the job doesn't exist.     &lt;br /&gt;--PRINT 'If the job does not exist, an error from msdb.dbo.sp_delete_job is expected.'     &lt;br /&gt;--EXECUTE msdb.dbo.sp_delete_job @job_name = @jobname     &lt;br /&gt;--GO &lt;/p&gt;  &lt;p&gt;DECLARE @sstype nvarchar(128)    &lt;br /&gt;SET @sstype = N'sstype_persisted' &lt;/p&gt;  &lt;p&gt;IF UPPER(@sstype) = 'SSTYPE_TEMP' AND OBJECT_ID(N'dbo.ASPState_Startup', 'P') IS NOT NULL BEGIN    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE dbo.ASPState_Startup     &lt;br /&gt;END&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;IF OBJECT_ID(N'dbo.ASPStateTempSessions','U') IS NOT NULL BEGIN    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP TABLE dbo.ASPStateTempSessions     &lt;br /&gt;END &lt;/p&gt;  &lt;p&gt;IF OBJECT_ID(N'dbo.ASPStateTempApplications','U') IS NOT NULL BEGIN    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP TABLE dbo.ASPStateTempApplications     &lt;br /&gt;END &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'GetMajorVersion') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].GetMajorVersion     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'CreateTempTables') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].CreateTempTables     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempGetVersion') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempGetVersion     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'GetHashCode') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].GetHashCode     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempGetAppID') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempGetAppID     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempGetStateItem') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempGetStateItem     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempGetStateItem2') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempGetStateItem2     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempGetStateItem3') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempGetStateItem3     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempGetStateItemExclusive') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempGetStateItemExclusive     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempGetStateItemExclusive2') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempGetStateItemExclusive2     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempGetStateItemExclusive3') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempGetStateItemExclusive3     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempReleaseStateItemExclusive') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempReleaseStateItemExclusive     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempInsertUninitializedItem') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempInsertUninitializedItem     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempInsertStateItemShort') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempInsertStateItemShort     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempInsertStateItemLong') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempInsertStateItemLong     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempUpdateStateItemShort') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempUpdateStateItemShort     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempUpdateStateItemShortNullLong') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempUpdateStateItemShortNullLong     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempUpdateStateItemLong') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempUpdateStateItemLong     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempUpdateStateItemLongNullShort') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempUpdateStateItemLongNullShort     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempRemoveStateItem') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempRemoveStateItem     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'TempResetTimeout') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].TempResetTimeout     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF (EXISTS (SELECT name FROM sys.objects WHERE (name = N'DeleteExpiredSessions') AND (type = 'P')))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DROP PROCEDURE [dbo].DeleteExpiredSessions     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;CREATE PROCEDURE dbo.TempGetVersion    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @ver&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; char(10) OUTPUT     &lt;br /&gt;AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT @ver = '2'     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;CREATE PROCEDURE dbo.GetMajorVersion    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @ver int OUTPUT     &lt;br /&gt;AS     &lt;br /&gt;BEGIN     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @ver = 10     &lt;br /&gt;END     &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;CREATE PROCEDURE dbo.CreateTempTables    &lt;br /&gt;AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CREATE TABLE [ASPState].dbo.ASPStateTempSessions (     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionId&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88)&amp;#160;&amp;#160;&amp;#160; NOT NULL PRIMARY KEY,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Created&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; datetime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NOT NULL DEFAULT GETUTCDATE(),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Expires&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; datetime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NOT NULL,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockDate&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; datetime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NOT NULL,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockDateLocal&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; datetime&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NOT NULL,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockCookie&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NOT NULL,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Timeout&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NOT NULL,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Locked&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; bit&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NOT NULL,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionItemShort&amp;#160;&amp;#160;&amp;#160; varbinary(7000) NULL,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionItemLong&amp;#160;&amp;#160;&amp;#160;&amp;#160; varbinary(max)&amp;#160; NULL,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Flags&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NOT NULL DEFAULT 0,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; CREATE NONCLUSTERED INDEX Index_Expires ON [ASPState].dbo.ASPStateTempSessions(Expires) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; CREATE TABLE [ASPState].dbo.ASPStateTempApplications (    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AppId&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NOT NULL PRIMARY KEY,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AppName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; char(280)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NOT NULL,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; CREATE NONCLUSTERED INDEX Index_AppName ON [ASPState].dbo.ASPStateTempApplications(AppName) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0    &lt;br /&gt;GO&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/ &lt;/p&gt;  &lt;p&gt;CREATE PROCEDURE dbo.GetHashCode    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @input varchar(280),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @hash int OUTPUT     &lt;br /&gt;AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /*     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; This sproc is based on this C# hash function: &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int GetHashCode(string s)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int&amp;#160;&amp;#160;&amp;#160;&amp;#160; hash = 5381;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int&amp;#160;&amp;#160;&amp;#160;&amp;#160; len = s.Length; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; for (int i = 0; i &amp;lt; len; i++) {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int&amp;#160;&amp;#160;&amp;#160;&amp;#160; c = Convert.ToInt32(s[i]);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; hash = ((hash &amp;lt;&amp;lt; 5) + hash) ^ c;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return hash;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; However, SQL 7 doesn't provide a 32-bit integer    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; type that allows rollover of bits, we have to     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; divide our 32bit integer into the upper and lower     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 16 bits to do our calculation.     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; */     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @hi_16bit&amp;#160;&amp;#160; int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @lo_16bit&amp;#160;&amp;#160; int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @hi_t&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @lo_t&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @len&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @i&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @c&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @carry&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SET @hi_16bit = 0    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @lo_16bit = 5381     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @len = DATALENGTH(@input)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @i = 1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHILE (@i &amp;lt;= @len)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; BEGIN     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @c = ASCII(SUBSTRING(@input, @i, 1)) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /* Formula:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; hash = ((hash &amp;lt;&amp;lt; 5) + hash) ^ c */ &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /* hash &amp;lt;&amp;lt; 5 */    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @hi_t = @hi_16bit * 32 /* high 16bits &amp;lt;&amp;lt; 5 */     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @hi_t = @hi_t &amp;amp; 0xFFFF /* zero out overflow */     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @lo_t = @lo_16bit * 32 /* low 16bits &amp;lt;&amp;lt; 5 */     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @carry = @lo_16bit &amp;amp; 0x1F0000 /* move low 16bits carryover to hi 16bits */     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @carry = @carry / 0x10000 /* &amp;gt;&amp;gt; 16 */     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @hi_t = @hi_t + @carry     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @hi_t = @hi_t &amp;amp; 0xFFFF /* zero out overflow */ &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /* + hash */    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @lo_16bit = @lo_16bit + @lo_t     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @hi_16bit = @hi_16bit + @hi_t + (@lo_16bit / 0x10000)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /* delay clearing the overflow */ &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /* ^c */    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @lo_16bit = @lo_16bit ^ @c &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /* Now clear the overflow bits */&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @hi_16bit = @hi_16bit &amp;amp; 0xFFFF     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @lo_16bit = @lo_16bit &amp;amp; 0xFFFF &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @i = @i + 1    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; END &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; /* Do a sign extension of the hi-16bit if needed */    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IF (@hi_16bit &amp;amp; 0x8000 &amp;lt;&amp;gt; 0)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET @hi_16bit = 0xFFFF0000 | @hi_16bit &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; /* Merge hi and lo 16bit back together */    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @hi_16bit = @hi_16bit * 0x10000 /* &amp;lt;&amp;lt; 16 */     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @hash = @hi_16bit | @lo_16bit &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0    &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CREATE PROCEDURE dbo.TempGetAppID     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @appName&amp;#160;&amp;#160;&amp;#160; varchar(280),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @appId&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int OUTPUT     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @appName = LOWER(@appName)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @appId = NULL &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SELECT @appId = AppId    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM [ASPState].dbo.ASPStateTempApplications     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE AppName = @appName &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; IF @appId IS NULL BEGIN    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; BEGIN TRAN&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SELECT @appId = AppId    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FROM [ASPState].dbo.ASPStateTempApplications WITH (TABLOCKX)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHERE AppName = @appName     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IF @appId IS NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; BEGIN     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EXEC GetHashCode @appName, @appId OUTPUT     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; INSERT [ASPState].dbo.ASPStateTempApplications     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; VALUES     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (@appId, @appName)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IF @@ERROR = 2627     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; BEGIN     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DECLARE @dupApp varchar(280)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SELECT @dupApp = RTRIM(AppName)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FROM [ASPState].dbo.ASPStateTempApplications     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHERE AppId = @appId     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RAISERROR('SQL session state fatal error: hash-code collision between applications ''%s'' and ''%s''. Please rename the 1st application to resolve the problem.',     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 18, 1, @appName, @dupApp)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; COMMIT    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; END &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160; &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempGetStateItem     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @itemShort&amp;#160; varbinary(7000) OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @locked&amp;#160;&amp;#160;&amp;#160;&amp;#160; bit OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockDate&amp;#160;&amp;#160; datetime OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockCookie int OUTPUT     &lt;br /&gt;AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @textptr AS varbinary(max)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @length AS int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @now AS datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @now = GETUTCDATE() &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; UPDATE [ASPState].dbo.ASPStateTempSessions    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET Expires = DATEADD(n, Timeout, @now),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @locked = Locked,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockDate = LockDateLocal,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockCookie = LockCookie,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @itemShort = CASE @locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN SessionItemShort     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @textptr = CASE @locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN SessionItemLong     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @length = CASE @locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN DATALENGTH(SessionItemLong)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SessionId = @id &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160; &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempGetStateItem2     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @itemShort&amp;#160; varbinary(7000) OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @locked&amp;#160;&amp;#160;&amp;#160;&amp;#160; bit OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockAge&amp;#160;&amp;#160;&amp;#160; int OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockCookie int OUTPUT     &lt;br /&gt;AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @textptr AS varbinary(max)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @length AS int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @now AS datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @now = GETUTCDATE() &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; UPDATE [ASPState].dbo.ASPStateTempSessions    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET Expires = DATEADD(n, Timeout, @now),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @locked = Locked,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockAge = DATEDIFF(second, LockDate, @now),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockCookie = LockCookie,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @itemShort = CASE @locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN SessionItemShort     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @textptr = CASE @locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN SessionItemLong     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @length = CASE @locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN DATALENGTH(SessionItemLong)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SessionId = @id &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160; &lt;br /&gt;GO&lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempGetStateItem3     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @itemShort&amp;#160; varbinary(7000) OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @locked&amp;#160;&amp;#160;&amp;#160;&amp;#160; bit OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockAge&amp;#160;&amp;#160;&amp;#160; int OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockCookie int OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @actionFlags int OUTPUT     &lt;br /&gt;AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @textptr AS varbinary(max)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @length AS int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @now AS datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @now = GETUTCDATE() &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; UPDATE [ASPState].dbo.ASPStateTempSessions    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET Expires = DATEADD(n, Timeout, @now),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @locked = Locked,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockAge = DATEDIFF(second, LockDate, @now),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockCookie = LockCookie,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @itemShort = CASE @locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN SessionItemShort     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @textptr = CASE @locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN SessionItemLong     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @length = CASE @locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN DATALENGTH(SessionItemLong)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END, &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /* If the Uninitialized flag (0x1) if it is set,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; remove it and return InitializeItem (0x1) in actionFlags */     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Flags = CASE     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN (Flags &amp;amp; 1) &amp;lt;&amp;gt; 0 THEN (Flags &amp;amp; ~1)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE Flags     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @actionFlags = CASE     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN (Flags &amp;amp; 1) &amp;lt;&amp;gt; 0 THEN 1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE 0     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SessionId = @id &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160; &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempGetStateItemExclusive     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @itemShort&amp;#160; varbinary(7000) OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @locked&amp;#160;&amp;#160;&amp;#160;&amp;#160; bit OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockDate&amp;#160;&amp;#160; datetime OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockCookie int OUTPUT     &lt;br /&gt;AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @textptr AS varbinary(max)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @length AS int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @now AS datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @nowLocal AS datetime &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SET @now = GETUTCDATE()    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @nowLocal = GETDATE()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UPDATE [ASPState].dbo.ASPStateTempSessions     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET Expires = DATEADD(n, Timeout, @now),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockDate = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN @now     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE LockDate     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockDate = LockDateLocal = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN @nowLocal     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE LockDateLocal     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockCookie = LockCookie = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN LockCookie + 1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE LockCookie     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @itemShort = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN SessionItemShort     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @textptr = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN SessionItemLong     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @length = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN DATALENGTH(SessionItemLong)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @locked = Locked,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Locked = 1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SessionId = @id &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempGetStateItemExclusive2     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @itemShort&amp;#160; varbinary(7000) OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @locked&amp;#160;&amp;#160;&amp;#160;&amp;#160; bit OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockAge&amp;#160;&amp;#160;&amp;#160; int OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockCookie int OUTPUT     &lt;br /&gt;AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @textptr AS varbinary(max)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @length AS int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @now AS datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @nowLocal AS datetime &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SET @now = GETUTCDATE()    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @nowLocal = GETDATE()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UPDATE [ASPState].dbo.ASPStateTempSessions     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET Expires = DATEADD(n, Timeout, @now),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockDate = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN @now     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE LockDate     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockDateLocal = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN @nowLocal     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE LockDateLocal     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockAge = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN 0     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE DATEDIFF(second, LockDate, @now)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockCookie = LockCookie = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN LockCookie + 1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE LockCookie     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @itemShort = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN SessionItemShort     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @textptr = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN SessionItemLong     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @length = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN DATALENGTH(SessionItemLong)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @locked = Locked,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Locked = 1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SessionId = @id &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160; &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempGetStateItemExclusive3     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @itemShort&amp;#160; varbinary(7000) OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @locked&amp;#160;&amp;#160;&amp;#160;&amp;#160; bit OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockAge&amp;#160;&amp;#160;&amp;#160; int OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockCookie int OUTPUT,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @actionFlags int OUTPUT     &lt;br /&gt;AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @textptr AS varbinary(max)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @length AS int     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @now AS datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @nowLocal AS datetime &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SET @now = GETUTCDATE()    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @nowLocal = GETDATE()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UPDATE [ASPState].dbo.ASPStateTempSessions     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET Expires = DATEADD(n, Timeout, @now),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockDate = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN @now     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE LockDate     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockDateLocal = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN @nowLocal     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE LockDateLocal     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockAge = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN 0     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE DATEDIFF(second, LockDate, @now)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockCookie = LockCookie = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN LockCookie + 1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE LockCookie     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @itemShort = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN SessionItemShort     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @textptr = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN SessionItemLong     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @length = CASE Locked     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN 0 THEN DATALENGTH(SessionItemLong)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE NULL     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @locked = Locked,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Locked = 1, &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /* If the Uninitialized flag (0x1) if it is set,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; remove it and return InitializeItem (0x1) in actionFlags */     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Flags = CASE     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN (Flags &amp;amp; 1) &amp;lt;&amp;gt; 0 THEN (Flags &amp;amp; ~1)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE Flags     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @actionFlags = CASE     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHEN (Flags &amp;amp; 1) &amp;lt;&amp;gt; 0 THEN 1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ELSE 0     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; END     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SessionId = @id &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempReleaseStateItemExclusive     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockCookie int     &lt;br /&gt;AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UPDATE [ASPState].dbo.ASPStateTempSessions     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET Expires = DATEADD(n, Timeout, GETUTCDATE()),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Locked = 0     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SessionId = @id AND LockCookie = @lockCookie &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160; &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempInsertUninitializedItem     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @itemShort&amp;#160; varbinary(7000),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @timeout&amp;#160;&amp;#160;&amp;#160; int     &lt;br /&gt;AS&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @now AS datetime    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @nowLocal AS datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @now = GETUTCDATE()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @nowLocal = GETDATE() &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; INSERT [ASPState].dbo.ASPStateTempSessions    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (SessionId,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionItemShort,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Timeout,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Expires,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Locked,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockDate,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockDateLocal,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockCookie,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Flags)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; VALUES     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (@id,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @itemShort,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @timeout,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DATEADD(n, @timeout, @now),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @now,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @nowLocal,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160; &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempInsertStateItemShort     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @itemShort&amp;#160; varbinary(7000),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @timeout&amp;#160;&amp;#160;&amp;#160; int     &lt;br /&gt;AS&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @now AS datetime    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @nowLocal AS datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @now = GETUTCDATE()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @nowLocal = GETDATE() &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; INSERT [ASPState].dbo.ASPStateTempSessions    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (SessionId,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionItemShort,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Timeout,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Expires,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Locked,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockDate,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockDateLocal,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockCookie)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; VALUES     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (@id,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @itemShort,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @timeout,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DATEADD(n, @timeout, @now),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @now,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @nowLocal,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0    &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempInsertStateItemLong     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @itemLong&amp;#160;&amp;#160; varbinary(max),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @timeout&amp;#160;&amp;#160;&amp;#160; int     &lt;br /&gt;AS&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @now AS datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @nowLocal AS datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @now = GETUTCDATE()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @nowLocal = GETDATE() &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; INSERT [ASPState].dbo.ASPStateTempSessions    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (SessionId,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionItemLong,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Timeout,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Expires,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Locked,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockDate,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockDateLocal,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LockCookie)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; VALUES     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (@id,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @itemLong,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @timeout,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DATEADD(n, @timeout, @now),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @now,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @nowLocal,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempUpdateStateItemShort     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @itemShort&amp;#160; varbinary(7000),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @timeout&amp;#160;&amp;#160;&amp;#160; int,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockCookie int     &lt;br /&gt;AS&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UPDATE [ASPState].dbo.ASPStateTempSessions     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET Expires = DATEADD(n, @timeout, GETUTCDATE()),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionItemShort = @itemShort,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Timeout = @timeout,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Locked = 0     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SessionId = @id AND LockCookie = @lockCookie &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160; &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempUpdateStateItemShortNullLong     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @itemShort&amp;#160; varbinary(7000),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @timeout&amp;#160;&amp;#160;&amp;#160; int,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockCookie int     &lt;br /&gt;AS&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UPDATE [ASPState].dbo.ASPStateTempSessions     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET Expires = DATEADD(n, @timeout, GETUTCDATE()),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionItemShort = @itemShort,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionItemLong = NULL,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Timeout = @timeout,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Locked = 0     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SessionId = @id AND LockCookie = @lockCookie &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0    &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempUpdateStateItemLong     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @itemLong&amp;#160;&amp;#160; varbinary(max),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @timeout&amp;#160;&amp;#160;&amp;#160; int,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockCookie int     &lt;br /&gt;AS&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UPDATE [ASPState].dbo.ASPStateTempSessions     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET Expires = DATEADD(n, @timeout, GETUTCDATE()),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionItemLong = @itemLong,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Timeout = @timeout,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Locked = 0     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SessionId = @id AND LockCookie = @lockCookie &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempUpdateStateItemLongNullShort     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @itemLong&amp;#160;&amp;#160; varbinary(max),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @timeout&amp;#160;&amp;#160;&amp;#160; int,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @lockCookie int     &lt;br /&gt;AS&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UPDATE [ASPState].dbo.ASPStateTempSessions     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET Expires = DATEADD(n, @timeout, GETUTCDATE()),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionItemLong = @itemLong,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SessionItemShort = NULL,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Timeout = @timeout,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Locked = 0     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SessionId = @id AND LockCookie = @lockCookie &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.TempRemoveStateItem     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @lockCookie int     &lt;br /&gt;AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DELETE [ASPState].dbo.ASPStateTempSessions     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SessionId = @id AND LockCookie = @lockCookie     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160; &lt;br /&gt;GO     &lt;br /&gt;/*****************************************************************************/     &lt;br /&gt;CREATE PROCEDURE dbo.TempResetTimeout     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @id&amp;#160;&amp;#160;&amp;#160;&amp;#160; nvarchar(88)     &lt;br /&gt;AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UPDATE [ASPState].dbo.ASPStateTempSessions     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET Expires = DATEADD(n, Timeout, GETUTCDATE())     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE SessionId = @id     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;/*****************************************************************************/    &lt;br /&gt;CREATE PROCEDURE dbo.DeleteExpiredSessions     &lt;br /&gt;AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @now datetime     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SET @now = GETUTCDATE() &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; DELETE [ASPState].dbo.ASPStateTempSessions    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE Expires &amp;lt; @now &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; RETURN 0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;GO&lt;/p&gt;  &lt;p&gt;--/*****************************************************************************/ &lt;/p&gt;  &lt;p&gt;EXECUTE dbo.CreateTempTables    &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;DECLARE @sstype nvarchar(128)    &lt;br /&gt;SET @sstype = N'sstype_persisted' &lt;/p&gt;  &lt;p&gt;IF UPPER(@sstype) = 'SSTYPE_TEMP' BEGIN    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DECLARE @cmd nchar(4000) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SET @cmd = N'    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /* Create the startup procedure */     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CREATE PROCEDURE dbo.ASPState_Startup     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EXECUTE ASPState.dbo.CreateTempTables &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RETURN 0'    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; EXEC(@cmd)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; EXECUTE sp_procoption @ProcName='dbo.ASPState_Startup', @OptionName='startup', @OptionValue='true'     &lt;br /&gt;END&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;-- chrishayuk -- Commented out the creation of the DeleteExpiredSessions Job    &lt;br /&gt;--/*****************************************************************************/ &lt;/p&gt;  &lt;p&gt;--/* Create the job to delete expired sessions */ &lt;/p&gt;  &lt;p&gt;---- Add job category    &lt;br /&gt;---- We expect an error if the category already exists.     &lt;br /&gt;--PRINT 'If the category already exists, an error from msdb.dbo.sp_add_category is expected.'     &lt;br /&gt;--EXECUTE msdb.dbo.sp_add_category @name = N'[Uncategorized (Local)]'     &lt;br /&gt;--GO &lt;/p&gt;  &lt;p&gt;--BEGIN TRANSACTION&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; DECLARE @JobID BINARY(16)&amp;#160; &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; DECLARE @ReturnCode int&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; DECLARE @nameT nchar(200)     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; SELECT @ReturnCode = 0&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;--&amp;#160;&amp;#160;&amp;#160; -- Add the job    &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; SET @nameT = N'ASPState' + '_Job_DeleteExpiredSessions'     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; EXECUTE @ReturnCode = msdb.dbo.sp_add_job     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @job_id = @JobID OUTPUT,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @job_name = @nameT,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @owner_login_name = NULL,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @description = N'Deletes expired sessions from the session state database.',     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @category_name = N'[Uncategorized (Local)]',     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @enabled = 1,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @notify_level_email = 0,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @notify_level_page = 0,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @notify_level_netsend = 0,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @notify_level_eventlog = 0,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @delete_level= 0 &lt;/p&gt;  &lt;p&gt;--&amp;#160;&amp;#160;&amp;#160; IF (@@ERROR &amp;lt;&amp;gt; 0 OR @ReturnCode &amp;lt;&amp;gt; 0) GOTO QuitWithRollback    &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; -- Add the job steps     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; SET @nameT = N'ASPState' + '_JobStep_DeleteExpiredSessions'     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @job_id = @JobID,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @step_id = 1,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @step_name = @nameT,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @command = N'EXECUTE DeleteExpiredSessions',     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @database_name = N'ASPState',     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @server = N'',     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @database_user_name = N'',     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @subsystem = N'TSQL',     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @cmdexec_success_code = 0,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @flags = 0,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @retry_attempts = 0,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @retry_interval = 1,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @output_file_name = N'',     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @on_success_step_id = 0,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @on_success_action = 1,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @on_fail_step_id = 0,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @on_fail_action = 2 &lt;/p&gt;  &lt;p&gt;--&amp;#160;&amp;#160;&amp;#160; IF (@@ERROR &amp;lt;&amp;gt; 0 OR @ReturnCode &amp;lt;&amp;gt; 0) GOTO QuitWithRollback &lt;/p&gt;  &lt;p&gt;--&amp;#160;&amp;#160;&amp;#160; EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1    &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; IF (@@ERROR &amp;lt;&amp;gt; 0 OR @ReturnCode &amp;lt;&amp;gt; 0) GOTO QuitWithRollback     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; -- Add the job schedules     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; SET @nameT = N'ASPState' + '_JobSchedule_DeleteExpiredSessions'     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @job_id = @JobID,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @name = @nameT,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @enabled = 1,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @freq_type = 4,&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @active_start_date = 20001016,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @active_start_time = 0,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @freq_interval = 1,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @freq_subday_type = 4,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @freq_subday_interval = 1,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @freq_relative_interval = 0,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @freq_recurrence_factor = 0,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @active_end_date = 99991231,     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @active_end_time = 235959 &lt;/p&gt;  &lt;p&gt;--&amp;#160;&amp;#160;&amp;#160; IF (@@ERROR &amp;lt;&amp;gt; 0 OR @ReturnCode &amp;lt;&amp;gt; 0) GOTO QuitWithRollback    &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; -- Add the Target Servers     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)'     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; IF (@@ERROR &amp;lt;&amp;gt; 0 OR @ReturnCode &amp;lt;&amp;gt; 0) GOTO QuitWithRollback     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; COMMIT TRANSACTION&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; GOTO&amp;#160;&amp;#160; EndSave&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;--QuitWithRollback:     &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160; IF (@@TRANCOUNT &amp;gt; 0) ROLLBACK TRANSACTION     &lt;br /&gt;--EndSave:     &lt;br /&gt;--GO &lt;/p&gt;  &lt;p&gt;--/*************************************************************/    &lt;br /&gt;--/*************************************************************/     &lt;br /&gt;--/*************************************************************/     &lt;br /&gt;--/*************************************************************/ &lt;/p&gt;  &lt;p&gt;PRINT ''    &lt;br /&gt;PRINT '-------------------------------------------------'     &lt;br /&gt;PRINT 'Completed execution of InstallPersistSqlState.SQL'     &lt;br /&gt;PRINT '-------------------------------------------------' &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-2340809623991306827?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/2340809623991306827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=2340809623991306827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/2340809623991306827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/2340809623991306827'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/08/sql-azure-database-session-database.html' title='SQL Azure Database Session Database'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-6453794008302747754</id><published>2009-08-24T07:44:00.001-07:00</published><updated>2009-08-24T07:46:25.366-07:00</updated><title type='text'>Using SQL Azure Database in SQL Management Studio</title><content type='html'>&lt;p&gt;OK, so I’ve figured it now.  You can use SQL Azure Database in SQL Azure Management Studio, you just can’t use object explorer.&lt;/p&gt;&lt;p&gt;So this means you will be able to run queries but not be able to view stored proc lists, tables etc in the Object Explorer window.  If you need to do that then you &lt;a href="http://silverlightuk.blogspot.com/2009/08/connecting-to-sql-azure-database-with.html" target="_blank"&gt;can always use Universal SQL Editor as described in my previous article&lt;/a&gt;&lt;/p&gt;&lt;p&gt;So the simplest way of doing this is to&lt;/p&gt;&lt;ul&gt;&lt;li&gt;When connected to your existing database&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Click New Query button&lt;/li&gt;&lt;li&gt;Within Query Window&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Right Click and Select Change Connection&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Enter the server name (including ctp.database.windows.net e.g. servername.ctp.database.windows.net)&lt;/li&gt;&lt;li&gt;Select SQL Server Authentication&lt;/li&gt;&lt;li&gt;Enter Username (including servername, excluding ctp.database.windows.net e.g &lt;a href="mailto:chris@servername"&gt;chris@servername&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Enter Password&lt;/li&gt;&lt;li&gt;Click Options&lt;/li&gt;&lt;ul&gt;&lt;li&gt;In Connection Properties Tab&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Change Connect to Database to database name (e.g. HawaiianShirts), just type it&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;This will allow you to run queries in SQL Management Studio but not use object explorer&lt;/p&gt;&lt;p&gt;Alternatively you can login as normal but disable object explorer&lt;/p&gt;&lt;p&gt;Tools-&gt;Options-&gt;(Environment-&gt;General)-&gt;At Startup = "Open New Query Window" instead of "Open Object Explorer"&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-6453794008302747754?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/6453794008302747754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=6453794008302747754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/6453794008302747754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/6453794008302747754'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/08/using-sql-azure-database-in-sql.html' title='Using SQL Azure Database in SQL Management Studio'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-7028831009454139780</id><published>2009-08-23T10:14:00.001-07:00</published><updated>2009-08-23T10:14:46.732-07:00</updated><title type='text'>Connecting to SQL Azure Database with a management tool</title><content type='html'>&lt;p&gt;Whilst working on my new book &lt;a href="http://www.manning.com/hay/" target="_blank"&gt;Azure in Action&lt;/a&gt; (first 3 chapters are available now online), I thought I’d write up how to connect to SQL Azure Database using a database browser tool.&lt;/p&gt;  &lt;p&gt;If you are lucky enough to have received your SQL Azure Database invitation token you will have noticed that you cannot connect SQL Server Management Studio to your cloud database.&lt;/p&gt;  &lt;p&gt;However this is not to say that you cannot use another tool to perform the same job.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Universal SQL Editor&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The Tool I have used is &lt;a href="http://mingsoftware.com/universalsqleditor/overview.html" target="_blank"&gt;Universal SQL Editor&lt;/a&gt; which has a 14 day trial and is a reasonable cost at $39 beyond that.&amp;#160; It’s a pretty good tool actually (please note I’m not affiliated with them in any way), it has intellisense and can talk to loads of different db types.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Setting up a DSN Connection&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In the SQL Azure Portal I already created a database called “HawaiianShirts” which I will now connect to using the tool.&amp;#160; To do that I created a file DSN which points to my DB.&amp;#160; I called the DSN file “HawaiianShirts.dsn” and the contents of the DSN are below:&lt;/p&gt;  &lt;p&gt;[ODBC]   &lt;br /&gt;DRIVER=SQL Server Native Client 10.0    &lt;br /&gt;UID=&amp;lt;myusername&amp;gt;@&amp;lt;myservername&amp;gt;    &lt;br /&gt;WSID=&amp;lt;mypcname&amp;gt;    &lt;br /&gt;APP=2007 Microsoft Office system    &lt;br /&gt;SERVER=&amp;lt;myservername&amp;gt;.ctp.database.windows.net    &lt;br /&gt;DATABASE=HawaiianShirts&lt;/p&gt;  &lt;p&gt;So for example (not real data)&lt;/p&gt;  &lt;p&gt;[ODBC]   &lt;br /&gt;DRIVER=SQL Server Native Client 10.0    &lt;br /&gt;UID=chris@a123456    &lt;br /&gt;WSID=CHRIS-PC    &lt;br /&gt;APP=2007 Microsoft Office system    &lt;br /&gt;SERVER=a123456.ctp.database.windows.net    &lt;br /&gt;DATABASE=HawaiianShirts&lt;/p&gt;  &lt;p&gt;I can now use this file DSN to open a connection to the database.&amp;#160; I can use this editor to both create tables, stored procedures and view/edit data.&lt;/p&gt;  &lt;p&gt;Here is a screenshot of me using the tool to edit some data in a table in SQL Azure Database&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_5NvOQ-q6xac/SpF5ACsEwjI/AAAAAAAAADg/Dq2sZohXllU/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_5NvOQ-q6xac/SpF5BYg-W3I/AAAAAAAAADk/NiJ422w7ZGE/image_thumb%5B1%5D.png?imgmax=800" width="514" height="289" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-7028831009454139780?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/7028831009454139780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=7028831009454139780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/7028831009454139780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/7028831009454139780'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/08/connecting-to-sql-azure-database-with.html' title='Connecting to SQL Azure Database with a management tool'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-4412878639885278886</id><published>2009-07-30T02:27:00.001-07:00</published><updated>2009-07-30T02:27:49.951-07:00</updated><title type='text'>Azure in Action book page up on Manning Site</title><content type='html'>&lt;p&gt;I’m pleased to say that Manning have put up the page for our “Azure in Action” book on the Manning site.&lt;/p&gt;  &lt;p&gt;Check it out at: &lt;a title="http://www.manning.com/hay/" href="http://www.manning.com/hay/"&gt;http://www.manning.com/hay/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I will be posting up some details of the progress soon and some more details of how you can get early access to the chapters.&lt;/p&gt;  &lt;p&gt;You can also check out our funky book cover&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-4412878639885278886?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/4412878639885278886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=4412878639885278886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/4412878639885278886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/4412878639885278886'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/07/azure-in-action-book-page-up-on-manning.html' title='Azure in Action book page up on Manning Site'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-4536795830347146295</id><published>2009-07-29T04:03:00.001-07:00</published><updated>2009-07-29T04:03:11.621-07:00</updated><title type='text'>SQLBits</title><content type='html'>&lt;p&gt;SQLBits which really is one of the top SQL Server conferences in the world is now accepting session submissions.&lt;/p&gt;  &lt;p&gt;I had the pleasure of doing a session at SQL Bits 3 last year and I absolutely loved it.&amp;#160; Unfortunately since the timing is so close to the PDC, I don’t think I will be able to attend or present :(&lt;/p&gt;  &lt;p&gt;However, if you are interested in submitting a session then you should go to &lt;a href="http://www.sqlbits.com/information/PublicSessions.aspx" target="_blank"&gt;the site&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Even if you don’t want to submit a session you should make a note of the date in your diary and take a jaunt down to Wales (each conference is held in a different location in the UK).&lt;/p&gt;  &lt;p&gt;Anyways check it out 19th-21st November 2009&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-4536795830347146295?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/4536795830347146295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=4536795830347146295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/4536795830347146295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/4536795830347146295'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/07/sqlbits.html' title='SQLBits'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-7983180684113226528</id><published>2009-07-20T02:28:00.001-07:00</published><updated>2009-07-20T02:28:25.241-07:00</updated><title type='text'>Silverlight: iPhone Apps</title><content type='html'>&lt;p&gt;So this was a tweet I picked up from @scottGu who picked it up from @techarch (by the way my twitter address is @chrishayuk)&lt;/p&gt;  &lt;p&gt;So the Mono folks are working on a version of Mono that can compile to the iPhone which will eventually mean you will be able to run Silverlight Applications.&lt;/p&gt;  &lt;p&gt;For more details see the &lt;a href="http://mono-project.com/MonoTouch_Roadmap" target="_blank"&gt;MonoTouch Roadmap&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is absolute awesome as someone who has done a lot of Silverlight development and some iPhone development this is great news.&lt;/p&gt;  &lt;p&gt;If you have ever tried to develop on the iPhone it’s like stepping back 10 years.&amp;#160; The prospect of being able to write C# / Silverlight code is just cool.&lt;/p&gt;  &lt;p&gt;Once my book is complete this is one of the first set of technologies that I will be messing around, way cool.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-7983180684113226528?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/7983180684113226528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=7983180684113226528' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/7983180684113226528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/7983180684113226528'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/07/silverlight-iphone-apps.html' title='Silverlight: iPhone Apps'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-3145304340948045929</id><published>2009-07-09T09:15:00.001-07:00</published><updated>2009-07-09T09:15:22.714-07:00</updated><title type='text'>Silverlight: See you at Devlink</title><content type='html'>&lt;p&gt;I’m very pleased to say that I will be spending a week in August at Nashville at &lt;a href="http://www.devlink.net/" target="_blank"&gt;Devlink&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ve heard Nashville is an awesome place to be and I can’t wait to check it out.&amp;#160; I’ll be spending a few days before the conference chilling out and checking out the sites.&amp;#160; Hopefully I will get a chance to eat some good southern food and of course many many Cheeseburgers.&lt;/p&gt;  &lt;p&gt;The attendee party looks great, I’ve never seen a baseball game before so I’m looking forward to it.&amp;#160; The conference agenda looks amazing with an incredible speaker line up.&amp;#160; &lt;/p&gt;  &lt;p&gt;My session is on Silverlight Offline at 4.00pm on the Friday night.&lt;/p&gt;  &lt;p&gt;It will be nice to concentrate on Silverlight again as I’ve been pretty Azure focused over the past few months :)&lt;/p&gt;  &lt;p&gt;Looking forward to seeing you there, please say hello.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-3145304340948045929?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/3145304340948045929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=3145304340948045929' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/3145304340948045929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/3145304340948045929'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/07/silverlight-see-you-at-devlink.html' title='Silverlight: See you at Devlink'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-4946615234219271657</id><published>2009-07-08T14:31:00.001-07:00</published><updated>2009-07-08T14:31:42.977-07:00</updated><title type='text'>SQLBits V</title><content type='html'>&lt;p&gt;This time it's in Wales and is lasting 3 days, with the third being a community day.&amp;#160; Wow it looks a cracker.&lt;/p&gt;  &lt;p&gt;Its on Thursday 19th November to Saturday 21st (unfortunately PDC week but I will try and be back for it).&lt;/p&gt;  &lt;p&gt;For more details visit &lt;a href="http://sqlbits.com" target="_blank"&gt;SQLBits&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I've taken the liberty of translating the &lt;a href="http://sqlblogcasts.com/blogs/martinbell/archive/2009/07/07/SQLBits-yn-fynd-Gorllewin.aspx" target="_blank"&gt;official sqlbits v announcement&lt;/a&gt; translated from Welsh to English using an online translator below.&lt;/p&gt;  &lt;p&gt;&amp;quot;We are being we ' heartburn pleased I announce be SQLBits crookedly go West , the rhandaliad he conferences SQLBits. We are being doing the happening he drives even morely and crookedly better na&amp;#226;&amp;#8364;&amp;#8482;a time last , in over 3 day with much more contain , except continuing I keep everything who is has worked as well crookedly the happenings previous. nferred the ddygwiddiad running he Thursday 19fed I Saturday 21ain November to the Celtic d to divine striped in Nghasnewydd , right Wales , nearly I ' group traffordd M4..) happening most yet , with contain gwethaf SQL Server. He will be en begin with day instruction before the happening , with details coming soon. We are being we has listened i&amp;#226;&amp;#8364;&amp;#8482;ch.) about happening evening time , ey tasted time self y had scorned we has planned day happening with tall signs Friday the 20few with theme SQL 2008 and R2. He will be Saturday 21fed crookedly day society usual , with speakers around the world speaking about text SQL Server&amp;quot;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-4946615234219271657?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/4946615234219271657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=4946615234219271657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/4946615234219271657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/4946615234219271657'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/07/sqlbits-v.html' title='SQLBits V'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-5486145495889044704</id><published>2009-07-04T08:19:00.001-07:00</published><updated>2009-07-04T08:19:51.969-07:00</updated><title type='text'>Modifying web.configs on the fly in Windows Azure</title><content type='html'>&lt;p&gt;This has caught me out often enough that I should blog about it.&lt;/p&gt;  &lt;p&gt;If you are working with a web role in Windows Azure your web project is copied into the bin directory of your cloud project and is ran from there.&amp;#160; This allows the Windows Azure Development environment to simulate running within the cloud.&lt;/p&gt;  &lt;p&gt;If you need to therefore modify a web.config setting then modifying your web.config on the fly from your source file won’t make the slightest bit of difference.&lt;/p&gt;  &lt;p&gt;You need to either modify the web.config in the bin directory of your cloud project, or stop and re-run your role again.&lt;/p&gt;  &lt;p&gt;In my case, I was messing with the maxRequestLength attribute of the httpRuntime element.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-5486145495889044704?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/5486145495889044704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=5486145495889044704' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/5486145495889044704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/5486145495889044704'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/07/modifying-webconfigs-on-fly-in-windows.html' title='Modifying web.configs on the fly in Windows Azure'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-9196088044223363853</id><published>2009-07-04T04:03:00.001-07:00</published><updated>2009-07-04T04:03:38.192-07:00</updated><title type='text'>Azure Pricing</title><content type='html'>&lt;p&gt;So we will soon know the pricing model of Windows Azure (yay), we will probably find this out on the 13th of July but we will certainly know this by 4.30pm on Tuesday the 14th of July.&lt;/p&gt;  &lt;p&gt;If we don’t have the information on this date then the folks attending session “SS006 – The Azure Service Platform Partner Model and Pricing” could be in for a surprise.&amp;#160; &lt;a href="https://www.mspartnerconference.com/public/sessionlist.aspx" target="_blank"&gt;The Microsoft Worldwide Partner conference site&lt;/a&gt; has more details of this.&amp;#160; This session also seems to indicate that we may get pricing not just on Windows Azure but on SQL Data Services and .NET Services.&lt;/p&gt;  &lt;p&gt;There are some other clues that we might be able to guess from the proposed session list.&amp;#160; One of the sessions (SS003) refers to Windows Azure, Business Edition.&amp;#160; This may mean that Microsoft may be offering different levels of service (and pricing) depending on your needs.&amp;#160; This could be good news for developers, maybe we will see a developer edition at some point :)&lt;/p&gt;  &lt;p&gt;I can’t wait for this information as it will allow me to complete the section on pricing / SLA’s in the new book I am writing with Brian Prince for Manning titled “Azure in Action”.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-9196088044223363853?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/9196088044223363853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=9196088044223363853' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/9196088044223363853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/9196088044223363853'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/07/azure-pricing.html' title='Azure Pricing'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-6376120499656282327</id><published>2009-07-01T15:47:00.001-07:00</published><updated>2009-07-01T15:47:46.012-07:00</updated><title type='text'>Loosely couple code/data for static known types</title><content type='html'>&lt;p&gt;So the title is a bit of a mouthful but I couldn't think of a better one.&lt;/p&gt;  &lt;p&gt;The problem is simple and we have all faced it.&amp;#160; We have a database with static data that never or hardly changes.&amp;#160; The major issue we have is that we keep a copy of the data on the database and the we make loose runtime references to the code which can break our application.&lt;/p&gt;  &lt;p&gt;For example lets say I have a payroll database.&amp;#160; Some employees are paid weekly, every 2 weeks or ever calendar month.&amp;#160; So I may choose to represent this data in a table called payfrequencytypes where i store my 3 rows.&amp;#160; From a database perspective this is cool.&amp;#160; I can join to this table, I can run reports etc.&lt;/p&gt;  &lt;p&gt;From my application layer this is not so great.&amp;#160; If I wish to create some application business logic to determine when to pay my employee, I will need to check their pay frequency.&amp;#160; At this point I need to mix code and data, typically you will see something like&lt;/p&gt;  &lt;p&gt;if (emp.PayFrequency == &amp;quot;Monthly&amp;quot;)   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; PayEmployee();&lt;/p&gt;  &lt;p&gt;PayFequency types will never change so I want static compiler checking.&amp;#160; I really want my code to be something like&lt;/p&gt;  &lt;p&gt;if (emp.PayFrequency == PayFrequencies.Monthly)   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; PayEmployee();&lt;/p&gt;  &lt;p&gt;This is much better for me at the app layer however the problem here is that I need to keep my 2 layers in sync now (app and code).&amp;#160; &lt;/p&gt;  &lt;p&gt;I think code generation solves this problem.&amp;#160; Really we need to define in our application what static data we require, how we generate it the database and validation routines to make sure it is correct in the db.&amp;#160; We can then make our application responsible for generation and validation meaning we can feel sure that we can use static types&lt;/p&gt;  &lt;p&gt;Obviously this example can get more complicated but you see the point.&lt;/p&gt;  &lt;p&gt;I will try and put some code generation stuff when I have time that solves that issue for simple examples.&lt;/p&gt;  &lt;p&gt;In the future I think this is exactly the sort of problem that Oslo could solve for us.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-6376120499656282327?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/6376120499656282327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=6376120499656282327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/6376120499656282327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/6376120499656282327'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/07/loosely-couple-codedata-for-static.html' title='Loosely couple code/data for static known types'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-4206918900493241505</id><published>2009-07-01T15:06:00.001-07:00</published><updated>2009-07-01T15:06:08.559-07:00</updated><title type='text'>NULLS FIRST LAST</title><content type='html'>&lt;p&gt;As I said in my previous post, I've been looking at other technologies in my continuing quest to become a better developer.&lt;/p&gt;  &lt;p&gt;One technology is open source database called &lt;a href="http://www.postgresql.org/" target="_blank"&gt;postgresql&lt;/a&gt;.&amp;#160; I haven't installed it yet just looking at the manuals and comparing to sql server.&amp;#160; Perhaps after the book is done I'll get a chance to play.&lt;/p&gt;  &lt;p&gt;One of the features that I spotted that I think would pretty cool in SQL Server is the ability to specify sort order of nulls in SELECT statements.&lt;/p&gt;  &lt;p&gt;By default in SQL Server nulls are returned first and it's a little nasty to return them last but in PostgreSQL it is easy.&lt;/p&gt;  &lt;p&gt;SELECT Firstname, Surname   &lt;br /&gt;FROM Customers    &lt;br /&gt;ORDER BY Firstname NULLS LAST&lt;/p&gt;  &lt;p&gt;In SQL Server you have to do some pretty nasty things that to get the same result.&amp;#160; Some folks often go for case statements or coalesces in the order statement to get a similar result.&amp;#160; I urge against this (hence why I am not showing you the code) as it produces inefficient query plans.&amp;#160; There are also other potential solutions that I am not going to go into (may'be another day), &lt;/p&gt;  &lt;p&gt;My point is, I like this feature PostgreSQL has it, I think Oracle has it too and I think it might be a part of the SQL 2003 standard.&amp;#160; Whether it is standardized or not is a little fuzzy but I can't check as it costs lots of money to get a copy.&amp;#160; This leads me onto another point, the ISO standards should be free, end of story.&lt;/p&gt;  &lt;p&gt;Finally if Microsoft are looking for a new T-SQL language feature to implement in the next version, this would be cool.&lt;/p&gt;  &lt;p&gt;I think it meets the criteria of being something that is sufficiently hard to do and therefore should be covered in the core engine.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-4206918900493241505?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/4206918900493241505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=4206918900493241505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/4206918900493241505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/4206918900493241505'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/07/nulls-first-last.html' title='NULLS FIRST LAST'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-6814949605950588612</id><published>2009-06-30T02:13:00.001-07:00</published><updated>2009-06-30T02:13:10.493-07:00</updated><title type='text'>I’ve got lots to say just not enough time</title><content type='html'>&lt;p&gt;I haven’t really spent anytime blogging in the past few months.&amp;#160; I have a tons of things to say, unfortunately just don’t have enough time at the moment.&lt;/p&gt;  &lt;p&gt;I’ve obviously been writing my book on Azure and have loads to blog about regarding.&lt;/p&gt;  &lt;p&gt;I’ve also spent time messing around with &lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;design patterns&lt;/li&gt;      &lt;li&gt;Data Layers &lt;/li&gt;      &lt;li&gt;OR/M’s,&lt;/li&gt;      &lt;li&gt;Caching&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;I’ve also been looking outside of the Microsoft stack which reaffirms my position of why I’m glad I work with Microsoft.&amp;#160; However it has broadened my horizons and realize there is a lot of cool stuff other folks in other platforms are doing.&amp;#160; Some of it the same, some of it different.&lt;/p&gt;  &lt;p&gt;Specifically I was looking at:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Postgres&lt;/li&gt;    &lt;li&gt;Objective C&lt;/li&gt;    &lt;li&gt;IPhone development&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I’m currently looking forward to .NET 4.0 (haven’t really played with it yet as I’ve been focused on the book).&amp;#160; The thing that excites me the most is ADO.NET Entity Framework 4.0.&lt;/p&gt;  &lt;p&gt;I’ve also got a big list of things to play with once the first draft of the book is done.&lt;/p&gt;  &lt;p&gt;I’m behind on loads of blogging and screencasts (especially with Silverlight).&lt;/p&gt;  &lt;p&gt;Anyways I hope to be able to fit in some time soon and catch up with my blog posts.&lt;/p&gt;  &lt;p&gt;It’s been a busy time.&lt;/p&gt;  &lt;p&gt;If you’re interested in the book.&lt;/p&gt;  &lt;p&gt;I’ve finished the first drafts of chapter 1 and chapter 5.&amp;#160; I’m nearly finished my first draft of chapter 4.&amp;#160; My co-author Brian Prince has finished his first draft of chapter 2 and has nearly finished his draft of chapter 3.&lt;/p&gt;  &lt;p&gt;All in all we are nearly a third of the way through the book.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-6814949605950588612?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/6814949605950588612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=6814949605950588612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/6814949605950588612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/6814949605950588612'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/06/ive-got-lots-to-say-just-not-enough.html' title='I’ve got lots to say just not enough time'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-5445501852008594556</id><published>2009-06-06T05:46:00.001-07:00</published><updated>2009-06-06T07:35:40.501-07:00</updated><title type='text'>Silverlight: (and Azure) Range Http Request Header</title><content type='html'>&lt;p&gt;So this one is for the Azure team.&lt;/p&gt;&lt;p&gt;Can we have in Windows Azure Blob Storage the ability to pass through as an http request header key x-ms-range as well as range.&lt;/p&gt;&lt;p&gt;Both Silverlight and Flash don't allow the ability to pass the range in the header.  I suspect that the NSAPI plug-in is preventing this.  This means we can't make us of range downloads (and other functionality such as authorization) unless the Azure teams adds some extra support.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-5445501852008594556?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/5445501852008594556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=5445501852008594556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/5445501852008594556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/5445501852008594556'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/06/silverlight-and-azure-range-http.html' title='Silverlight: (and Azure) Range Http Request Header'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-3528204466584903739</id><published>2009-06-04T14:42:00.001-07:00</published><updated>2009-06-04T14:42:11.925-07:00</updated><title type='text'>Please make the classes in RestHelpers.cs public</title><content type='html'>&lt;p&gt;There are a bunch of very cool set of helper classes (resthelpers.cs) in the Windows Azure storageclient library.&lt;/p&gt;  &lt;p&gt;If these could be made public rather than internal my life would be so much happier&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-3528204466584903739?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/3528204466584903739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=3528204466584903739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/3528204466584903739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/3528204466584903739'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/06/please-make-classes-in-resthelperscs.html' title='Please make the classes in RestHelpers.cs public'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-6556415847593359248</id><published>2009-06-04T14:05:00.001-07:00</published><updated>2009-06-04T14:05:13.769-07:00</updated><title type='text'>Blob Scenarios for the Azure in Action book</title><content type='html'>&lt;p&gt;So I’m currently looking at the Blobs chapter of the “Azure in Action” book that myself and Brian Prince are writing.&lt;/p&gt;  &lt;p&gt;In our call with the publisher the other night, our very cool publishing company (Manning) encouraged us to get as much input from folks in the community as possible.&amp;#160; I love this philosophy and I love working with such an enlightened company.&lt;/p&gt;  &lt;p&gt;So if there any cool samples that you would love to see done, then please give me a shout.&amp;#160; We do have lots of cool scenarios and samples that I think will be particularly exciting, however I’m keen not to miss the mark on anything.&lt;/p&gt;  &lt;p&gt;I hope to post a little bit more on some of the cool stuff in book, pretty soon.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-6556415847593359248?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/6556415847593359248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=6556415847593359248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/6556415847593359248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/6556415847593359248'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/06/blob-scenarios-for-azure-in-action-book.html' title='Blob Scenarios for the Azure in Action book'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-568319298037271176</id><published>2009-05-24T08:32:00.001-07:00</published><updated>2009-05-24T08:32:43.244-07:00</updated><title type='text'>My new Azure Book</title><content type='html'>&lt;p&gt;So I've just agreed to write a book on Azure for Manning.&amp;#160; The timeline is very aggressive so I'm going to pretty focused on Azure for the next few months.&lt;/p&gt;  &lt;p&gt;I'm incredibly pleased and honored to have had my proposal accepted and today is my first day of writing.&amp;#160; Actually, when I say first day of writing, it's more of my first day setting up my environment for writing the book.&lt;/p&gt;  &lt;p&gt;Today has so far consisted of:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Downloading lots of Software&lt;/li&gt;    &lt;li&gt;Clearing up my desk&lt;/li&gt;    &lt;li&gt;Uninstallaing and Installing Software&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Anyways I will therefore pretty much exclusively focused on Azure rather than Silverlight for a few months, that's not to say that there is not some synergy in some areas.&lt;/p&gt;  &lt;p&gt;I think the next few months will be a lot of fun but a lot of hard work.&lt;/p&gt;  &lt;p&gt;The book should be available in all good bookstores (and some of the dodgy ones too) from January.&lt;/p&gt;  &lt;p&gt;Anyways, enough waffling and back to some serious work.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-568319298037271176?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/568319298037271176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=568319298037271176' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/568319298037271176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/568319298037271176'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/05/my-new-azure-book.html' title='My new Azure Book'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-4857991268099534904</id><published>2009-04-28T14:33:00.001-07:00</published><updated>2009-04-28T14:33:34.108-07:00</updated><title type='text'>Silverlight: Toronto Code Camp Slides + Samples</title><content type='html'>&lt;p&gt;A big thanks to everyone who came to my session on Silverlight Communication at Toronto Code Camp.&lt;/p&gt;  &lt;p&gt;Also a big mega thanks to everyone I met, and everyone involved in the organization.&amp;#160; What a great event.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cid-f6bb92b5df4cfec0.skydrive.live.com/self.aspx/Public/Speaking/TorontoCodeCamp2009/Silverlight%203%20Communication.pptx" target="_blank"&gt;My slides are available here&lt;/a&gt; and &lt;a href="http://cid-f6bb92b5df4cfec0.skydrive.live.com/self.aspx/Public/Speaking/TorontoCodeCamp2009/SL3Communication.zip" target="_blank"&gt;my samples are available here&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-4857991268099534904?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/4857991268099534904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=4857991268099534904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/4857991268099534904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/4857991268099534904'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/04/silverlight-toronto-code-camp-slides.html' title='Silverlight: Toronto Code Camp Slides + Samples'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-1956735466407430537</id><published>2009-04-19T15:00:00.001-07:00</published><updated>2009-04-19T15:01:08.795-07:00</updated><title type='text'>Silverlight: Multiple Http Requests Screencast</title><content type='html'>&lt;p&gt;It's important to remember that Silverlight is a browser technology and is therefore subject to the limits imposed by the browser.&lt;/p&gt;&lt;p&gt;This is especially true in the networking stack and Silverlight is limited to the number of connections it can make just as the browser is.&lt;/p&gt;&lt;p&gt;I show you this is the case in &lt;a href="http://www.screencast.com/t/t6NvX7Pb"&gt;my latest screencast, Multiple Http Requests in Silverlight&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The video is embedded below for you to view also:&lt;/p&gt;&lt;p&gt;&lt;object standby="Loading Microsoft Windows Media Player components..." name="Video" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" width="400" height="365" type="application/x-oleobject"&gt;&lt;param name="URL" value="http://content.screencast.com/users/chrishayuk/folders/Default/media/e87e0981-5597-4418-a3e7-b119d620e204/Multiple%20Http%20Requests%20in%20Silverlight.wmv"&gt;&lt;param name="rate" value="1"&gt;&lt;param name="balance" value="0"&gt;&lt;param name="currentPosition" value="0"&gt;&lt;param name="defaultFrame" value=""&gt;&lt;param name="playCount" value="1"&gt;&lt;param name="autoStart" value="0"&gt;&lt;param name="currentMarker" value="0"&gt;&lt;param name="invokeURLs" value="-1"&gt;&lt;param name="baseURL" value=""&gt;&lt;param name="volume" value="50"&gt;&lt;param name="mute" value="0"&gt;&lt;param name="uiMode" value="full"&gt;&lt;param name="stretchToFit" value="0"&gt;&lt;param name="windowlessVideo" value="0"&gt;&lt;param name="enabled" value="-1"&gt;&lt;param name="enableContextMenu" value="-1"&gt;&lt;param name="fullScreen" value="0"&gt;&lt;param name="SAMIStyle" value=""&gt;&lt;param name="SAMILang" value=""&gt;&lt;param name="SAMIFilename" value=""&gt;&lt;param name="captioningID" value=""&gt;&lt;param name="enableErrorDialogs" value="0"&gt;&lt;param name="_cx" value="10583"&gt;&lt;param name="_cy" value="9657"&gt;&lt;br /&gt;        &lt;embed name="Video" type="application/x-mplayer2" src="http://content.screencast.com/users/chrishayuk/folders/Default/media/e87e0981-5597-4418-a3e7-b119d620e204/Multiple%20Http%20Requests%20in%20Silverlight.wmv" autostart="0" showcontrols="1" uimode="full" playcount="1" currentposition="0" width="400" height="365"&gt;&lt;/embed&gt; &lt;/object&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-1956735466407430537?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/1956735466407430537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=1956735466407430537' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/1956735466407430537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/1956735466407430537'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/04/screencast-multiple-http-requests-in.html' title='Silverlight: Multiple Http Requests Screencast'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-4606024907706308538</id><published>2009-04-18T15:39:00.001-07:00</published><updated>2009-04-18T15:39:37.834-07:00</updated><title type='text'>Silverlight: Who cares if Binary Encoding is not interoperable?</title><content type='html'>&lt;p&gt;I know the title of this post is a little tongue in cheek but actually who cares?&lt;/p&gt;  &lt;p&gt;Just to put this in context in SL3, Microsoft have added support for binary encoding of soap messages for communication between Silverlight 3 applications and WCF Services.&lt;/p&gt;  &lt;p&gt;Binary encoding means that the server can process messages faster, meaning higher throughput and the ability to handle more clients than the SL2 text encoding for SOAP.&lt;/p&gt;  &lt;p&gt;The downside that the binary encoding is a proprietary Microsoft format (not MTOM), infact its the same one used by NetTCPBinding.&lt;/p&gt;  &lt;p&gt;Since performance doesn't seem to be worse than text encoding in any situation, Microsoft have made this the default encoding for building Silverlight enabled WCF Services.&lt;/p&gt;  &lt;p&gt;Does it matter if the default encoding is not interoperable?&amp;#160; No, because you can always set it back to a text encoding if you need interoperability.&lt;/p&gt;  &lt;p&gt;Also, Silverlight by default does not encourage interoperability.&amp;#160; To allow other browser clients to connect to your webservice you need to set you cross domain policy file.&amp;#160; By default cross domain browser clients are shut out.&lt;/p&gt;  &lt;p&gt;Finally if you are building a truly public interoperable api, you probably wouldn't make it SOAP based anyways, you would be likely to build a REST api&lt;/p&gt;  &lt;p&gt;Good Move Microsoft, Binary Encoding Rocks!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-4606024907706308538?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/4606024907706308538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=4606024907706308538' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/4606024907706308538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/4606024907706308538'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/04/silverlight-who-cares-if-binary.html' title='Silverlight: Who cares if Binary Encoding is not interoperable?'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-803099619665214679</id><published>2009-04-18T10:55:00.001-07:00</published><updated>2009-04-18T10:55:58.039-07:00</updated><title type='text'>I wish I was at WebDD</title><content type='html'>&lt;p&gt;I have to admit, I wish I was at &lt;a href="http://developerdeveloperdeveloper.com/webdd09/Default.aspx" target="_blank"&gt;WebDD&lt;/a&gt; as an attendee or a speaker.&lt;/p&gt;  &lt;p&gt;I decided not to submit a session (not because I didn't want to), but because I am working on my session for Toronto next week, which is the same reason I can't attend.&lt;/p&gt;  &lt;p&gt;Looks like it was a cracking day, lots of webby things.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-803099619665214679?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/803099619665214679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=803099619665214679' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/803099619665214679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/803099619665214679'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/04/i-wish-i-was-at-webdd.html' title='I wish I was at WebDD'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-5667862429251220780</id><published>2009-04-16T02:08:00.001-07:00</published><updated>2009-04-16T02:10:26.468-07:00</updated><title type='text'>Silverlight: Toronto Code Camp Session</title><content type='html'>&lt;p&gt;I guess I’m getting a little excited about going to &lt;a href="http://www.torontocodecamp.net/" target="_blank"&gt;Toronto Code Camp&lt;/a&gt; next week.&lt;/p&gt;&lt;p&gt;At the same time, things are hectic, lots of preparation to do :)&lt;/p&gt;&lt;p&gt;I am presenting a session on Silverlight 3 Communication.  Funnily enough although the title suggests that I will be focusing on the new Silverlight 3 WCF Features (which I will be), this is not the complete story.&lt;/p&gt;&lt;p&gt;In order to truly understand the improvements made to networking in Silverlight 3, you need to understand the networking stack as it relates to Silverlight, the design decisions made and the effects these decisions have on the Silverlight 2 networking story, and how some of these things have been resolved in Silverlight 3.&lt;/p&gt;&lt;p&gt;Finally having this understanding allows you to build better applications, allows you to design the right system, and to understand why you hit certain walls and how to get around them.&lt;/p&gt;&lt;p&gt;Since this stack is at the heart of all Silverlight networking, this means that if you are using technology such as .NET RIA Services, or ADO.NET Data Services for Silverlight, these core fundamentals ring true.&lt;/p&gt;&lt;p&gt;So as much as I cover the new features of SL3, more of the focus will be on the underlying networking stack and allowing you to understand the fundamentals.  So this will help you both in Silverlight 2, Silverlight 3, and Silverlight of the Future.&lt;/p&gt;&lt;p&gt;Anyways, I’ve had a lot of fun building this presentation, and I hope you will enjoy the session at code camp.&lt;/p&gt;&lt;p&gt;I also plan to bring this session to the UK in June for NxtGenUG Fest09 :)&lt;/p&gt;&lt;p&gt;Hope to see you there&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-5667862429251220780?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/5667862429251220780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=5667862429251220780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/5667862429251220780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/5667862429251220780'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/04/silverlight-toronto-code-camp-session.html' title='Silverlight: Toronto Code Camp Session'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7085364525717171484.post-2541450527802500303</id><published>2009-04-13T04:24:00.001-07:00</published><updated>2009-04-13T04:24:17.053-07:00</updated><title type='text'>I'm a PC (thankfully)</title><content type='html'>&lt;p&gt;This Easter bank holiday weekend, I decided I wanted to learn some new stuff.&amp;#160; So since I have been sporting my new IPhone for the last few weeks, I thought learning how to develop on the IPhone would be cool.&lt;/p&gt;  &lt;p&gt;So I have borrowed my mates MacPowerbook Pro, and I picked some books on IPhone development and Objective-C.&lt;/p&gt;  &lt;p&gt;I haven't developed any IPhone apps yet, as I thought I would concentrate on the Objective-C language, which I feel I have a good grip of now.&lt;/p&gt;  &lt;p&gt;So later today, I will attempt to create my first IPhone application, however I just want to say one thing.&amp;#160; I am a PC (and thank God I am).&lt;/p&gt;  &lt;p&gt;Using XCode, and Objective C is like taking a step back 7/8 years.&amp;#160; I so much prefer Visual Studio over XCode and I so much prefer C# over Objective-C.&lt;/p&gt;  &lt;p&gt;Don't get me wrong I can see the influences of other languages (such as Objective-C) that have shaped C#, and I can see features in Objective-C that are now coming to C# or that I would love to see in C#, but I have to say I prefer C# and the .NET Framework.&amp;#160; I will probably expand up on this in future posts.&lt;/p&gt;  &lt;p&gt;The one thing I want to say about Objective-C is that it is a little weird having to go back to explicit memory management (it really is like stepping in a time machine).&amp;#160; However at the same time it feels kind of nice, going back to the core (just not sure I would want to do this everyday).&amp;#160; I can easily see that with Mac Development most of your time will be spent thinking about Memory Management (which is just something we don't worry about so much these days).&lt;/p&gt;  &lt;p&gt;Anyways, no matter what, after spending the weekend with Objective-C, I feel like a better developer but boy it makes me a appreciate Visual Studio, C# and the .NET Framework&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7085364525717171484-2541450527802500303?l=silverlightuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silverlightuk.blogspot.com/feeds/2541450527802500303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7085364525717171484&amp;postID=2541450527802500303' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/2541450527802500303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7085364525717171484/posts/default/2541450527802500303'/><link rel='alternate' type='text/html' href='http://silverlightuk.blogspot.com/2009/04/i-pc-thankfully.html' title='I&amp;#39;m a PC (thankfully)'/><author><name>chrishayuk</name><uri>http://www.blogger.com/profile/01255600685340367644</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04440101131931410431'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry></feed>