2017-10-19 38 views
0

J'ai été chargé d'étudier une erreur de dépassement de délai pour un ETL existant. Je voudrais accéder aux journaux de l'exécution ETL précédente pour identifier où le délai d'attente se produit. L'ETL se trouve sur Azure et une tâche continue d'échouer.SQL Server recherchant une erreur de temporisation

La tâche qui continue d'échouer déclenche efficacement une procédure stockée sur SQL Server. Je me demandais s'il était possible pour moi d'utiliser des journaux et des statistiques pour faire ma recherche. Je connais les tables utilisées dans la procédure stockée, donc j'espère que cela me donnera un point de départ. Mais essentiellement, je suis après les informations suivantes.

  1. quelle table le temps se produit

  2. Quelles sont les causes du temps à savoir est une impasse

  3. Quels sont les autres processus à savoir les procédures stockées utilisent la table affectée.

Quelles fonctionnalités puis-je utiliser dans SQL Server pour creuser? Toute aide serait appréciée.

Répondre

0

La tâche qui échoue après, coups de pied efficacement sur une procédure stockée sur SQL Server

Je recommande un réglage fin de cette procédure et essayer les statistiques de mise à jour pour les tables impliquées dans ce procedure.This devraient prendre soin de la plupart des sorties de temps ..

quelle table le temps se produit

Ther e devrait être erreur enregistrée dans l'analyse log azur

Quelles sont les causes du temps à savoir est une impasse

Time out n'est pas une impasse

La plupart des causes de temporisations sont liées à Dans notre cas, nous sommes en mesure de dépasser ce délai en réglant la requête concernée et en modifiant également les paramètres de temporisation

0

Sharingan,

Les étapes dans la procédure stockée n'entraînent pas le délai. Le client appelant le SP a une valeur de délai d'attente, et si le SP prend plus de temps, il "pense" que quelque chose ne va pas. Cela ne signifie pas que votre SP est mal conçu ou qu'il a réellement échoué. Une approche consiste à créer une table de journalisation, et dans votre procédure stockée, au début, supprimer toutes les lignes de cette table (c'est une table TEMP qui est effacée chaque fois que le SP s'exécute). Ensuite, avant chaque étape de la procédure, insérez une ligne dans votre table de journalisation avec quelque chose comme «Démarrer l'ETL de l'employé ...» et après l'étape «Terminé Employee ETL ...».

Vous pouvez également vérifier si une erreur s'est produite après chaque étape et écrire le message d'erreur dans cette table. Cela devient effectivement votre propre journal.

IF @@ERROR <> 0 
BEGIN 
    -- Add Error_Message to your table 
END 

Si le processus d'appel n'a pas la valeur de délai d'attente correctement configuré, vous pouvez voir que la SP se termine en fait (en examinant votre journal), mais le client pense à tort quelque chose est erroné parce que la valeur du délai d'attente a été dépassé . Une erreur de délai d'attente au niveau du client n'arrêtera pas SQL Server d'avancer avec le travail.

Pouvez-vous essayer d'exécuter la procédure stockée par elle-même, à partir de SSMS, par exemple? Si cela fonctionne, vous êtes sur la bonne voie pour repérer le problème, mais il est important de distinguer s'il s'agit de SQL ou de votre client, comme une application Azure Logic, ou de tout autre processus lancant le processus ETL. Vous devrez peut-être fabriquer/simuler tous les paramètres passés dans le SP, mais cela devrait être facile dans SSMS.

Vous pouvez également diviser un gros SP en un groupe de plus petits, et ajouter d'autres étapes à votre client ETL, au lieu d'un énorme appel SP. Cela peut vous obliger à implémenter une gestion des erreurs transitoires, mais cela peut être gérable dans votre situation.

Bonne chance!