ALTER SERVICE (Transact-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

引數

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

請參閱

參考

CREATE SERVICE (Transact-SQL)

DROP SERVICE (Transact-SQL)

EVENTDATA (Transact-SQL)