utilidad ssbdiagnose (Service Broker)

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 ]

Opciones de la línea de comandos

  • -XML
    Especifica que la salida de la utilidad 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 muestra como texto legible.

  • -LEVEL { ERROR | WARNING | INFO}
    Especifica el nivel de los mensajes que se notificarán.

    ERROR: notifica únicamente los mensajes de error.

    WARNING: notifica los mensajes de advertencia y los de error.

    INFO: notifica los mensajes de error, los de advertencia y los informativos.

    El valor predeterminado es WARNING.

  • -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 -S y -d se especifican en baseconnetionoptions, y solo -d se especifica en toconnetionoptions, ssbdiagnose usa - S de baseconnetionoptions y - d de 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 de 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 especificó 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 incluye información sobre 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: configuración predeterminada. 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 especificó el rol public.

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

  • RUNTIME
    Solicita un informe de problemas que producen errores en tiempo de ejecución en una conversación de Service Broker. Si no se especifica -NEW ni -ID, ssbdiagnose supervisa todas las conversaciones de todas las bases de datos especificadas en las opciones de conexión. Si se especifica -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 configuración en 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 de 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. Puede especificar -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.conversation_endpoints y sys.transmission_queue.

  • 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 grupo de conversación a las aplicaciones.

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

  • 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 los informes RUNTIME , no en los informes CONFIGURATION. Use CTRL + C para salir de ssbdiagnose si no se ha especificado -TIMEOUT o si desea 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. Por el contrario, si los servicios se encuentran en bases de datos independientes, será necesario especificar 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 de Motor de base de datos y usa la cuenta de Windows actual como identificador de inicio de sesión. El inicio de sesión 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 especifica -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 -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 inicio de sesión debe ser miembro del rol fijo de servidor sysadmin.

    Si no se especifica -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 utiliza 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.

    Nota de seguridadNota de seguridad

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

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

    Nota de seguridadNota de seguridad

    No utilice una contraseña en blanco. Utilice una contraseña segura. Para obtener más información, vea Contraseñas seguras.

    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 va seguida de más de un argumento, se genera un mensaje de error.

  • -S server_name[\instance_name]
    Especifica la instancia de Motor de base de datos que contiene los servicios de Service Broker que se van a analizar.

    Especifique server_name para conectar con la instancia predeterminada de Motor de base de datos en ese servidor. Especifique server_name**\**instance_name para conectar con una instancia con nombre de 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 de 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 valor predeterminado del tiempo de espera es de treinta 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.

  • -?
    Muestra la ayuda de la línea de comandos.

Comentarios

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 notifique elementos no requeridos por la conversación. Por ejemplo, una conversación entre dos servicios de la misma base de datos se puede ejecutar con ENCPRYPTION 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 especificadas en runtimeconnectionoptions y baseconnectionoptions para compilar una lista de identificadores de Service Broker. La lista completa de identificadores compilada depende de lo que se especifique para -NEW e -ID:

  • Si no se especifica -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, solo se incluirá este identificador en la lista.

  • Si se especifica -ID con un identificador de conversación, se agregarán a la lista este y los identificadores para ambos extremos 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 y los identificadores de conversación 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, pero no proporcione solo una cláusula runtimeconnectionoptions para la base de datos del iniciador, no para la base de datos de destino. ssbdiagnose no incluirá el identificador de la conversación de destino en su lista de identificadores; solo incluirá el identificador de conversación y el identificador de conversación del iniciador.

ssbdiagnose supervisa los eventos de SQL Server Profiler de las bases de datos cubiertas por runtimeconnectionoptions y baseconnectionoptions. Busca los eventos de Service Broker que indican que uno o varios identificadores de Service Broker de la lista de tiempo de ejecución han encontrado un error. ssbdiagnose también busca los errores de Service Broker de 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 usados por 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:

  • Diagnóstico
    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.

  • Evento
    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.

  • Problema
    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, vea 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 de Motor de base de datos.

  • La instancia se encuentra 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 de 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 de 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 de 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 de 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 de 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, a continuación, se ejecuta ssbdiagnose sin especificar -S.

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

Vea también

Referencia

BEGIN DIALOG CONVERSATION (Transact-SQL)

CREATE BROKER PRIORITY (Transact-SQL)

CREATE CERTIFICATE (Transact-SQL)

CREATE CONTRACT (Transact-SQL)

CREATE ENDPOINT (Transact-SQL)

CREATE MASTER KEY (Transact-SQL)

CREATE MESSAGE TYPE (Transact-SQL)

CREATE QUEUE (Transact-SQL)

CREATE REMOTE SERVICE BINDING (Transact-SQL)

CREATE ROUTE (Transact-SQL)

CREATE SERVICE (Transact-SQL)

RECEIVE (Transact-SQL)

sys.transmission_queue (Transact-SQL)

sys.conversation_endpoints (Transact-SQL)

sys.conversation_groups (Transact-SQL)

Conceptos

SQL Server Service Broker