2010-01-26 4 views
3

Une application tierce stocke des données dans une énorme base de données (SQL Server 2000/2005). Cette base de données contient plus de 80 tables. Comment pourrais-je savoir combien de tables sont affectées lorsque l'application stocke un nouvel enregistrement dans la base de données? Y at-il quelque chose disponible je peux récupérer la liste des tables affectées?Comment savoir combien de tables sont affectées dans la base de données après l'insertion d'un enregistrement?

+0

Je suppose que c'est en perspective, je considère 80 tables à une base de données minuscule. – HLGEM

Répondre

3

Vous pourriez être en mesure de dire en exécutant une trace dans SQL Profiler sur la base de données - l'événement SQL:StmtCompleted est probablement celui de surveiller - à savoir si l'application fait une série d'inserts en plusieurs tables, vous devriez les voir passer dans Profiler.

0

Vous pouvez ajouter des déclencheurs sur les tables qui sont déclenchées à la mise à jour. Vous pouvez l'utiliser pour mettre à jour une table de journal qui signalerait les mises à jour.

voir plus ici: http://www.devarticles.com/c/a/SQL-Server/Using-Triggers-In-MS-SQL-Server/

+0

Est-ce que je vais ajouter des déclencheurs aux 80 tables? Puisque les données sont saisies par un outil tiers, j'ai juste besoin de savoir quand un enregistrement est inséré dans combien de tables sur 80 tables? – Jango

2

Vous pouvez utiliser SQL Profiler pour tracer des requêtes SQL. Ainsi, vous verrez la séquence d'appels causée par un clic sur un bouton dans votre application.

Également utiliser peut utiliser des métadonnées ou des outils SQL pour obtenir la liste des déclencheurs qui pourraient faire beaucoup d'actions sur simple insertion.

0

Profiler est la voie à suivre, comme d'autres l'ont dit en particulier avec une base de données tierce non familière. Je voudrais également passer du temps à créer des diagrammes afin que vous puissiez voir les relations de clés étrangères et comprendre comment la base de données est mise en place. Je connais si bien ma structure de base de données, je peux dire à partir des champs qui sont insérés quelles tables ils affectent et je sais quels déclencheurs sont sur mes tables et ce qu'ils affectent. Il n'y a pas de substitut pour prendre le temps de comprendre la base de données que vous soutenez.

+0

J'ai aussi compris. Merci – Jango

0

Si vous avez le script SQL utilisé pour stocker le nouvel enregistrement (Généralement, il doit s'agir d'une instruction insert ou d'une autre instruction DML telle que update, merge, etc.). Ensuite, vous pouvez savoir combien de tables ont été affectées par l'analyse de ces scripts SQL.

Prenez ce SQL par exemple:

Insert into emp(fname, lname) 
Values('john', 'reyes') 

Vous pouvez obtenir le résultat comme ceci:

sstinsert 
emp(tetInsert) 

Tables: 
emp 

Fields: 
emp.fname 
emp.lname 
Questions connexes