Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Iscriviti oggi stessoQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Si applica a:SQL Server
Istanza gestita di SQL di Azure
SQL Server Service Broker offre supporto nativo per la messaggistica e l'accodamento nel motore di database di SQL Server e in Istanza gestita di SQL di Azure. Gli sviluppatori possono creare facilmente applicazioni complesse che usano i componenti del motore di database per la comunicazione tra vari database, nonché compilare applicazioni distribuite e affidabili.
Usare i componenti di Service Broker per implementare funzionalità di elaborazione di messaggi asincroni nel database native. Gli sviluppatori di applicazioni che utilizzano Service Broker possono distribuire il carico di lavoro su più database senza programmare interni di comunicazione e messaggistica complessi. Service Broker riduce le attività di sviluppo e test perché gestisce i percorsi di comunicazione nel contesto di una conversazione, con conseguente miglioramento delle prestazioni. Ad esempio, i database front-end che supportano i siti Web possono registrare le informazioni e inviare attività ad alta intensità di processo in coda nei database back-end. Service Broker assicura che tutte le attività vengano gestite nel contesto delle transazioni per garantire affidabilità e coerenza tecnica.
Service Broker è un framework di recapito messaggi che consente di creare applicazioni orientate ai servizi native nel database. A differenza delle classiche funzionalità di elaborazione query che leggono continuamente i dati dalle tabelle e li elaborano durante il ciclo di vita della query, nell'applicazione orientata ai servizi sono presenti servizi di database che scambiano i messaggi. Ogni servizio ha una coda in cui i messaggi vengono inseriti fino a quando non vengono elaborati.
I messaggi nelle code possono essere recuperati tramite il comando RECEIVE
di Transact-SQL o dalla procedura di attivazione che viene chiamata quando il messaggio arriva nella coda.
È possibile creare i servizi di database tramite l'istruzione Transact SQL CREATE SERVICE. Il servizio può essere associato alla coda di messaggi creata tramite l'istruzione CREATE QUEUE:
CREATE QUEUE dbo.ExpenseQueue;
GO
CREATE SERVICE ExpensesService
ON QUEUE dbo.ExpenseQueue;
I messaggi vengono inviati nella conversazione tra i servizi usando l'istruzione Transact-SQL SEND. Una conversazione è un canale di comunicazione che viene stabilito tra i servizi usando l'istruzione Transact-SQL BEGIN DIALOG
.
DECLARE @dialog_handle UNIQUEIDENTIFIER;
BEGIN DIALOG @dialog_handle
FROM SERVICE ExpensesClient
TO SERVICE 'ExpensesService';
SEND ON CONVERSATION @dialog_handle (@Message) ;
Il messaggio verrà inviato a ExpensesService
e inserito in dbo.ExpenseQueue
. Poiché a questa coda non è associata alcuna procedura di attivazione, il messaggio rimarrà nella coda fino a quando non verrà letto da qualcuno.
I messaggi inseriti nella coda possono essere selezionati usando una query SELECT
standard. L'istruzione SELECT
non modifica la coda, né rimuove i messaggi. Per la lettura e l'estrazione dei messaggi dalla coda, è possibile usare l'istruzione Transact-SQL RECEIVE.
RECEIVE conversation_handle, message_type_name, message_body
FROM ExpenseQueue;
Dopo che hai elaborato tutti i messaggi della coda, dovresti chiudere la conversazione usando l'istruzione Transact-SQL END CONVERSATION.
La documentazione di riferimento per Service Broker è inclusa nella documentazione di SQL Server. Nella documentazione di riferimento sono incluse le sezioni seguenti:
Istruzioni DDL (Data Definition Language) (Transact-SQL) per le istruzioni CREATE, ALTER e DROP
Vedere la documentazione pubblicata in precedenza per i concetti relativi a Service Broker e per le attività di gestione e sviluppo. Questa documentazione non viene riprodotta nella documentazione di SQL Server a causa del numero ridotto di modifiche apportate a Service Broker nelle versioni recenti di SQL Server.
Lo scambio di messaggi di Service Broker tra istanze di Istanza gestita di SQL di Azure e lo scambio di messaggi tra SQL Server e Istanza di gestione SQL di Azure è attualmente disponibile nell’anteprima pubblica:
CREATE ROUTE
: La porta specificata deve essere la 4022. Vedere CREATE ROUTE.ALTER ROUTE
: La porta specificata deve essere la 4022. Vedere ALTER ROUTE.La sicurezza del trasporto è supportata, ma non quella del dialogo:
CREATE REMOTE SERVICE BINDING
non è supportata.Service Broker è abilitato per impostazione predefinita e non può essere disabilitato. Le opzioni di ALTER DATABASE seguenti non sono supportate:
ENABLE_BROKER
DISABLE_BROKER
Non sono state introdotte modifiche significative in SQL Server 2019 (15.x). In SQL Server 2012 (11.x) sono state introdotte le modifiche seguenti.
La sintassi dell'istruzione SEND (Transact-SQL) è stata estesa per abilitare il multicast supportando più handle di conversazione.
Le code dispongono di una nuova colonna, message_enqueue_time, in cui è indicato il tempo di permanenza di un messaggio.
Tramite le istruzioni CREATE QUEUE (Transact-SQL) e ALTER QUEUE (Transact-SQL) è ora possibile abilitare o disabilitare la gestione dei messaggi non elaborabili aggiungendo la clausola POISON_MESSAGE_HANDLING (STATUS = ON | OFF)
. La vista del catalogo sys.service_queues ora contiene la colonna is_poison_message_handling_enabled per indicare se la gestione dei messaggi non elaborabili è abilitata o disabilitata.
Per ulteriori informazioni, vedere Service Broker with Always On Availability Groups (SQL Server).
L'uso più comune di Service Broker è la notifica degli eventi. Informazioni su come implementare notifiche degli eventi, configurare la sicurezza delle finestre di dialogo o ottenere altre informazioni.
Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Iscriviti oggi stessoFormazione
Modulo
Scoprire come scrivere il codice nelle applicazioni .NET usando il bus di servizio di Azure per le comunicazioni in grado di gestire errori di richiesta elevata, larghezza di banda ridotta e hardware.
Certificazione
Microsoft Certified: Azure Database Administrator Associate - Certifications
Amministrare un'infrastruttura di database SQL Server per database relazionali, ibridi, locali e cloud con le offerte di database relazionali Microsoft PaaS.
Documentazione
Che cosa fa Service Broker? - SQL Server
Service Broker consente agli sviluppatori di compilare applicazioni asincrone a regime di controllo libero in cui componenti indipendenti collaborano per completare un'attività.
Attivazione di Service Broker - SQL Server
L'attivazione di Service Broker consente alle applicazioni di dimensionare dinamicamente in modo che corrispondano al traffico dei messaggi.
Esecuzione di query nelle code - SQL Server
A volte può essere necessario esaminare il contenuto complessivo di una coda.