Utilità ssbdiagnose (Service Broker)ssbdiagnose Utility (Service Broker)

L'utilità ssbdiagnose segnala la presenza di problemi in conversazioni di Service BrokerService Broker o nella configurazione di servizi di Service BrokerService Broker .The ssbdiagnose utility reports issues in Service BrokerService Broker conversations or the configuration of Service BrokerService Broker services. I controlli della configurazione possono essere eseguiti per due servizi oppure per un unico servizio.Configuration checks can be made for either two services or a single service. 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.Issues are reported either in the command prompt window as human-readable text, or as formatted XML that can be redirected to a file or another program.

SintassiSyntax


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 comandoCommand Line Options

-XML-XML
Specifica che l'output di ssbdiagnose deve essere generato come file XML formattato.Specifies that the ssbdiagnose output be generated as formatted XML. che può essere reindirizzato a un file oppure a un'altra applicazione.This can be redirected to a file or to another application. Se l'opzione -XML non viene specificata, l'output di ssbdiagnose viene formattato come testo leggibile.If -XML is not specified, the ssbdiagnose output is formatted as human-readable text.

-LEVEL { ERROR | WARNING | INFO}-LEVEL { ERROR | WARNING | INFO}
Specifica il livello dei messaggi da segnalare.Specifies the level of messages to report.

ERROR: segnala solo i messaggi di errore.ERROR: report only error messages.

WARNING: segnala i messaggi di errore e di avviso.WARNING: report error and warning messages.

INFO: segnala i messaggi di errore, di avviso e informativi.INFO: report error, warning, and informational messages.

L'impostazione predefinita è WARNING.The default setting is WARNING.

-IGNORE error_id-IGNORE error_id
Specifica che i messaggi o gli errori con il valore error_id specificato non devono essere inclusi nei report.Specifies that errors or messages that have the specified error_id not be included in reports. È possibile specificare -IGNORE più volte per eliminare più ID messaggio.You can specify -IGNORE multiple times to suppress multiple message IDs.

<baseconnectionoptions ><baseconnectionoptions>
Specifica le informazioni di connessione di base usate da ssbdiagnose quando le opzioni di connessione non sono incluse in una clausola specifica.Specifies the base connection information that is used by ssbdiagnose when connection options are not included in a specific clause. Le informazioni di connessione indicate in una clausola specifica prevalgono sulle informazioni specificate in baseconnectionoption .The connection information that is given in a specific clause overrides the baseconnectionoption information. Questa situazione viene gestita separatamente per ciascun parametro.This is performed separately for each parameter. Ad esempio, se vengono specificati -S e -d in baseconnetionoptionse solo -d è specificato in toconnetionoptions, ssbdiagnose userà -S di baseconnetionoptions e -d di toconnetionoptions.For example, if both -S and -d are specified in baseconnetionoptions, and only -d is specified in toconnetionoptions, ssbdiagnose uses -S from baseconnetionoptions and -d from toconnetionoptions.

CONFIGURATIONCONFIGURATION
Richiede un report degli errori di configurazione tra una coppia di servizi di Service BrokerService Broker o per un singolo servizio.Requests a report of configuration errors between a pair of Service BrokerService Broker services, or for a single service.

FROM SERVICE service_nameFROM SERVICE service_name
Specifica il servizio che avvia le conversazioni.Specifies the service that initiates conversations.

<fromconnectionoptions ><fromconnectionoptions>
Specifica le informazioni necessarie per connettersi al database che contiene il servizio Initiator.Specifies the information that is required to connect to the database that holds the initiator service. Se fromconnectionoptions non viene specificato, ssbdiagnose usa le informazioni di connessione di baseconnectionoptions per la connessione al database del servizio Initiator.If fromconnectionoptions is not specified, ssbdiagnose uses the connection information from baseconnectionoptions to connect to the initiator database. Se specificato, fromconnectionoptions deve includere il database che contiene il servizio Initiator.If fromconnectionoptions is specified it must include the database that contains the initiator service. Se fromconnectionoptions non è specificato, baseconnectionoptions deve specificare il database del servizio Initiator.If fromconnectionoptions is not specified, the baseconnectionoptions must specify the initiator database.

TO SERVICE service_name[, broker_id ]TO SERVICE service_name[, broker_id ]
Specifica il servizio che rappresenta la destinazione delle conversazioni.Specifies the service that is the target for the conversations.

service_name: specifica il nome del servizio di destinazione.service_name: specifies the name of the target service.

broker_id: specifica l'ID di Service BrokerService Broker che identifica il database di destinazione.broker_id: specifies the Service BrokerService Broker ID that identifies the target database. broker_id è un GUID.broker_id is a GUID. Per individuarlo, è possibile eseguire la query seguente sul database di destinazione:You can run the following query in the target database to find it:

SELECT service_broker_guid  
FROM sys.databases  
WHERE database_id = DB_ID();  

<toconnectionoptions ><toconnectionoptions>
Specifica le informazioni necessarie per connettersi al database che contiene il servizio di destinazione.Specifies the information that is required to connect the database that holds the target service. Se toconnectionoptions non viene specificato, ssbdiagnose usa le informazioni di connessione di baseconnectionoptions per la connessione al database di destinazione.If toconnectionoptions is not specified, ssbdiagnose uses the connection information from baseconnectionoptions to connect to the target database.

