Инструкция ALTER BROKER PRIORITY (Transact-SQL)

Применимо к:SQL Server Управляемый экземпляр SQL Azure

Изменяет свойства приоритета беседы Service Broker.

Соглашения о синтаксисе Transact-SQL

Синтаксис

  
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 } ]  
              )  
}  
[;]  
  

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

ConversationPriorityName
Имя изменяемого приоритета диалога. Это имя должно ссылаться на приоритет диалога в текущей базе данных.

SET
Задает критерий для определения применимости приоритета к заданному диалогу. Аргумент SET обязателен и должен содержать хотя бы один критерий: CONTRACT_NAME, LOCAL_SERVICE_NAME, REMOTE_SERVICE_NAME или PRIORITY_LEVEL.

CONTRACT_NAME = {ContractName | ANY}
Указывает имя контракта, который будет использоваться в качестве критерия, определяющего применимость приоритета к диалогу. ContractName — это идентификатор ядро СУБД и должен указать имя контракта в текущей базе данных.

ContractName
Указывает, что приоритет может применяться только к диалогам, в которых инструкция BEGIN DIALOG, начинающая диалог, содержит параметр ON CONTRACT ContractName.

ЛЮБАЯ
Указывает, что приоритет может применяться к любому диалогу, независимо от используемого контракта.

Если аргумент CONTRACT_NAME не был указан, то свойство контракта приоритета диалога не изменяется.

LOCAL_SERVICE_NAME = {LocalServiceName | ANY}
Указывает имя службы, которая будет использоваться в качестве критерия для определения применимости приоритета к конечной точке диалога.

LocalServiceName — это идентификатор ядро СУБД и должен указывать имя службы в текущей базе данных.

LocalServiceName
Указывает, что объектом применения приоритета диалога может быть:

  • любая конечная точка-инициатор диалога, имя вызывающей службы которой соответствует аргументу LocalServiceName;

  • любая целевая конечная точка диалога, имя целевой службы которой соответствует аргументу LocalServiceName.

ЛЮБАЯ

  • Указывает, что приоритет может применяться к любой конечной точке диалога, независимо от имени локальной службы, используемой точкой.

Если аргумент LOCAL_SERVICE_NAME не был указан, то свойство локальной службы приоритета диалога не изменяется.

REMOTE_SERVICE_NAME = {'RemoteServiceName' | ANY}
Указывает имя службы, которая будет использоваться в качестве критерия для определения применимости приоритета к конечной точке диалога.

RemoteServiceName — это литерал типа nvarchar(256). Service Broker использует сравнение байтов по байтам для сопоставления строки RemoteServiceName . При сравнении учитывается регистр и не применяются текущие параметры сортировки. Целевая служба может находиться в текущем экземпляре ядро СУБД или удаленном экземпляре ядро СУБД.

'RemoteServiceName'
Задает приоритет диалога, который будет иметь:

  • любая конечная точка-инициатор диалога, для которой имя целевой службы совпадает с параметром RemoteServiceName;

  • любая целевая конечная точка диалога, для которой имя вызывающей службы совпадает с параметром RemoteServiceName.

ЛЮБАЯ
Указывает, что приоритет диалога будет применяться ко всем конечным точкам диалога, вне зависимости от имен удаленных служб, связанных с ними.

Если аргумент 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);  

B. Изменение всех свойств приоритета существующего диалога.

Изменяет свойства уровня приоритета, контракта, локальной и удаленной служб.

ALTER BROKER PRIORITY SimpleContractPriority  
    FOR CONVERSATION  
    SET (CONTRACT_NAME = SimpleContractB,  
         LOCAL_SERVICE_NAME = TargetServiceB,  
         REMOTE_SERVICE_NAME = N'InitiatorServiceB',  
         PRIORITY_LEVEL = 8);  

См. также

CREATE BROKER PRIORITY (Transact-SQL)
DROP BROKER PRIORITY (Transact-SQL)
sys.conversation_priorities (Transact-SQL)