2017-08-25 7 views
1

soir,T-SQL - Stockez la procédure stockée insérée dans/mise à jour d'un enregistrement dans une table

J'ai commencé dans une organisation où une grande solution SSIS impliquant de gros paquets pousse des données dans tous les sens, y compris entre les serveurs . La personne qui l'a développé est partie et je suis resté avec la tâche de le trouver et de le déboguer ...

J'ai produit des DFDs assez étendus pour mapper les relations entre les procédures stockées, les tables, les vues etc mais il y a quelques tables où j'ai trouvé impossible de déterminer quel processus inséré dedans/mis à jour.

Ce que je voudrais faire est de créer des champs sur les tables qui me préoccupent avec les valeurs par défaut chaque fois que la table est écrite.

  • Champ1,
  • Champ2
  • etc ...
  • 'DateTime Dossier ajouté'
  • 'processus que le 1er Inséré le dossier',
  • 'DateTime Fiche Dernière mise à jour'
  • 'Processus ayant mis à jour la fiche'

Où les valeurs de processus seraient sous la forme 'Server.Database.schema.UspName'

J'ai examiné sysprocesses et recherché en ligne et je ne trouve pas de solution. Des idées?

{En utilisant SSMS 2014}

Merci à l'avance,

+0

Attention: l'ajout ou la modification de colonnes risque d'entraîner la défaillance d'autres processus. Si vous voyez l'utilisation de "select *" ou "insert table select" (c'est-à-dire, ne spécifiant pas la liste des colonnes dans une instruction d'insertion), de mauvaises choses se produiront. Une trace côté serveur filtrée pour des noms de tables spécifiques est une alternative. – SMor

+0

Merci SMou, j'utilise un environnement DEV pour comprendre le processus. Une fois que j'ai réussi à comprendre ce qu'il fait, nous allons le réécrire complètement afin de simplifier le processus et j'espérais ajouter ces colonnes pour un dépannage ultérieur. – SliderSteve

Répondre

0

Jetez un oeil sur les liens ci-dessous. Il décrit comment vous pouvez obtenir des informations sur l'instance appelante via un déclencheur. How to get the stored procedure name from a trigger when an update operation was performed?

+0

Un déclencheur a été suggéré par un collègue mais nous étions préoccupés par la baisse de performance. Je pense que cela fonctionnerait pour la vérification d'erreur ponctuelle mais j'espérais pouvoir ajouter du code à chacune des tables et le laisser là. – SliderSteve

+0

J'ai réussi à obtenir ce qui suit pour une usp qui insère d'abord l'enregistrement mais cela ne fonctionne pas quand un enregistrement est mis à jour: (object_name (@@ procid)) – SliderSteve