Utilitaire ssbdiagnose

L'utilitaire ssbdiagnose signale les problèmes identifiés dans les conversations Service Broker ou dans la configuration des services Service Broker. Des vérifications de configuration peuvent réalisées pour deux services ou pour un seul. Les problèmes sont signalés soit dans la fenêtre d'invite de commandes par un texte explicite, soit dans un fichier XML mis en forme qui peut être redirigé vers un fichier ou un autre programme.

Syntaxe

        ssbdiangose 
[ [ -XML ]
    [ -LEVEL { ERROR | WARNING | INFO } ]
  [-IGNOREerror_id ] [ ...n]
    [ <baseconnectionoptions> ]
  { <configurationreport> | <runtimereport> }
]
| -?

<configurationreport> ::=
    CONFIGURATION
  { [ FROM SERVICEservice_name
      [ <fromconnectionoptions> ]
      [ MIRROR <mirrorconnectionoptions> ]
    ]
    [ TO SERVICEservice_name[, broker_id ]
      [ <toconnectionoptions> ]
      [ MIRROR <mirrorconnectionoptions> ]
    ]
  }
    ON CONTRACTcontract_name
  [ ENCRYPTION { ON | OFF | ANONYMOUS } ]

<runtime_report> ::=
    RUNTIME
    [-SHOWEVENTS ]
        [ -NEW
         [ -ID { conversation_handle
                | conversation_group_id
                 | conversation_id
                  }
        ] [ ...n]
        ]
    [ -TIMEOUTtimeout_interval ]
    [ <runtimeconnectionoptions> ]

<baseconnectionoptions> ::=
  <connectionoptions>

<fromconnectionoptions> ::=
  <connectionoptions>

<toconnectionoptions> ::=
  <connectionoptions>

<mirrorconnectionoptions> ::=
  <connectionoptions>

<runtimeconnectionoptions> ::=
  [ CONNECT TO <connectionoptions> ] [ ...n]

<connectionoptions> ::=
    [ –E | { -Ulogin_id [ -Ppassword ] } ]
  [ -Sserver_name[\instance_name] ]
  [ -ddatabase_name ]
  [ -llogin_timeout ]

