ALTER SERVICE (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Cambia un servicio existente.

Convenciones de sintaxis de Transact-SQL

Sintaxis

ALTER SERVICE service_name   
   [ ON QUEUE [ schema_name . ]queue_name ]   
   [ ( < opt_arg > [ , ...n ] ) ]  
[ ; ]  
  
<opt_arg> ::=  
   ADD CONTRACT contract_name | DROP CONTRACT contract_name  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

service_name
Es el nombre del servicio que se va a cambiar. No se pueden especificar nombres de servidor, base de datos o esquema.

ON QUEUE [ schema_name. ] queue_name
Especifica la nueva cola para este servicio. Service Broker mueve todos los mensajes correspondientes a este servicio de la cola actual a la nueva.

ADD CONTRACT contract_name
Especifica un contrato que se agregará al conjunto de contratos expuesto por este servicio.

DROP CONTRACT contract_name
Especifica un contrato que se eliminará del conjunto de contratos expuesto por este servicio. Service Broker envía un mensaje de error si hay conversaciones existentes con este servicio que utilicen este contrato.

Observaciones

Cuando la instrucción ALTER SERVICE elimina un contrato de un servicio, este último no puede ser el destino de conversaciones que utilicen ese contrato. Por tanto, Service Broker no permite que se establezcan conversaciones nuevas con el servicio basadas en ese contrato. Las conversaciones existentes que utilizan el contrato no se ven afectadas.

Para modificar AUTHORIZATION para un servicio, utilice la instrucción ALTER AUTHORIZATION.

Permisos

De forma predeterminada, se concede permiso para modificar valores predeterminados de servicio 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.

Ejemplos

A. Cambiar la cola para un servicio

En el ejemplo siguiente se cambia el servicio de //Adventure-Works.com/Expenses para que utilice la cola NewQueue.

ALTER SERVICE [//Adventure-Works.com/Expenses]  
    ON QUEUE NewQueue ;  

B. Agregar un nuevo contrato al servicio

En el ejemplo siguiente se cambia el servicio de //Adventure-Works.com/Expenses para que permita diálogos en el contrato de //Adventure-Works.com/Expenses.

ALTER SERVICE [//Adventure-Works.com/Expenses]  
    (ADD CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission]) ;  

C. Agregar un nuevo contrato al servicio, quitando el contrato existente

En el ejemplo siguiente se cambia el servicio de //Adventure-Works.com/Expenses para que permita diálogos en el contrato //Adventure-Works.com/Expenses/ExpenseProcessing y no los permita en el contrato //Adventure-Works.com/Expenses/ExpenseSubmission.

ALTER SERVICE [//Adventure-Works.com/Expenses]  
    (ADD CONTRACT [//Adventure-Works.com/Expenses/ExpenseProcessing],   
     DROP CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission]) ;  

D. Modificar el propietario de un servicio

En el ejemplo siguiente se cambia el propietario de //Adventure-Works.com/Expenses al usuario dbo.

ALTER AUTHORIZATION ON SERVICE::[//Adventure-Works.com/Expenses] TO dbo ;
GO

Consulte también