2009-12-14 6 views
0

Je suis juste un débutant à la base de données.
Je me demandais comment surveiller une base de données pour des changements programmatiques. Supposons que je souhaite avoir une application .net qui s'exécuterait après chaque insertion de 100ème ou (nième) ligne ou suppression ou mise à jour de ligne. Comment peut-on y arriver?
Je connais peu les déclencheurs. Ils peuvent être utilisés pour déclencher des exécutables.
Mais j'ai entendu que ce n'est pas une bonne pratique. Y a-t-il un autre moyen?
2] Les événements de feu de la base de données sont-ils mis à jour lors des mises à jour de table? et peuvent-ils être pris dans un programme?
3] Les services de reporting SQL peuvent-ils être utilisés ici?Surveillance/surveillance de la base de données (activité)

(également en supposant que cette application est indépendante du programme réel qui fait la manipulation de base de données .)

thxz

Répondre

2

SQL Server 2005 introduit la requête notifications, une nouvelle fonctionnalité qui permet une application de demander une notification de SQL Server lorsque les résultats d'un changement de requête. Les requêtes Query permettent aux programmeurs de de concevoir des applications qui interrogent la base de données uniquement lorsqu'il y a une modification à des informations que l'application a précédemment récupérées.

Vérifiez la MSDN link pour plus de clarté et sample immplementation

+0

Ou, si elle était Oracle, l'utilisation des notifications de modification de base de données: http://download.oracle .com/docs/cd/B19306_01/appdev.102/b14251/adfns_dcn.htm – Salamander2007

+0

cela impliquera-t-il des problèmes de performances? – Amitd

0

Un déclencheur va vraiment être votre seule façon, sauf si vous n'êtes pas préoccupé par la précision de "100ème" ou "nième".

La réponse à 2 et 3 sont non.

Vous pouvez écrire des procédures stockées gérées (MSDN example) mais cela ne vous aide pas vraiment ici. En général, les déclencheurs peuvent être une mauvaise pratique car ils peuvent bloquer l'appelant initial mais parfois ils sont la seule solution.

0

Je pense que vous avez besoin de remettre en question votre exigence de placer cette surveillance de données de bas niveau dans une application distincte. Pensez où vos modifications de données pourraient provenir -

Avez-vous une compréhension complète de tous:

  • proc stocké au sein de votre db (maintenant et à venir) et ceux qui mettent à jour ce tableau?
  • demande
  • qui peut frapper votre base de données (maintenant et à venir)

Sinon, en regardant les changements au niveau même niveau de données (dans le db) est probablement la meilleure option, et cela signifie probablement déclencheurs ...