Sözleşme (Transact-SQL) oluştur
Yeni bir anlaşmaoluşturur.anlaşma kullanılan ileti türlerini tanımlayan bir Service Broker Görüşme ve konuşma hangi tarafının bu türü. göndermek üzere de belirlerHer görüşme bir anlaşmaizler.Konuşmaya başladığında anlaşma görüşmesi başlatan hizmet belirtir.hedefhizmet görüşmeleri için hedefhizmet kabul sözleşme belirtir.
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
anlaşma oluşturmak için adıdır.Yeni bir anlaşma geçerli veritabanında oluşturulmuş ve YETKİLENDİRME yan tümcetümcesinde belirtilen asıl sahibi.Sunucu, veritabanı ve şema adı belirtilemez.contract_name Olabilir en çok 128 karakter.Not
Anahtar sözcüğü kullanan bir anlaşma için oluşturmayın contract_name.broker ÖNCELİK alanında oluşturmak için bir anlaşma adı belirttiğinizde, tüm sözleşmeler için öncelikli olarak kabul edilir.HERHANGİ adı olan bir anlaşma sınırlı değildir.
YETKİLENDİRMEowner_name
Belirtilen veritabanı kullanıcı ya da rol anlaşma sahibi ayarlar.Geçerli kullanıcı olduğunda dbo veya sa, owner_name , herhangi bir geçerli kullanıcı veya adı olabilirrolü.Aksi takdirde, owner_name Geçerli kullanıcı adını, geçerli kullanıcının izinlerini taklit olan bir kullanıcının adını veya ait olduğu geçerli kullanıcı rolünün adı olmalı.Bu yan tümce atlandığında, anlaşma geçerli kullanıcıya aittir.message_type_name
ileti türü anlaşmabir parçası olarak dahil edilecek addır.TARAFINDAN GÖNDERİLEN
Hangi bitiş noktası gösterilen ileti türü, ileti gönderebilirsiniz belirtir.Sözleşmeler, özel görüşmeler için Hizmetler'i kullanabilirsiniz iletileri belge.Her görüşme, iki uç nokta vardır: Başlatıcı bitiş noktası, görüşmeyi başlatan hizmet ve hedef bitiş noktası, bir hizmet Başlatıcı kuruyor.BAŞLATICI
Başlatıcı konuşma, yalnızca belirtilen ileti türü, iletiler gönderebilirsiniz gösterir.Olarak bir görüşme başlatan hizmet verilir Başlatıcı Görüşmenin.HEDEF
Yalnızca hedef konuşma belirtilen ileti türü, iletiler gönderebilirsiniz gösterir.Olarak başka bir hizmet tarafından başlatılan görüşme kabul eden bir hizmet verilir hedef Görüşmenin.HERHANGİ
Bu tür iletiler Başlatıcı ve hedeftarafından gönderilebilir gösterir.[ VARSAYILAN]
Bu anlaşma varsayılan ileti türü, iletileri desteklediğini gösterir.Varsayılan olarak, tüm veritabanları varsayılan adlı bir ileti türü içerir.Bu ileti türü yok doğrulanmasında kullanılır.Bu yan tümcebağlamında, varsayılan anahtar sözcük değildir ve tanımlayıcı olarak ayrılmış.Microsoft SQL Server de varsayılan ileti türübelirtir varsayılan anlaşma sağlar.
Açıklamalar
İleti türleri anlaşma sırası önemli değildir.hedef ilk iletiyi aldıktan sonra Service Broker Görüşme görüşme her saato tarafı için izin verilen herhangi bir ileti göndermek için her iki tarafına verir.Örneğin, konuşma Başlatıcı ileti türügönderebilirsiniz,//Adventure-Works.com/Expenses/SubmitExpense, Service Broker başlatıcısına Gönder tüm sayısını verir SubmitExpense konuşma sırasında ileti.
İleti türleri ve anlaşma yönde değiştirilemez.Bir anlaşmaiçin YETKİLENDİRME değiştirmek için alter YETKİLENDİRME deyimkullanın.
anlaşma , ileti göndermek Başlatıcı izin vermesi gerekir.anlaşma , any tarafından GÖNDERİLEN veya BAŞLATICI tarafından GÖNDERİLEN en az bir ileti türü içermediği halde sözleşme oluşturma deyim başarısız olur.
anlaşmane olursa olsun, bir hizmet her zaman ileti türlerini alabilir 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 uygulama için bu ileti türlerini kullanır.Sağlanan ayırıcı ileti türleri hakkında daha fazla bilgi için bkz: Broker sistem iletileri.
anlaşma , geçici bir nesne olamaz.Sözleşme adı verilen # are ile başlayan, ancak kalıcı nesneleridir.
İ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, anlaşma, üyelerinin sahibi db_ddladmin veya db_owner sabit veritabanı rolleri ve üyeleri sysadmin sabit sunucu rolü bir anlaşmabaşvurular iznine sahip.
SÖZLEŞME oluşturma deyim yürütme kullanıcı belirtilen tüm ileti türlerinde başvurular izninizin olması gerekir.
Örnekler
A.anlaşmaoluşturma
Aşağıdaki örnek, üç ileti türlerine göre 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
) ;
Ayrıca bkz.