Options de ligne de commande

  • -XML
    Spécifie que la sortie de ssbdiagnose doit être générée sous la forme d'un fichier XML mis en forme. Ce fichier peut être redirigé vers un fichier ou une autre application. Si l'option -XML n'est pas spécifiée, la sortie de ssbdiagnose est mise en forme en tant que texte explicite.

  • -LEVEL { ERROR | WARNING | INFO}
    Spécifie le niveau des messages à signaler.

    ERROR : signale uniquement les messages d'erreur.

    WARNING : signale les messages d'erreur et les avertissements.

    INFO : signale les messages d'erreur, d'avertissement et d'information.

    La valeur par défaut est WARNING.

  • -IGNOREerror_id
    Spécifie que les erreurs ou les messages portant l'error_id spécifié ne doivent pas être inclus dans les rapports. Vous pouvez spécifier -IGNORE plusieurs fois afin de supprimer plusieurs ID de message. Pour plus d'informations, consultez Guide de référence des erreurs et des événements (Service Broker).

  • <baseconnectionoptions>
    Spécifie les informations de connexion de base utilisées par ssbdiagnose lorsque les options de connexion ne sont pas incluses dans une clause spécifique. Les informations de connexion données dans une clause spécifique remplacent les informations fournies dans baseconnectionoption. Ceci est effectué individuellement pour chaque paramètre. Par exemple, si -S et -d sont spécifiés dans baseconnetionoptions, et que seul -d est spécifié dans toconnetionoptions, ssbdiagnose utilise -S depuis baseconnetionoptions et -d depuis toconnetionoptions.

  • CONFIGURATION
    Demande un rapport des erreurs de configuration entre une paire de services Service Broker ou pour un service unique.

  • FROM SERVICEservice_name
    Spécifie le service qui lance les conversations.

  • <fromconnectionoptions>
    Spécifie les informations requises pour se connecter à la base de données contenant le service initiateur. Si fromconnectionoptions n'est pas spécifié, ssbdiagnose utilise les informations de connexion de baseconnectionoptions pour se connecter à la base de données de l'initiateur. Si fromconnectionoptions est spécifié, la base de données contenant le service initiateur doit y être indiquée. Si fromconnectionoptions n'est pas spécifié, baseconnectionoptions doit spécifier la base de données de l'initiateur.

  • TO SERVICEservice_name[, broker_id ]
    Spécifie le service qui est la cible des conversations.

    service_name : spécifie le nom du service cible.

    broker_id : spécifie l'ID Service Broker qui identifie la base de données cible. broker_id est un GUID. Vous pouvez exécuter la requête suivante dans la base de données cible pour le rechercher :

    SELECT service_broker_guid
    FROM sys.databases
    WHERE database_id = DB_ID();
    
  • <toconnectionoptions>
    Spécifie les informations requises pour connecter la base de données contenant le service cible. Si toconnectionoptions n'est pas spécifié, ssbdiagnose utilise les informations de connexion de baseconnectionoptions pour se connecter à la base de données cible.

  • MIRROR
    Spécifie que le service Service Broker associé est hébergé dans une base de données mise en miroir. ssbdiagnose vérifie que l'itinéraire menant au service est un itinéraire mis en miroir, où MIRROR_ADDRESS a été spécifié pour CREATE ROUTE.

  • <mirrorconnectionoptions>
    Spécifie les informations requises pour se connecter à la base de données miroir. Si mirrorconnectionoptions n'est pas spécifié, ssbdiagnose utilise les informations de connexion de baseconnectionoptions pour se connecter à la base de données mise en miroir.

  • ON CONTRACTcontract_name
    Demande que ssbdiagnose vérifie uniquement les configurations qui utilisent le contrat spécifié. Si ON CONTRACT n'est pas spécifié, ssbdiagnose effectue un rapport sur le contrat nommé DEFAULT.

  • ENCRYPTION { ON | OFF | ANONYMOUS }
    Demande que la configuration du dialogue soit vérifiée pour le niveau de chiffrement spécifié :

    ON : paramètre par défaut. La sécurité de dialogue complète est configurée. Des certificats ont été déployés des deux côtés du dialogue, une liaison de service distant est présente et l'instruction GRANT SEND du service cible a spécifié l'utilisateur initiateur.

    OFF :aucune sécurité de dialogue n'est configurée. Aucun certificat n'a été déployé, aucune liaison de service distant n'a été créée et l'instruction GRANT SEND du service initiateur a spécifié le rôle public.

    ANONYMOUS : la sécurité de dialogue anonyme est configurée. Un certificat a été déployé, la liaison de service distant a spécifié la clause anonyme et l'instruction GRANT SEND du service cible a spécifié le rôle public.

    Pour plus d'informations, consultez Sécurité du dialogue Service Broker.

  • RUNTIME
    Demande un rapport des problèmes provoquant des erreurs d'exécution pour une conversation Service Broker. Si aucun -NEW ou -ID n'est spécifié, ssbdiagnose surveille les conversations de toutes les bases de données spécifiées dans les options de connexion. Si l'option -NEW ou -ID est spécifiée, ssbdiagnose génère une liste des ID spécifiés dans les paramètres.

    Pendant son exécution, ssbdiagnose enregistre tous les événements SQL Server Profiler qui indiquent des erreurs d'exécution. Il enregistre les événements qui se produisent pour les ID spécifiés, ainsi que les événements au niveau système. Si des erreurs d'exécution sont identifiées, ssbdiagnose exécute un rapport de configuration sur la configuration associée.

    Par défaut, les erreurs d'exécution ne sont pas incluses dans le rapport de sortie, seuls les résultats de l'analyse de la configuration le sont. Utilisez -SHOWEVENTS pour inclure les erreurs d'exécution dans le rapport.

  • -SHOWEVENTS
    Spécifie que ssbdiagnose doit signaler les événements SQL Server Profiler dans le cadre d'un rapport RUNTIME. Seuls les événements considérés comme des conditions d'erreur sont signalés. Par défaut, ssbdiagnose ne fait que surveiller les événements d'erreurs ; il ne les signale pas dans la sortie.

  • -NEW
    Demande que la première conversation qui commence après le démarrage de ssbdiagnose fasse l'objet d'une surveillance au moment de l'exécution.

  • -ID
    Demande que les éléments de conversation spécifiés fassent l'objet d'une surveillance au moment de l'exécution. Vous pouvez spécifier -ID plusieurs fois.

    Si vous spécifiez un descripteur de conversation, seuls les événements associés au point de terminaison de conversation associé sont signalés. Si vous spécifiez un ID de conversation, tous les événements de cette conversation et de ses points de terminaison initiateur et cible sont signalés. Si un ID de groupe de conversations est spécifié, tous les événements de toutes les conversations et de tous les points de terminaison du groupe de conversations sont signalés.

  • conversation_handle
    Identificateur unique qui identifie un point de terminaison de conversation dans une application. Les descripteurs de conversation sont uniques à un point de terminaison d'une conversation, les points de terminaison initiateur et cible ont des descripteurs de conversation distincts.

    Les descripteurs de conversation sont retournés aux applications par le paramètre @dialog_handle de l'instruction BEGIN DIALOG et la colonne conversation_handle du jeu de résultats d'une instruction RECEIVE.

    Les descripteurs de conversation sont signalés dans la colonne conversation_handle des affichages catalogue sys.conversation_endpoints et sys.transmission_queue.

  • conversation_group_id
    Identificateur unique qui identifie un groupe de conversations.

    Les ID de groupe de conversations sont retournés aux applications par le paramètre @conversation_group_id de l'instruction GET CONVERSATION GROUP et la colonne conversation_group_id du jeu de résultats d'une instruction RECEIVE.

    Les ID de groupe de conversations sont signalés dans les colonnes conversation_group_id des affichages catalogue sys.conversation_endpoints et sys.conversation_groups.

  • conversation_id
    Identificateur unique qui identifie une conversation. Les ID de conversation sont les mêmes pour les points de terminaison initiateur et cible d'une conversation.

    Les ID de conversation sont signalés dans la colonne conversation_id de l'affichage catalogue sys.conversation_endpoints.

  • -TIMEOUTtimeout_interval
    Spécifie la durée d'exécution du rapport RUNTIME en secondes. Si -TIMEOUT n'est pas spécifié, le rapport d'exécution s'exécute indéfiniment. -TIMEOUT est utilisé uniquement sur les rapports RUNTIME, et non sur les rapports CONFIGURATION. Utilisez Ctrl + C pour quitter ssbdiagnose si -TIMEOUT n'a pas été spécifié ou pour terminer un rapport d'exécution avant expiration du délai d'attente. timeout_interval doit être un nombre compris entre 1 et 2 147 483 647.

  • <runtimeconnectionoptions>
    Spécifie les informations de connexion pour les bases de données contenant les services associés aux éléments de conversation qui sont surveillés. Si tous les services se trouvent dans la même base de données, une seule clause CONNECT TO doit être spécifiée. Si les services se trouvent dans des bases de données distinctes, vous devez fournir une clause CONNECT TO pour chaque base de données. Si runtimeconnectionoptions n'est pas spécifié, ssbdiagnose utilise les informations de connexion de baseconnectionoptions.

  • –E
    Ouvrir une connexion via l'authentification Windows à une instance du Moteur de base de données en utilisant votre compte Windows actuel comme ID de connexion. Cet ID doit être un membre du rôle de serveur fixe sysadmin.

    L'option -E ignore les paramètres d'utilisateur et de mot de passe des variables d'environnement SQLCMDUSER et SQLCMDPASSWORD.

    Si ni -E, ni -U ne sont spécifiés, ssbdiagnose utilise la valeur de la variable d'environnement SQLCMDUSER. Si cette variable n'est pas définie non plus, ssbdiagnose utilise l'authentification Windows.

    Si l'option -E est utilisée avec l'option -U ou -P, un message d'erreur est généré.

  • -Ulogin_id
    Ouvrir une connexion via l'authentification SQL Server en utilisant l'ID de connexion spécifié. Cet ID doit être un membre du rôle de serveur fixe sysadmin.

    Si ni -E, ni -U ne sont spécifiés, ssbdiagnose utilise la valeur de la variable d'environnement SQLCMDUSER. Si cette variable n'est pas définie non plus, ssbdiagnose essaie de se connecter en utilisant le mode d'authentification Windows sur la base du compte Windows de l'utilisateur qui exécute ssbdiagnose.

    Si l'option -U est utilisée avec l'option -E, un message d'erreur est généré. Si l'option –U est suivie de plusieurs arguments, un message d'erreur est généré et le programme se termine.

  • -Ppassword
    Spécifie le mot de passe de l'ID de connexion -U . Les mots de passe respectent la casse. Si l'option -U est utilisée, mais que l'option -P ne l'est pas, ssbdiagnose utilise la valeur de la variable d'environnement SQLCMDPASSWORD. Si cette variable n'est pas définie non plus, ssbdiagnose invite l'utilisateur à entrer un mot de passe.

    Remarque relative à la sécuritéRemarque relative à la sécurité

    Lorsque vous tapez une commande SET SQLCMDPASSWORD, votre mot de passe est visible par quiconque regarde votre moniteur.

    Si l'option -P est spécifié sans mot de passe, ssbdiagnose utilise le mot de passe par défaut (NULL).

    Remarque relative à la sécuritéRemarque relative à la sécurité

    N'utilisez pas de mot de passe vide. Utilisez un mot de passe fort. Pour plus d'informations, consultez Mots de passe forts.

    L'invite de mot de passe s'affiche en imprimant l'invite de commande sur la console, comme suit :Password:

    L'entrée de l'utilisateur est masquée, ce qui signifie que rien ne s'affiche et que le curseur reste immobile.

    Si l'option -P est utilisée avec l'option -E, un message d'erreur est généré.

    Si l'option -P est suivie de plusieurs arguments, un message d'erreur est généré.

  • -Sserver_name[\instance_name]
    Spécifie l'instance du Moteur de base de données qui contient les services Service Broker à analyser.

    Spécifiez le server_name à connecter à l'instance par défaut du Moteur de base de données sur ce serveur. Spécifiez server_name**\**instance_name pour vous connecter à une instance nommée du Moteur de base de données sur ce serveur. Si -S n'est pas spécifié, ssbdiagnose utilise la valeur de la variable d'environnement SQLCMDSERVER. Si cette variable n'est pas définie non plus, ssbdiagnose se connecte à l'instance par défaut du moteur de base de données sur l'ordinateur local.

  • -ddatabase_name
    Spécifie la base de données qui contient les services Service Broker à analyser. Si cette base de données n'existe pas, un message d'erreur est généré. Si -d n'est pas spécifié, la valeur par défaut est la base de données spécifiée dans la propriété de base de données par défaut de votre ID de connexion.

  • -llogin_timeout
    Spécifie le délai d'attente d'une tentative de connexion à un serveur (en secondes). Si -l n'est pas spécifié, ssbdiagnose utilise la valeur définie pour la variable d'environnement SQLCMDLOGINTIMEOUT. Si cette variable n'est pas défini non plus, le délai d'attente par défaut est de trente secondes. Le délai d'attente de la connexion doit être un nombre compris entre 0 et 65534. Si la valeur fournie n'est pas numérique ou n'est pas comprise dans cet intervalle, ssbdiagnose génère un message d'erreur. Une valeur de 0 spécifie un délai d'attente infini.

  • -?
    Affiche l'aide de la ligne de commande.

