|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Inscription : janvier 2008 Messages : 212 ![]() |
Bonjour à tous,
Nous disposons d'une table dont la clé primaire est un integer autoincrémenté. Nous avons remarqué des trous de séquence dans l'incrémentation de ce compteur. Dès lors, on présume que 1) soit des lignes sont supprimées, 2) soit des transactions n'arrivent pas à terme. Nous avons écarté l'option 1 car un trigger nous permet de détecter toute suppressions de lignes. Nous envisageons l'option 2. Nous avons pour de ce faire désactivé des contraintes check (ces contraintes appelant des fonctions scalaires permettant de vérifier l'intégrité que nous souhaitons). J'ai remplacé ces contraintes par un trigger qui va écrire dans une table quel est la ligne, l'application et le login afin de détecter toutes applications voulant insérer des lignes qui ne respectent pas lesdites contraintes. Mais aucune détection n'a lieu. J'ai été voir au niveau du SQL Profiler s'il existe un évènement qui me permet de détecter toute transaction ayant échoué mais il ne me semble pas que cela existe. Si quelqu'un pouvait m'indiquer d'autres pistes. D'avance, merci. |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 660 ![]() |
Bonjour,
Avez-vous effectué le changement des contraintes vers le trigger en encapsulant cela dans une contrôle TRY ... CATCH ? Si vous êtes sous SQL Server 2000, il vous faudra en revanche tester @@ERROR après chaque instruction de votre trigger @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#3 |
|
Membre habitué
![]() Inscription : janvier 2008 Messages : 212 ![]() |
Non, je n'y avais pas pensé. Nous sommes en SQL 2005 SP3.
|
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : janvier 2008 Messages : 212 ![]() |
Depuis que les intégrités ont été remplacée par des triggers au lieu des contraintes check, le phénomène de trou de séquence a disparu.
Pourtant, la table de log ne contient aucun relevé de problème d'intégrité. Quelque chose m'échappe. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com