ALTER SERVICE (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_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]) ;