CREATE BROKER PRIORITY (Transact-SQL)CREATE BROKER PRIORITY (Transact-SQL)

ESTE TEMA SE APLICA A:síSQL Server (a partir de 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noAlmacenamiento de datos paralelos THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Define un nivel de prioridad y el conjunto de criterios para determinar a qué conversaciones de Service BrokerService Broker se debe asignar el nivel de prioridad.Defines a priority level and the set of criteria for determining which Service BrokerService Broker conversations to assign the priority level. El nivel de prioridad se asigna a cualquier extremo de conversación que utilice la misma combinación de contratos y servicios que se especifican en la prioridad de conversación.The priority level is assigned to any conversation endpoint that uses the same combination of contracts and services that are specified in the conversation priority. El valor de las prioridades va de 1 (bajo) a 10 (alto).Priorities range in value from 1 (low) to 10 (high). El valor predeterminado es 5.The default is 5.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax


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

ArgumentosArguments

ConversationPriorityNameConversationPriorityName
Especifica el nombre para esta prioridad de conversación.Specifies the name for this conversation priority. El nombre debe ser único en la base de datos actual y debe cumplir las reglas de Motor de base de datosDatabase Engine identificadores.The name must be unique in the current database, and must conform to the rules for Motor de base de datosDatabase Engine identifiers.

SETSET
Especifica los criterios para determinar si la prioridad de conversación se aplica a una conversación.Specifies the criteria for determining if the conversation priority applies to a conversation. Si se especifica, SET debe contener al menos un criterio: CONTRACT_NAME, LOCAL_SERVICE_NAME, REMOTE_SERVICE_NAME o PRIORITY_LEVEL.If specified, SET must contain at least one criterion: CONTRACT_NAME, LOCAL_SERVICE_NAME, REMOTE_SERVICE_NAME, or PRIORITY_LEVEL. Si no se especifica SET, se establecen los valores predeterminados para los tres criterios.If SET is not specified, the defaults are set for all three criteria.

CONTRACT_NAME = {ContractName | ANY}CONTRACT_NAME = {ContractName | ANY}
Especifica el nombre de un contrato que se va a usar como criterio para determinar si la prioridad de conversación se aplica a una conversación.Specifies the name of a contract to be used as a criterion for determining if the conversation priority applies to a conversation. ContractName es un Motor de base de datosDatabase Engine identificador y debe especificar el nombre de un contrato de la base de datos actual.ContractName is a Motor de base de datosDatabase Engine identifier, and must specify the name of a contract in the current database.

ContractNameContractName
Especifica que la prioridad de conversación se puede aplicar solo a las conversaciones que la instrucción BEGIN DIALOG que inició la conversación especificó ON CONTRACT ContractName.Specifies that the conversation priority can be applied only to conversations where the BEGIN DIALOG statement that started the conversation specified ON CONTRACT ContractName.

ANYANY
Especifica que la prioridad de conversación se puede aplicar a cualquier conversación, independientemente de qué contrato use.Specifies that the conversation priority can be applied to any conversation, regardless of which contract it uses.

El valor predeterminado es ANY.The default is ANY.

LOCAL_SERVICE_NAME = {LocalServiceName | ANY}LOCAL_SERVICE_NAME = {LocalServiceName | ANY}
Especifica el nombre de un servicio que se va a usar como criterio para determinar si la prioridad de conversación se aplica a un extremo de una conversación.Specifies the name of a service to be used as a criterion to determine if the conversation priority applies to a conversation endpoint.

LocalServiceName es un Motor de base de datosDatabase Engine identificador.LocalServiceName is a Motor de base de datosDatabase Engine identifier. Debe especificar el nombre de un servicio de la base de datos actual.It must specify the name of a service in the current database.

LocalServiceNameLocalServiceName
Especifica que la prioridad de conversación se puede aplicar a lo siguiente:Specifies that the conversation priority can be applied to the following:

  • Cualquier extremo iniciador de conversación cuyo nombre de servicio iniciador coincida con LocalServiceName.Any initiator conversation endpoint whose initiator service name matches LocalServiceName.

  • Cualquier extremo de conversación de destino cuyo nombre de servicio de destino coincide con LocalServiceName.Any target conversation endpoint whose target service name matches LocalServiceName.

    ANYANY

    • Especifica que la prioridad de conversación se puede aplicar a cualquier extremo de conversación, independientemente del nombre del servicio local utilizado por el extremo.Specifies that the conversation priority can be applied to any conversation endpoint, regardless of the name of the local service used by the endpoint.

    El valor predeterminado es ANY.The default is ANY.

    REMOTE_SERVICE_NAME = {'RemoteServiceName' | ANY}REMOTE_SERVICE_NAME = {'RemoteServiceName' | ANY}
    Especifica el nombre de un servicio que se va a usar como criterio para determinar si la prioridad de conversación se aplica a un extremo de una conversación.Specifies the name of a service to be used as a criterion to determine if the conversation priority applies to a conversation endpoint.

    RemoteServiceName es un literal de tipo nvarchar (256).RemoteServiceName is a literal of type nvarchar(256). Service BrokerService Brokerutiliza una comparación byte a byte para que coincida con el RemoteServiceName cadena. uses a byte-by-byte comparison to match the RemoteServiceName string. En la comparación se distinguen mayúsculas y minúsculas, y no se considera la intercalación actual.The comparison is case-sensitive and does not consider the current collation. El servicio de destino puede estar en la instancia actual de Motor de base de datosDatabase Engine o en una instancia remota de Motor de base de datosDatabase Engine.The target service can be in the current instance of the Motor de base de datosDatabase Engine, or a remote instance of the Motor de base de datosDatabase Engine.

    'RemoteServiceName''RemoteServiceName'
    Especifica que la prioridad de conversación se puede aplicar a lo siguiente:Specifies that the conversation priority can be applied to the following:

  • Cualquier extremo iniciador de conversación cuyo nombre de servicio de destino asociado coincida con RemoteServiceName.Any initiator conversation endpoint whose associated target service name matches RemoteServiceName.

  • Cualquier extremo de conversación de destino cuyo nombre de servicio iniciador asociado coincida con RemoteServiceName.Any target conversation endpoint whose associated initiator service name matches RemoteServiceName.

    ANYANY
    Especifica que la prioridad de conversación puede aplicarse a cualquier extremo de conversación, independientemente del nombre del servicio remoto que esté asociado al extremo.Specifies that the conversation priority can be applied to any conversation endpoint, regardless of the name of the remote service associated with the endpoint.

    El valor predeterminado es ANY.The default is ANY.

    Valor de PRIORITY_LEVEL = { PriorityValue | predeterminado }PRIORITY_LEVEL = { PriorityValue | DEFAULT }
    Especifica la prioridad que se asigna a cualquier extremo de conversación que utilice los contratos y servicios que se han especificado en la prioridad de conversación.Specifies the priority to assign any conversation endpoint that use the contracts and services specified in the conversation priority. PriorityValue debe ser un entero literal de 1 (prioridad más baja) y 10 (prioridad más alta).PriorityValue must be an integer literal from 1 (lowest priority) to 10 (highest priority). El valor predeterminado es 5.The default is 5.

ComentariosRemarks

Service BrokerService Broker asigna los niveles de prioridad a los extremos de conversación. assigns priority levels to conversation endpoints. Los niveles de prioridad controlan la prioridad de las operaciones asociadas al extremo.The priority levels control the priority of the operations associated with the endpoint. Cada conversación tiene dos extremos:Each conversation has two conversation endpoints:

  • El extremo iniciador de conversación asocia un lado de la conversación con el servicio iniciador y con la cola del iniciador.The initiator conversation endpoint associates one side of the conversation with the initiator service and initiator queue. El extremo iniciador de la conversación se crea cuando se ejecuta la instrucción BEGIN DIALOG.The initiator conversation endpoint is created when the BEGIN DIALOG statement is run. Las operaciones que realiza el extremo iniciador de conversación son:The operations associated with the initiator conversation endpoint include:

    • Envía desde el servicio iniciador.Sends from the initiator service.

    • Recibe desde la cola del iniciador.Receives from the initiator queue.

    • Obtención del siguiente grupo de conversación desde la cola del iniciador.Getting the next conversation group from the initiator queue.

  • El extremo de destino de conversación asocia el otro lado de la conversación con el servicio y la cola de destino.The target conversation endpoint associates the other side of the conversation with the target service and queue. El extremo de destino de conversación se crea cuando la conversación se utiliza para enviar un mensaje a la cola de destino.The target conversation endpoint is created when the conversation is used to send a message to the target queue. Las operaciones que realiza el extremo de destino de conversación son:The operations associated with the target conversation endpoint include:

    • Recibe desde la cola de destino.Receives from the target queue.

    • Envía desde el servicio de destino.Sends from the target service.

    • Obtiene el siguiente grupo de conversación desde la cola de destino.Getting the next conversation group from the target queue.

    Service BrokerService Broker asigna niveles de prioridad de conversación cuando se crean los extremos de conversación. assigns conversation priority levels when conversation endpoints are created. El extremo de conversación conserva el nivel de prioridad hasta que finaliza la conversación.The conversation endpoint retains the priority level until the conversation ends. Las prioridades nuevas o los cambios en las existentes no se aplican a las conversaciones existentes.New priorities or changes to existing priorities are not applied to existing conversations.

    Service BrokerService Brokerasigna el nivel de prioridad de un extremo de conversación de la prioridad de conversación cuyos criterios de contrato y de servicios que mejor coincida con las propiedades del punto de conexión. assigns a conversation endpoint the priority level from the conversation priority whose contract and services criteria best match the properties of the endpoint. En la tabla siguiente se muestra la prioridad de la coincidencia:The following table shows the match precedence:

Contrato de la operaciónOperation contract Servicio local de la operaciónOperation local service Servicio remoto de la operaciónOperation remote service
ContractNameContractName LocalServiceNameLocalServiceName RemoteServiceNameRemoteServiceName
ContractNameContractName LocalServiceNameLocalServiceName ANYANY
ContractNameContractName ANYANY RemoteServiceNameRemoteServiceName
ContractNameContractName ANYANY ANYANY
ANYANY LocalServiceNameLocalServiceName RemoteServiceNameRemoteServiceName
ANYANY LocalServiceNameLocalServiceName ANYANY
ANYANY ANYANY RemoteServiceNameRemoteServiceName
ANYANY ANYANY ANYANY

Service BrokerService Broker primero busca una prioridad cuyo contrato, servicio local y servicio remoto coincide con los que utiliza la operación. first looks for a priority whose specified contract, local service, and remote service matches those that the operation uses. Si no lo encuentra, Service BrokerService Broker busca una prioridad para la que se especificó ANY como servicio remoto y cuyo contrato y servicio local coinciden con los que utiliza la operación.If one is not found, Service BrokerService Broker looks for a priority with a contract and local service that matches those that the operation uses, and where the remote service was specified as ANY. Esto continúa para todas las variaciones incluidas en la tabla de prioridad.This continues for all the variations that are listed in the precedence table. Si no se encuentra ninguna coincidencia, se asigna a la operación la prioridad predeterminada, es decir, 5.If no match is found, the operation is assigned the default priority of 5.

Service BrokerService Broker asigna independientemente un nivel de prioridad a cada extremo de conversación. independently assigns a priority level to each conversation endpoint. Para hacer que Service BrokerService Broker asigne niveles de prioridad tanto al extremo iniciador de conversación como al de destino, debe asegurarse de que ambos extremos estén cubiertos por prioridades de conversación.To have Service BrokerService Broker assign priority levels to both the initiator and target conversation endpoints, you must ensure that both endpoints are covered by conversation priorities. Si los extremos iniciador y de destino de la conversación están en bases de datos independientes, debe crear prioridades de conversación en cada base de datos.If the initiator and target conversation endpoints are in separate databases, you must create conversation priorities in each database. Normalmente se especifica el mismo nivel de prioridad para los dos extremos de una conversación, pero puede especificar niveles de prioridad diferentes.The same priority level is usually specified for both of the conversation endpoints for a conversation, but you can specify different priority levels.

Los niveles de prioridad siempre se aplican a las operaciones que reciben mensajes o identificadores de grupo de conversación procedentes de una cola.Priority levels are always applied to operations that receive messages or conversation group identifiers from a queue. También se aplican cuando se transmiten mensajes desde una instancia de Motor de base de datosDatabase Engine a otra.Priority levels are also applied when transmitting messages from one instance of the Motor de base de datosDatabase Engine to another.

Los niveles de prioridad no se utilizan cuando se transmiten mensajes:Priority levels are not used when transmitting messages:

  • Desde una base de datos cuya opción de base de datos HONOR_BROKER_PRIORITY está establecida en OFF.From a database where the HONOR_BROKER_PRIORITY database option is set to OFF. Para obtener más información, vea ALTER DATABASE SET Options (Transact-SQL).For more information, see ALTER DATABASE SET Options (Transact-SQL).

  • Entre servicios de la misma instancia del motor de base de datos.Between services in the same instance of the Database Engine.

  • Todos los Service BrokerService Broker operaciones en una base de datos se asignan prioridades predeterminadas de 5 si no se ha creado ninguna prioridad de conversación en la base de datos.All Service BrokerService Broker operations in a database are assigned default priorities of 5 if no conversation priorities have been created in the database.

PermissionsPermissions

El permiso para crear una prioridad de conversación recae de forma predeterminada en los miembros de los roles fijos de base de datos db_ddladmin o db_owner, y en el rol fijo de servidor sysadmin.Permission for creating a conversation priority defaults to members of the db_ddladmin or db_owner fixed database roles, and to the sysadmin fixed server role. Requiere el permiso ALTER en la base de datos.Requires ALTER permission on the database.

EjemplosExamples

A.A. Asignar un nivel de prioridad a las dos direcciones de una conversación.Assigning a priority level to both directions of a conversation.

Estas dos prioridades de conversación permiten asegurarse de que se asigna el nivel de prioridad 3 a todas las operaciones que utilizan SimpleContract entre TargetService e InitiatorAService.These two conversation priorities ensure that all operations that use SimpleContract between TargetService and the InitiatorAService are assigned priority level 3.

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.B. Establecer el nivel de prioridad para todas las conversaciones que utilizan un contratoSetting the priority level for all conversations that use a contract

Asigna un nivel de prioridad 7 a todas las operaciones que utilizan un contrato denominado SimpleContract.Assigns a priority level of 7 to all operations that use a contract named SimpleContract. Esto supone que no hay ninguna otra prioridad que especifica SimpleContract y un servicio local o un servicio remoto.This assumes that there are no other priorities that specify both SimpleContract and either a local or a remote service.

CREATE BROKER PRIORITY SimpleContractDefaultPriority  
    FOR CONVERSATION  
    SET (CONTRACT_NAME = SimpleContract,  
         LOCAL_SERVICE_NAME = ANY,  
         REMOTE_SERVICE_NAME = ANY,  
         PRIORITY_LEVEL = 7);  

C.C. Establecer un nivel de prioridad base para una base de datos.Setting a base priority level for a database.

Define prioridades de conversación para dos servicios concretos y, a continuación, define una prioridad de conversación que coincidirá con todos los demás extremos de conversación.Defines conversation priorities for two specific services, and then defines a conversation priority that will match all other conversation endpoints. Esto no reemplaza la prioridad predeterminada, que siempre es 5, pero minimiza el número de elementos a los que se asigna el valor predeterminado.This does not replace the default priority, which is always 5, but does minimize the number of items that are assigned the default.

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.D. Crear tres niveles de prioridad para un servicio de destino utilizando serviciosCreating three priority levels for a target service by using services

Es compatible con un sistema que proporciona tres niveles de rendimiento: Gold (alto), Silver (medio) y Bronze (bajo).Supports a system that provides three levels of performance: Gold (high), Silver (medium), and Bronze (low). Hay un contrato, pero cada nivel tiene un servicio iniciador independiente.There is one contract, but each level has a separate initiator service. Todos los servicios iniciadores se comunican con un servicio de destino central.All initiator services communicate to a central target service.

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.E. Crear tres niveles de prioridad para varios servicios utilizando contratosCreating three priority levels for multiple services using contracts

Es compatible con un sistema que proporciona tres niveles de rendimiento: Gold (alto), Silver (medio) y Bronze (bajo).Supports a system that provides three levels of performance: Gold (high), Silver (medium), and Bronze (low). Cada nivel tiene un contrato independiente.Each level has a separate contract. Estas prioridades se aplican a cualquier servicio al que hagan referencia las conversaciones que utilicen los contratos.These priorities apply to any services that are referenced by conversations that use the contracts.

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

Vea tambiénSee Also

ALTER BROKER PRIORITY ( Transact-SQL ) ALTER BROKER PRIORITY (Transact-SQL)
EMPEZAR conversación de diálogo ( Transact-SQL ) BEGIN DIALOG CONVERSATION (Transact-SQL)
Crear contrato ( Transact-SQL ) CREATE CONTRACT (Transact-SQL)
CREATE QUEUE (Transact-SQL) CREATE QUEUE (Transact-SQL)
CREATE SERVICE (Transact-SQL) CREATE SERVICE (Transact-SQL)
DROP BROKER PRIORITY ( Transact-SQL ) DROP BROKER PRIORITY (Transact-SQL)
GET CONVERSATION GROUP ( Transact-SQL ) GET CONVERSATION GROUP (Transact-SQL)
RECIBIR ( Transact-SQL ) RECEIVE (Transact-SQL)
Enviar ( Transact-SQL ) SEND (Transact-SQL)
Sys.conversation_priorities ( Transact-SQL )sys.conversation_priorities (Transact-SQL)