Поделиться через


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

Изменяет свойства приоритета диалога компонента Компонент 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 } ]
              )
}
[;]

Аргументы

  • 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);

См. также

Справочник

CREATE BROKER PRIORITY (Transact-SQL)

DROP BROKER PRIORITY (Transact-SQL)

sys.conversation_priorities (Transact-SQL)