Notes

Utilisez ssbdiagnose pour effectuer les opérations suivantes :

  • Confirmer qu'une application Service Broker récemment configurée ne contient pas d'erreurs de configuration.

  • Confirmer l'absence d'erreurs de configuration après modification de la configuration d'une application Service Broker existante.

  • Confirmer l'absence d'erreurs de configuration après qu'une base de données Service Broker a été détachée puis rattachée à une nouvelle instance du Moteur de base de données.

  • Rechercher d'éventuelles erreurs de configuration lorsque des messages ne sont pas transmis avec succès entre des services.

  • Obtenir un rapport sur toute erreur se produisant dans un jeu d'éléments de conversation Service Broker.

Pour plus d'informations sur les erreurs retournées par ssbdiagnose, consultez Guide de référence des erreurs et des événements (Service Broker).

Rapport de configuration

Pour analyser correctement la configuration utilisée par une conversation, exécutez un rapport de configuration ssbdiagnose qui utilise les mêmes options que celles de la conversation. Si vous spécifiez un niveau d'options inférieur à celui de la conversation pour ssbdiagnose, ssbdiagnose risque de ne pas signaler les éléments requis par la conversation. Si vous spécifiez un niveau d'options supérieur pour ssbdiagnose, ce dernier risque de signaler des éléments de rapport qui ne sont pas requis par la conversation. Par exemple, une conversation entre deux services qui se trouvent dans la même base de données peut être exécutée avec ENCPRYPTION OFF. Si vous exécutez ssbdiagnose pour valider la configuration entre les deux services, mais que vous utilisez le paramètre ENCRYPTION ON par défaut, ssbdiagnose signale qu'une clé principale est absente de la base de données. Or la conversation ne requiert pas de clé principale.

