private void InitServiceBroker()
 {
     using (var connection = SqlServerTransactionManager.OpenConnection(ConnectionString))
         using (var transaction = connection.BeginTransaction())
         {
             // Ensure the service and queue exist
             ServiceBrokerWrapper.CreateServiceAndQueue(transaction, ServiceBrokerService, ServiceBrokerQueue, ServiceBrokerMessageType, ServiceBrokerContract);
             transaction.Commit();
             connection.Close();
         }
     PoisonMessageSqlHelper.EnsureTableExists(ConnectionString);
 }
Пример #2
0
        public static void EnsureTableExists(string connectionString)
        {
            using (var connection = SqlServerTransactionManager.OpenConnection(connectionString))
            {
                using (var transaction = connection.BeginTransaction())
                {
                    using (var cmd = connection.CreateCommand())
                    {
                        cmd.Transaction = transaction;
                        cmd.CommandText = @"
IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID('dbo.PoisonMessage'))
CREATE TABLE [dbo].[PoisonMessage]
(
    PoisonMessageId bigint NOT NULL IDENTITY(1,1),
    InsertDateTimeUtc datetime2 NOT NULL,
    ConversationHandle uniqueidentifier NOT NULL,
    OriginServiceName nvarchar(255) NOT NULL,
    EnqueuedDateTimeUtc datetime2 NOT NULL,
    ServiceName nvarchar(255) NOT NULL,
    QueueName nvarchar(255) NOT NULL,
    MessageBody varbinary(max) NOT NULL,
    Retries tinyint NOT NULL,
    ErrorCode nvarchar(20) NOT NULL,
    ErrorMessage nvarchar(max) NOT NULL,
    CONSTRAINT [PK_PoisonMessage] PRIMARY KEY CLUSTERED 
    (
        [PoisonMessageId] ASC
    ),
);";
                        cmd.ExecuteNonQuery();
                    }
                    transaction.Commit();
                }
                connection.Close();
            }
        }