Aracılığıyla paylaş


SÖZLEŞMEDEN (Transact-SQL) CREATE

Yeni bir anlaşma oluşturur.Bir anlaşma kullanılan ileti türlerini tanımlayan bir Service Broker Konuşma ve ayrıca görüşmeyi hangi tarafının bu türden iletileri yeniden gönderebilirsiniz. Her görüşme için bir anlaşma izler.Başlatan hizmet, görüşmeyi başlatan, görüşmeyi için anlaşma belirtir.Hedef hizmet, sözleşmeler, görüşme için hedef hizmetin kabul eden belirtir.

Topic link iconTransact-SQL sözdizimi kuralları

CREATE CONTRACT contract_name
   [ AUTHORIZATION owner_name ]
      (  {   { message_type_name | [ DEFAULT ] }
          SENT BY { INITIATOR | TARGET | ANY } 
       } [ ,...n] ) 
[ ; ]

Bağımsız değişkenler

  • contract_name
    anlaşma oluşturmak için adıdır.Yeni BIR anlaşma geçerli veritabanında oluşturulmuş ve yetkilendirme yan tümcesinde belirtilen anapara sahibi.Şema sunucu ve veritabanı adı belirtilemez.The contract_name can be up to 128 characters.

    Not

    Anahtar sözcüğü kullanan bir anlaşma için ANY oluşturmayın contract_name. Öncelik, ARACıSı ÖNCELIĞI CREATE ANY için bir anlaşma adı belirttiğinizde, tüm sözleşmeler için kabul edilir.Adı, ANY olan bir anlaşma için sınırlı değildir.

  • owner_name yetkilendirme
    anlaşma sahibi rolünü ya da belirtilen veritabanı kullanıcı için ayarlar.Geçerli kullanıcının olduğunda dbo or SA, owner_name herhangi bir geçerli kullanıcı veya rolün adını olabilir. Aksi halde, owner_name Geçerli kullanıcının kullanıcı adını geçerli kullanıcı adını, izinlerini veya ait olduğu geçerli kullanıcı rolünün adı taklit olması gerekir. Bu yan tümcesinde boş bırakılırsa, anlaşma geçerli kullanıcıya ait.

  • message_type_name
    Parçası olarak, eklenmek üzere bir ileti türü adı anlaşma.

  • TARAFINDAN GÖNDERİLEN
    Hangi bitiş noktası, belirtilen bir ileti türü ileti gönderebilirsiniz belirtir.Sözleşmeler, hizmetleri belirli görüşmeler için kullanabileceğiniz iletileri belge.Her görüşme, iki bitiş noktası vardır: the Başlatıcı bitiş noktası, görüşmeyi ve hizmetHedef bitiş noktası, hizmet başlatıcı bağlanılıyor.

  • BAŞLATICI
    Yalnızca, görüşmeyi başlatan, belirtilen iletileri gönderebilirsiniz gösterir ileti türü.Bir görüşmeyi başlatan BIR hizmet için olarak adlandırılmıştır Başlatıcı görüşmenin.

  • HEDEF
    Yalnızca konuşmayı hedefi belirtilen iletileri gönderebilir, gösterir ileti türü.Başka bir hizmet tarafından başlatılan bir görüşmeyi kabul eden BIR hizmet için olarak adlandırılmıştır Hedef görüşmenin.

  • TÜM
    Bu tür iletileri hem başlatan hem de hedef gönderilmesini belirtir.

  • [VARSAYILAN]
    Bu anlaşma varsayılan iletileri desteklediğini gösterir ileti türü.Varsayılan olarak, tüm veritabanlarının VARSAYıLAN adlı bir ileti türü içerir.Bu ileti türü YOK doğrulanmasında kullanır.Bu yan tümce bağlamında, VARSAYıLAN bir anahtar sözcüktür ve tanımlayıcı olarak ayrılmış.Ayrıca Microsoft SQL Server için VARSAYıLAN belirten VARSAYıLAN bir anlaşma sağlar ileti türü.

Remarks

Ileti türlerinde sırasını anlaşma önemli değildir.Hedef sonra ilk ileti aldı Service Broker Görüşme, görüşmeyi herhangi bir anda bu yüzünün izin verilen herhangi bir ileti göndermek için her iki tarafına sağlar. Örneğin, başlatan, görüşme, ileti türü gönderebilir //Adventure-Works.com/Expenses/SubmitExpense, Service Broker Başlatıcı herhangi bir sayıda göndermeye izin verir. SubmitExpense iletilerin görüşme sırasında.

Ileti türleri ve bir anlaşma yönde değiştirilemez.YETKILENDIRMESI için bir anlaşma değiştirmek için ALTER yetkilendirme deyimini kullanın.

Başlatıcı, ileti göndermek BIR anlaşma izin vermesi gerekir.anlaşma BY ANY SENT veya SENT BY INITIATOR en az bir ileti türü içermiyor, SÖZLEşMEDEN CREATE deyim ile başarısız olur.

Regardless of the contract, a service can always receive the message types https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer, https://schemas.microsoft.com/SQL/ServiceBroker/Error, and **https://schemas.microsoft.com/SQL/ServiceBroker/EndDialog**.Service Broker uses these message types for system messages to the application.Aracısı tarafından sağlanan ileti tipleri hakkında daha fazla bilgi için bkz: Sistem iletilerini Aracısı.

anlaşma, geçici bir nesne olamaz.anlaşma adlarını # are ile başlayarak, izin, ancak kalıcı nesneleridir.

İzinler

Varsayılan olarak, üye db_ddladmin or db_owner veritabanı rolleri ve sabitsysadmin sabit sunucu rolü sözleşmeler oluşturabilirsiniz.

Varsayılan olarak, anlaşma, üyeleri sahibine db_ddladmin or db_owner üyelerinin ve veritabanı rollerini sabit.sysadmin sabit sunucu rolü anlaşma üzerinde BAşVURULAR iznine sahiptir.

SÖZLEŞMEDEN CREATE deyim yürütme kullanıcı, belirtilen tüm ileti türlerini BAşVURULAR izninizin olması gerekir.

Örnekler

C.Creating a contract

Aşağıdaki örnek, üç ileti türlerini temel alan bir masraf tediye anlaşma oluşturur.

CREATE MESSAGE TYPE
    [//Adventure-Works.com/Expenses/SubmitExpense]         
    VALIDATION = WELL_FORMED_XML ;         

CREATE MESSAGE TYPE
    [//Adventure-Works.com/Expenses/ExpenseApprovedOrDenied]         
    VALIDATION = WELL_FORMED_XML ;         

CREATE MESSAGE TYPE         
    [//Adventure-Works.com/Expenses/ExpenseReimbursed]         
    VALIDATION= WELL_FORMED_XML ;         

CREATE CONTRACT          
    [//Adventure-Works.com/Expenses/ExpenseSubmission]         
    ( [//Adventure-Works.com/Expenses/SubmitExpense]         
          SENT BY INITIATOR,         
      [//Adventure-Works.com/Expenses/ExpenseApprovedOrDenied]         
          SENT BY TARGET,         
      [//Adventure-Works.com/Expenses/ExpenseReimbursed]         
          SENT BY TARGET         
    ) ;