Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Istanza gestita di SQL di Azure
In questa lezione viene illustrato come compilare tutti gli oggetti che consentono a un database di supportare una conversazione nel database.
Procedure
Abilitare Service Broker e passare al database AdventureWorks
Nota
Gli esempi di codice in questo articolo sono stati testati utilizzando il AdventureWorks2025 database di esempio, che puoi scaricare dal repository GitHub Azure Data SQL Samples Repository.
Copiare il seguente codice e incollarlo nella finestra dell'Editor di query. Eseguirlo quindi per assicurarsi che Service Broker sia abilitato nel database AdventureWorks2025 e passare al contesto del database.
USE master;
GO
ALTER DATABASE AdventureWorks2022
SET ENABLE_BROKER;
GO
USE AdventureWorks2022;
GO
Creare i tipi di messaggio
Copiare il seguente codice e incollarlo nella finestra dell'Editor di query. Quindi, esegui l'operazione per creare i tipi di messaggio per la conversazione. Poiché in genere più istanze del motore di database fanno riferimento agli oggetti Service Broker, i nomi assegnati alla maggior parte degli oggetti Service Broker è in formato URI. Ciò consente di garantire che siano univoci in più computer. Entrambi questi tipi di messaggio specificano che Service Broker convalida solo che i messaggi sono documenti XML ben formati e che il codice XML non viene convalidato rispetto a uno schema specifico.
CREATE MESSAGE TYPE [//AWDB/InternalAct/RequestMessage]
VALIDATION = WELL_FORMED_XML;
CREATE MESSAGE TYPE [//AWDB/InternalAct/ReplyMessage]
VALIDATION = WELL_FORMED_XML;
GO
Creare il contratto
Copiare il seguente codice e incollarlo nella finestra dell'Editor di query. Quindi, eseguilo per creare il contratto per la conversazione. Il contratto specifica che le conversazioni che lo usano devono inviare messaggi del tipo AWDB/InternalAct/RequestMessage dall'iniziatore alla destinazione e i messaggi del tipo AWDB/InternalAct/ReplyMessage dalla destinazione all'iniziatore.
CREATE CONTRACT [//AWDB/InternalAct/SampleContract]
([//AWDB/InternalAct/RequestMessage] SENT BY INITIATOR,
[//AWDB/InternalAct/ReplyMessage] SENT BY TARGET);
GO
Crea la coda di destinazione e il servizio
Copiare e incollare il codice seguente in una finestra dell'editor di query, quindi eseguirlo per creare la coda e il servizio usati per la destinazione. Poiché i riferimenti alle code provengono dallo stesso database, in modo simile alle tabelle e alle viste, i nomi delle code sono formattati come nomi di tabella o di vista. L'istruzione CREATE SERVICE associa il servizio a TargetQueueIntAct. Di conseguenza, tutti i messaggi inviati al servizio vengono ricevuti in TargetQueueIntAct. Il CREATE SERVICE specifica inoltre che solo le conversazioni che usano il //AWDB/InternalAct/SampleContract creato in precedenza possono usare il servizio come servizio di destinazione.
CREATE QUEUE TargetQueueIntAct;
CREATE SERVICE [//AWDB/InternalAct/TargetService]
ON QUEUE TargetQueueIntAct
([//AWDB/InternalAct/SampleContract]);
GO
Creare la coda e il servizio dell'iniziatore
Copiare e incollare il codice seguente in una finestra dell'editor di query, quindi eseguirlo per creare la coda e il servizio usati per l'iniziatore. Poiché non viene specificato alcun nome di contratto, nessun altro servizio può usare questo servizio come destinazione.
CREATE QUEUE InitiatorQueueIntAct;
CREATE SERVICE [//AWDB/InternalAct/InitiatorService]
ON QUEUE InitiatorQueueIntAct;
GO
Passaggio successivo
Hai configurato correttamente AdventureWorks2025 per supportare una conversazione tra //AWDB/InternalAct/InitiatorService e //AWDB/InternalAct/TargetService.