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 !