MIRRORMIRROR
Specifica che il servizio Service BrokerService Broker associato è ospitato in un database con mirroring.Specifies that the associated Service BrokerService Broker service is hosted in a mirrored database. ssbdiagnose verifica che la route per il servizio sia una route con mirroring, in cui MIRROR_ADDRESS è stato specificato in CREATE ROUTE.ssbdiagnose verifies that the route to the service is a mirrored route, where MIRROR_ADDRESS was specified on CREATE ROUTE.

<mirrorconnectionoptions ><mirrorconnectionoptions>
Specifica le informazioni necessarie per connettersi al database mirror.Specifies the information that is required to connect to the mirror database. Se mirrorconnectionoptions non viene specificato, ssbdiagnose usa le informazioni di connessione di baseconnectionoptions per la connessione al database mirror.If mirrorconnectionoptions is not specified, ssbdiagnose uses the connection information from baseconnectionoptions to connect to the mirror database.

ON CONTRACT contract_nameON CONTRACT contract_name
Richiede che ssbdiagnose controlli solo le configurazioni che usano il contratto specificato.Requests that ssbdiagnose only check configurations that use the specified contract. Se ON CONTRACT non è specificato, ssbdiagnose offre informazioni solo sul contratto denominato DEFAULT.If ON CONTRACT is not specified, ssbdiagnose reports on the contract named DEFAULT.

ENCRYPTION { ON | OFF | ANONYMOUS }ENCRYPTION { ON | OFF | ANONYMOUS }
Richiede di verificare che il dialogo sia configurato correttamente per il livello di crittografia specificato:Requests verification that the dialog is correctly configured for the specified level of encryption:

ON: impostazione predefinita.ON: Default setting. Viene configurata la sicurezza completa del dialogo.Full dialog security is configured. 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.Certificates have been deployed on both sides of the dialog, a remote service binding is present, and the GRANT SEND statement for the target service specified the initiator user.

OFF: non viene configurata alcuna sicurezza del dialogo.OFF: No dialog security is configured. Questo significa che non è stato distribuito alcun certificato, non è stata creata alcuna associazione al servizio remoto e in GRANT SEND per il servizio Initiator è stato specificato il ruolo public .No certificates have been deployed, no remote service binding was created, and the GRANT SEND for the initiator service specified the public role.

ANONYMOUS: viene configurata la sicurezza anonima del dialogo.ANONYMOUS: Anonymous dialog security is configured. Questo significa che è stato distribuito solo un certificato, che nell'associazione al servizio remoto è stata specificata la clausola anonima e che in GRANT SEND per il servizio di destinazione è stato specificato il ruolo public .One certificate has been deployed, the remote service binding specified the anonymous clause, and the GRANT SEND for the target service specified the public role.

RUNTIMERUNTIME
Richiede che venga generato un report di problemi che provocano errori di run-time per una conversazione di Service BrokerService Broker .Requests a report of issues that cause runtime errors for a Service BrokerService Broker conversation. 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.If neither -NEW or -ID are specified, ssbdiagnose monitors all conversations in all databases specified in the connection options. Se viene specificata l'opzione -NEW o -ID , ssbdiagnose compila un elenco degli ID specificati nei parametri.If -NEW or -ID are specified, ssbdiagnose builds a list of the IDs specified in the parameters.

Durante l'esecuzione, ssbdiagnose registra tutti gli eventi di SQL Server ProfilerSQL Server Profiler che indicano errori di run-time,While ssbdiagnose is running, it records all SQL Server ProfilerSQL Server Profiler events that indicate runtime errors. ovvero gli eventi che si verificano per gli ID specificati più quelli a livello di sistema.It records the events that occur for the specified IDs, plus system-level events. Se vengono rilevati errori di run-time, ssbdiagnose esegue un report di configurazione sulla configurazione associata.If runtime errors are encountered, ssbdiagnose runs a configuration report on the associated configuration.

Per impostazione predefinita, nel report di output non vengono inclusi gli errori di run-time, ma solo i risultati dell'analisi di configurazione.By default, runtime errors are not included in the output report, only the results of the configuration analysis. Per includere gli errori di runtime nel report, usare -SHOWEVENTS .Use -SHOWEVENTS to have the runtime errors included in the report.

-SHOWEVENTS-SHOWEVENTS
Specifica che ssbdiagnose deve includere eventi di SQL Server ProfilerSQL Server Profiler durante la generazione di un report RUNTIME.Specifies that ssbdiagnose report SQL Server ProfilerSQL Server Profiler events during a RUNTIME report. Vengono segnalati solo gli eventi considerati come condizioni di errore.Only events that are considered error conditions are reported. Per impostazione predefinita, ssbdiagnose esegue solo il monitoraggio degli eventi di errore, ma non li inserisce nell'output.By default, ssbdiagnose only monitors error events; it does not report them in the output.

-NEW-NEW
Richiede il monitoraggio in fase di esecuzione della prima conversazione iniziata dopo l'avvio di ssbdiagnose .Requests runtime monitoring of the first conversation that begins after ssbdiagnose starts running.

-ID-ID
Richiede il monitoraggio in fase di esecuzione degli elementi di conversazione specificati.Requests runtime monitoring of the specified conversation elements. È possibile specificare l'opzione -ID più volte.You can specify -ID multiple times.

