diff --git a/src/NServiceBus.SqlServer/Legacy/MultiInstance/LegacySql.cs b/src/NServiceBus.SqlServer/Legacy/MultiInstance/LegacySql.cs index 7775e6a2b..4bf09663c 100644 --- a/src/NServiceBus.SqlServer/Legacy/MultiInstance/LegacySql.cs +++ b/src/NServiceBus.SqlServer/Legacy/MultiInstance/LegacySql.cs @@ -2,40 +2,54 @@ namespace NServiceBus.Transport.SQLServer { class LegacySql { - internal const string CreateQueueText = @"IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'{0}') AND type in (N'U')) - BEGIN - EXEC sp_getapplock @Resource = '{0}_lock', @LockMode = 'Exclusive' + public static readonly string CreateQueueText = @" +IF EXISTS ( + SELECT * + FROM sys.objects + WHERE object_id = OBJECT_ID(N'{0}') + AND type in (N'U')) +RETURN - IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'{0}') AND type in (N'U')) - BEGIN - CREATE TABLE {0}( - [Id] [uniqueidentifier] NOT NULL, - [CorrelationId] [varchar](255), - [ReplyToAddress] [varchar](255), - [Recoverable] [bit] NOT NULL, - [Expires] [datetime], - [Headers] [varchar](max) NOT NULL, - [Body] [varbinary](max), - [RowVersion] [bigint] IDENTITY(1,1) NOT NULL - ); +EXEC sp_getapplock @Resource = '{0}_lock', @LockMode = 'Exclusive' - CREATE CLUSTERED INDEX [Index_RowVersion] ON {0} - ( - [RowVersion] - ) +IF EXISTS ( + SELECT * + FROM sys.objects + WHERE object_id = OBJECT_ID(N'{0}') + AND type in (N'U')) +BEGIN + EXEC sp_releaseapplock @Resource = '{0}_lock' + RETURN +END - CREATE NONCLUSTERED INDEX [Index_Expires] ON {0} - ( - [Expires] - ) - INCLUDE - ( - [Id], - [RowVersion] - ) - END +CREATE TABLE {0} ( + Id uniqueidentifier NOT NULL, + CorrelationId varchar(255), + ReplyToAddress varchar(255), + Recoverable bit NOT NULL, + Expires datetime, + Headers nvarchar(max) NOT NULL, + Body varbinary(max), + RowVersion bigint IDENTITY(1,1) NOT NULL +); - EXEC sp_releaseapplock @Resource = '{0}_lock' - END"; +CREATE CLUSTERED INDEX Index_RowVersion ON {0} +( + RowVersion +) + +CREATE NONCLUSTERED INDEX Index_Expires ON {0} +( + Expires +) +INCLUDE +( + Id, + RowVersion +) +WHERE + Expires IS NOT NULL + +EXEC sp_releaseapplock @Resource = '{0}_lock'"; } }