Le rapport de configuration ssbdiagnose analyse un seul service Service Broker ou une seule paire de services à chaque exécution. Pour générer un rapport sur plusieurs paires de services Service Broker, générez un fichier de commande .cmd qui appelle ssbdiagnose plusieurs fois.

Rapport d'exécution

Lorsque -RUNTIME est spécifié, ssbdiagnose effectue une recherche dans toutes les bases de données spécifiées dans runtimeconnectionoptions et baseconnectionoptions afin de générer une liste des ID Service Broker. La liste complète des ID qui est créée dépend de ce qui est spécifié pour -NEW et -ID :

  • Si les options -NEW et -ID ne sont pas spécifiées, la liste inclut toutes les conversations pour toutes les bases de données spécifiées dans les options de connexion.

  • Si l'option -NEW est spécifiée, ssbdiagnose inclut les éléments de la première conversation qui démarre après exécution de ssbdiagnose. Sont ainsi inclus l'ID de la conversation et les descripteurs de la conversation pour les points de terminaison initiateur et cible.

  • Si l'option -ID est spécifiée avec un descripteur de conversation, seul ce descripteur est inclus dans la liste.

  • Si l'option -ID est spécifiée avec un ID de conversation, l'ID de conversation et les descripteurs de ses deux points de terminaison de conversation sont ajoutés à la liste.

  • Si l'option -ID est spécifiée avec un ID de groupe de conversations, tous les ID de conversation et les descripteurs de conversation de ce groupe sont ajoutés à la liste.

