OVH Cloud OVH Cloud

transaction distribuée

3 réponses
Avatar
HPA
Bonjour,
je dois simuler la présence d'un second serveur sql 2k et je n'ai qu'un seul
serveur de développement ; j'ai donc créé la base de données à laquelle je
dois accéder (en lecture seule) sur mon propre serveur, puis j'ai ajouté un
serveur lié qui pointe sur cette base.
L'accès à cette base "faussement" distante fonctionne normalement, sauf dans
le cas où j'encapsule des instructions dans une transaction : je reçois
systématiquement le message d'erreur suivant :
L'opération demandée ne peut pas être effectuée car le fournisseur OLE DB
'SQLOLEDB' n'a pas réussi à démarrer de transaction distribuée.
[OLE/DB provider returned message: La nouvelle transaction ne peut pas
s'inscrire dans le coordinateur de transactions spécifié. ]
Trace de l'erreur OLE DB [OLE/DB Provider 'SQLOLEDB'
ITransactionJoin::JoinTransaction returned 0x8004d00a].

MSDTC est démarré et son exécution semble normale (la commande "begin
distributed tran" ne retourne pas d'erreur) ; j'ai autorisé "RPC" et "Sans
RPC" sur le serveur lié. J'ai lu dans un forum que cela pouvait provenir de
la présence d'un firewall qui empêche la réolution de noms ; j'ai désactivé
le mien et le pb demeure.

Est-ce que quelqu'un a une idée de la façon dont je pourrais solutionner ce
pb ?
Merci par avance

HPA

3 réponses

Avatar
Jorge Lavado
Bonjour

Comment a tu lié ton serveur ? (example:par T-sql avec sp_addlinkedserver ou em design mode)?
Avatar
Med Bouchenafa[MVP]
"Les serveurs liés en boucle ne peuvent pas être utilisés dans une transaction distribuée. "

Voir dans Aide En Ligne le chapitre "Remarques concernant les serveurs liés dans un serveur SQL
ordonné en clusters"

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris

"HPA" a écrit dans le message de news:
2aoWb.11298$
Bonjour,
je dois simuler la présence d'un second serveur sql 2k et je n'ai qu'un seul
serveur de développement ; j'ai donc créé la base de données à laquelle je
dois accéder (en lecture seule) sur mon propre serveur, puis j'ai ajouté un
serveur lié qui pointe sur cette base.
L'accès à cette base "faussement" distante fonctionne normalement, sauf dans
le cas où j'encapsule des instructions dans une transaction : je reçois
systématiquement le message d'erreur suivant :
L'opération demandée ne peut pas être effectuée car le fournisseur OLE DB
'SQLOLEDB' n'a pas réussi à démarrer de transaction distribuée.
[OLE/DB provider returned message: La nouvelle transaction ne peut pas
s'inscrire dans le coordinateur de transactions spécifié. ]
Trace de l'erreur OLE DB [OLE/DB Provider 'SQLOLEDB'
ITransactionJoin::JoinTransaction returned 0x8004d00a].

MSDTC est démarré et son exécution semble normale (la commande "begin
distributed tran" ne retourne pas d'erreur) ; j'ai autorisé "RPC" et "Sans
RPC" sur le serveur lié. J'ai lu dans un forum que cela pouvait provenir de
la présence d'un firewall qui empêche la réolution de noms ; j'ai désactivé
le mien et le pb demeure.

Est-ce que quelqu'un a une idée de la façon dont je pourrais solutionner ce
pb ?
Merci par avance

HPA




Avatar
Sylvain Lafontaine
Plutôt que de créer un serveur lié vers une base de donées situé dans le
même serveur, il serait préférable de créer une seconde instance de
SQL-Server. SQL-Server 2000, comme MSDE, permet en effet d'installer
plusieurs instances sur la même machine.

Dans votre cas, l'utilisation de Microsoft Virtual PC 2004 serait cependant
une solution encore meilleure, car vous seriez sûr d'avoir une simulation
complète.

S. L.

"HPA" wrote in message
news:2aoWb.11298$
Bonjour,
je dois simuler la présence d'un second serveur sql 2k et je n'ai qu'un


seul
serveur de développement ; j'ai donc créé la base de données à laquelle je
dois accéder (en lecture seule) sur mon propre serveur, puis j'ai ajouté


un
serveur lié qui pointe sur cette base.
L'accès à cette base "faussement" distante fonctionne normalement, sauf


dans
le cas où j'encapsule des instructions dans une transaction : je reçois
systématiquement le message d'erreur suivant :
L'opération demandée ne peut pas être effectuée car le fournisseur OLE DB
'SQLOLEDB' n'a pas réussi à démarrer de transaction distribuée.
[OLE/DB provider returned message: La nouvelle transaction ne peut pas
s'inscrire dans le coordinateur de transactions spécifié. ]
Trace de l'erreur OLE DB [OLE/DB Provider 'SQLOLEDB'
ITransactionJoin::JoinTransaction returned 0x8004d00a].

MSDTC est démarré et son exécution semble normale (la commande "begin
distributed tran" ne retourne pas d'erreur) ; j'ai autorisé "RPC" et "Sans
RPC" sur le serveur lié. J'ai lu dans un forum que cela pouvait provenir


de
la présence d'un firewall qui empêche la réolution de noms ; j'ai


désactivé
le mien et le pb demeure.

Est-ce que quelqu'un a une idée de la façon dont je pourrais solutionner


ce
pb ?
Merci par avance

HPA