ALTER SERVICE (Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例

更改现有的服务。

Transact-SQL 语法约定

语法

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

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

service_name
要更改的服务的名称。 不能指定服务器、数据库和架构名称。

ON QUEUE [ schema_name. ] queue_name
为此服务指定新队列。 Service Broker 将此服务的所有消息从当前队列移动到新队列。

ADD CONTRACT contract_name
指定要添加到由此服务公开的约定集中的约定。

DROP CONTRACT contract_name
指定要从由此服务公开的约定集中删除的约定。 Service Broker 将对使用该约定的、与此服务进行的所有现有会话发送错误消息。

备注

当 ALTER SERVICE 语句从某个服务中删除一条约定后,此服务便不可再作为使用该约定的会话的目标。 因此,Service Broker 将不允许使用该约定与此服务建立新会话。 使用该约定的现有会话不受影响。

若要更改服务的 AUTHORIZATION,请使用 ALTER AUTHORIZATION 语句。

权限

默认情况下,服务所有者、db_ddladmin 或 db_owner 固定数据库角色的成员以及 sysadmin 固定服务器角色的成员拥有更改服务的权限

示例

A. 更改服务队列

下面的示例将 //Adventure-Works.com/Expenses 服务更改为使用队列 NewQueue

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

B. 向服务中添加新约定

下面的示例将 //Adventure-Works.com/Expenses 服务更改为允许在 //Adventure-Works.com/Expenses 约定上进行对话。

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

C. 向此服务中添加新约定,并删除现有约定

下面的示例将 //Adventure-Works.com/Expenses 服务更改为允许在 //Adventure-Works.com/Expenses/ExpenseProcessing 约定上进行对话,而不允许在 //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. 更改服务的所有者

以下示例将 //Adventure-Works.com/Expenses 的所有者更改为 dbo 用户。

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

另请参阅