Se si specifica un handle di conversazione, vengono segnalati solo gli eventi correlati all'endpoint di conversazione associato.If you specify a conversation handle, only events associated with the associated conversation endpoint are reported. 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,If you specify a conversation ID, all events for that conversation and its initiator and target endpoints are reported. 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.If a conversation group ID is specified, all events for all conversations and endpoints in the conversation group are reported.

conversation_handleconversation_handle
Identificatore univoco di un endpoint di conversazione in un'applicazione.A unique identifier that identifies a conversation endpoint in an application. 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.Conversation handles are unique to one endpoint of a conversation, the initiator and target endpoints have separate conversation handles.

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 .Conversation handles are returned to applications by the @dialog_handle parameter of the BEGIN DIALOG statement, and the conversation_handle column in the result set of a RECEIVE statement.

Gli handle di conversazione vengono indicati nella colonna conversation_handle delle viste del catalogo sys.transmission_queue e sys.conversation_endpoints .Conversation handles are reported in the conversation_handle column of the sys.transmission_queue and sys.conversation_endpoints catalog views.

conversation_group_idconversation_group_id
Identificatore univoco di un gruppo di conversazioni.The unique identifier that identifies a conversation group.

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 .Conversation group IDs are returned to applications by the @conversation_group_id parameter of the GET CONVERSATION GROUP statement and the conversation_group_id column in the result set of a RECEIVE statement.

Gli ID gruppo di conversazioni vengono indicati nelle colonne conversation_group_id delle viste del catalogo sys.conversation_groups e sys.conversation_endpoints .Conversation group IDs are reported in the conversation_group_id columns of the sys.conversation_groups and sys.conversation_endpoints catalog views.

conversation_idconversation_id
Identificatore univoco di una conversazione.The unique identifier that identifies a conversation. Gli ID di conversazione sono gli stessi per sia gli endpoint dell'Initiator che per quelli di destinazione di una conversazione.Conversation IDs are the same for both the initiator and target endpoints of a conversation.

Gli ID conversazione vengono indicati nella colonna conversation_id della vista del catalogo sys.conversation_endpoints .Conversation IDs are reported in the conversation_id column of the sys.conversation_endpoints catalog view.

-TIMEOUT timeout_interval-TIMEOUT timeout_interval
Specifica il numero di secondi per l'esecuzione un report RUNTIME .Specifies the number of seconds for a RUNTIME report to run. Se l'opzione -TIMEOUT non viene specificata, il report di runtime viene eseguito per un periodo di tempo illimitato.If -TIMEOUT is not specified the runtime report runs indefinitely. - TIMEOUT viene usata solo nei report RUNTIME e non nei report CONFIGURATION .-TIMEOUT is used only on RUNTIME reports, not CONFIGURATION reports. Usare CTRL + C per uscire da ssbdiagnose se -TIMEOUT non è stata specificata oppure per terminare un report di runtime prima che scada l'intervallo di time-out.Use ctrl + C to quit ssbdiagnose if -TIMEOUT was not specified or to end a runtime report before the time-out interval expires. Il valoretimeout_interval deve essere un numero compreso tra 1 e 2,147,483,647.timeout_interval must be a number between 1 and 2,147,483,647.

<runtimeconnectionoptions ><runtimeconnectionoptions>
Specifica le informazioni di connessione per i database che contengono i servizi associati agli elementi di conversazione monitorati.Specifies the connection information for the databases that contain the services associated with conversation elements being monitored. Se tutti i servizi si trovano nello stesso database, è necessario specificare solo una clausola CONNECT TO ,If all the services are in the same database, you only have to specify one CONNECT TO clause. mentre se i servizi si trovano in database separati è necessario specificare una clausola CONNECT TO per ogni database.If the services are in separate databases you must supply a CONNECT TO clause for each database. Se runtimeconnectionoptions non viene specificato, ssbdiagnose usa le informazioni di connessione di baseconnectionoptions.If runtimeconnectionoptions is not specified, ssbdiagnose uses the connection information from baseconnectionoptions.

–E–E
Apre una connessione con autenticazione di Windows a un'istanza del Motore di databaseDatabase Engine usando l'account di Windows corrente come ID di accesso.Open a Windows Authentication connection to an instance of the Motore di databaseDatabase Engine by using your current Windows account as the login ID. Le credenziali di accesso devono corrispondere a un membro del ruolo predefinito del server sysadmin .The login must be a member of the sysadmin fixed-server role.

L'opzione -E consente di ignorare le impostazioni relative all'utente e alla password delle variabili di ambiente SQLCMDUSER e SQLCMDPASSWORD.The -E option ignores the user and password settings of the SQLCMDUSER and SQLCMDPASSWORD environment variables.

Se non viene specificata né -E-U , ssbdiagnose usa il valore della variabile di ambiente SQLCMDUSER.If neither -E nor -U is specified, ssbdiagnose uses the value from the SQLCMDUSER environment variable. Se SQLCMDUSER non è impostata, ssbdiagnose usa l'autenticazione di Windows.If SQLCMDUSER is not set either, ssbdiagnose uses Windows Authentication.

Se si usa l'opzione -E in combinazione con l'opzione -U o con l'opzione -P , viene generato un messaggio di errore.If the -E option is used together with the -U option or the -P option, an error message is generated.

-U login_id-U login_id
Apre una connessione con autenticazione di SQL ServerSQL Server tramite l'ID di accesso specificato.Open a SQL ServerSQL Server Authentication connection by using the specified login ID. Le credenziali di accesso devono corrispondere a un membro del ruolo predefinito del server sysadmin .The login must be a member of the sysadmin fixed-server role.

Se non viene specificata né -E-U , ssbdiagnose usa il valore della variabile di ambiente SQLCMDUSER.If neither -E nor -U is specified, ssbdiagnose uses the value from the SQLCMDUSER environment variable. Se SQLCMDUSER non è impostata, ssbdiagnose tenta di effettuare la connessione usando la modalità di autenticazione di Windows basata sull'account di Windows dell'utente che esegue ssbdiagnose.If SQLCMDUSER is not set either, ssbdiagnose tries to connect by using Windows Authentication mode based on the Windows account of the user who is running ssbdiagnose.

Se si usa l'opzione -U in combinazione con l'opzione -E , viene generato un messaggio di errore.If the -U option is used together with the -E option, an error message is generated. Se l'opzione –U è seguita da più di un argomento, viene generato un messaggio di errore e il programma viene chiuso.If the –U option is followed by more than one argument, an error message is generated and the program exits.

-P password-P password
Specifica la password per l'ID di accesso -U .Specifies the password for the -U login ID. Alle password viene applicata la distinzione tra maiuscole e minuscole.Passwords are case sensitive. Se si usa l'opzione -U senza usare -P , ssbdiagnose usa il valore della variabile di ambiente SQLCMDPASSWORD.If the -U option is used and the -P option is not used, ssbdiagnose uses the value from the SQLCMDPASSWORD environment variable. Se SQLCMDPASSWORD non è impostata, ssbdiagnose richiede l'immissione di una password.If SQLCMDPASSWORD is not set either, ssbdiagnose prompts the user for a password.

Importante

Quando si digita un comando SET SQLCMDPASSWORD, la password sarà visibile a chiunque sia in grado di vedere il monitor.When you type a SET SQLCMDPASSWORD command, your password will be visible to anyone who can see your monitor.

Se l'opzione -P viene specificata senza che sia indicata una password, ssbdiagnose usa la password predefinita (NULL).If the -P option is specified without a password ssbdiagnose uses the default password (NULL).

Importante

Non usare una password vuota.Do not use a blank password. Usare una password complessa.Use a strong password.Per ulteriori informazioni, vedere Strong Passwords. For more information, see Strong Passwords.

La richiesta della password viene visualizzata mediante la stampa nella console, come indicato di seguito: Password:The password prompt is displayed by printing the password prompt to the console, as follows: Password:

L'input dell'utente è nascosto.User input is hidden. L'input non viene pertanto visualizzato e il cursore rimane in posizione.This means that nothing is displayed and the cursor stays in position.

Se si usa l'opzione -P in combinazione con l'opzione -E , viene generato un messaggio di errore.If the -P option is used with the -E option, an error message is generated.

Se l'opzione -P è seguita da più di un argomento, viene generato un messaggio di errore.If the -P option is followed by more than one argument, an error message is generated.

-S server_name[\instance_name]-S server_name[\instance_name]
Specifica l'istanza del Motore di databaseDatabase Engine che contiene i servizi di Service BrokerService Broker da analizzare.Specifies the instance of the Motore di databaseDatabase Engine that holds the Service BrokerService Broker services to be analyzed.

Specificare server_name per connettersi all'istanza predefinita del Motore di databaseDatabase Engine in tale server.Specify server_name to connect to the default instance of the Motore di databaseDatabase Engine on that server. Specificare server_name\instance_name per connettersi a un'istanza denominata del Motore di databaseDatabase Engine in tale server.Specify server_name\instance_name to connect to a named instance of the Motore di databaseDatabase Engine on that server. Se -S non viene specificata, ssbdiagnose usa il valore della variabile di ambiente SQLCMDSERVER.If -S is not specified, ssbdiagnose uses the value of the SQLCMDSERVER environment variable. Se SQLCMDSERVER non è impostata, ssbdiagnose si connette all'istanza predefinita del Motore di databaseDatabase Engine sul computer locale.If SQLCMDSERVER is not set either, ssbdiagnose connects to the default instance of the Motore di databaseDatabase Engine on the local computer.

-d database_name-d database_name
Specifica il database che contiene i servizi di Service BrokerService Broker da analizzare.Specifies the database that holds the Service BrokerService Broker services to be analyzed. Se il database non esiste, viene generato un messaggio di errore.If the database does not exist, an error message is generated. Se l'opzione -d non è specificata, per impostazione predefinita viene usato il database specificato nella proprietà default-database dell'account di accesso.If -d is not specified, the default is the database specified in the default-database property for your login.

-l login_timeout-l login_timeout
Specifica il numero di secondi prima del timeout di un tentativo di connessione.Specifies the number of seconds before an attempt to connect to a server times out. Se l'opzione -l non è specificata, ssbdiagnose usa il valore impostato per la variabile di ambiente SQLCMDLOGINTIMEOUT.If -l is not specified, ssbdiagnose uses the value set for the SQLCMDLOGINTIMEOUT environment variable. Se SQLCMDLOGINTIMEOUT non è impostata, il timeout predefinito è di trenta secondi.If SQLCMDLOGINTIMEOUT is not set either, the default time-out is thirty seconds. Il valore del timeout deve essere un numero compreso tra 0 e 65.534.The login time-out must be a number between 0 and 65534. Se il valore specificato non è numerico o non è compreso nell'intervallo, ssbdiagnose genera un messaggio di errore.If the value that is supplied is not numeric or does not fall into that range, ssbdiagnose generates an error message. Il valore 0 specifica un timeout infinito.A value of 0 specifies time-out to be infinite.

-?-?
Visualizza la guida della riga di comando.Displays command line help.

OsservazioniRemarks

Usare ssbdiagnose per eseguire queste operazioni:Use ssbdiagnose to do the following:

  • Verificare che non siano presenti errori di configurazione in un'applicazione di Service BrokerService Broker appena configurata.Confirm that there are no configuration errors in a newly configured Service BrokerService Broker application.

  • Verificare che non siano presenti errori di configurazione in seguito alla modifica della configurazione di un'applicazione di Service BrokerService Broker esistente.Confirm that there are no configuration errors after changing the configuration of an existing Service BrokerService Broker application.

  • Verificare che non siano presenti errori di configurazione in seguito allo scollegamento di un database di Service BrokerService Broker e al successivo collegamento a una nuova istanza del Motore di databaseDatabase Engine.Confirm that there are no configuration errors after a Service BrokerService Broker database is detached and then reattached to a new instance of the Motore di databaseDatabase Engine.

  • Ricercare eventuali errori di configurazione quando i messaggi non vengono trasmessi correttamente tra servizi.Research whether there are configuration errors when messages are not successfully transmitted between services.

  • Ottenere un report di qualsiasi errore che si verifica in un set di elementi di conversazione di Service BrokerService Broker .Get a report of any errors that occur in a set of Service BrokerService Broker conversation elements.

Report di configurazioneConfiguration Reporting

Per analizzare correttamente la configurazione usata da una conversazione, eseguire un report di configurazione di ssbdiagnose che usa le stesse opzioni della conversazione.To correctly analyze the configuration used by a conversation, run a ssbdiagnose configuration report that uses the same options that are used by the conversation. 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,If you specify a lower level of options for ssbdiagnose than are used by the conversation, ssbdiagnose might not report conditions that are required by the conversation. mentre se si specifica un livello di opzioni superiore ssbdiagnosepotrebbe segnalare elementi non richiesti dalla conversazione.If you specify a higher level of options for ssbdiagnose, it might report items that are not required by the conversation. Una conversazione tra due servizi nello stesso database, ad esempio, può essere eseguita utilizzando l'opzione ENCPRYPTION OFF.For example, a conversation between two services in the same database can be run with ENCPRYPTION 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,If you run ssbdiagnose to validate the configuration between the two services, but use the default ENCRYPTION ON setting, ssbdiagnose reports that the database is missing a master key. che non è richiesta per la conversazione.A master key is not required for the conversation.

Il report di configurazione di ssbdiagnose analizza solo un servizio oppure una singola coppia di servizi di Service BrokerService Broker ogni volta che viene eseguito.The ssbdiagnose configuration report analyzes only one Service BrokerService Broker service or a single pair of services every time it is run. Per eseguire report su più coppie di servizi di Service BrokerService Broker , compilare un file di comando con estensione cmd che chiama l'utilità ssbdiagnose .To report on multiple pairs of Service BrokerService Broker services, build a .cmd command file that calls ssbdiagnose multiple times.

Report in fase di esecuzioneRuntime Reporting

