启动从一个服务到另一个服务的对话。所谓对话,就是让两个服务能够进行一次顺序消息传递。
语法
BEGIN DIALOG [ CONVERSATION ] @dialog_handle
FROM SERVICE initiator_service_name
TO SERVICE 'target_service_name'
[ , { 'service_broker_guid' | 'CURRENT DATABASE' } ]
[ ON CONTRACT contract_name ]
[ WITH
[ { RELATED_CONVERSATION = related_conversation_handle
| RELATED_CONVERSATION_GROUP = related_conversation_group_id } ]
[ [ , ] LIFETIME = dialog_lifetime ]
[ [ , ] ENCRYPTION = { ON | OFF } ] ]
[ ; ]
参数
-
@
dialog_handle
-
一个变量,用于为 BEGIN DIALOG CONVERSATION 语句返回的新对话存储系统生成的对话句柄。该变量的类型必须为 uniqueidentifier。
-
FROM SERVICE
initiator_service_name
-
指定启动对话的服务。指定的名称必须是当前数据库中的服务的名称。为发起方服务指定的队列将接收由目标服务返回的消息,以及 Service Broker 为此会话创建的消息。
-
TO SERVICE
'
target_service_name
'
-
指定启动对话时的目标服务。target_service_name 的类型为 nvarchar(256)。Service Broker 会逐字节进行比较以便与 target_service_name 字符串匹配。换言之,比较时将区分大小写,且不考虑当前的排序规则。
-
service_broker_guid
-
指定承载目标服务的数据库。如果有多个数据库承载一个目标服务实例,则可通过提供 service_broker_guid 与特定数据库通信。
service_broker_guid 的类型为 nvarchar(128)。若要查找数据库的 service_broker_guid,请在数据库中运行以下查询: