Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server Azure SQL Yönetilen Örneği
Öncelik seviyesini ve hangi Hizmet Brokerı konuşmalarının öncelik seviyesini atanmasını sağlamak için kriterler setini tanımlar. Öncelik seviyesi, konuşma önceliğinde belirtilen aynı sözleşme ve hizmet kombinasyonunu kullanan herhangi bir konuşma uç noktasına atanır. Öncelikler 1 (düşük) ile 10 (yüksek) arasında değişir. Varsayılan değer 5'tir.
Transact-SQL söz dizimi kuralları
Syntax
CREATE BROKER PRIORITY ConversationPriorityName
FOR CONVERSATION
[ SET ( [ CONTRACT_NAME = {ContractName | ANY } ]
[ [ , ] LOCAL_SERVICE_NAME = {LocalServiceName | ANY } ]
[ [ , ] REMOTE_SERVICE_NAME = {'RemoteServiceName' | ANY } ]
[ [ , ] PRIORITY_LEVEL = {PriorityValue | DEFAULT } ]
)
]
[;]
Arguments
ConversationPriorityName
Bu konuşma önceliğinin adını belirtir. İsim, mevcut veritabanında benzersiz olmalı ve Database Engine tanımlayıcıları için gereken kurallara uygun olmalıdır.
SET
Konuşma önceliğinin bir konuşmaya uygulanıp uygulanmadığını belirlemek için kriterleri belirler. Belirtilirse, SET en az bir kriter içermelidir: CONTRACT_NAME, LOCAL_SERVICE_NAME, REMOTE_SERVICE_NAME veya PRIORITY_LEVEL. Belirtilmediyse SET , üç kriter için varsayılan ayarlar belirlenir.
CONTRACT_NAME = {ContractName | ANY}
Bir sözleşmenin adını belirtir; görüşme önceliğinin bir konuşmaya uygulanıp uygulanmadığını belirlemek için kriter olarak kullanılır.
ContractName bir Database Engine tanımlayıcısıdır ve mevcut veritabanında bir sözleşmenin adını belirtmelidir.
Sözleşme Adı
Konuşma önceliğinin yalnızca konuşmayı başlatan BEGIN DIALOG ifadesinin ON CONTRACTContractName belirttiği konuşmalara uygulanabileceğini belirtir.
ANY
Konuşma önceliğinin, hangi sözleşmeyi kullanırsa kullansın herhangi bir konuşmaya uygulanabileceğini belirtir.
Varsayılan HER TÜR.
LOCAL_SERVICE_NAME = {LocalServiceName | ANY}
Bir hizmetin adını, konuşma önceliğinin bir konuşma uç noktasına uygulanıp uygulanmadığını belirlemek için bir kriter olarak belirtir.
LocalServiceName bir Database Engine tanımlayıcısıdır. Mevcut veritabanında bir hizmetin adını belirtmelidir.
LocalServiceName
Konuşma önceliğinin aşağıdakilere uygulanabileceğini belirtir:
Başlatıcı hizmet adı LocalServiceName ile eşleşen herhangi bir başlatıcı konuşma uç noktası.
Hedef hizmet adı LocalServiceName ile eşleşen herhangi bir hedef konuşma uç noktası.
ANY
- Konuşma önceliğinin, uç noktanın kullandığı yerel hizmetin adından bağımsız olarak herhangi bir konuşma uç noktasına uygulanabileceğini belirtir.
Varsayılan HER TÜR.
REMOTE_SERVICE_NAME = {'RemoteServiceName' | HERHANGI BIRİ}
Bir hizmetin adını, konuşma önceliğinin bir konuşma uç noktasına uygulanıp uygulanmadığını belirlemek için bir kriter olarak belirtir.
RemoteServiceNamenvarchar(256) tipinin kelime harbidir. Service Broker, RemoteServiceName dizesini eşleştirmek için bayt bayt karşılaştırma kullanır. Karşılaştırma büyük harf duyarlıdır ve mevcut derleme dikkate alınmaz. Hedef hizmet, mevcut Database Engine örneğinde veya uzak bir Database Engine örneğinde olabilir.
'Uzaktan Hizmet Adı'
Konuşma önceliğinin aşağıdakilere uygulanabileceğini belirtir:
Bağlantılı hedef hizmet adı RemoteServiceName ile eşleşen herhangi bir başlatıcı konuşma uç noktası.
İlgili başlatıcı hizmet adı RemoteServiceName ile eşleşen herhangi bir hedef konuşma uç noktası.
ANY
Konuşma önceliğinin, uç noktaya bağlı uzak hizmetin adından bağımsız olarak herhangi bir konuşma uç noktasına uygulanabileceğini belirtir.
Varsayılan HER TÜR.
PRIORITY_LEVEL = { PriorityValue | DEFAULT }
Konuşma önceliğinde belirtilen sözleşmeleri ve hizmetleri kullanan herhangi bir konuşma uç noktasına atamanın önceliğini belirtir.
PriorityValue , 1 (en düşük öncelik) ile 10 (en yüksek öncelik) arasında tam sayı literal olmalıdır. Varsayılan değer 5'tir.
Remarks
Service Broker, konuşma uç noktalarına öncelik seviyeleri atar. Öncelik seviyeleri, uç noktayla ilişkili işlemlerin önceliğini kontrol eder. Her konuşmanın iki konuşma uç noktası vardır:
Başlatıcı konuşma uç noktası, konuşmanın bir tarafını başlatıcı hizmeti ve başlatıcı kuyruğuyla ilişkilendirir. Başlatıcı konuşma uç noktası, BEGIN DIALOG ifadesi çalıştırıldığında oluşturulur. Başlatıcı konuşma uç noktasına ilişkin işlemler şunlardır:
Başlatıcı hizmetten göndermeler.
Başlatıcı kuyruğundan alır.
Başlatıcı kuyruğundan bir sonraki sohbet grubunu almak.
Hedef konuşma uç noktası, konuşmanın diğer tarafını hedef hizmet ve kuyrukla ilişkilendirir. Hedef konuşma uç noktası, konuşma hedef kuyruğuna mesaj göndermek için kullanıldığında oluşturulur. Hedef konuşma uç noktasına ilişkin işlemler şunlardır:
Hedef kuyruğundan alır.
Hedef servisinden göndermeler.
Hedef kuyruğundan bir sonraki sohbet grubunu almak.
Hizmet Aracısı, konuşma uç noktaları oluşturulduğunda konuşma öncelik düzeylerini atar. Konuşma uç noktası, konuşma bitene kadar öncelik düzeyini korur. Yeni öncelikler veya mevcut önceliklerde yapılan değişiklikler mevcut konuşmalara uygulanmaz.
Service Broker, bir konuşma uç noktasına, sözleşme ve hizmet kriterleri uç noktanın özelliklerine en uygun olan konuşma önceliğinden öncelik seviyesini atar. Aşağıdaki tabloda eşleşme önceliği gösterilmektedir:
| İşletme sözleşmesi | Yerel hizmet operasyonu | Uzaktan hizmet operasyonu |
|---|---|---|
| Sözleşme Adı | LocalServiceName | RemoteServiceName |
| Sözleşme Adı | LocalServiceName | ANY |
| Sözleşme Adı | ANY | RemoteServiceName |
| Sözleşme Adı | ANY | ANY |
| ANY | LocalServiceName | RemoteServiceName |
| ANY | LocalServiceName | ANY |
| ANY | ANY | RemoteServiceName |
| ANY | ANY | ANY |
Service Broker önce, belirli sözleşmesi, yerel hizmet ve uzaktan hizmeti operasyonun kullandığı öncelikle eşleşen bir önceliği arar. Eğer bir hizmet bulunamazsa, Service Broker, operasyonun kullandığı ve uzaktan hizmetin ANY olarak belirtildiği bir sözleşme ve yerel hizmetle öncelik arar. Bu, öncelik tablosunda listelenen tüm varyasyonlar için devam eder. Eşleşme bulunmazsa, operasyona varsayılan öncelik 5 olarak atanır.
Service Broker, her konuşma uç noktasına bağımsız olarak bir öncelik seviyesi atar. Hizmet Aracısı'nın hem başlatıcıya hem de hedef konuşma uç noktalarına öncelik düzeyleri atamasını sağlamak için, her iki uç noktanın da konuşma öncelikleri kapsamında olduğundan emin olmanız gerekir. Başlatıcı ve hedef konuşma uç noktaları ayrı veritabanlarındaysa, her veritabanında konuşma öncelikleri oluşturmanız gerekir. Aynı öncelik seviyesi genellikle bir konuşmanın her iki konuşma uç noktası için de belirtilir, ancak farklı öncelik seviyeleri de belirtebilirsiniz.
Öncelik düzeyleri her zaman kuyruktan ileti veya konuşma grubu tanımlayıcıları alan işlemlere uygulanır. Öncelik seviyeleri, Database Engine'in bir örneğinden diğerine mesaj iletirken de uygulanır.
Mesaj iletilirken öncelik seviyeleri kullanılmaz:
HONOR_BROKER_PRIORITY veritabanı seçeneğinin KAPALı olduğu bir veritabanından. Daha fazla bilgi için bkz ALTER DATABASE SET . Seçenekler (Transact-SQL).
Aynı Database Engine örneğindeki servisler arasında.
Veritabanındaki tüm Service Broker işlemlerine, veritabanında herhangi bir konuşma önceliği oluşturulmamışsa varsayılan öncelik olarak 5 olarak atanır.
Permissions
Konuşma önceliği oluşturma izni, varsayılan olarak db_ddladmin veya db_owner sabit veritabanı rollerinin üyelerine ve sysadmin sabit sunucu rolüne aitti. Veritabanında ALTER izni gerektirir.
Examples
A. Bir konuşmanın her iki yönüne öncelik seviyesi atanmak.
Bu iki konuşma önceliği, between TargetService ve 'i InitiatorAService kullanan SimpleContract tüm operasyonların öncelik seviyesi 3'e atanmasını sağlar.
CREATE BROKER PRIORITY InitiatorAToTargetPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = InitiatorServiceA,
REMOTE_SERVICE_NAME = N'TargetService',
PRIORITY_LEVEL = 3);
CREATE BROKER PRIORITY TargetToInitiatorAPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = TargetService,
REMOTE_SERVICE_NAME = N'InitiatorServiceA',
PRIORITY_LEVEL = 3);
B. Sözleşme kullanılan tüm konuşmalar için öncelik seviyesinin belirlenmesi
Bir sözleşme olan SimpleContracttüm işlemlere öncelik seviyesi atar7. Bu, her ikisini SimpleContract de belirten başka önceliklerin olmadığını, yerel veya uzaktan hizmet olduğunu varsayar.
CREATE BROKER PRIORITY SimpleContractDefaultPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = ANY,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 7);
C. Bir veritabanı için temel öncelik seviyesi belirlemek.
İki özel hizmet için konuşma önceliklerini tanımlar, ardından diğer tüm konuşma uç noktalarıyla eşleşecek bir konuşma önceliği tanımlar. Bu, varsayılan önceliğin (her zaman 5 olan) yerini almaz, ancak varsayılan öğe sayısını en aza indirir.
CREATE BROKER PRIORITY [//Adventure-Works.com/Expenses/ClaimPriority]
FOR CONVERSATION
SET (CONTRACT_NAME = ANY,
LOCAL_SERVICE_NAME = //Adventure-Works.com/Expenses/ClaimService,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 9);
CREATE BROKER PRIORITY [//Adventure-Works.com/Expenses/ApprovalPriority]
FOR CONVERSATION
SET (CONTRACT_NAME = ANY,
LOCAL_SERVICE_NAME = //Adventure-Works.com/Expenses/ClaimService,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 6);
CREATE BROKER PRIORITY [//Adventure-Works.com/Expenses/BasePriority]
FOR CONVERSATION
SET (CONTRACT_NAME = ANY,
LOCAL_SERVICE_NAME = ANY,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 3);
D. Hizmetler kullanılarak hedef hizmet için üç öncelik seviyesi oluşturmak
Üç performans seviyesi sağlayan bir sistemi destekler: Altın (yüksek), Gümüş (orta) ve Bronz (düşük). Bir sözleşme var, ancak her seviyenin ayrı bir başlatıcı servisi vardır. Tüm başlatıcı hizmetler merkezi bir hedef servisle iletişim kurar.
CREATE BROKER PRIORITY GoldInitToTargetPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = GoldInitiatorService,
REMOTE_SERVICE_NAME = N'TargetService',
PRIORITY_LEVEL = 6);
CREATE BROKER PRIORITY GoldTargetToInitPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = TargetService,
REMOTE_SERVICE_NAME = N'GoldInitiatorService',
PRIORITY_LEVEL = 6);
CREATE BROKER PRIORITY SilverInitToTargetPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = SilverInitiatorService,
REMOTE_SERVICE_NAME = N'TargetService',
PRIORITY_LEVEL = 4);
CREATE BROKER PRIORITY SilverTargetToInitPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = TargetService,
REMOTE_SERVICE_NAME = N'SilverInitiatorService',
PRIORITY_LEVEL = 4);
CREATE BROKER PRIORITY BronzeInitToTargetPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = BronzeInitiatorService,
REMOTE_SERVICE_NAME = N'TargetService',
PRIORITY_LEVEL = 2);
CREATE BROKER PRIORITY BronzeTargetToInitPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = TargetService,
REMOTE_SERVICE_NAME = N'BronzeInitiatorService',
PRIORITY_LEVEL = 2);
E. Sözleşmeler kullanılarak birden fazla hizmet için üç öncelik seviyesi oluşturulması
Üç performans seviyesi sağlayan bir sistemi destekler: Altın (yüksek), Gümüş (orta) ve Bronz (düşük). Her seviyenin ayrı bir sözleşmesi vardır. Bu öncelikler, sözleşmeleri kullanan görüşmelerde referans verilen tüm hizmetler için geçerlidir.
CREATE BROKER PRIORITY GoldPriority
FOR CONVERSATION
SET (CONTRACT_NAME = GoldContract,
LOCAL_SERVICE_NAME = ANY,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 6);
CREATE BROKER PRIORITY SilverPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SilverContract,
LOCAL_SERVICE_NAME = ANY,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 4);
CREATE BROKER PRIORITY BronzePriority
FOR CONVERSATION
SET (CONTRACT_NAME = BronzeContract,
LOCAL_SERVICE_NAME = ANY,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 2);
Ayrıca Bkz.
ALTER BROKER PRIORITY (Transact-SQL)
BEGIN DIALOG CONVERSATION (Transact-SQL)
CREATE CONTRACT (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
DROP BROKER PRIORITY (Transact-SQL)
GET CONVERSATION GROUP (Transact-SQL)
RECEIVE (Transact-SQL)
SEND (Transact-SQL)
sys.conversation_priorities (Transact-SQL) - Konuşma öncelikleri sistemi (Transact-SQL)