ALTER BROKER PRIORITY (Transact-SQL)
變更 Service Broker 交談優先權的屬性。
語法
ALTER BROKER PRIORITY ConversationPriorityName
FOR CONVERSATION
{ SET ( [ CONTRACT_NAME = {ContractName | ANY } ]
[ [ , ] LOCAL_SERVICE_NAME = {LocalServiceName | ANY } ]
[ [ , ] REMOTE_SERVICE_NAME = {'RemoteServiceName' | ANY } ]
[ [ , ] PRIORITY_LEVEL = { PriorityValue | DEFAULT } ]
)
}
[;]
引數
ConversationPriorityName
指定要變更的交談優先權名稱。此名稱必須參考目前資料庫中的交談優先權。SET
指定用來判斷交談優先權是否套用到交談的準則。SET 為必要項目,而且至少必須包含一個準則:CONTRACT_NAME、LOCAL_SERVICE_NAME、REMOTE_SERVICE_NAME 或 PRIORITY_LEVEL。CONTRACT_NAME = {ContractName | ANY}
指定要用於判斷交談優先權是否會套用到交談之準則的合約名稱。ContractName 是 Database Engine 識別項,而且必須指定目前資料庫中的合約名稱。ContractName
指定交談優先權只能套用到啟動交談的 BEGIN DIALOG 陳述式指定了 ON CONTRACT ContractName 的交談上。ANY
指定交談優先權可以套用到任何交談,不論它使用哪一個合約。
如果未指定 CONTRACT_NAME,則此交談優先權的合約屬性將不會變更。
LOCAL_SERVICE_NAME = {LocalServiceName | ANY}
指定用來判斷交談優先權是否套用到交談端點之準則的服務名稱。LocalServiceName 為 Database Engine 識別項,而且必須指定目前資料庫中的服務名稱。
LocalServiceName
指定交談優先權可以套用到以下項目:起始端服務名稱符合 LocalServiceName 的任何起始端交談端點。
目標服務名稱符合 LocalServiceName 的任何目標交談端點。
ANY
- 指定交談優先權可以套用到任何交談端點,不論此端點使用的本機服務名稱為何。
如果未指定 LOCAL_SERVICE_NAME,則此交談優先權的本機服務屬性將不會變更。
REMOTE_SERVICE_NAME = {'RemoteServiceName' | ANY}
指定用來判斷交談優先權是否套用到交談端點之準則的服務名稱。RemoteServiceName 是 nvarchar(256) 類型的常值。Service Broker 會利用逐位元組的比較方式來比對 RemoteServiceName 字串。這項比較會區分大小寫,且不會考慮目前的定序。目標服務可以在目前的 Database Engine 執行個體或遠端 Database Engine 執行個體中。
'RemoteServiceName'
指定交談優先權可以指派到以下項目:關聯目標服務名稱符合 RemoteServiceName 的任何起始端交談端點。
關聯起始端服務名稱符合 RemoteServiceName 的任何目標交談端點。
ANY
指定交談優先權會套用到任何交談端點,不論與此端點有關的遠端服務名稱為何。
如果未指定 REMOTE_SERVICE_NAME,則此交談優先權的遠端服務屬性將不會變更。
PRIORITY_LEVEL = { PriorityValue | DEFAULT }
指定優先權等級來指派使用交談優先權內指定之合約和服務的任何交談端點。PriorityValue 必須是從 1 (最低優先權) 到 10 (最高優先權) 的整數常值。如果未指定 PRIORITY_LEVEL,則此交談優先權的優先權等級屬性將不會變更。
備註
ALTER BROKER PRIORITY 所變更的任何屬性都不會套用到現有的交談。現有的交談會繼續使用在啟動時所指派的優先權。
如需詳細資訊,請參閱<CREATE BROKER PRIORITY (Transact-SQL)>。
權限
建立交談優先權的權限預設為 db_ddladmin 或 db_owner 固定資料庫角色的成員,以及 sysadmin 固定伺服器角色的成員。需要資料庫的 ALTER 權限。
範例
A. 只變更現有交談優先權的優先權等級。
變更優先權等級,但是不變更合約、本機服務或遠端服務的屬性。
ALTER BROKER PRIORITY SimpleContractDefaultPriority
FOR CONVERSATION
SET (PRIORITY_LEVEL = 3);
B. 變更現有交談優先權的所有屬性。
變更優先權層級、合約、本機服務和遠端服務的屬性。
ALTER BROKER PRIORITY SimpleContractPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContractB,
LOCAL_SERVICE_NAME = TargetServiceB,
REMOTE_SERVICE_NAME = N'InitiatorServiceB',
PRIORITY_LEVEL = 8);