La liste n'inclut pas les éléments provenant de bases de données qui ne sont pas couvertes par les options de connexion. Supposons par exemple que vous utilisiez l'option -ID pour spécifier un ID de conversation, mais que vous ne fournissiez une clause runtimeconnectionoptions que pour la base de données contenant le service initiateur (et pas pour la base de données cible). Dans ce cas, ssbdiagnose n'inclut pas le descripteur de conversation cible dans sa liste d'ID, mais uniquement l'ID de conversation et le descripteur de conversation initiateur.

ssbdiagnose surveille les événements SQL Server Profiler des bases de données couvertes par runtimeconnectionoptions et baseconnectionoptions. Il recherche les événements Service Broker indiquant qu'une erreur a été rencontrée par un ou plusieurs ID Service Broker indiqués dans la liste d'exécution. ssbdiagnose recherche également des événements d'erreurs Service Broker au niveau système non associés spécifiquement à un groupe de conversations.

Si ssbdiagnose trouve des erreurs de conversation, il essaie de signaler la cause primaire de ces événements en exécutant également un rapport de configuration. L'utilitaire ssbdiagnose utilise les métadonnées des bases de données pour essayer de déterminer les instances, les ID Service Broker, les bases de données, les services et les contrats utilisés par la conversation. Il exécute ensuite un rapport de configuration à l'aide de toutes les informations disponibles.

