Obtenir une sortie détaillée du travail de l'Agent SQL


16

Nous avons un travail SQL Server Agent qui exécute un plan de maintenance pour réindexer toute la base de données sur le serveur. Récemment, cela a échoué, mais l'historique des travaux ne fournit pas suffisamment d'informations pour diagnostiquer le problème.

Dans l'historique du travail, il indique que le travail a échoué. Le travail a été appelé par l'utilisateur foo \ bar. La dernière étape à exécuter était l'étape 1 (Reconstruire l'index).

Dans la fenêtre de détails se trouvent plusieurs messages sous la forme suivante:

Executing query "ALTER INDEX [something] ON [a...".: 0% complete  End Progress  Progress: 2015-03-15 22:51:23.67     Source: Rebuild Index Task

L'instruction SQL en cours d'exécution est tronquée, et je suppose que la sortie de l'instruction est également tronquée, ce qui m'empêche de pouvoir identifier quelle instruction particulière a échoué et pourquoi. Existe-t-il un moyen d'extraire le texte intégral de ces messages?


1
Je pense que @kin répond bien à votre question initiale, mais à mon avis, il s'agit davantage d'un problème de débogage. Si vous connaissez l'index sur lequel il échoue, j'essayerais d'identifier pourquoi cet index spécifique échoue. Pouvez-vous voir le code sql utilisé? Est-ce dans un proc stocké? Vous pouvez faire plusieurs choses pour le réduire. Créez un travail avec uniquement cet index. Exécutez la trace SQL pendant l'exécution de ce travail. Capturez le sql utilisé puis essayez de reproduire le problème.
Sir Swears-a-lot

Réponses:


18

Existe-t-il un moyen d'extraire le texte intégral de ces messages?

Vous pouvez y parvenir de 2 manières - Passez à l'étape de la tâche et sélectionnez l'onglet Avancé:

une. Sortie dans un fichier (<== Ma méthode préférée)

entrez la description de l'image ici

b. "Se connecter à la table" et "Inclure la sortie de l'étape dans l'historique" (<== Vous devez effectuer un découpage msdb..sysjobhistoryà long terme car les messages sont stockés au nvarchar(max)lieu de nvarchar(1024))

entrez la description de l'image ici

Pour voir les informations supplémentaires enregistrées, vous devez utiliser cette procédure stockée sp_help_jobsteplog ou vous pouvez interroger la msdb.dbo.sysjobstepslogstable directement.

Plus d'infos ici


À la vôtre, je vais essayer. juste pour vous faire savoir, le nom correct de cette table est msdb.dbo.sysjobstepslogs ('logs' plutôt que 'log'). J'ai essayé de modifier la réponse mais les modifications à un seul caractère ne sont pas autorisées.
toryan

1
@toryan np. J'ai modifié ma réponse. Si vous pensez que j'ai répondu à votre question, veuillez voter / marquer comme réponse.
Kin Shah

1
J'ai relancé le travail et il n'a généré qu'une seule fois cette fois, qu'il a enregistré dans le tableau comme décrit. Malheureusement, le texte de la requête était encore tronqué - existe-t-il un moyen d'obtenir plus d'informations?
toryan

J'en doute. Pouvez-vous essayer avec la méthode de fichier de sortie 1 comme décrit dans ma réponse.
Kin Shah

1
@toryan J'ai eu le même problème - la journalisation était toujours tronquée, même avec la sortie vers une table (méthode (b) ci-dessus) et la lecture sysjobstepslogs. C'était la recommandation de la plupart des discussions en ligne sur ce problème. Mais la méthode (a), sortie dans un fichier, n'a PAS eu ce problème: les fichiers texte me montrent toute la journalisation des étapes du travail, enfin sans troncature! (Dans mon cas, mes étapes de travail sont des DTEXECcommandes, exécutant des packages SSIS.) Seul inconvénient: seule la dernière exécution est visible, sauf si elle est ajoutée au fichier. Plutôt que d'ajouter, je choisis de vivre avec la troncature lors des exécutions précédentes.
Doug_Ivison

2

Vous pouvez obtenir le texte intégral:

  1. Aller au travail
  2. Clic-droit select properties
  3. Passez à l'étape de l'emploi
  4. Sélectionnez stepet cliquez sur le editbouton
  5. Sélectionnez advanced. Ici vous pouvez voir le chemin du journal.

Maintenant, c'est simple, suivez le chemin.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.