O formato padrão para iniciar um diálogo é assim:
Declare @dialog_handle UNIQUEIDENTIFIER
BEGIN DIALOG CONVERSATION @dialog_handle
FROM SERVICE initiator_1
TO SERVICE 'target_1'
ON CONTRACT MyContract ;
Mas eu gostaria de criar um procedimento genérico flexível que possa enviar uma conversa específica de qualquer um de vários serviços de iniciador (digamos que eu tenha 10 serviços de iniciador em potencial que usariam o mesmo procedimento armazenado).
Create Procedure SendJoinRequest (@initiatorServiceName varchar)
AS
Declare @dialog_handle UNIQUEIDENTIFIER
BEGIN DIALOG CONVERSATION @dialog_handle
FROM SERVICE @initiatorServiceName
TO SERVICE 'target_1'
ON CONTRACT MyContract ;
Acho que isso não vai funcionar porque o identificador do serviço em
FROM SERVICE @initiatorServiceName
na verdade não pode ser uma string e deve ser o nome real do serviço... Existe uma maneira fácil de passar isso como um argumento? ou eu tenho que aninhar tudo isso em uma execução desagradável de uma string concatenada?
@String = blahblah + blah blah + escapecharacters + blah
execute(@String)
Obrigado pela ajuda
Na verdade vai funcionar. A maioria dos verbos SSB aceita parâmetros para seus argumentos (exceto queuename para RECEIVE, é claro). Os parâmetros são do tipo
sysname
: