Compartir vía


utilidad ssbdiagnose (Service Broker)

Se aplica a: SQL Server Azure SQL Managed Instance

La utilidad ssbdiagnose informa de la existencia de problemas en las conversaciones de Service Broker o en la configuración de los servicios de Service Broker. Las comprobaciones de la configuración se pueden realizar en dos servicios o en un único servicio. La existencia de problemas se indica en la ventana del símbolo del sistema en forma de texto legible, o como XML con formato que se puede redirigir a un archivo o a otro programa.

Sintaxis

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 ]

Opciones de línea de comandos

-XML

Especifica que la salida de ssbdiagnose se debe generar como XML con formato. Dicha salida se puede redirigir a un archivo o a otra aplicación. Si no se especifica -XML, la salida de ssbdiagnose se formatea como texto legible.

-LEVEL { ERROR | WARNING | INFO } (Error | Advertencia | Información)

Especifica el nivel de los mensajes que se notificarán.

Valor Descripción
ERROR Solo notifica los mensajes de error.
WARNING (valor predeterminado) Notifica los mensajes de advertencia y los de error.
INFO Notifica los mensajes de error, los de advertencia y los informativos.

-IGNORE error_id

Especifica que los errores o los mensajes con el error_id especificado no se deben incluir en los informes. Puede especificar -IGNORE varias veces para suprimir varios identificadores de mensaje.

<baseconnectionoptions>

Especifica la información de conexión base que se usa en ssbdiagnose cuando no se incluyen opciones de conexión en una cláusula determinada. La información de conexión proporcionada en una cláusula específica invalida la información de baseconnectionoption. Este proceso se realiza para cada parámetro de forma individual. Por ejemplo, si se especifican -S y -d en baseconnetionoptions, y solo -d se especifica en toconnetionoptions, ssbdiagnose usa -S desde baseconnetionoptions y -d desde toconnetionoptions.

CONFIGURATION

Solicita un informe de errores de configuración entre un par de servicios de Service Broker o de un único servicio.

FROM SERVICE service_name

Especifica el servicio que inicia las conversaciones.

<fromconnectionoptions>

Especifica la información requerida para conectar con la base de datos que contiene el servicio del iniciador. Si no se especifica fromconnectionoptions, ssbdiagnose usa la información de conexión de baseconnectionoptions para conectarse a la base de datos del iniciador. Si se especifica fromconnectionoptions, se debe incluir la base de datos que contiene el servicio del iniciador. Si no se especifica fromconnectionoptions, baseconnectionoptions debe especificar la base de datos del iniciador.

TO SERVICE service_name [ , broker_id ]

Especifica el servicio que es el destino de las conversaciones.

service_name: especifica el nombre del servicio de destino.

broker_id: especifica el identificador de Service Broker que identifica la base de datos de destino. broker_id es un GUID. Puede ejecutar la siguiente consulta en la base de datos de destino para encontrarlo:

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

<toconnectionoptions>

Especifica la información requerida para conectar con la base de datos que contiene el servicio de destino. Si no se especifica toconnectionoptions, ssbdiagnose usa la información de conexión de baseconnectionoptions para conectarse a la base de datos de destino.

MIRROR

Especifica que el servicio de Service Broker asociado se hospeda en una base de datos reflejada. ssbdiagnose comprueba que la ruta al servicio es una ruta reflejada, donde se ha especificado MIRROR_ADDRESS en CREATE ROUTE.

<mirrorconnectionoptions>

Especifica la información requerida para conectar con la base de datos reflejada. Si no se especifica mirrorconnectionoptions, ssbdiagnose usa la información de conexión de baseconnectionoptions para conectarse a la base de datos reflejada.

ON CONTRACT contract_name

Indica que ssbdiagnose únicamente debe comprobar las configuraciones que usan el contrato especificado. Si no se especifica ON CONTRACT, ssbdiagnose lo notifica en el contrato denominado DEFAULT.

ENCRYPTION { ON | OFF | ANONYMOUS }

Solicita que se compruebe si el diálogo está configurado correctamente para el nivel de cifrado especificado:

  • ON: Valor predeterminado Se ha configurado la seguridad de diálogo completa. Se han implementado los certificados en ambos extremos del diálogo, está presente un enlace de servicio remoto y la instrucción GRANT SEND para el servicio de destino especificó el usuario del iniciador.

  • OFF: no se ha configurado la seguridad de diálogo. No se ha implementado ningún certificado, no se ha creado ningún enlace de servicio remoto y la instrucción GRANT SEND para el servicio del iniciador ha especificado el rol público.

  • ANONYMOUS: se ha configurado la seguridad de diálogo anónima. Se ha implementado un certificado, el enlace de servicio remoto ha especificado la cláusula anónima y la instrucción GRANT SEND del servicio de destino ha especificado el rol público.

RUNTIME

Solicita un informe de los problemas que provocan errores en tiempo de ejecución en una conversación de Service Broker. Si no se especifican -NEW ni -ID, ssbdiagnose supervisa todas las conversaciones en todas las bases de datos especificadas en las opciones de conexión. Si se especifican -NEW o -ID, ssbdiagnose genera una lista de los identificadores especificados en los parámetros.

Mientras ssbdiagnose se está ejecutando, registra todos los eventos de SQL Server Profiler que indican errores de tiempo de ejecución. Registra los eventos que se producen en los identificadores especificados, además de los eventos del nivel de sistema. Si se encuentran errores de tiempo de ejecución, ssbdiagnose ejecuta un informe de la configuración asociada.

De forma predeterminada, los errores de tiempo de ejecución no se incluyen en el informe de salida, solo se incluyen los resultados del análisis de la configuración. Use -SHOWEVENTS para incluir los errores en tiempo de ejecución en el informe.

-SHOWEVENTS

Indica que ssbdiagnose debe notificar los eventos de SQL Server Profiler durante un informe RUNTIME. Solo se informa de los eventos considerados como condiciones de error. De forma predeterminada, ssbdiagnose solamente supervisa los eventos de error; no informa de ellos en la salida.

  • -NEW: Solicita la supervisión en tiempo de ejecución de la primera conversación que comienza después de que ssbdiagnose inicie su ejecución.

  • -ID: Solicita la supervisión en tiempo de ejecución de los elementos de la conversación especificados. Puedes especificar la opción -ID varias veces.

Si especifica un identificador de conversación, solo se informa de los eventos asociados al extremo de conversación correspondiente. Si especifica un identificador de conversación, se informa de todos los eventos de la conversación, así como de los de sus extremos de destino e iniciador. Si se especifica un identificador de grupo de conversación, se informa de todos los eventos para todas las conversaciones y todos los extremos del grupo de conversación.

conversation_handle

Un identificador único que identifica un extremo de conversación en una aplicación. Los identificadores de conversación son únicos para cada extremo de la conversación; los extremos de destino e iniciador tienen identificadores de conversación independientes.

El parámetro @dialog_handle de la instrucción BEGIN DIALOG y la columna conversation_handle del conjunto de resultados de una instrucción RECEIVE son los encargados de devolver los identificadores de conversación a las aplicaciones.

Los identificadores de conversación se notifican en la columna conversation_handle de las vistas de catálogo sys.transmission_queue y sys.conversation_endpoints.

conversation_group_id

El identificador único que identifica un grupo de conversación.

El parámetro @conversation_group_id de la instrucción GET CONVERSATION GROUP y la columna conversation_group_id del conjunto de resultados de una instrucción RECEIVE son los encargados de devolver los identificadores de conversación a las aplicaciones.

Los identificadores del grupo de conversación se notifican en la columna conversation_group_id de las vistas de catálogo sys.conversation_groups y sys.conversation_endpoints.

conversation_id

El identificador único que identifica una conversación. Los identificadores de conversación son los mismos para los extremos de destino e iniciador de una conversación.

Los identificadores de conversación se notifican en la columna conversation_id de la vista de catálogo sys.conversation_endpoints.

-TIMEOUT timeout_interval

Especifica el número de segundos durante los que se debe ejecutar un informe RUNTIME. Si no se especifica -TIMEOUT, el informe en tiempo de ejecución se ejecuta de forma indefinida. -TIMEOUT solo se usa en informes RUNTIME, no en informes CONFIGURATION. Use CTRL+C para salir de ssbdiagnose si no se ha especificado -TIMEOUT o si quiere finalizar un informe en tiempo de ejecución antes de que expire el intervalo de tiempo de espera-. timeout_interval debe ser un número comprendido entre 1 y 2 147 483 647.

<runtimeconnectionoptions>

Especifica la información de conexión para las bases de datos que contienen los servicios asociados a los elementos de conversación que se están supervisando. Si todos los servicios se encuentran en la misma base de datos, solo es necesario especificar una cláusula CONNECT TO. Si los servicios se encuentran en bases de datos independientes, será necesario suministrar una cláusula CONNECT TO para cada base de datos. Si no se especifica runtimeconnectionoptions, ssbdiagnose usa la información de conexión de baseconnectionoptions.

-E

Abre una conexión con autenticación de Windows para una instancia del Motor de base de datos y usa la cuenta de Windows actual como identificador de inicio de sesión. El usuario debe ser miembro del rol fijo de servidor sysadmin.

La opción -E omite la configuración de usuario y de contraseña de las variables de entorno SQLCMDUSER y SQLCMDPASSWORD.

Si no se especifican -E ni -U, ssbdiagnose usa el valor de la variable de entorno SQLCMDUSER. Si tampoco se establece SQLCMDUSER, ssbdiagnose usa la autenticación de Windows.

Si se usa la opción -E junto con la opción -U o laopción -P, se genera un mensaje de error.

-U login_id

Abre una conexión con autenticación de SQL Server y usa el identificador de inicio de sesión especificado. El usuario debe ser miembro del rol fijo de servidor sysadmin.

Si no se especifican -E ni -U, ssbdiagnose usa el valor de la variable de entorno SQLCMDUSER. Si tampoco se establece SQLCMDUSER, ssbdiagnose intenta la conexión mediante el modo de autenticación de Windows basado en la cuenta de Windows del usuario que está ejecutando ssbdiagnose.

Si se usa la opción -U junto con la opción -E, se genera un mensaje de error. Si la opción -U va seguida de más de un argumento, se genera un mensaje de error y el programa se cierra.

-P password

Especifica la contraseña para el identificador de inicio de sesión -U. En las contraseñas se distingue entre mayúsculas y minúsculas. Si se usa la opción -U pero no la opción -P, ssbdiagnose usa el valor de la variable de entorno SQLCMDPASSWORD. Si tampoco se establece SQLCMDPASSWORD, ssbdiagnose solicita al usuario una contraseña.

Precaución

Cuando escriba un comando SET SQLCMDPASSWORD, la contraseña será visible para cualquiera que pueda ver su pantalla.

Si se especifica la opción -P sin una contraseña, ssbdiagnose usa la contraseña predeterminada (NULL).

Importante

No utilice una contraseña en blanco. Utilice una contraseña segura. Para obtener más información, consulte Strong Passwords.

El mensaje de contraseña se muestra en la consola de la siguiente manera: Password:

La entrada del usuario queda oculta. Esto significa que no se muestra nada y que el cursor permanece en su posición.

Si se usa la opción -P junto con la opción -E, se genera un mensaje de error.

Si la opción -P P va seguida de más de un argumento, se genera un mensaje de error.

-S server_name [ \instance_name ]

Especifica la instancia del Motor de base de datos que contiene los servicios de Service Broker que se van a analizar.

Especifique el valor de server_name para conectar con la instancia predeterminada del Motor de base de datos en ese servidor. Especifique <server_name>\<instance_name> para conectarse a una instancia con nombre del Motor de base de datos en ese servidor. Si no se especifica -S, ssbdiagnose usa el valor de la variable de entorno SQLCMDSERVER. Si tampoco se establece SQLCMDSERVER, ssbdiagnose se conecta a la instancia predeterminada del Motor de base de datos en el equipo local.

-d database_name

Especifica la base de datos que contiene los servicios de Service Broker que se van a analizar. Si la base de datos no existe, se genera un mensaje de error. Si no se especifica -d, el valor predeterminado es la base de datos especificada en la propiedad de base de datos predeterminada del inicio de sesión.

-l login_timeout

Especifica el número de segundos que deben transcurrir antes de que se agote el tiempo de espera de un intento de conexión con un servidor. Si no se especifica -l, ssbdiagnose usa el valor establecido en la variable de entorno SQLCMDLOGINTIMEOUT. Si tampoco se establece SQLCMDLOGINTIMEOUT, el tiempo de espera predeterminado es de 30 segundos. El período de tiempo de espera de inicio de sesión debe ser un número comprendido entre 0 y 65534. Si el valor proporcionado no es numérico o no está dentro de este intervalo, ssbdiagnose genera un mensaje de error. El valor 0 especifica que el tiempo de espera es infinito.

-N encryption_option

Especifica que la conexión está cifrada. Los valores posibles son Optional, Mandatory y Strict. El valor especificado representa el nivel de cifrado deseado y mínimo. El valor predeterminado es Mandatory.

Con el cifrado Mandatory seleccionado, debe usar un certificado de una entidad de certificación de confianza. Para obtener más información, consulte Requisitos de certificado para SQL Server.

Para usar el cifrado estricto, el Motor de base de datos de SQL Server debe configurarse con un certificado TLS firmado por una entidad de certificación raíz de confianza.

-i hostname_in_certificate

Especifica otro nombre común (CN) esperado o nombre alternativo del firmante (SAN) en el certificado de servidor que se va a usar durante la validación del certificado de servidor. Sin esta opción, la validación de certificados garantiza que el CN o SAN del certificado coincida con el nombre del servidor al que se conecta. Este parámetro se puede rellenar cuando el nombre del servidor no coincide con el CN o SAN, por ejemplo, cuando se usan alias DNS.

C-

Especifica que la conexión confía en el certificado de servidor y omite la validación del certificado de servidor. Esta opción no es necesaria cuando se usan certificados de servidor de confianza.

-?

Muestra la ayuda de la línea de comandos.

Observaciones

Use ssbdiagnose para lo siguiente:

  • Confirmar que no hay errores de configuración en una aplicación de Service Broker que se acaba de configurar.

  • Confirmar que no hay errores de configuración después de cambiar la configuración de una aplicación de Service Broker existente.

  • Confirmar que no hay errores de configuración después de que una base de datos de Service Broker se haya separado y vuelto a adjuntar a una nueva instancia de Motor de base de datos.

  • Comprobar si hay errores de configuración cuando los mensajes no se transmiten correctamente entre los servicios.

  • Obtener un informe de los errores que se producen en un conjunto de elementos de conversación de Service Broker.

Creación de informes de configuración

Para analizar correctamente la configuración que se usa en una conversación, ejecute un informe de configuración de ssbdiagnose que use las mismas opciones que la conversación. Si especifica para ssbdiagnose un nivel de opciones inferior al que usa la conversación, es posible que ssbdiagnose no informe de las condiciones requeridas por la conversación. Si especifica un nivel de opciones superior para ssbdiagnose, es posible que se informe de elementos no requeridos por la conversación. Por ejemplo, se puede ejecutar una conversación entre dos servicios de la misma base de datos con ENCRYPTION OFF. Si ejecuta ssbdiagnose para validar la configuración entre ambos servicios, pero usa la opción ENCRYPTION ON predeterminada, ssbdiagnose informa de que falta una clave maestra en la base de datos. No se requiere una clave maestra en la conversación.

Cada vez que se ejecuta, el informe de configuración de ssbdiagnose solamente analiza un servicio de Service Broker o un único par de servicios. Si desea crear informes sobre varios pares de servicios de Service Broker, cree un archivo de comandos .cmd que llame varias veces a ssbdiagnose.

Creación de informes en tiempo de ejecución

Cuando se especifica -RUNTIME, ssbdiagnose busca en todas las bases de datos indicadas en runtimeconnectionoptions y baseconnectionoptions para generar una lista de identificadores de Service Broker. La lista completa de identificadores generada depende de lo que se especifique para -NEW y -ID:

  • Si no se especifican -NEW ni -ID, la lista incluye todas las conversaciones para todas las bases de datos especificadas en las opciones de conexión.

  • Si se especifica -NEW, ssbdiagnose incluye los elementos para la primera conversación que se inicia después de ejecutar ssbdiagnose. Esto incluye el identificador de conversación y los identificadores de conversación tanto para el extremo iniciador de la conversación como para el de destino.

  • Si se especifica -ID con un identificador de conversación (de tipo handle), solo se incluirá este identificador en la lista.

  • Si se especifica -ID con un identificador de conversación (de tipo ID), se agregarán a la lista este identificador y los identificadores de tipo handle para ambos puntos de conexión de la conversación.

  • Si se especifica -ID con un identificador de grupo de conversación, se agregarán a la lista todos los identificadores de conversación de tipo ID y de tipo handle de dicho grupo.

La lista no incluye los elementos de las bases de datos que no están cubiertas por las opciones de conexión. Por ejemplo, supongamos que se usa -ID para especificar un identificador de conversación de tipo ID, pero que solo se proporciona una cláusula runtimeconnectionoptions para la base de datos del iniciador, no para la base de datos de destino. ssbdiagnose no incluye el identificador de tipo handle de la conversación de destino en su lista de identificadores; solo incluye el identificador de conversación de tipo ID y el identificador de tipo handle de conversación del iniciador.

ssbdiagnose supervisa los eventos de SQL Server Profiler de las bases de datos cubiertas por runtimeconnectionoptions y baseconnectionoptions. La utilidad busca eventos de Service Broker que indican un error encontrado por parte de uno o varios de los identificadores de Service Broker en la lista de tiempo de ejecución. ssbdiagnose también busca eventos de error de Service Broker en el nivel de sistema que no están asociados específicamente a ningún grupo de conversación.

Si ssbdiagnose encuentra errores de conversación, la utilidad intentará notificar la causa raíz de los eventos mediante la ejecución de un informe de configuración. ssbdiagnose usa los metadatos de las bases de datos para intentar determinar las instancias, los identificadores de Service Broker, las bases de datos, los servicios y los contratos que haya usado la conversación. A continuación, ejecuta un informe de configuración mediante toda la información disponible.

De forma predeterminada, ssbdiagnose no informa de los eventos de error. Solo informa de los problemas subyacentes encontrados durante la comprobación de la configuración. Esto minimiza la cantidad de información proporcionada y ayuda a concentrarse en los problemas de configuración subyacentes. Puede especificar -SHOWEVENTS para ver los eventos de error que encuentra ssbdiagnose.

Problemas encontrados por ssbdiagnose

ssbdiagnose informa de tres clases de problemas. En el archivo de salida XML, cada clase de problema aparece como un tipo independiente de elemento Issue. Los tres tipos de problemas notificados por ssbdiagnose son los siguientes:

  • Diagnosis: Informa de un problema de configuración. Esto incluye los problemas encontrados durante la ejecución de un informe CONFIGURATION o durante la fase de configuración de un informe RUNTIME. ssbdiagnose notifica una vez cada problema de configuración.

  • Event: Notifica un evento de SQL Server Profiler que indica que una conversación que se estaba supervisando ha encontrado un problema durante un informe RUNTIME. ssbdiagnose notifica los eventos cada vez que se generan. Es posible que se informe más de una vez de los eventos si varias conversaciones encuentran el problema.

  • Problem: Notifica un problema que impide que ssbdiagnose complete un análisis de configuración o supervise conversaciones.

Variables de entorno de SQLCMD

La utilidad ssbdiagnose admite las variables de entorno SQLCMDSERVER, SQLCMDUSER, SQLCMDPASSWORD y SQLCMDLOGINTIMOUT que también emplea la utilidad sqlcmd. Puede establecer las variables de entorno mediante el comando SET del símbolo del sistema o el comando setvar en los scripts de Transact-SQL que ejecute con sqlcmd. Para obtener más información sobre cómo usar setvar en sqlcmd, consulte Usar sqlcmd con variables de script.

Permisos

En cada cláusula connectionoptions, el inicio de sesión especificado con los parámetros -E o -U debe ser miembro del rol fijo de servidor sysadmin en la instancia especificada en -S.

Ejemplos

Esta sección contiene ejemplos de uso de ssbdiagnose en el símbolo del sistema.

A Comprobar la configuración de dos servicios en la misma base de datos

En el ejemplo siguiente se muestra cómo solicitar un informe de configuración cuando se cumplen las siguientes condiciones;

  • El servicio iniciador y el servicio de destino están en la misma base de datos.

  • La base de datos está en la instancia predeterminada del Motor de base de datos.

  • Las instancias se encuentran en el mismo equipo en el que se ejecuta ssbdiagnose.

La utilidad ssbdiagnose notifica la configuración que usa el contrato DEFAULT porque no se ha especificado ON CONTRACT.

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

B. Comprobar la configuración de dos servicios en equipos independientes que usan un mismo inicio de sesión

En el ejemplo siguiente se muestra cómo solicitar un informe de configuración cuando el servicio iniciador y el servicio de destino están en equipos distintos, pero se puede obtener acceso a ellos usando el mismo inicio de sesión con autenticación de Windows.

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

C. Comprobar la configuración de dos servicios en equipos independientes que usan inicios de sesión distintos

En el ejemplo siguiente se muestra cómo solicitar un informe de configuración cuando el servicio iniciador y el servicio de destino están en equipos independientes, y se requieren inicios de sesión con autenticación de SQL Server distintos para cada instancia del Motor de base de datos.

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. Comprobar las configuraciones de servicio reflejado en equipos independientes con cifrado anónimo

En el ejemplo siguiente se muestra cómo solicitar un informe de configuración cuando el servicio iniciador y el servicio de destino están en equipos independientes, y el iniciador está reflejado en una instancia con nombre. El informe también comprueba que los servicios están configurados para usar el cifrado anónimo.

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. Comprobar la configuración de dos contratos

En el ejemplo siguiente se muestra cómo crear un archivo de comandos que solicite informes de configuración cuando se cumplan las condiciones siguientes:

  • El servicio iniciador y el servicio de destino están en la misma base de datos.

  • La base de datos está en la instancia predeterminada del Motor de base de datos.

  • La instancia se encuentra en el mismo equipo en el que se ejecuta ssbdiagnose .

Cada vez que se ejecuta ssbdiagnose , notifica la configuración de un contrato distinto entre los mismos servicios.

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. Supervisar el estado de una conversación concreta en el equipo local con un tiempo de espera

En el ejemplo siguiente se muestra cómo supervisar una conversación concreta en la que los servicios de iniciador y destino están en la misma base de datos de la instancia predeterminada del mismo equipo que está ejecutando ssbdiagnose. El intervalo de tiempo de espera se establece en 20 segundos.

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

G. Supervisar el estado de una conversación que abarca dos equipos

En el ejemplo siguiente se muestra cómo supervisar una conversación concreta en la que los servicios iniciador y de destino están en equipos independientes.

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. Supervisar el estado de una conversación en dos bases de datos de la misma instancia

En el ejemplo siguiente se muestra cómo supervisar una conversación concreta en la que los servicios de iniciador y destino están en bases de datos independientes de la misma instancia del Motor de base de datos. En el ejemplo se usa baseconnectionoptions para especificar la instancia y la información de inicio de sesión, y dos cláusulas CONNECT TO para especificar las bases de datos. Se especifica -SHOWEVENTS para que todos los eventos en tiempo de ejecución estén incluidos en los resultados del informe.

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

I. Supervisar el estado de dos conversaciones entre dos bases de datos

En el ejemplo siguiente se muestra cómo supervisar dos conversaciones en las que los servicios de iniciador y destino están en bases de datos independientes de la misma instancia del Motor de base de datos. En el ejemplo se usa baseconnectionoptions para especificar la instancia y la información de inicio de sesión, y dos cláusulas CONNECT TO para especificar las bases de datos.

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. Supervisar el estado de todas las conversaciones entre dos bases de datos

En el ejemplo siguiente se muestra cómo supervisar todas las conversaciones entre dos bases de datos de la misma instancia del Motor de base de datos. En el ejemplo se usa baseconnectionoptions para especificar la instancia y la información de inicio de sesión, y dos cláusulas CONNECT TO para especificar las bases de datos.

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

K. Omitir errores concretos

En el ejemplo siguiente se muestra cómo omitir errores conocidos (303 y 304) y cómo está configurada la activación en un sistema de prueba.

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

L. Redirigir la salida XML de ssbdiagnose

En el ejemplo siguiente se muestra cómo solicitar que ssbdiagnose genere la salida en forma de archivo XML que se redirige a un archivo. A continuación, el archivo TestDiag.xml puede abrirse en una aplicación diseñada para analizar o informar sobre los archivos XML de ssbdiagnose . O bien, se puede ver en un editor XML estándar, como XML Notepad.

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

M. Usar una variable de entorno

En el ejemplo siguiente se establece primero la variable de entorno SQLCMDSERVER para que contenga el nombre del servidor y, después, se ejecuta ssbdiagnose sin especificar -S.

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