Utilità ssbdiagnose (Service Broker)
L'utilità ssbdiagnose segnala la presenza di problemi in conversazioni di Service Broker o nella configurazione di 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'altra applicazione.
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 ]
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.ERROR: segnala solo i messaggi di errore.
WARNING: segnala i messaggi di errore e di avviso.
INFO: segnala i messaggi di errore, di avviso e informativi.
L'impostazione predefinita è WARNING.
-IGNORE error_id
Specifica che i messaggi o gli errori con error_id specificato non devono essere inclusi nei report. È possibile specificare -IGNORE più volte per eliminare più ID di messaggio.<baseconnectionoptions>
Specifica le informazioni di connessione di base utilizzate 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 in baseconnetionoptions vengono specificate sia -S che -d e in toconnetionoptions viene specificata solo -d, ssbdiagnose utilizza -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 singolo servizio.FROM SERVICE service_name
Specifica il servizio che avvia le conversazioni.<fromconnectionoptions>
Specifica le informazioni necessarie per connettersi al database che contiene il servizio Initiator. Se la clausola fromconnectionoptions non è specificata, ssbdiagnose utilizza le informazioni di connessione specificate in baseconnectionoptions per connettersi al database del servizio Initiator. In caso contrario, in fromconnectionoptions deve essere specificato il database che contiene il servizio Initiator. Se la clausola fromconnectionoptions non è specificata, il database del servizio Initiator deve essere indicato in baseconnectionoptions.TO SERVICE service_name[, broker_id ]
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 la clausola toconnectionoptions non è specificata, ssbdiagnose utilizza le informazioni di connessione specificate in baseconnectionoptions per connettersi al database di destinazione.MIRROR
Specifica che il servizio Service Broker associato è ospitato in un database con mirroring. L'utilità 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 la clausola mirrorconnectionoptions non è specificata, ssbdiagnose utilizza le informazioni di connessione specificate in baseconnectionoptions per connettersi a tale database.ON CONTRACT contract_name
Richiede che ssbdiagnose controlli solo le configurazioni che utilizzano il contratto specificato. Se ON CONTRACT non è specificato, ssbdiagnose fornisce 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 nell'istruzione GRANT SEND per il servizio di destinazione è stato specificato l'utente che avvia il dialogo.
OFF: non viene configurata alcuna sicurezza del dialogo. Questo significa che non è stato distribuito alcun certificato, che non è stata creata alcuna associazione al servizio remoto e che in GRANT SEND per il servizio Initiator è stato 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 che nell'istruzione GRANT SEND per il servizio di destinazione è stato specificato il ruolo public.
RUNTIME
Richiede un report dei problemi che causano errori di run-time per una conversazione Service Broker. Se non si specifica né -NEW né -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 run-time, ma solo i risultati dell'analisi di configurazione. Per includere gli errori di run-time nel report, utilizzare -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 dell'esecuzione 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 indicati 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 di un gruppo di conversazioni vengono restituiti alle 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 di un gruppo di conversazioni vengono indicati 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 di conversazione vengono indicati nella colonna conversation_id della vista del catalogo sys.conversation_endpoints.
-TIMEOUT timeout_interval
Specifica il numero di secondi per l'esecuzione un report RUNTIME. Se l'opzione -TIMEOUT non viene specificata, il report in fase di esecuzione viene eseguito per un periodi di tempo illimitato. L'opzione -TIMEOUT viene utilizzata in report RUNTIME, non in report CONFIGURATION. Utilizzare CTRL + C per uscire da ssbdiagnose se -TIMEOUT non è stata specificata oppure per terminare l'esecuzione di un report in fase di esecuzione prima che scada l'intervallo di timeout. Il valore di timeout_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 la clausola runtimeconnectionoptions non è specificata, ssbdiagnose utilizza le informazioni di connessione specificate in baseconnectionoptions.–E
Apre una connessione con autenticazione di Windows a un'istanza del Motore di database utilizzando l'account di Windows corrente come ID di accesso. L'account di accesso deve essere 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 specificata né -E né -U, ssbdiagnose utilizza il valore della variabile di ambiente SQLCMDUSER. Se SQLCMDUSER non è impostata, ssbdiagnose utilizza l'autenticazione di Windows.
Se si utilizza 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 utilizzando l'ID di accesso specificato. L'account di accesso deve essere membro del ruolo predefinito del server sysadmin.Se non viene specificata né -E né -U, ssbdiagnose utilizza il valore della variabile di ambiente SQLCMDUSER. Se SQLCMDUSER non è impostata, ssbdiagnose tenta di effettuare la connessione utilizzando la modalità di autenticazione di Windows in base sull'account di Windows dell'utente che esegue ssbdiagnose.
Se si utilizza 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 indicato da -U. Alle password viene applicata la distinzione tra maiuscole e minuscole. Se si utilizza l'opzione -U senza utilizzare -P, ssbdiagnose utilizza il valore della variabile di ambiente SQLCMDPASSWORD. Se SQLCMDPASSWORD non è impostata, ssbdiagnose richiede l'immissione di una password.Nota sulla sicurezza 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 utilizza la password predefinita (NULL).
Nota sulla sicurezza Non utilizzare una password vuota. Utilizzare una password complessa. Per ulteriori informazioni, vedere Password complesse.
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 utilizza 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 server_name[\instance_name]
Specifica l'istanza del Motore di database che contiene i servizi di Service Broker da analizzare.Per connettersi all'istanza predefinita del Motore di database in un determinato server, specificare server_name . Per connettersi invece a un'istanza denominata del Motore di database nel server, specificare server_name**\**instance_name . Se -S viene omesso, ssbdiagnose utilizza il valore della variabile di ambiente SQLCMDSERVER. Se SQLCMDSERVER non è impostata, 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 utilizzato il database specificato nella proprietà relativa al database predefinito dell'account di accesso.-l login_timeout
Specifica il numero di secondi prima del timeout di un tentativo di connessione. Se l'opzione -l non è specificata, ssbdiagnose utilizza il valore impostato per la variabile di ambiente SQLCMDLOGINTIMEOUT. Se SQLCMDLOGINTIMEOUT non è impostata, il timeout predefinito è di trenta secondi. Il valore del timeout deve essere un numero compreso tra 0 e 65.534. Se il valore specificato non è numerico o non è compreso in tale intervallo, ssbdiagnose genera un messaggio di errore. Il valore 0 specifica un timeout infinito.-?
Visualizza la guida della riga di comando.
Osservazioni
Utilizzare ssbdiagnose per effettuare le seguenti 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 utilizzata da una conversazione, eseguire un report di configurazione di ssbdiagnose che utilizza le stesse opzioni della conversazione. Se per ssbdiagnose si specifica un livello di opzioni inferiore rispetto a quello utilizzato dalla conversazione, ssbdiagnose potrebbe non segnalare le condizioni necessarie alla conversazione, mentre se si specifica un livello di opzioni superiore ssbdiagnose potrebbe segnalare elementi non richiesti dalla conversazione. Una conversazione tra due servizi nello stesso database, ad esempio, può essere eseguita utilizzando l'opzione ENCPRYPTION OFF. Se si esegue ssbdiagnose per convalidare la configurazione tra i due servizi, ma si utilizza 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 in fase di esecuzione
Quando l'opzione -RUNTIME è specificata, ssbdiagnose esegue una ricerca in tutti i database specificati in runtimeconnectionoptions e baseconnectionoptions per compilare un elenco di ID di Service Broker. L'elenco completo degli ID dipende dagli elementi specificati per le opzioni -NEW e -ID.
Se non viene specificata 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 di conversazione, all'elenco vengono aggiunti tale ID e gli handle per entrambi gli endpoint relativi.
Se l'opzione -ID è specificata con un ID di un gruppo di conversazioni, all'elenco vengono aggiunti tutti gli ID 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 utilizza l'opzione -ID per specificare un ID di conversazione, ma si specifica solo una clausola runtimeconnectionoptions per il database dell'Initiator e non il database di destinazione, ssbdiagnose non includerà l'handle di conversazione di destinazione nell'elenco degli ID, ma solo l'ID di conversazione e l'handle di conversazione dell'Initiator.
ssbdiagnose esegue il monitoraggio degli eventi di SQL Server Profiler dai database coperti da runtimeconnectionoptions e baseconnectionoptions e ricerca gli eventi di Service Broker che indicano che si è verificato un errore in uno o più ID di Service Broker presenti nell'elenco in fase di esecuzione. ssbdiagnose ricerca inoltre eventi di errore di Service Broker a livello di sistema non associati in modo specifico ad 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 utilizza i metadati presenti nei database per tentare di determinare le istanze e gli ID, i database, i servizi e i contratti di Service Broker utilizzati 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 segnalati di 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 vengono riportati i tre tipi di problemi segnalati da ssbdiagnose:
Diagnosi
Segnala un problema di configurazione, ovvero problemi rilevati durante l'esecuzione di un report CONFIGURATION o durante la fase di configurazione di un report RUNTIME. ssbdiagnose segnala ogni problema di configurazione solo una volta.Evento
Segnala un evento di SQL Server Profiler che indica che si è verificato un problema in una conversazione monitorata durante un report RUNTIME. ssbdiagnose segnala gli eventi ogni volta che vengono generati. Se il problema viene rilevato in più conversazioni, gli eventi possono essere segnalati più volte.Problema
Segnala 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, utilizzate anche da sqlcmd. Per impostare le variabili di ambiente, è possibile utilizzare il comando SET del prompt dei comandi o il comando setvar negli script Transact-SQL eseguiti tramite sqlcmd. Per ulteriori informazioni su come utilizzare setvar in sqlcmd, vedere Utilizzo di sqlcmd con variabili di scripting.
Autorizzazioni
In ciascuna clausola connectionoptions, l'account di accesso specificato mediante -E o -U deve essere un membro del ruolo predefinito del server sysadmin nell'istanza specificata in -S.
Esempi
In questa sezione sono contenuti esempi relativi all'utilizzo di ssbdiagnose a un prompt dei comandi.
A.Controllo della 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 ssbdiagnose viene eseguita.
L'utilità ssbdiagnose segnala la configurazione che utilizza il contratto DEFAULT poiché l'opzione ON CONTRACT non è specificata.
ssbdiagnose -E -d MyDatabase CONFIGURATION FROM SERVICE /test/initiator TO SERVICE /test/target
B.Controllo della 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.Controllo della 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.Controllo delle 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.Controllo della 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 ssbdiagnose viene eseguita.
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
Nell'esempio seguente viene illustrato 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. Nell'esempio vengono utilizzate l'opzione baseconnectionoptions per specificare le informazioni sull'istanza e sull'account di accesso e 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. Nell'esempio vengono utilizzate la clausola baseconnectionoptions per specificare le informazioni sull'istanza e sull'account di accesso e 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. Nell'esempio vengono utilizzate la clausola baseconnectionoptions per specificare le informazioni sull'istanza e sull'account di accesso e 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.Reindirizzamento dell'output XML di ssbdiagnose
Nell'esempio seguente viene illustrato come richiedere che ssbdiagnose generi come output un file XML reindirizzato a un altro file. Il file TestDiag.xml può quindi essere aperto in un'applicazione per analizzare o segnalare file 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.Utilizzo di una variabile di ambiente
Nell'esempio seguente viene innanzitutto impostata la variabile di ambiente SQLCMDSERVER per specificare il nome del server, quindi viene eseguita ssbdiagnose senza specificare -S.
SET SQLCMDSERVER=MyComputer
ssbdiagnose -XML -E -d MyDatabase CONFIGURATION FROM SERVICE
/test/initiator TO SERVICE /test/target
Vedere anche
Riferimento
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 REMOTE SERVICE BINDING (Transact-SQL)
sys.transmission_queue (Transact-SQL)
sys.conversation_endpoints (Transact-SQL)
sys.conversation_groups (Transact-SQL)