Partage via


Utilitaire ssbdiagnose (Service Broker)

S’applique à : SQL Server Azure SQL Managed Instance

L’utilitaire ssbdiagnose signale des problèmes dans des 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

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 ]

Options de ligne de commande

-XML

Spécifie que la sortie de ssbdiagnose doit être générée en XML mis en forme. Cette sortie peut être redirigée vers un fichier ou une autre application. Si -XML n’est pas spécifié, la sortie de ssbdiagnose est mise en forme en tant que texte lisible par l’utilisateur.

-LEVEL { ERROR | WARNING | INFO }

Spécifie le niveau des messages à signaler.

Valeur Description
ERROR Signaler uniquement les messages d’erreur.
WARNING (valeur par défaut) Signaler les messages d’erreur et d’avertissement.
INFO Signaler les messages d’erreur, d’avertissement et d’information.

-IGNORE error_id

Spécifie que les erreurs ou les messages ayant l’ID_erreur spécifié ne doivent pas être inclus dans les rapports. Vous pouvez spécifier -IGNORE plusieurs fois pour supprimer plusieurs ID de message.

<baseconnectionoptions>

Spécifie les informations de connexion de base utilisées par ssbdiagnose quand les options de connexion ne sont pas incluses dans une clause spécifique. Les informations de connexion indiquées dans une clause spécifique remplacent celles figurant dans baseconnectionoption. Ceci est effectué individuellement pour chaque paramètre. Par exemple, si les deux -S et -d sont spécifiés dans baseconnetionoptions, et uniquement -d est spécifié dans toconnetionoptions, ssbdiagnose utilise -S à partir baseconnetionoptions et -d à partir de toconnetionoptions.

CONFIGURATION

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

FROM SERVICE service_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 SERVICE service_name [ , broker_id ]

Spécifie le service qui est la cible des conversations.

nom_service: spécifie le nom du service cible.

broker_id : spécifie l’ID Service Broker qui identifie la base de données cible. ID_broker 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é par une base de données miroir. ssbdiagnose vérifie si l’itinéraire du service est un itinéraire mis en miroir, où MIRROR_ADDRESS est spécifiée sur 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 miroir.

ON CONTRACT contract_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 anonymous, et l’instruction GRANT SEND du service cible a spécifié le rôle public.

RUNTIME

Demande un rapport sur les problèmes à l'origine d'erreurs d'exécution pour une conversation Service Broker. Si ni -NEW ni -ID n’est spécifié, ssbdiagnose surveille toutes les conversations dans toutes les bases de données spécifiées dans les options de connexion. Si -NEW ou -ID est spécifié, 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 rencontré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 signale les événements de générateur de profils SQL 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 le contrôle d’exécution de la première conversation qui commence après le démarrage de ssbdiagnose.

  • -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 dans le jeu de résultats d’une instruction RECEIVE.

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

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 dans le jeu de résultats d’une instruction RECEIVE.

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

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 conversations sont signalés dans la colonne conversation_id des affichages catalogue sys.conversation_endpoints.

-TIMEOUT timeout_interval

Spécifie la durée d’exécution du rapport RUNTIME en secondes. Si vous ne spécifiez pas -TIMEOUT, 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 la fin de l’intervalle de délai d’expiration. 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, vous ne devez spécifier qu’une seule clause CONNECT TO. Si les services se trouvent dans des bases de données séparées, 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 par le biais de l’authentification Windows à une instance du moteur de base de données en utilisant votre compte Windows actuel comme ID de connexion. La connexion doit être membre du rôle 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 l’option -E ni l’option -U n’est spécifiée, ssbdiagnose utilise la valeur de la variable d’environnement SQLCMDUSER. Si SQLCMDUSER n’est pas définie non plus, ssbdiagnose utilise l’authentification Windows.

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

-U login_id

Ouvrir une connexion par le biais de l’authentification SQL Server en utilisant l’ID de connexion spécifié. La connexion doit être membre du rôle serveur fixe sysadmin.

Si ni l’option -E ni l’option -U n’est spécifiée, ssbdiagnose utilise la valeur de la variable d’environnement SQLCMDUSER. Si la variable SQLCMDUSER 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.

-P password

Spécifie le mot de passe de l’ID de connexion -U. Les mots de passe respectent la casse. Si vous utilisez l’option -U mais pas l’option -P, ssbdiagnose utilise la valeur de la variable d’environnement SQLCMDPASSWORD. Si la variable SQLCMDPASSWORD n’est pas définie non plus, ssbdiagnose invite l’utilisateur à entrer un mot de passe.

Attention

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ée sans mot de passe, ssbdiagnose utilise le mot de passe par défaut (NULL).

Important

N'utilisez pas de mot de passe vide. Utilisez un mot de passe fort. Pour plus d’informations, consultez Strong Passwords.

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é.

-S server_name [ \instance_name ]

Spécifie l’instance du moteur de base de données qui contient les services Service Broker à analyser.