Quando viene specificata l'opzione -RUNTIME, ssbdiagnose cerca in tutti i database specificati in runtimeconnectionoptions e baseconnectionoption s per generare un elenco degli ID di Service BrokerService Broker .When -RUNTIME is specified, ssbdiagnose searches all databases specified in runtimeconnectionoptions and baseconnectionoptions to build a list of Service BrokerService Broker IDs. L'elenco completo di ID dipende dagli elementi specificati per le opzioni -NEW e -ID:The full list of IDs built depends on what is specified for -NEW and -ID:

  • Se non viene specificata né -NEW-ID , nell'elenco vengono incluse tutte le conversazioni per tutti i database specificati nelle opzioni di connessione.If neither -NEW or -ID are specified, the list includes all conversations for all databases specified in the connection options.

  • Se l'opzione -NEW è specificata, ssbdiagnose include gli elementi per la prima conversazione avviata dopo l'esecuzione di ssbdiagnose ,If -NEW is specified, ssbdiagnose includes the elements for the first conversation that starts after ssbdiagnose is run. tra cui l'ID e gli handle di conversazione relativi sia agli endpoint di conversazione dell'Initiator e di destinazione.This includes the conversation ID and the conversation handles for both the target and initiator conversation endpoints.

  • Se l'opzione -ID è specificata con un handle di conversazione, nell'elenco viene inserito solo tale handle.If -ID is specified with a conversation handle, only that handle is included in the list.

  • 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.If -ID is specified with a conversation ID, the conversation ID and the handles for both of its conversation endpoints are added to the list.

  • 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.If -ID is specified with a conversation group ID, all the conversation IDs and conversation handles in that group are added to the list.

    Nell'elenco non sono inclusi elementi da database non coperti dalle opzioni di connessione.The list does not include elements from databases that are not covered by the connection options. Se ad esempio si usa l'opzione -ID per specificare un ID conversazione, ma si specifica solo una clausola runtimeconnectionoptions per il database del servizio Initiator e non il database di destinazione,For example, assume that you use -ID to specify a conversation ID, but only provide a runtimeconnectionoptions clause for the initiator database and not the target database. 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 will not include the target conversation handle in its list of IDs, only the conversation ID and the initiator conversation handle.

    ssbdiagnose esegue il monitoraggio degli eventi di SQL Server ProfilerSQL Server Profiler dei database coperti da runtimeconnectionoptions e baseconnectionoptions.ssbdiagnose monitors the SQL Server ProfilerSQL Server Profiler events from the databases covered by runtimeconnectionoptions and baseconnectionoptions. Cerca gli eventi di Service BrokerService Broker che indicano la presenza di un errore in base a uno o più ID di Service BrokerService Broker nell'elenco di runtime.It searches for Service BrokerService Broker events that indicate an error was encountered by one or more of the Service BrokerService Broker IDs in the runtime list. ssbdiagnose cerca anche gli eventi di errore di Service BrokerService Broker a livello di sistema non specificamente associati alcun gruppo di conversazioni.ssbdiagnose also searches for system-level Service BrokerService Broker error events not specifically associated with any conversation group.

    Se ssbdiagnose rileva errori di conversazione, l'utilità tenterà di segnalare la causa radice degli eventi eseguendo anche un report di configurazione.If ssbdiagnose finds conversation errors, the utility will attempt to report on the root cause of the events by also running a configuration report. ssbdiagnose usa i metadati presenti nei database per tentare di determinare le istanze, gli ID Service BrokerService Broker , i database, i servizi e i contratti usati dalla conversazionessbdiagnose uses the metadata in the databases to try to determine the instances, Service BrokerService Broker IDs, databases, services, and contracts used by the conversation. ed esegue quindi un report di configurazione utilizzando tutte le informazioni disponibili.It then runs a configuration report using all available information.

    Per impostazione predefinita, ssbdiagnose non segnala eventi di errore,By default, ssbdiagnose does not report error events. ma solo i problemi sottostanti rilevati durante il controllo della configurazione.It only reports the underlying issues found during the configuration check. In questo modo la quantità di informazioni segnalate viene ridotta ed è possibile concentrarsi sui problemi di configurazione sottostanti.This minimizes the amount of information reported and helps you focus on the underlying configuration issues. Per visualizzare gli eventi di errore rilevati da ssbdiagnose , è possibile specificare -SHOWEVENTS.You can specify -SHOWEVENTS to see the error events encountered by ssbdiagnose.

Problemi segnalati di ssbdiagnoseIssues Reported by ssbdiagnose

ssbdiagnose segnala tre classi di problemi.ssbdiagnose reports three classes of issues. Nel file di output XML ogni classe di problemi viene segnalata come un tipo separato dell'elemento Issue.In the XML output file, each class of issue is reported as a separate type of the Issue element. Di seguito sono riportati i tre tipi di problemi segnalati da ssbdiagnose :The three types of issues reported by ssbdiagnose are as follows:

DiagnosiDiagnosis
Segnala un problema di configurazione,Reports a configuration issue. ovvero problemi rilevati durante l'esecuzione di un report CONFIGURATION o durante la fase di configurazione di un report RUNTIME .This includes issues found either a CONFIGURATION report is running, or during the configuration phase of a RUNTIME report. ssbdiagnose segnala ogni problema di configurazione solo una volta.ssbdiagnose reports each configuration issue one time.

EventoEvent
Segnala un evento di SQL Server ProfilerSQL Server Profiler che indica che si è verificato un problema in una conversazione monitorata durante un report RUNTIME .Reports a SQL Server ProfilerSQL Server Profiler event that indicates a problem was encountered by a conversation being monitored during a RUNTIME report. ssbdiagnose segnala gli eventi ogni volta che vengono generati.ssbdiagnose reports events every time they are generated. Se il problema viene rilevato in più conversazioni, gli eventi possono essere segnalati più volte.Events can be reported multiple times if several conversations encounter the problem.

ProblemaProblem
Segnala un problema che impedisce a ssbdiagnose di completare un'analisi di configurazione o di monitorare le conversazioni.Reports an issue that is preventing ssbdiagnose from completing a configuration analysis or from monitoring conversations.

Variabili di ambiente sqlcmdsqlcmd Environment Variables

L'utilità ssbdiagnose supporta le variabili di ambiente SQLCMDSERVER, SQLCMDUSER, SQLCMDPASSWORD e SQLCMDLOGINTIMOUT usate anche dall'utilità sqlcmd .The ssbdiagnose utility supports the SQLCMDSERVER, SQLCMDUSER, SQLCMDPASSWORD, and SQLCMDLOGINTIMOUT environment variables that are also used by the sqlcmd utility. Per impostare le variabili di ambiente, è possibile usare il comando SET del prompt dei comandi o il comando setvar negli script Transact-SQLTransact-SQL eseguiti tramite sqlcmd.You can set the environment variables either by using the command prompt SET command, or by using the setvar command in Transact-SQLTransact-SQL scripts that you run by using sqlcmd. Per altre informazioni sull'uso di setvar in sqlcmd, vedere Utilizzo di sqlcmd con variabili di scripting.For more information about how to use setvar in sqlcmd, see Use sqlcmd with Scripting Variables.

