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] 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. サービスのキューを変更する
次の例では、キュー NewQueue
を使用するよう、//Adventure-Works.com/Expenses
サービスを変更します。
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/ExpenseProcessing
のダイアログを許可し、コントラクト //Adventure-Works.com/Expenses/ExpenseSubmission
のダイアログを禁止するよう、//Adventure-Works.com/Expenses
サービスを変更します。
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)