Par défaut, ssbdiagnose ne signale pas les événements d'erreurs. Il signale seulement les problèmes sous-jacents identifiés au cours de la vérification de la configuration. Cela réduit la quantité d'informations signalée et vous aide à vous concentrer sur les problèmes de configuration sous-jacents. Vous pouvez spécifier -SHOWEVENTS pour afficher les événements d'erreurs rencontrés par ssbdiagnose.

Problèmes signalés par ssbdiagnose

ssbdiagnose signale trois catégories de problèmes. Dans le fichier de sortie XML, chaque catégorie de problème correspond à un type distinct de l'élément Issue. Les trois catégories de problèmes signalés par ssbdiagnose sont les suivantes :

  • Diagnostic (Diagnostic)
    Signale un problème de configuration. Sont inclus les problèmes identifiés soit lors de l'exécution d'un rapport CONFIGURATION, soit pendant la phase de configuration d'un rapport RUNTIME. ssbdiagnose signale chaque problème de configuration une seule fois.

  • Événement
    Signale un événement SQL Server Profiler qui indique qu'un problème a été rencontré par une conversation qui est surveillée pendant un rapport RUNTIME. ssbdiagnose signale les événements chaque fois qu'ils sont générés. Les événements peuvent être signalés plusieurs fois si plusieurs conversations rencontrent le problème.

  • Problème
    Signale un problème qui empêche ssbdiagnose d'effectuer une analyse de la configuration ou de surveiller des conversations.

Variables d'environnement sqlcmd

L'utilitaire ssbdiagnose prend en charge les variables d'environnement SQLCMDSERVER, SQLCMDUSER, SQLCMDPASSWORD et SQLCMDLOGINTIMOUT qui sont également utilisées par l'utilitaire sqlcmd. Vous pouvez définir les variables d'environnement soit en utilisant l'invite de commandes SET, soit en utilisant la commande setvar dans les scripts Transact-SQL exécutés à l'aide de sqlcmd. Pour plus d'informations sur l'utilisation de setvar dans sqlcmd, consultez Utilisation de sqlcmd avec des variables de script.

Autorisations

Dans chaque clause connectionoptions, la connexion spécifiée avec l'option -E ou -U doit être un membre du rôle de serveur fixe sysadmin dans l'instance spécifiée dans -S.

Exemples

Cette section contient des exemples d'utilisation de ssbdiagnose à une invite de commandes.

A. Vérification de la configuration de deux services dans la même base de données

L'exemple suivant montre comment demander un rapport de configuration dans le contexte suivant :

  • Le service initiateur et le service cible se trouvent dans la même base de données.

  • La base de données se trouve dans l'instance par défaut du Moteur de base de données.

  • L'instance se trouve sur l'ordinateur sur lequel ssbdiagnose est exécuté.

L'utilitaire ssbdiagnose signale la configuration qui utilise le contrat DEFAULT car ON CONTRACT n'est pas spécifié.

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

B. Vérification de la configuration de deux services sur des ordinateurs distincts qui utilisent une seule connexion

L'exemple suivant montre comment demander un rapport de configuration lorsque le service initiateur et le service cible se trouvent sur des ordinateurs distincts, mais sont accessibles en utilisant la même connexion via l'authentification Windows.

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

