Sözleşme (Transact-sql) oluştur

Yeni bir sözleşme oluşturur. Sözleşme kullanılan ileti türlerini tanımlayan bir Service Brokerkonuşma ve ayrıca hangi tarafının konuşma bu tür iletileri gönderebilir belirler. Her görüşme izleyen sözleşme. Görüşme başladığında başlatan hizmet sözleşmesi için konuşma belirtir. Hedef hizmet konuşmaları için hedef hizmeti kabul eden sözleşmeler belirtir.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

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
    Sözleşme oluşturmak için adıdır. Yeni bir sözleşme geçerli veritabanında oluşturulur ve YETKILENDIRME yan tümcesinde belirtilen anapara aittir. Sunucu, veritabanı ve şema adı belirtilemez. contract_nameEn fazla 128 karakter olabilir.

    [!NOT]

    Anahtar kullanan bir sözleşme değil oluşturmak için contract_name. create broker ÖNCELIK içinde herhangi bir sözleşme adı belirttiğinizde, tüm sözleşmeler için öncelikli kabul edilir. Adı olan herhangi bir sözleşme için sınırlı değildir.

  • YETKİLENDİRMEowner_name
    Belirtilen veritabanı kullanıcı veya rol için sözleşme sahibi ayarlar. Geçerli kullanıcı ne zaman dbo veya sa, owner_nameherhangi bir geçerli kullanıcı ya da rol adı olabilir. Aksi takdirde, owner_namegeçerli kullanıcı adını, geçerli kullanıcının izinlerini taklit sahip bir kullanıcı adı veya ait olduğu geçerli kullanıcı rolünün adı olmalı. Bu yan atlandığında, sözleşme geçerli kullanıcıya aittir.

  • message_type_name
    Sözleşmenin bir parçası olarak dahil edilecek ileti türü addır.

  • TARAFINDAN GÖNDERİLEN
    Hangi son nokta belirtilen ileti türü ileti gönderebilirsiniz belirtir. Sözleşmeler, özel konuşmalar için Hizmetler'i kullanabilirsiniz iletileri belge. İki bitiş noktası her konuşma vardır: Başlatıcı son nokta, görüşmeyi başlatan hizmet ve hedef son nokta, başlatıcı ulaşarak hizmet.

  • BAŞLATICI
    Yalnızca başlatıcı görüşme belirtilen ileti türü ileti gönderebilir gösterir. Hizmetin bir konuşma başlar denir Başlatıcı görüşme.

  • HEDEF
    Yalnızca hedef görüşme belirtilen ileti türü ileti gönderebilir gösterir. Başka bir hizmet tarafından başlatılan görüşme kabul eden hizmet denir hedef görüşme.

  • HERHANGİ BİR
    Bu tür iletiler hem başlatan hem de hedef tarafından gönderilebilir gösterir.

  • [VARSAYILAN]
    Bu sözleşme varsayılan ileti türden iletileri desteklediğini gösterir. Varsayılan olarak, varsayılan adlandırılmış bir ileti türü için tüm veritabanları içerir. Bu ileti türü yok bir doğrulama kullanır. Bu fıkra kapsamında, varsayılan anahtar sözcük değildir ve tanımlayıcı olarak ayrılmış olmalıdır. Microsoft SQL Server, varsayılan ileti türünü belirtir varsayılan sözleşme de sağlar.

Açıklamalar

İleti türleri sözleşmedeki sırası önemli değildir. Hedef ilk iletiyi aldıktan sonra Service Brokergörüşme görüşme her zaman bu yan izin verilen herhangi bir ileti göndermek için iki tarafına verir. Örneğin, konuşma başlatıcı ileti türünü gönderebilir, siler//Adventure-Works.com/Expenses/SubmitExpenseileti, Service Brokerherhangi bir sayıda göndermek başlatıcı verir SubmitExpense iletileri görüşme sırasında.

İleti türleri ve sözleşme yönlere değiştirilemez. Yetkilendirme için bir sözleşme değiştirmek için alter YETKILENDIRME deyimini kullanın.

Sözleşme, ileti göndermek başlatıcı izin vermesi gerekir. Sözleşme BİRİSİ tarafından gönderilen veya BAŞLATICI tarafından gönderilen en az bir ileti türü içermiyor sözleşme create deyimi başarısız olur.

Sözleşme ne olursa olsun, bir hizmeti her zaman ileti türlerini alabilirsiniz https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer, https://schemas.microsoft.com/SQL/ServiceBroker/Error, ve https://schemas.microsoft.com/SQL/ServiceBroker/EndDialog. Service Brokersistem iletileri için uygulama aşağıdaki ileti türlerini kullanır.

Sözleşme, geçici bir nesne olamaz. Sözleşme adı # are ile başlayan izin, ancak kalıcı nesnelerdir.

İzinler

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

Varsayılan olarak, sözleşme, üyelerinin sahibi db_ddladmin veya db_owner sabit veritabanı rolleri ve üyeleri sysadmin sabit sunucu rolü bir sözleşme başvurular izni vardır.

Sözleşme create deyimi yürütme kullanıcı belirtilen tüm ileti türlerinde başvurular izninizin olması gerekir.

Örnekler

A. Sözleşme oluşturma

Aşağıdaki örnek, üç ileti türlerine göre bir masraf tediye sözleşme 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         
    ) ;

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         
    ) ;

Ayrıca bkz.

Başvuru

Sözleşme (Transact-sql) bırak

eventdata (Transact-sql)