CREATE SERVICE (Transact-SQL)CREATE SERVICE (Transact-SQL)

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

Crea un nuevo servicio.Creates a new service. Un servicio de Service BrokerService Broker es un nombre para una tarea o un conjunto de tareas específicos.A Service BrokerService Broker service is a name for a specific task or set of tasks. Service BrokerService Broker utiliza el nombre del servicio para enrutar mensajes, entregar mensajes a la cola correcta en una base de datos y aplicar el contrato para una conversación.uses the name of the service to route messages, deliver messages to the correct queue within a database, and enforce the contract for a conversation.

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

SintaxisSyntax

  
CREATE SERVICE service_name  
   [ AUTHORIZATION owner_name ]  
   ON QUEUE [ schema_name. ]queue_name  
   [ ( contract_name | [DEFAULT][ ,...n ] ) ]  
[ ; ]  

ArgumentosArguments

service_nameservice_name
Es el nombre del servicio que se va a crear.Is the name of the service to create. El servicio nuevo se crea en la base de datos actual, la cual pertenece a la entidad de seguridad especificada en la cláusula AUTHORIZATION.A new service is created in the current database and owned by the principal specified in the AUTHORIZATION clause. No se pueden especificar nombres de servidor, base de datos o esquema.Server, database, and schema names cannot be specified. service_name debe ser un sysname válido.The service_name must be a valid sysname.

Nota

No cree un servicio que use la palabra clave ANY para service_name.Do not create a service that uses the keyword ANY for the service_name. Cuando especifica ANY para un nombre de servicio en CREATE BROKER PRIORITY, la prioridad se considera para todos los servicios.When you specify ANY for a service name in CREATE BROKER PRIORITY, the priority is considered for all services. No se limita a un servicio cuyo nombre sea ANY.It is not limited to a service whose name is ANY.

AUTHORIZATION owner_nameAUTHORIZATION owner_name
Establece el propietario del servicio en el usuario o el rol de base de datos especificado.Sets the owner of the service to the specified database user or role. Cuando el usuario actual es dbo o sa, owner_name puede ser el nombre de cualquier usuario o rol válidos.When the current user is dbo or sa, owner_name may be the name of any valid user or role. En caso contrario, owner_name debe ser el nombre del usuario actual, el nombre de un usuario para el que el usuario actual tiene permisos IMPERSONATE o el nombre de un rol al que pertenece el usuario actual.Otherwise, owner_name must be the name of the current user, the name of a user that the current user has IMPERSONATE permission for, or the name of a role to which the current user belongs.

ON QUEUE [ schema_name.ON QUEUE [ schema_name. ] queue_name] queue_name
Especifica la cola que recibe mensajes para el servicio.Specifies the queue that receives messages for the service. La cola debe existir en la misma base de datos que el servicio.The queue must exist in the same database as the service. Si no se proporciona schema_name, el valor es el esquema predeterminado del usuario que ejecuta la instrucción.If no schema_name is provided, the schema is the default schema for the user that executes the statement.

contract_namecontract_name
Especifica un contrato para el que este servicio puede ser un destino.Specifies a contract for which this service may be a target. Los programas de servicio inician conversaciones con este servicio utilizando los contratos especificados.Service programs initiate conversations to this service using the contracts specified. Si no se especifica ningún contrato, el servicio solo puede iniciar conversaciones.If no contracts are specified, the service may only initiate conversations.

[ DEFAULT ][ DEFAULT ]
Especifica que el servicio puede ser un destino para conversaciones que sigan el contrato DEFAULT.Specifies that the service may be a target for conversations that follow the DEFAULT contract. En el contexto de esta cláusula, DEFAULT no es una palabra clave y debe delimitarse como un identificador.In the context of this clause, DEFAULT is not a keyword, and must be delimited as an identifier. El contrato DEFAULT permite que los dos extremos de la conversación envíen mensajes del tipo DEFAULT.The DEFAULT contract allows both sides of the conversation to send messages of message type DEFAULT. El tipo de mensajes DEFAULT utiliza la validación NONE.Message type DEFAULT uses validation NONE.

NotasRemarks

Un servicio muestra la funcionalidad proporcionada por los contratos a los que está asociado, de modo que puedan usarlos otros servicios.A service exposes the functionality provided by the contracts with which it is associated, so that they can be used by other services. Este servicio es destino de los contratos que se especifican en la instrucción CREATE SERVICE.The CREATE SERVICE statement specifies the contracts that this service is the target for. Un servicio solo puede ser destino de conversaciones que utilizan los contratos especificados por el servicio.A service can only be a target for conversations that use the contracts specified by the service. Un servicio que no especifica ningún contrato no muestra ninguna funcionalidad para otros servicios.A service that specifies no contracts exposes no functionality to other services.