C. Vérification de la configuration de deux services sur des ordinateurs distincts qui utilisent des connexions distinctes

L'exemple suivant montre comment demander un rapport de configuration lorsque le service initiateur et le service cible se trouvent sur des ordinateurs distincts et que des connexions d'authentification SQL Server distinctes sont requises pour chaque instance du Moteur de base de données.

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. Vérification de la configuration de services mis en miroir sur des ordinateurs distincts avec le chiffrement anonyme

L'exemple suivant montre comment demander un rapport de configuration lorsque le service initiateur et le service cible se trouvent sur des ordinateurs distincts et que l'initiateur est mis en miroir sur une instance nommée. Ce rapport vérifie également que les services sont configurés pour utiliser le chiffrement anonyme.

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. Vérification de la configuration de deux contrats

L'exemple suivant montre comment générer un fichier de commandes qui demande des rapports de configuration dans le contexte suivant :

  • Le service initiateur et le service cible se trouvent dans la même base de données.

  • La base de données se trouve dans l'instance par défaut du Moteur de base de données.

  • L'instance se trouve sur l'ordinateur sur lequel ssbdiagnose est exécuté.

À chaque exécution, ssbdiagnose signale la configuration d'un contrat différent entre les mêmes 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. Surveillance du statut d'une conversation spécifique sur l'ordinateur local avec un délai d'attente

L'exemple suivant montre comment surveiller une conversation spécifique où le service initiateur et le service cible se trouvent dans la même base de données dans l'instance par défaut du même ordinateur qui exécute ssbdiagnose. La valeur de l'intervalle d'arrêt est de 20 secondes.

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

G. Surveillance du statut d'une conversation qui s'étend sur deux ordinateurs

L'exemple suivant montre comment surveiller une conversation spécifique où le service initiateur et le service cible se trouvent sur des ordinateurs distincts.

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. Surveillance du statut d'une conversation dans deux bases de données dans la même instance

L'exemple suivant montre comment surveiller une conversation spécifique où le service initiateur et le service cible se trouvent dans des bases de données distinctes dans la même instance du Moteur de base de données. Cet exemple utilise baseconnectionoptions pour spécifier l'instance et les informations de connexion, ainsi que deux clauses CONNECT TO pour spécifier les bases de données. -SHOWEVENTS est spécifié afin que tous les événements d'exécution soient inclus dans le rapport.

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

I. Surveillance du statut de deux conversations entre deux bases de données

L'exemple suivant montre comment surveiller deux conversations spécifiques où le service initiateur et le service cible se trouvent dans des bases de données distinctes dans la même instance du Moteur de base de données. Cet exemple utilise baseconnectionoptions pour spécifier l'instance et les informations de connexion, ainsi que deux clauses CONNECT TO pour spécifier les bases de données.

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. Surveillance du statut de toutes les conversations entre deux bases de données

L'exemple suivant montre comment surveiller toutes les conversations entre deux bases de données dans la même instance du Moteur de base de données. Cet exemple utilise baseconnectionoptions pour spécifier l'instance et les informations de connexion, ainsi que deux clauses CONNECT TO pour spécifier les bases de données.

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

K. Ignorer des erreurs spécifiques

L'exemple suivant montre comment ignorer les erreurs connues (303 et 304) détectées dans la configuration actuelle de l'activation dans un système test.

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

L. Redirection de la sortie XML de ssbdiagnose

L'exemple suivant montre comment demander à ce que ssbdiagnose génère sa sortie sous la forme d'un fichier XML redirigé vers un fichier. Le fichier TestDiag.xml peut ensuite être ouvert par une application pour analyser ou créer un rapport à partir des fichiers XML de ssbdiagnose. Vous pouvez également le consulter dans tout éditeur XML, tel que le bloc-notes XML.

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

M. Utilisation d'une variable d'environnement

L'exemple suivant commence par définir la variable d'environnement SQLCMDSERVER de sorte qu'elle contienne le nom du serveur, puis exécute ssbdiagnose sans spécifier l'option -S.

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