AutorizzazioniPermissions

In ogni 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.In each connectionoptions clause, the login specified with either -E or -U must be a member of the sysadmin fixed-server role in the instance specified in -S.

EsempiExamples

Questa sezione include esempi d'uso di ssbdiagnose a un prompt dei comandi.This section contains examples of using ssbdiagnose at a command prompt.

A.A. Controllo della configurazione di due servizi nello stesso databaseChecking the Configuration of Two Services in the Same Database

Nell'esempio seguente viene illustrato come richiedere un report di configurazione quando si verificano le seguenti condizioni:The following example shows how to request a configuration report when the following are true;

  • Il servizio Initiator e quello di destinazione si trovano nello stesso database.The initiator and target service are in the same database.

  • Il database si trova nell'istanza predefinita del Motore di databaseDatabase Engine.The database is in the default instance of the Motore di databaseDatabase Engine.

  • L'istanza si trova nello stesso computer in cui viene eseguita ssbdiagnose .The instances is on the same computer on which ssbdiagnose is run.

    L'utilità ssbdiagnose segnala la configurazione che usa il contratto DEFAULT poiché l'opzione ON CONTRACT non è specificata.The ssbdiagnose utility reports the configuration that uses the DEFAULT contract because ON CONTRACT is not specified.

ssbdiagnose -E -d MyDatabase CONFIGURATION FROM SERVICE /test/initiator TO SERVICE /test/target  

B.B. Controllo della configurazione di due servizi in computer separati che utilizzano un unico account di accessoChecking the Configuration of Two Services on Separate Computers That Use One Login

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.The following example shows how to request a configuration report when the initiator and target service are on separate computers, but can be accessed by using the same Windows Authentication login.

ssbdiagnose -E CONFIGURATION FROM SERVICE /text/initiator -S InitiatorComputer -d InitiatorDatabase TO SERVICE /test/target -S TargetComputer -d TargetDatabase ON CONTRACT TestContract  

C.C. Controllo della configurazione di due servizi in computer separati che utilizzano account di accesso diversiChecking the Configuration of Two Services on Separate Computers That Use Separate Logins

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 ServerSQL Server diversi per ogni istanza del Motore di databaseDatabase Engine.The following example shows how to request a configuration report when the initiator and target service are on separate computers, and separate SQL ServerSQL Server Authentication logins are required for each instance of the Motore di databaseDatabase Engine.

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.D. Controllo delle configurazioni del servizio con mirroring in computer separati con crittografia anonimaChecking Mirrored Service Configurations on Separate Computers With Anonymous Encryption

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.The following example shows how to request a configuration report when the initiator and target service are on separate computers and the initiator is mirrored to a named instance. Il report verifica inoltre che i servizi siano configurati in modo da utilizzare la crittografia anonima.The report also verifies that the services are configured to use anonymous encryption.

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.E. Controllo della configurazione di due contrattiChecking the Configuration of Two Contracts

Nell'esempio seguente viene illustrato come compilare un file di comando per richiedere un report di configurazione quando si verificano le seguenti condizioni:The following example shows how to build a command file that requests configuration reports when the following are true:

  • Il servizio Initiator e quello di destinazione si trovano nello stesso database.The initiator and target service are in the same database.

  • Il database si trova nell'istanza predefinita del Motore di databaseDatabase Engine.The database is in the default instance of the Motore di databaseDatabase Engine.

  • L'istanza si trova nello stesso computer in cui viene eseguita ssbdiagnose .The instance is on the same computer on which ssbdiagnose is run.

    Ogni volta che ssbdiagnose viene eseguita, segnala la configurazione per un contratto diverso tra gli stessi servizi.Each time ssbdiagnose is run it reports the configuration for a different contract between the same services.

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.F. Monitoraggio dello stato di una conversazione specifica nel computer locale con un timeoutMonitor the status of a specific conversation on the local computer with a time out

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.The following example shows how to monitor a specific conversation where the initiator and target services are in the same database in the default instance of the same computer that is running ssbdiagnose. L'intervallo di timeout è impostato su 20 secondi.The time-out interval is set to 20 seconds.

ssbdiagnose -E -d TestDatabase RUNTIME -ID D68D77A9-B1CF-41BF-A5CE-279ABCAB140D -TIMEOUT 20  

G.G. Monitoraggio dello stato di una conversazione eseguita tra due computerMonitor the status of a conversation that spans two computers

Nell'esempio seguente viene illustrato come monitorare una conversazione specifica per cui il servizio Initiator e quello di destinazione si trovano in database diversi.The following example shows how to monitor a specific conversation where the initiator and target services are on separate computers.

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.H. Monitoraggio dello stato di una conversazione in due database nella stessa istanzaMonitor the status of a conversation in two databases in the same instance

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 databaseDatabase Engine.The following example shows how to monitor a specific conversation where the initiator and target services are in separate databases in the same instance of the Motore di databaseDatabase Engine. 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.The example uses the baseconnectionoptions to specify the instance and login information, and two CONNECT TO clauses to specify the databases. L'opzione -SHOWEVENTS viene specificata in modo che tutti gli eventi in fase di esecuzione vengano inclusi nel report restituito.-SHOWEVENTS is specified so that all runtime events are included in the report output.

