Utilità ssbdiagnose (Service Broker)
Si applica a: SQL Server Istanza gestita di SQL di Azure
L'utilità ssbdiagnose segnala la presenza di problemi nelle conversazioni di Service Broker o nella configurazione dei servizi di Service Broker. I controlli della configurazione possono essere eseguiti per due servizi oppure per un unico servizio. I problemi vengono segnalati nella finestra del prompt dei comandi in testo leggibile oppure in un file XML formattato che può essere reindirizzato a un file oppure a un altro programma.
Sintassi
ssbdiagnose
[ [ -XML ]
[ -LEVEL { ERROR | WARNING | INFO } ]
[ -IGNORE error_id ] [ ...n ]
[ <baseconnectionoptions> ]
{ <configurationreport> | <runtimereport> }
]
| -?
<configurationreport> ::=
CONFIGURATION
{ [ FROM SERVICE service_name
[ <fromconnectionoptions> ]
[ MIRROR <mirrorconnectionoptions> ]
]
[ TO SERVICE service_name [ , broker_id ]
[ <toconnectionoptions> ]
[ MIRROR <mirrorconnectionoptions> ]
]
}
ON CONTRACT contract_name
[ ENCRYPTION { ON | OFF | ANONYMOUS } ]
<runtime_report> ::=
RUNTIME
[ -SHOWEVENTS ]
[ -NEW
[ -ID { conversation_handle
| conversation_group_id
| conversation_id
}
] [ ...n ]
]
[ -TIMEOUT timeout_interval ]
[ <runtimeconnectionoptions> ]
<baseconnectionoptions> ::=
<connectionoptions>
<fromconnectionoptions> ::=
<connectionoptions>
<toconnectionoptions> ::=
<connectionoptions>
<mirrorconnectionoptions> ::=
<connectionoptions>
<runtimeconnectionoptions> ::=
[ CONNECT TO <connectionoptions> ] [ ...n ]
<connectionoptions> ::=
[ -E | { -U login_id [ -P password ] } ]
[ -S server_name [ \instance_name ] ]
[ -d database_name ]
[ -l login_timeout ]
[ -N encryption_option ]
[ -i hostname_in_certificate ]
[ -C ]
Opzioni della riga di comando
-XML
Specifica che l'output di ssbdiagnose deve essere generato come file XML formattato. che può essere reindirizzato a un file oppure a un'altra applicazione. Se l'opzione -XML
non viene specificata, l'output di ssbdiagnose viene formattato come testo leggibile.
-LEVEL { ERROR | WARNING | INFO }
Specifica il livello dei messaggi da segnalare.
valore | Descrizione |
---|---|
ERROR |
Riporta solo messaggi di errore. |
WARNING (predefinito) |
Riporta i messaggi di errore e di avviso. |
INFO |
Riporta i messaggi di errore, di avviso e informativi. |
-IGNORE ID_errore
Specifica che i messaggi o gli errori con il valore error_id specificato non devono essere inclusi nei report. È possibile specificare -IGNORE
più volte per eliminare più ID messaggio.
<baseconnectionoptions>
Specifica le informazioni di connessione di base usate da ssbdiagnose quando le opzioni di connessione non sono incluse in una clausola specifica. Le informazioni di connessione indicate in una clausola specifica prevalgono sulle informazioni specificate in baseconnectionoption
. Questa situazione viene gestita separatamente per ciascun parametro. Ad esempio, se -S
e -d
sono entrambi specificati in baseconnetionoptions
e viene specificato solo -d
in toconnetionoptions
, ssbdiagnose usa -S
da baseconnetionoptions
e -d
da toconnetionoptions
.
CONFIGURATION
Richiede un report degli errori di configurazione tra una coppia di servizi di Service Broker o per un servizio singolo.
FROM SERVICE nome_servizio
Specifica il servizio che avvia le conversazioni.
<fromconnectionoptions>
Specifica le informazioni necessarie per connettersi al database che contiene il servizio Initiator. Se fromconnectionoptions
non viene specificato, ssbdiagnose usa le informazioni di connessione da baseconnectionoptions
per la connessione al database Initiator. Se fromconnectionoptions
viene specificato, deve includere il database che contiene il servizio Initiator. Se fromconnectionoptions
non viene specificato, le baseconnectionoptions
devono specificare il database Initiator.
TO SERVICE nome_servizio [ , ID_broker ]
Specifica il servizio che rappresenta la destinazione delle conversazioni.
service_name: specifica il nome del servizio di destinazione.
broker_id: specifica l'ID di Service Broker che identifica il database di destinazione. broker_id è un GUID. Per individuarlo, è possibile eseguire la query seguente sul database di destinazione:
SELECT service_broker_guid
FROM sys.databases
WHERE database_id = DB_ID();
<toconnectionoptions>
Specifica le informazioni necessarie per connettersi al database che contiene il servizio di destinazione. Se toconnectionoptions
non viene specificato, ssbdiagnose usa le informazioni di connessione di baseconnectionoptions
per la connessione al database di destinazione.
MIRROR
Specifica che il servizio Service Broker associato è ospitato in un database con mirroring. ssbdiagnose verifica che la route per il servizio sia una route con mirroring, in cui MIRROR_ADDRESS
è stato specificato in CREATE ROUTE
.
<mirrorconnectionoptions>
Specifica le informazioni necessarie per connettersi al database mirror. Se mirrorconnectionoptions
non viene specificato, ssbdiagnose usa le informazioni di connessione da baseconnectionoptions
per la connessione al database mirror.
ON CONTRACT contract_name
Richiede che ssbdiagnose controlli solo le configurazioni che usano il contratto specificato. Se ON CONTRACT
non è specificato, ssbdiagnose offre informazioni solo sul contratto denominato DEFAULT
.
ENCRYPTION { ON | OFF | ANONYMOUS }
Richiede di verificare che il dialogo sia configurato correttamente per il livello di crittografia specificato:
ON
: impostazione predefinita Viene configurata la sicurezza completa del dialogo. Questo significa che i certificati sono stati distribuiti in entrambi i lati del dialogo, che è presente un'associazione al servizio remoto e che l'istruzioneGRANT SEND
per il servizio di destinazione ha specificato l'utente del servizio Initiator.OFF
: non viene configurata alcuna sicurezza del dialogo. Questo significa che non è stato distribuito alcun certificato, non è stata creata alcuna associazione al servizio remoto eGRANT SEND
per il servizio Initiator ha specificato il ruolo public.ANONYMOUS
: viene configurata la sicurezza anonima del dialogo. Questo significa che è stato distribuito solo un certificato, che nell'associazione al servizio remoto è stata specificata la clausola anonima e cheGRANT SEND
per il servizio di destinazione ha specificato il ruolo public.
RUNTIME
Richiede che venga generato un report di problemi che provocano errori di run-time per una conversazione di Service Broker. Se non viene specificata l'opzione -NEW
o -ID
, ssbdiagnose esegue il monitoraggio di tutte le conversazioni in tutti i database specificati nelle opzioni di connessione. Se viene specificata l'opzione -NEW
o -ID
, ssbdiagnose compila un elenco degli ID specificati nei parametri.
Durante l'esecuzione, ssbdiagnose registra tutti gli eventi di SQL Server Profiler che indicano errori di run-time, ovvero gli eventi che si verificano per gli ID specificati più quelli a livello di sistema. Se vengono rilevati errori di run-time, ssbdiagnose esegue un report di configurazione sulla configurazione associata.
Per impostazione predefinita, nel report di output non vengono inclusi gli errori di runtime, ma solo i risultati dell'analisi di configurazione. Per includere gli errori di runtime nel report, usare -SHOWEVENTS
.
-SHOWEVENTS
Specifica che ssbdiagnose deve includere eventi di SQL Server Profiler durante la generazione di un report RUNTIME
. Vengono segnalati solo gli eventi considerati come condizioni di errore. Per impostazione predefinita, ssbdiagnose esegue solo il monitoraggio degli eventi di errore, ma non li inserisce nell'output.
-NEW
: richiede il monitoraggio in fase di esecuzione della prima conversazione iniziata dopo l'avvio di ssbdiagnose.-ID
: richiede il monitoraggio in fase di esecuzione degli elementi di conversazione specificati. È possibile specificare l'opzione-ID
più volte.
Se si specifica un handle di conversazione, vengono segnalati solo gli eventi correlati all'endpoint di conversazione associato. Se si specifica un ID di conversazione, vengono segnalati tutti gli eventi relativi a tale conversazione e agli endpoint dell'Initiator e di destinazione della conversazione stessa, mentre se si specifica un ID di un gruppo di conversazioni, vengono segnalati tutti gli eventi relativi a tutti gli endpoint e a tutte le conversazioni del gruppo.
conversation_handle
Identificatore univoco di un endpoint di conversazione in un'applicazione. Per un endpoint di una conversazione gli handle di conversazione sono univoci , mentre per gli endpoint dell'Initiator e di destinazione gli handle di conversazione sono diversi.
Gli handle di conversazione vengono restituiti alle applicazioni dal parametro @dialog_handle dell'istruzione BEGIN DIALOG
e dalla colonna conversation_handle
nel set di risultati di un'istruzione RECEIVE
.
Gli handle di conversazione vengono segnalati nella colonna conversation_handle
delle viste del catalogo sys.transmission_queue
e sys.conversation_endpoints
.
conversation_group_id
Identificatore univoco di un gruppo di conversazioni.
Gli ID gruppo di conversazioni vengono restituiti nelle applicazioni dal parametro @conversation_group_id dell’istruzione GET CONVERSATION GROUP
e dalla colonna conversation_group_id
nel set di risultati di un'istruzione RECEIVE
.
Gli ID dei gruppi di conversazioni vengono segnalati nelle colonne conversation_group_id
delle viste del catalogo sys.conversation_groups
e sys.conversation_endpoints
.
conversation_id
Identificatore univoco di una conversazione. Gli ID di conversazione sono gli stessi per sia gli endpoint dell'Initiator che per quelli di destinazione di una conversazione.
Gli ID delle conversazioni vengono segnalati nella colonna conversation_id
della vista del catalogo sys.conversation_endpoints
.
-TIMEOUT intervallo_timeout
Specifica il numero di secondi per l'esecuzione un report RUNTIME
. Se l'opzione -TIMEOUT
non viene specificata, il report di runtime viene eseguito per un periodo di tempo illimitato. -TIMEOUT
viene utilizzato solo nei report RUNTIME
, non nei report CONFIGURATION
. Usare CTRL + C per uscire da ssbdiagnose se -TIMEOUT
non è stato specificato oppure per terminare un report di runtime prima che scada l'intervallo di timeout. Il valoretimeout_interval deve essere un numero compreso tra 1 e 2,147,483,647.
<runtimeconnectionoptions>
Specifica le informazioni di connessione per i database che contengono i servizi associati agli elementi di conversazione monitorati. Se tutti i servizi si trovano nello stesso database, è necessario specificare solo una clausola CONNECT TO
, mentre se i servizi si trovano in database separati è necessario specificare una clausola CONNECT TO
per ogni database. Se runtimeconnectionoptions
non è specificato, ssbdiagnose usa le informazioni di connessione da baseconnectionoptions
.
-E
Apre una connessione con autenticazione di Windows a un'istanza del motore di database usando l'account di Windows corrente come ID di accesso. Le credenziali di accesso devono corrispondere a un membro del ruolo predefinito del server sysadmin
.
L'opzione -E
consente di ignorare le impostazioni relative all'utente e alla password delle variabili di ambiente SQLCMDUSER
e SQLCMDPASSWORD
.
Se non viene specificato né -E
né -U
, ssbdiagnose usa il valore della variabile di ambiente SQLCMDUSER
. Se SQLCMDUSER
non è impostato, ssbdiagnose usa l'autenticazione di Windows.
Se si usa l'opzione -E
in combinazione con l'opzione -U
o con l'opzione -P
, viene generato un messaggio di errore.
-U login_id
Apre una connessione con autenticazione di SQL Server tramite l'ID di accesso specificato. Le credenziali di accesso devono corrispondere a un membro del ruolo predefinito del server sysadmin
.
Se non viene specificato né -E
né -U
, ssbdiagnose usa il valore della variabile di ambiente SQLCMDUSER
. Se SQLCMDUSER
non è impostato, ssbdiagnose tenta di effettuare la connessione usando la modalità di autenticazione di Windows basata sull'account di Windows dell'utente che esegue ssbdiagnose.
Se si usa l'opzione -U
in combinazione con l'opzione -E
, viene generato un messaggio di errore. Se l'opzione -U
è seguita da più di un argomento, viene generato un messaggio di errore e il programma viene chiuso.
-P password
Specifica la password per l'ID di accesso -U
. Alle password viene applicata la distinzione tra maiuscole e minuscole. Se si usa l'opzione -U
e non viene utilizzato -P
, ssbdiagnose usa il valore della variabile di ambiente SQLCMDPASSWORD
. Se anche SQLCMDPASSWORD
non è impostato, ssbdiagnose richiede l'immissione di una password.
Attenzione
Quando si digita un comando SET SQLCMDPASSWORD
, la password sarà visibile a chiunque sia in grado di vedere il monitor.
Se l'opzione -P
viene specificata senza che sia indicata una password, ssbdiagnose usa la password predefinita (NULL).
Importante
Non usare una password vuota. Usare una password complessa. Per altre informazioni, vedere Strong Passwords.
La richiesta della password viene visualizzata mediante la stampa nella console, come indicato di seguito: Password:
L'input dell'utente è nascosto. L'input non viene pertanto visualizzato e il cursore rimane in posizione.
Se si usa l'opzione -P
in combinazione con l'opzione -E
, viene generato un messaggio di errore.
Se l'opzione -P
è seguita da più di un argomento, viene generato un messaggio di errore.
-S nome_server [ \nome_istanza ]
Specifica l'istanza del motore di database che contiene i servizi di Service Broker da analizzare.
Specificare server_name per connettersi all'istanza predefinita del motore di database in tale server. Specificare <server_name>\<instance_name>
per connettersi a un'istanza denominata del motore di database in tale server. Se non viene specificato -S
, ssbdiagnose usa il valore della variabile di ambiente SQLCMDSERVER
. Se SQLCMDSERVER
non è impostato, ssbdiagnose si connette all'istanza predefinita del motore di database sul computer locale.
-d database_name
Specifica il database che contiene i servizi di Service Broker da analizzare. Se il database non esiste, viene generato un messaggio di errore. Se l'opzione -d
non è specificata, per impostazione predefinita viene usato il database specificato nella proprietà default-database dell'account di accesso.
-l timeout_accesso
Specifica il numero di secondi prima del timeout di un tentativo di connessione a un server. Se -l
non viene specificato, ssbdiagnose usa il valore impostato per la variabile di ambiente SQLCMDLOGINTIMEOUT
. Se non è impostato neanche SQLCMDLOGINTIMEOUT
, il timeout predefinito è 30 secondi. Il valore del timeout deve essere un numero compreso tra 0 e 65.534. Se il valore fornito non è numerico o non è compreso nell'intervallo, ssbdiagnose genera un messaggio di errore. Il valore 0 specifica un timeout infinito.
-N opzione_crittografia
Specifica che la connessione è crittografata. I valori possibili sono Optional
, Mandatory
e Strict
. Il valore immesso rappresenta il livello di crittografia desiderato e minimo. Il valore predefinito è Mandatory
.
Con la crittografia Mandatory
selezionata, è consigliabile usare un certificato di un'autorità di certificazione attendibile. Per altre informazioni, vedere Requisiti certificato per SQL Server.
Per usare la crittografia rigorosa, il motore di database di SQL Server deve essere configurato con un certificato TLS, firmato da un'autorità di certificazione radice attendibile.
-i nomehost_nel_certificato
Specifica un nome comune (CN) o un nome alternativo del soggetto (SAN) diverso nel certificato del server da usare durante la convalida del certificato del server. Senza questa opzione, la convalida del certificato garantisce che il CN o il SAN nel certificato corrisponda al nome del server a cui ci si connette. Questo parametro può essere popolato quando il nome del server non corrisponde al CN o al SAN, ad esempio quando si usano alias DNS.
C-
Specifica che la connessione considera attendibile il certificato del server e ignora la convalida del certificato del server. Questa opzione non è necessaria quando vengono usati certificati del server attendibili.
-?
Visualizza la guida della riga di comando.
Osservazioni:
Usare ssbdiagnose per eseguire queste operazioni:
Verificare che non siano presenti errori di configurazione in un'applicazione di Service Broker appena configurata.
Verificare che non siano presenti errori di configurazione in seguito alla modifica della configurazione di un'applicazione di Service Broker esistente.
Verificare che non siano presenti errori di configurazione in seguito allo scollegamento di un database di Service Broker e al successivo collegamento a una nuova istanza del motore di database.
Ricercare eventuali errori di configurazione quando i messaggi non vengono trasmessi correttamente tra servizi.
Ottenere un report di qualsiasi errore che si verifica in un set di elementi di conversazione di Service Broker.
Report di configurazione
Per analizzare correttamente la configurazione usata da una conversazione, eseguire un report di configurazione di ssbdiagnose che usa le stesse opzioni della conversazione. Se per ssbdiagnose si specifica un livello di opzioni inferiore rispetto a quello usato dalla conversazione, ssbdiagnose potrebbe non segnalare le condizioni necessarie alla conversazione, mentre se si specifica un livello di opzioni superiore ssbdiagnosepotrebbe segnalare elementi non richiesti dalla conversazione. Una conversazione tra due servizi nello stesso database, ad esempio, può essere eseguita utilizzando l'opzione ENCRYPTION OFF
. Se si esegue ssbdiagnose per convalidare la configurazione tra i due servizi, ma si usa l'impostazione ENCRYPTION ON
predefinita, ssbdiagnose segnala che nel database manca una chiave master, che non è richiesta per la conversazione.
Il report di configurazione di ssbdiagnose analizza solo un servizio oppure una singola coppia di servizi di Service Broker ogni volta che viene eseguito. Per eseguire report su più coppie di servizi di Service Broker, compilare un file di comando con estensione cmd che chiama l'utilità ssbdiagnose.
Report di runtime
Quando viene specificata l'opzione -RUNTIME
, ssbdiagnose cerca in tutti i database specificati in runtimeconnectionoptions
e baseconnectionoptions
per generare un elenco degli ID di Service Broker. L'elenco completo di ID dipende dagli elementi specificati per le opzioni -NEW
e -ID
:
Se non viene specificato né
-NEW
né-ID
, nell'elenco vengono incluse tutte le conversazioni per tutti i database specificati nelle opzioni di connessione.Se l'opzione
-NEW
è specificata, ssbdiagnose include gli elementi per la prima conversazione avviata dopo l'esecuzione di ssbdiagnose, tra cui l'ID e gli handle di conversazione relativi sia agli endpoint di conversazione dell'Initiator e di destinazione.Se l'opzione
-ID
è specificata con un handle di conversazione, nell'elenco viene inserito solo tale handle.Se l'opzione
-ID
è specificata con un ID conversazione, all'elenco vengono aggiunti l'ID conversazione e gli handle per entrambi gli endpoint di conversazione.Se l'opzione
-ID
è specificata con un ID gruppo di conversazioni, all'elenco vengono aggiunti tutti gli ID conversazione e gli handle di conversazione di tale gruppo.
Nell'elenco non sono inclusi elementi da database non coperti dalle opzioni di connessione. Se ad esempio si usa l'opzione -ID
per specificare un ID conversazione, ma si specifica solo una clausola runtimeconnectionoptions
per il database Initiator e non il database di destinazione, ssbdiagnose non includerà l'handle di conversazione di destinazione nell'elenco degli ID, ma solo l'ID conversazione e l'handle di conversazione del servizio Initiator.
ssbdiagnose esegue il monitoraggio degli eventi di SQL Server Profiler dai database coperti da runtimeconnectionoptions
e baseconnectionoptions
. Cerca gli eventi di Service Broker che indicano la presenza di un errore in base a uno o più ID di Service Broker nell'elenco di runtime. ssbdiagnose cerca anche gli eventi di errore di Service Broker a livello di sistema non specificamente associati alcun gruppo di conversazioni.
Se ssbdiagnose rileva errori di conversazione, l'utilità tenterà di segnalare la causa radice degli eventi eseguendo anche un report di configurazione. ssbdiagnose usa i metadati presenti nei database per tentare di determinare le istanze, gli ID Service Broker, i database, i servizi e i contratti usati dalla conversazione ed esegue quindi un report di configurazione utilizzando tutte le informazioni disponibili.
Per impostazione predefinita, ssbdiagnose non segnala eventi di errore, ma solo i problemi sottostanti rilevati durante il controllo della configurazione. In questo modo la quantità di informazioni segnalate viene ridotta ed è possibile concentrarsi sui problemi di configurazione sottostanti. Per visualizzare gli eventi di errore rilevati da ssbdiagnose, è possibile specificare -SHOWEVENTS
.
Problemi riportati da ssbdiagnose
ssbdiagnose segnala tre classi di problemi. Nel file di output XML ogni classe di problemi viene segnalata come un tipo separato dell'elemento Issue. Di seguito sono riportati i tre tipi di problemi segnalati da ssbdiagnose :
Diagnosis
: riporta un problema di configurazione, ovvero problemi rilevati durante l'esecuzione di un reportCONFIGURATION
o durante la fase di configurazione di un reportRUNTIME
. ssbdiagnose segnala ogni problema di configurazione solo una volta.Event
: riporta un evento di SQL Server Profiler che indica che si è verificato un problema in una conversazione monitorata durante un reportRUNTIME
. ssbdiagnose segnala gli eventi ogni volta che vengono generati. Se il problema viene rilevato in più conversazioni, gli eventi possono essere segnalati più volte.Problem
: riporta un problema che impedisce a ssbdiagnose di completare un'analisi di configurazione o di monitorare le conversazioni.
Variabili di ambiente sqlcmd
L'utilità ssbdiagnose supporta le variabili di ambiente SQLCMDSERVER
, SQLCMDUSER
, SQLCMDPASSWORD
e SQLCMDLOGINTIMOUT
, usate anche dall'utilità sqlcmd. Per impostare le variabili di ambiente, è possibile usare il comando SET
del prompt dei comandi o il comando setvar
negli script Transact-SQL eseguiti tramite sqlcmd. Per altre informazioni sull'uso di setvar
in sqlcmd, vedere Utilizzo di sqlcmd con variabili di scripting.
Autorizzazioni
In ogni clausola connectionoptions
, l’account di accesso specificato con -E
o -U
deve essere un membro del ruolo predefinito del server sysadmin
nell'istanza specificata in -S
.
Esempi
Questa sezione include esempi d'uso di ssbdiagnose a un prompt dei comandi.
R. Controllare la configurazione di due servizi nello stesso database
Nell'esempio seguente viene illustrato come richiedere un report di configurazione quando si verificano le seguenti condizioni:
Il servizio Initiator e quello di destinazione si trovano nello stesso database.
Il database si trova nell'istanza predefinita del motore di database.
Le istanze si trovano nello stesso computer in cui viene eseguito ssbdiagnose.
L'utilità ssbdiagnose segnala la configurazione che usa il contratto DEFAULT
poiché l'opzione ON CONTRACT
non è specificata.
ssbdiagnose -E -d MyDatabase CONFIGURATION FROM SERVICE /test/initiator TO SERVICE /test/target
B. Controllare la configurazione di due servizi in computer separati che utilizzano un unico account di accesso
Nell'esempio seguente viene illustrato come richiedere un report di configurazione quando il servizio Initiator e quello di destinazione si trovano in computer separati, ma l'accesso ai servizi può essere eseguito utilizzando lo stesso account con autenticazione di Windows.
ssbdiagnose -E CONFIGURATION FROM SERVICE /text/initiator -S InitiatorComputer -d InitiatorDatabase TO SERVICE /test/target -S TargetComputer -d TargetDatabase ON CONTRACT TestContract
C. Controllare la configurazione di due servizi in computer separati che utilizzano account di accesso diversi
Nell'esempio seguente viene illustrato come richiedere un report di configurazione quando il servizio Initiator e quello di destinazione si trovano in computer separati ed è necessario utilizzare due account di accesso con autenticazione di SQL Server diversi per ogni istanza del motore di database.
ssbdiagnose CONFIGURATION FROM SERVICE /text/initiator
-S InitiatorComputer -U InitiatorLogin -p !wEx23Dvb
-d InitiatorDatabase TO SERVICE /test/target -S TargetComputer
-U TargetLogin -p ER!49jiy -d TargetDatabase ON CONTRACT TestContract
D. Controllare le configurazioni del servizio con mirroring in computer separati con crittografia anonima
Nell'esempio seguente viene illustrato come richiedere un report di configurazione quando il servizio Initiator e quello di destinazione si trovano in computer separati e viene eseguito il mirroring del servizio Initiator a un'istanza denominata. Il report verifica inoltre che i servizi siano configurati in modo da utilizzare la crittografia anonima.
ssbdiagnose -E CONFIGURATION FROM SERVICE /text/initiator
-S InitiatorComputer -d InitiatorDatabase MIRROR
-S MirrorComputer/MirrorInstance TO SERVICE /test/target
-S TargetComputer -d TargetDatabase ON CONTRACT TestContract ENCRYPTION ANONYMOUS
E. Controllare la configurazione di due contratti
Nell'esempio seguente viene illustrato come compilare un file di comando per richiedere un report di configurazione quando si verificano le seguenti condizioni:
Il servizio Initiator e quello di destinazione si trovano nello stesso database.
Il database si trova nell'istanza predefinita del motore di database.
L'istanza si trova nello stesso computer in cui viene eseguita ssbdiagnose .
Ogni volta che ssbdiagnose viene eseguita, segnala la configurazione per un contratto diverso tra gli stessi servizi.
ssbdiagnose -E -d MyDatabase CONFIGURATION FROM SERVICE
/test/initiator TO SERVICE /test/target ON CONTRACT PayRaiseContract
ssbdiagnose -E -d MyDatabase CONFIGURATION FROM SERVICE /test/initiator
TO SERVICE /test/target ON CONTRACT PromotionContract
F. Monitoraggio dello stato di una conversazione specifica nel computer locale con un timeout
L'esempio seguente illustra come monitorare una conversazione specifica per cui il servizio Initiator e quello di destinazione si trovano nello stesso database nell'istanza predefinita dello stesso computer in cui è in esecuzione ssbdiagnose. L'intervallo di timeout è impostato su 20 secondi.
ssbdiagnose -E -d TestDatabase RUNTIME -ID D68D77A9-B1CF-41BF-A5CE-279ABCAB140D -TIMEOUT 20
G. Monitoraggio dello stato di una conversazione eseguita tra due computer
Nell'esempio seguente viene illustrato come monitorare una conversazione specifica per cui il servizio Initiator e quello di destinazione si trovano in database diversi.
ssbdiagnose RUNTIME -ID D68D77A9-B1CF-41BF-A5CE-279ABCAB140D
-TIMEOUT 10 CONNECT TO -E -S InitiatorComputer/InitiatorInstance
-d InitiatorDatabase CONNECT TO -E -S TargetComputer/TargetInstance
-d TargetDatabase
H. Monitoraggio dello stato di una conversazione in due database nella stessa istanza
Nell'esempio seguente viene illustrato come monitorare una conversazione specifica per cui il servizio Initiator e quello di destinazione si trovano in database diversi della stessa istanza del motore di database. L'esempio usa baseconnectionoptions
per specificare le informazioni sull'istanza e sull'account di accesso e le due clausole CONNECT TO
per specificare i database. L'opzione -SHOWEVENTS
viene specificata in modo che tutti gli eventi in fase di esecuzione vengano inclusi nel report restituito.
ssbdiagnose -E -S TestComputer/DevTestInstance RUNTIME -SHOWEVENTS
-ID 5094d4a7-e38c-4c37-da37-1d58b1cb8455 -TIMEOUT 10 CONNECT TO
-d InitiatorDatabase CONNECT TO -d TargetDatabase
I. Monitoraggio dello stato di due conversazioni tra due database
Nell'esempio seguente viene illustrato come monitorare due conversazioni per cui il servizio Initiator e quello di destinazione si trovano in database diversi della stessa istanza del motore di database. L'esempio usa baseconnectionoptions
per specificare le informazioni sull'istanza e sull'account di accesso e le due clausole CONNECT TO
per specificare i database.
ssbdiagnose -E -S TestComputer/DevTestInstance RUNTIME
-ID 5094d4a7-e38c-4c37-da37-1d58b1cb8455
-ID 9b293be9-226b-4e22-e169-1d2c2c15be86 -TIMEOUT 10 CONNECT TO
-d InitiatorDatabase CONNECT TO -d TargetDatabase
J. Monitoraggio dello stato di tutte le conversazioni tra due database
Nell'esempio seguente viene illustrato come monitorare tutta la conversazione tra due database nella stessa istanza del motore di database. L'esempio usa baseconnectionoptions
per specificare le informazioni sull'istanza e sull'account di accesso e le due clausole CONNECT TO
per specificare i database.
ssbdiagnose -E -S TestComputer/DevTestInstance RUNTIME
-TIMEOUT 10 CONNECT TO -d InitiatorDatabase CONNECT TO
-d TargetDatabase
K. Ignorare errori specifici
Nell'esempio seguente viene illustrato come ignorare errori noti (303 e 304) in un'attivazione configurata attualmente in un sistema di prova.
ssbdiagnose -IGNORE 303 -IGNORE 304 -E -d TestDatabase
CONFIGURATION FROM SERVICE /test/initiator TO SERVICE /test/target
ON CONTRACT TextContract
.L Reindirizzare l'output XML di ssbdiagnose
L'esempio seguente illustra come richiedere che ssbdiagnose generi come output un file con estensione xml reindirizzato a un altro file. Il file TestDiag.xml può quindi essere aperto da un'applicazione per analizzare o segnalare i file con estensione xml di ssbdiagnose . In alternativa, è possibile visualizzarlo mediante un editor XML generico, ad esempio XML Notepad.
ssbdiagnose -XML -E -d MyDatabase CONFIGURATION FROM SERVICE
/test/initiator TO SERVICE /test/target > c:\MyDiagnostics\TestDiag.xml
M. Usare una variabile di ambiente.
L'esempio seguente imposta prima la variabile di ambiente SQLCMDSERVER
per specificare il nome del server, quindi esegue ssbdiagnose senza specificare -S
.
SET SQLCMDSERVER=MyComputer
ssbdiagnose -XML -E -d MyDatabase CONFIGURATION FROM SERVICE
/test/initiator TO SERVICE /test/target
Contenuto correlato
- Service Broker
- BEGIN DIALOG CONVERSATION (Transact-SQL)
- CREATE BROKER PRIORITY (Transact-SQL)
- CREATE CERTIFICATE (Transact-SQL)
- CREATE CONTRACT (Transact-SQL)
- CREATE ENDPOINT (Transact-SQL)
- CREATE MASTER KEY (Transact-SQL)
- CREATE MESSAGE TYPE (Transact-SQL)
- CREATE QUEUE (Transact-SQL)
- CREATE REMOTE SERVICE BINDING (Transact-SQL)
- CREATE ROUTE (Transact-SQL)
- CREATE SERVICE (Transact-SQL)
- RECEIVE (Transact-SQL)
- sys.transmission_queue (Transact-SQL)
- sys.conversation_endpoints (Transact-SQL)
- sys.conversation_groups (Transact-SQL)