Инструкция 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 на базу данных.
Пример
А. Изменение только уровня приоритета существующего диалога
Изменяет уровень приоритета, но не изменяет свойства контракта, локальной службы и удаленной службы.
ALTER BROKER PRIORITY SimpleContractDefaultPriority
FOR CONVERSATION
SET (PRIORITY_LEVEL = 3);
Б. Изменение всех свойств приоритета существующего диалога
Изменяет свойства уровня приоритета, контракта, локальной и удаленной служб.
ALTER BROKER PRIORITY SimpleContractPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContractB,
LOCAL_SERVICE_NAME = TargetServiceB,
REMOTE_SERVICE_NAME = N'InitiatorServiceB',
PRIORITY_LEVEL = 8);
См. также