ssbdiagnose -E -S TestComputer/DevTestInstance RUNTIME -SHOWEVENTS   
-ID 5094d4a7-e38c-4c37-da37-1d58b1cb8455 -TIMEOUT 10 CONNECT TO   
-d InitiatorDatabase CONNECT TO -d TargetDatabase  

I.I. Monitoraggio dello stato di due conversazioni tra due databaseMonitor the status of two conversations between two databases

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 databaseDatabase Engine.The following example shows how to monitor two conversations where the initiator and target services are in separate databases in the same instance of the Motore di databaseDatabase Engine. 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.The example uses the baseconnectionoptions to specify the instance and login information, and two CONNECT TO clauses to specify the databases.

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.J. Monitoraggio dello stato di tutte le conversazioni tra due databaseMonitor the status of all conversations between two databases

Nell'esempio seguente viene illustrato come monitorare tutta la conversazione tra due database nella stessa istanza del Motore di databaseDatabase Engine.The following example shows how to monitor all the conversation between two databases in the same instance of the Motore di databaseDatabase Engine. 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.The example uses the baseconnectionoptions to specify the instance and login information, and two CONNECT TO clauses to specify the databases.

ssbdiagnose -E -S TestComputer/DevTestInstance RUNTIME   
-TIMEOUT 10 CONNECT TO -d InitiatorDatabase CONNECT TO   
-d TargetDatabase  

K.K. Ignorare errori specificiIgnore Specific Errors

Nell'esempio seguente viene illustrato come ignorare errori noti (303 e 304) in un'attivazione configurata attualmente in un sistema di prova.The following example shows how to ignore known errors (303 and 304) in how activation is currently configured in a test system.

ssbdiagnose -IGNORE 303 -IGNORE 304 -E -d TestDatabase   
CONFIGURATION FROM SERVICE /test/initiator TO SERVICE /test/target   
ON CONTRACT TextContract  

L.L. Reindirizzamento dell'output XML di ssbdiagnoseRedirecting ssbdiagnose XML Output

L'esempio seguente illustra come richiedere che ssbdiagnose generi come output un file con estensione xml reindirizzato a un altro file.The following example shows how to request that ssbdiagnose generate its output as an XML file that is redirected to a file. Il file TestDiag.xml può quindi essere aperto da un'applicazione per analizzare o segnalare i file con estensione xml di ssbdiagnose .The TestDiag.xml file can then be opened by an application to analyze or report ssbdiagnose XML files. In alternativa, è possibile visualizzarlo mediante un editor XML generico, ad esempio XML Notepad.Or, you can view it from a general XML editor such as XML Notepad.

ssbdiagnose -XML -E -d MyDatabase CONFIGURATION FROM SERVICE   
/test/initiator TO SERVICE /test/target > c:\MyDiagnostics\TestDiag.xml  

M.M. Utilizzo di una variabile di ambienteUsing an Environment Variable

L'esempio seguente imposta prima la variabile di ambiente SQLCMDSERVER per specificare il nome del server, quindi esegue ssbdiagnose senza specificare -S.The following example first sets the SQLCMDSERVER environment variable to hold the server name, and then runs ssbdiagnose without specifying -S.

SET SQLCMDSERVER=MyComputer  
ssbdiagnose -XML -E -d MyDatabase CONFIGURATION FROM SERVICE   
/test/initiator TO SERVICE /test/target  

Vedere ancheSee Also

SQL Server Service Broker SQL Server Service Broker
BEGIN DIALOG CONVERSATION ( Transact-SQL ) BEGIN DIALOG CONVERSATION (Transact-SQL)
CREARE priorità di Service BROKER ( Transact-SQL ) CREATE BROKER PRIORITY (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL) CREATE CERTIFICATE (Transact-SQL)
Crea contratto ( Transact-SQL ) CREATE CONTRACT (Transact-SQL)
CREATE ENDPOINT (Transact-SQL) CREATE ENDPOINT (Transact-SQL)
CREATE MASTER KEY (Transact-SQL) CREATE MASTER KEY (Transact-SQL)
Crea tipo di messaggio ( Transact-SQL ) CREATE MESSAGE TYPE (Transact-SQL)
CREATE QUEUE (Transact-SQL) CREATE QUEUE (Transact-SQL)
CREATE REMOTE SERVICE BINDING (Transact-SQL) CREATE REMOTE SERVICE BINDING (Transact-SQL)
CREATE ROUTE (Transact-SQL) CREATE ROUTE (Transact-SQL)
CREATE SERVICE (Transact-SQL) CREATE SERVICE (Transact-SQL)
RICEZIONE ( Transact-SQL ) RECEIVE (Transact-SQL)
Sys. transmission_queue ( Transact-SQL ) sys.transmission_queue (Transact-SQL)
Sys. conversation_endpoints ( Transact-SQL ) sys.conversation_endpoints (Transact-SQL)
Sys. conversation_groups ( Transact-SQL )sys.conversation_groups (Transact-SQL)