From 0ea01eb753d927788f8b9859a09c0712e4c64548 Mon Sep 17 00:00:00 2001 From: SzymonPobiega Date: Thu, 13 Jul 2017 10:42:56 +0200 Subject: [PATCH] Fixed multi-instance version of queue creation script. --- .../Legacy/MultiInstance/LegacySql.cs | 76 +++++++++++-------- 1 file changed, 45 insertions(+), 31 deletions(-) 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'"; } }