Spécifiez server_name pour vous 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 vous ne spécifiez pas l’option -S, ssbdiagnose utilise la valeur de la variable d’environnement SQLCMDSERVER. Si la variable SQLCMDSERVER 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.

-d database_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 vous ne spécifiez pas l’option -d, 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 connexion.

-l login_timeout

Spécifie le délai d'attente d'une tentative de connexion à un serveur (en secondes). Si vous ne spécifiez pas l’option -l, ssbdiagnose utilise la valeur définie pour la variable d’environnement SQLCMDLOGINTIMEOUT. Si SQLCMDLOGINTIMEOUT n’est pas défini non plus, le délai d’attente par défaut est de 30 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.

-N encryption_option

Spécifie que la connexion est chiffrée. Les valeurs possibles sont Optional, Mandatory et Strict. La valeur entrée représente le niveau de chiffrement souhaité et minimal. La valeur par défaut est Mandatory.

Avec le chiffrement Mandatory sélectionné, vous devez utiliser un certificat d’une autorité de confiance approuvée. Pour plus d'informations, consultez Exigences des certificats pour SQL Server.

Pour utiliser un chiffrement strict, le moteur de base de données SQL Server doit être configuré avec un certificat TLS signé par une autorité de certification racines de confiance.

-i hostname_in_certificate

Spécifie un autre nom commun attendu (CN) ou un autre nom de l’objet (SAN) dans le certificat de serveur à utiliser lors de la validation du certificat de serveur. Sans cette option, la validation de certificat garantit que le CN ou le SAN dans le certificat correspond au nom du serveur auquel vous vous connectez. Ce paramètre peut être renseigné lorsque le nom du serveur ne correspond pas au CN ou au SAN, par exemple lors de l’utilisation d’alias DNS.

-C

Spécifie que la connexion fait confiance au certificat de serveur et ignore la validation du certificat de serveur. Cette option n’est pas nécessaire lorsque des certificats de serveur approuvés sont utilisés.

-?

Affiche l'aide de la ligne de commande.

Notes

Utilisez ssbdiagnose pour effectuer les opérations suivantes :

  • Vérifier qu’il n’y a pas d’erreurs de configuration dans une application Service Broker récemment configurée.

  • Vérifier qu’il n’y a pas d’erreurs de configuration après un changement de configuration dans une application Service Broker existante.

  • Vérifier qu’il n’y a pas d’erreurs de configuration après le détachement d’une base de données Service Broker, puis son rattachement à 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.

Rapport de configuration

Pour analyser correctement la configuration utilisée par une conversation, exécutez un rapport de configuration ssbdiagnose utilisant les mêmes options que celles de la conversation. Si vous spécifiez pour ssbdiagnose un niveau d’options inférieur à celui de la conversation, 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 ENCRYPTION OFF. Si vous exécutez ssbdiagnose pour valider la configuration entre les deux services, mais 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 de 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

Quand vous spécifiez -RUNTIME, ssbdiagnose recherche toutes les bases de données spécifiées dans runtimeconnectionoptions et baseconnectionoptions pour générer la liste des ID Service Broker. Le contenu de liste d'ID générée dépend des options -NEW et -ID :

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

  • Si vous spécifiez -NEW, 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 vous spécifiez -ID avec un descripteur de conversation, seul ce descripteur est inclus dans la liste.

  • Si vous spécifiez -ID 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 vous spécifiez -ID 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. Par exemple, supposons que vous utilisez -ID pour spécifier un ID de conversation, mais que vous ne fournissez une clause runtimeconnectionoptions que pour la base de données initiateur et pas pour la base de données cible. ssbdiagnose n’inclut pas le descripteur de la conversation cible dans sa liste d’ID. Seuls l’ID de conversation et le descripteur de la conversation initiateur sont inclus.

ssbdiagnose analyse les événements SQL Server Profiler des bases de données couvertes par runtimeconnectionoptions et baseconnectionoptions. Il recherche des événements Service Broker indiquant qu’une erreur a été rencontrée par une ou plusieurs ID Service Broker dans la liste d’exécution. ssbdiagnose recherche également des événements d’erreur Service Broker au niveau du système qui ne sont pas associés à un groupe de conversations.

Si ssbdiagnose détecte des erreurs de conversation, l’utilitaire tente de générer un rapport sur la cause première des événements en exécutant également un rapport de configuration. 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’erreur. 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’erreur rencontrés par ssbdiagnose.

Problèmes signalés par ssbdiagnose

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

  • Diagnosis : 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.

  • Event : signale un événement SQL Server Profiler qui indique qu’un problème a été rencontré par une conversation 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.

  • Problem : 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 des scripts Transact-SQL exécutés à l’aide de sqlcmd. Pour plus d’informations sur la façon d’utiliser setvar dans sqlcmd, consultez Utiliser 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 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.

  • Les instances se trouvent 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'expiration

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 exécutant 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 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. Utiliser une variable d’environnement

L’exemple suivant commence par définir la variable d’environnement SQLCMDSERVER pour 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