2016-10-14 2 views
0

J'ai stocké la procédure que j'essaie d'exécuter dans SSIS à l'aide de la tâche d'exécution SQL. Cette procédure stockée implique Cursor et la dernière étape est De-allocate Cursor. J'observe que même après que l'exécution de la procédure stockée est terminée, l'exécution de la tâche SQL ne se termine pas et s'arrête longtemps avant de passer à l'étape suivante. Pour tester cela, j'ai ajouté stmt comme dernière ligne dans la procédure stockée avec GETDATE() comme valeur de colonne. Il montre l'exécution STP terminée presque 2 heures avant la fin de la tâche d'exécution SQL. Toute idée si Execute SQL Task exécute des étapes supplémentaires avec la procédure stockée requiseExécution de la tâche SQL poursuite de l'exécution après l'achèvement de la procédure stockée

+2

Pourquoi supposez-vous que SSIS ou la tâche d'exécution SQL est en faute? L'utilisation de curseurs est une odeur très forte - il y a très, très, très peu de choses qui nécessitent un curseur. Le seul scénario valide, le traitement par lots, est adressé par un datalfow SSIS. Il est fort probable que votre procédure stockée se termine * non * lorsque vous pensez que c'est le cas, car le curseur prend beaucoup plus de temps à terminer qu'une instruction SQL équivalente. Dans le pire des cas, l'utilisation d'un Curseur finit par verrouiller la table entière pendant des heures, ce qui entraîne une connexion avec d'autres instructions –

+0

Pouvez-vous poster votre code ou nous dire ce que vous essayez de faire. Cela nous donnera une meilleure idée de ce qui se passe et peut-être trouver une meilleure solution. –

+0

Regardez aussi dans profiler en cours d'exécution plutôt que d'utiliser une déclaration d'insertion à la fin du SP> –

Répondre

0

Résolu :) C'était essentiellement parce que j'utilisais quelques instructions Print dans les procédures stockées SQL et comme j'exécutais ces procédures stockées à partir de SSIS, cela pouvait être créer des tampons qui étaient effacés après l'exécution. J'ai commenté Print stmts dans mon proc stocké et le temps d'exécution dans SSIS est le même que le temps d'exécution dans SSMS.

Merci de m'avoir aidé.

Observe