Las conversaciones iniciadas desde este servicio pueden utilizar cualquier contrato.Conversations initiated from this service may use any contract. Puede crear un servicio sin especificar contratos solo si el servicio inicia conversaciones.You create a service without specifying contracts when the service only initiates conversations.

Cuando Service BrokerService Broker acepta una nueva conversación de un servicio remoto, el nombre del servicio de destino determina la cola en la que el agente colocará los mensajes de la conversación.When Service BrokerService Broker accepts a new conversation from a remote service, the name of the target service determines the queue where the broker places messages in the conversation.

PermisosPermissions

El permiso para crear un servicio pertenece de forma predeterminada a los miembros de los roles fijos de base de datos db_ddladmin o db_owner y al rol fijo de servidor sysadmin.Permission for creating a service defaults to members of the db_ddladmin or db_owner fixed database roles and the sysadmin fixed server role. El usuario que ejecuta la instrucción CREATE SERVICE debe tener permisos REFERENCES en la cola y en todos los contratos especificados.The user executing the CREATE SERVICE statement must have REFERENCES permission on the queue and all contracts specified.

El permiso REFERENCES en un servicio pertenece de forma predeterminada al propietario del servicio, a los miembros de los roles fijos de base de datos db_ddladmin o db_owner y a los miembros del rol fijo de servidor sysadmin.REFERENCES permission for a service defaults to the owner of the service, members of the db_ddladmin or db_owner fixed database roles, and members of the sysadmin fixed server role. Los permisos SEND en un servicio pertenecen de forma predeterminada al propietario del servicio, a los miembros del rol fijo de base de datos db_owner y a los miembros del rol fijo de servidor sysadmin.SEND permissions for a service default to the owner of the service, members of the db_owner fixed database role, and members of the sysadmin fixed server role.

Un servicio no puede ser un objeto temporal.A service may not be a temporary object. Los servicios que empiezan por # están permitidos, pero son objetos permanentes.Service names beginning with # are allowed, but are permanent objects.

EjemplosExamples

A.A. Crear un servicio con un contratoCreating a service with one contract

En el ejemplo siguiente se crea el servicio //Adventure-Works.com/Expenses en la cola ExpenseQueue del esquema dbo.The following example creates the service //Adventure-Works.com/Expenses on the ExpenseQueue queue in the dbo schema. Los diálogos destinados a este servicio deben seguir el contrato //Adventure-Works.com/Expenses/ExpenseSubmission.Dialogs that target this service must follow the contract //Adventure-Works.com/Expenses/ExpenseSubmission.

CREATE SERVICE [//Adventure-Works.com/Expenses]  
    ON QUEUE [dbo].[ExpenseQueue]  
    ([//Adventure-Works.com/Expenses/ExpenseSubmission]) ;  

b.B. Crear un servicio con varios contratosCreating a service with multiple contracts

En el ejemplo siguiente se crea el servicio //Adventure-Works.com/Expenses en la cola ExpenseQueue.The following example creates the service //Adventure-Works.com/Expenses on the ExpenseQueue queue. Los diálogos destinados a este servicio deben seguir el contrato //Adventure-Works.com/Expenses/ExpenseSubmission o el contrato //Adventure-Works.com/Expenses/ExpenseProcessing.Dialogs that target this service must either follow the contract //Adventure-Works.com/Expenses/ExpenseSubmission or the contract //Adventure-Works.com/Expenses/ExpenseProcessing.

CREATE SERVICE [//Adventure-Works.com/Expenses] ON QUEUE ExpenseQueue  
    ([//Adventure-Works.com/Expenses/ExpenseSubmission],  
     [//Adventure-Works.com/Expenses/ExpenseProcessing]) ;  

C.C. Crear un servicio sin contratosCreating a service with no contracts

En el siguiente ejemplo se crea la cola del servicio //Adventure-Works.com/Expenses on the ExpenseQueue.The following example creates the service //Adventure-Works.com/Expenses on the ExpenseQueue queue. Este servicio no tiene información de contrato.This service has no contract information. Por lo tanto, el servicio solo puede ser el iniciador de un diálogo.Therefore, the service can only be the initiator of a dialog.

CREATE SERVICE [//Adventure-Works.com/Expenses] ON QUEUE ExpenseQueue ;  

Consulte tambiénSee Also

ALTER SERVICE (Transact-SQL) ALTER SERVICE (Transact-SQL)
DROP SERVICE (Transact-SQL) DROP SERVICE (Transact-SQL)
EVENTDATA (Transact-SQL)EVENTDATA (Transact-SQL)