Esempio n. 1
0
        public void Create()
        {
            if (!this.ServiceBroker.Queues.Contains(this.FullName))
            {
                // Create queue
                ServiceQueue queue = new ServiceQueue(
                    this.ServiceBroker, this.FullName, "dbo");

                this.FillQueueObject(queue);

                queue.Create();
            }
        }
Esempio n. 2
0
        public void Create()
        {
            if (!this.ServiceBroker.Queues.Contains(this.FullName))
            {
                // Create queue
                ServiceQueue queue = new ServiceQueue(
                    this.ServiceBroker, this.FullName, "dbo");

                this.FillQueueObject(queue);

                queue.Create();
            }
        }
        static void Main(string[] args)
        {
            Server svr = new Server("localhost");

            Console.WriteLine("Language: " + svr.Information.Language);
            Console.WriteLine("OS version: " + svr.Information.OSVersion);
            Console.WriteLine("Edition: " + svr.Information.Edition);
            Console.WriteLine("Root directory: " + svr.Information.RootDirectory);

            // Create a new database
            Database db = new Database(svr, "Chapter12_SMOSample");

            db.Create();

            // Create the required message types
            MessageType requestMessage  = new MessageType(db.ServiceBroker, "RequestMessage");
            MessageType responseMessage = new MessageType(db.ServiceBroker, "ResponseMessage");

            requestMessage.Create();
            responseMessage.Create();

            // Create the service contract
            ServiceContract contract = new ServiceContract(db.ServiceBroker, "SampleContract");

            contract.MessageTypeMappings.Add(new MessageTypeMapping(contract, "RequestMessage", Microsoft.SqlServer.Management.Smo.Broker.MessageSource.Initiator));
            contract.MessageTypeMappings.Add(new MessageTypeMapping(contract, "ResponseMessage", Microsoft.SqlServer.Management.Smo.Broker.MessageSource.Target));
            contract.Create();

            // Create the queue
            ServiceQueue queue = new ServiceQueue(db.ServiceBroker, "SampleQueue");

            queue.Create();

            // Create the Service Broker service
            BrokerService service = new BrokerService(db.ServiceBroker, "SampleService");

            service.QueueName = "SampleQueue";
            service.ServiceContractMappings.Add(new ServiceContractMapping(service, "SampleContract"));
            service.Create();

            // Retrieve Service Broker information through SMO
            foreach (MessageType messageType in db.ServiceBroker.MessageTypes)
            {
                Console.WriteLine(messageType.Name);
            }

            foreach (ServiceContract serviceContract in db.ServiceBroker.ServiceContracts)
            {
                Console.WriteLine(serviceContract.Name);
            }

            foreach (ServiceQueue serviceQueue in db.ServiceBroker.Queues)
            {
                Console.WriteLine(serviceQueue.Name);
                Console.WriteLine("\tActivation enabled:" + serviceQueue.IsActivationEnabled);
                Console.WriteLine("\tMax Queue Readers: " + serviceQueue.MaxReaders);
                Console.WriteLine("\tProcedure name: " + serviceQueue.ProcedureName);
            }

            foreach (BrokerService brokerService in db.ServiceBroker.Services)
            {
                Console.WriteLine(brokerService.Name);
                Console.WriteLine("\tQueue name: " + brokerService.QueueName);
            }

            Console.ReadLine();
        }
Esempio n. 4
0
        internal static void DeploySsbObj(object obj, string svrName, string dbName, SsbEnum ssbType, bool isEdit)
        {
            Server               svr  = CreateServer(svrName, null, null);
            Database             db   = svr.Databases[dbName];
            ServiceBroker        sb   = db.ServiceBroker;
            MessageType          mt   = null;
            ServiceContract      sc   = null;
            ServiceQueue         q    = null;
            BrokerService        serv = null;
            ServiceRoute         rt   = null;
            RemoteServiceBinding bind = null;

            try {
                switch (ssbType)
                {
                case SsbEnum.MessageType:
                    MessageType mtNew = new MessageType();
                    mtNew.Parent = sb;
                    mt           = (MessageType)obj;
                    mtNew.Name   = mt.Name;
                    mtNew.MessageTypeValidation = mt.MessageTypeValidation;
                    if (mt.MessageTypeValidation == MessageTypeValidation.XmlSchemaCollection)
                    {
                        mtNew.ValidationXmlSchemaCollection = mt.ValidationXmlSchemaCollection;
                    }

                    if (isEdit)
                    {
                        mtNew.Alter();
                    }
                    else
                    {
                        mtNew.Create();
                    }

                    break;

                case SsbEnum.Contract:
                    ServiceContract scNew = new ServiceContract();
                    sc           = (ServiceContract)obj;
                    scNew.Parent = sb;
                    scNew.Name   = sc.Name;
                    foreach (MessageTypeMapping mtm in sc.MessageTypeMappings)
                    {
                        if (!sb.MessageTypes.Contains(mtm.Name))
                        {
                            ServiceBroker sbParent = sc.Parent;
                            MessageType   mtp      = sbParent.MessageTypes[mtm.Name];
                            DeploySsbObj(mtp, svrName, dbName, SsbEnum.MessageType, false);
                        }

                        MessageTypeMapping mtmNew = new MessageTypeMapping();
                        mtmNew.Name          = mtm.Name;
                        mtmNew.Parent        = scNew;
                        mtmNew.MessageSource = mtm.MessageSource;
                        scNew.MessageTypeMappings.Add(mtmNew);
                    }

                    if (isEdit)
                    {
                        scNew.Alter();
                    }
                    else
                    {
                        scNew.Create();
                    }

                    break;

                case SsbEnum.Queu:
                    q        = (ServiceQueue)obj;
                    q.Parent = sb;

                    if (isEdit)
                    {
                        q.Alter();
                    }
                    else
                    {
                        q.Create();
                    }

                    break;

                case SsbEnum.Service:
                    serv        = (BrokerService)obj;
                    serv.Parent = sb;

                    if (isEdit)
                    {
                        serv.Alter();
                    }
                    else
                    {
                        serv.Create();
                    }

                    break;

                case SsbEnum.Route:
                    rt        = (ServiceRoute)obj;
                    rt.Parent = sb;

                    if (isEdit)
                    {
                        rt.Alter();
                    }
                    else
                    {
                        rt.Create();
                    }

                    break;

                case SsbEnum.RemoteBinding:
                    bind        = (RemoteServiceBinding)obj;
                    bind.Parent = sb;

                    if (isEdit)
                    {
                        bind.Alter();
                    }
                    else
                    {
                        bind.Create();
                    }

                    break;
                }
            }
            catch (FailedOperationException e) {
                string err = string.Format("{0}", e.InnerException);
                //throw;
            }
            catch (Exception ex) {
                string errx = string.Format("{0}", ex.InnerException);
            }

            finally {
                svr.ConnectionContext.Disconnect();
            }
        }