Bonjour à tous,
Je rencontre un petit problème que j'ai du mal à résoudre et j'aimerais savoir si l'un de vous en détient la clé. Voilà le contexte :
Dans un programme DELPHI (4.0), je fais appel successivement à deux procédures stockées dans une base de données sql server 2005.
- La première réalise un INSERT de données dans une table 'clients' et fonctionne parfaitement.
- La seconde est censée réaliser l'opération suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 If ( select count(*) from clients) > 0 begin declare @mail varchar(250) select @mail = email from utilisateur where id_utilisateur = dbo.gibaud_user() Exec master..xp_sendmail @recipients = 'adressemail@societe.com', @query = 'Select * from clients', @subject = 'sujet du mail', @attach_results = 'TRUE', @width = 250 delete clients end
Mais lorsque celle-ci doit s'exécute dans mon application delphi, j'obtiens l'erreur suivante :
Erreur SQL générale. xp_sendmail : Impossible d'accéder à SQL Server
Après moult recherches, je suis tombé sur cette information (issue de http://technet.microsoft.com/fr-fr/l...v=sql.90).aspx) :
L'argument query peut être bloqué par un verrou détenu par la connexion cliente qui a lancé xp_sendmail. Par exemple, si vous effectuez la mise à jour d'une table au sein d'une transaction et que, pour cette mise à jour, vous créez un déclencheur qui tente de sélectionner les mêmes informations de ligne mises à jour que le paramètre query, la connexion SQL Mail est bloquée par le verrou exclusif détenu sur cette ligne par la connexion cliente initiale.
En effet, lorsque je supprime l'argument QUERY (et le ATTACH RESULTS associé) de mon xp_sendmail, celui-ci fonctionne sans problèmes. J'en ai donc déduit que mon problème venait de la connexion cliente du programme delphi et j'aimerais savoir comment vérifier que celle-ci crée bien un verrou et, le cas échéant, comment désactiver ce verrou ?
En vous remerciant par avance de vos réponses !
Partager