OVH Cloud OVH Cloud

Probleme de connexion manuel et distribué

6 réponses
Avatar
marmotte
Bonjour,

J'utilise sql server via VB.
Quand je veux ex=E9cuter une ligne de code dans vb pour=20
faire une insertion ou une suppression j'ai le message=20
suivant dans VB "impossible de cr=E9er une nouvelle=20
connexion manuelle ou distribu=E9".
j'aimerais savoir s'il n'y a pas une option =E0 cliquer dans=20
sql server pour y rem=E9dier.

merci

6 réponses

Avatar
Patrice
Jamais vu. Quelle est la chaîne de connexion ? A quel moment le plantage ?
Un peu de code ?

Est-ce bien un problème de "connexion" (ne serait ce pas plutôt
"transaction") ?

--

"marmotte" a écrit dans le message de
news:04d201c493f4$b3eaf680$
Bonjour,

J'utilise sql server via VB.
Quand je veux exécuter une ligne de code dans vb pour
faire une insertion ou une suppression j'ai le message
suivant dans VB "impossible de créer une nouvelle
connexion manuelle ou distribué".
j'aimerais savoir s'il n'y a pas une option à cliquer dans
sql server pour y remédier.

merci
Avatar
marmotte
voici le code en vb et ça plante après le execute

'Début de transaction
cn.BeginTrans

sql = "UPDATE W_Requetes SET [Nom requête] = '" &
DoubleLesQuotes(NouveauNomRequête) & "',[Créateur requête]
= '" & DoubleLesQuotes(NomProfil) & " ' WHERE [Nom
requête] = '" & DoubleLesQuotes(NomRequete) & "'"
On Error Resume Next
cn.Execute sql
If DetecteErreurSQL(sql) = True Then
cn.RollbackTrans
Exit Sub
End If

'Validation des écritures
cn.CommitTrans

et l'erreur précise est "impossible de créer une nouvelle
connexion en mode de transaction manuelle ou distribuée"

merci

-----Message d'origine-----
Jamais vu. Quelle est la chaîne de connexion ? A quel


moment le plantage ?
Un peu de code ?

Est-ce bien un problème de "connexion" (ne serait ce pas


plutôt
"transaction") ?

--

"marmotte" a écrit


dans le message de
news:04d201c493f4$b3eaf680$
Bonjour,

J'utilise sql server via VB.
Quand je veux exécuter une ligne de code dans vb pour
faire une insertion ou une suppression j'ai le message
suivant dans VB "impossible de créer une nouvelle
connexion manuelle ou distribué".
j'aimerais savoir s'il n'y a pas une option à cliquer dans
sql server pour y remédier.

merci


.



Avatar
Patrice
A mon avis :
- la transaction est inutile (par défaut SQL Server met chaque instruction
dans une transaction auto validée).

Ceci dit, ce code devrait tout de même fonctionner. Si tu veux tout de même
tirer au clair ce problème :
- mettre en commentaire le "On Error Resume Next"
- que donne la séquence "Open", "BeginTrans", "Execute", "CommitTrans","
Close" (chez moi cela fonctionne) sans boucle ou autres travaux préalables
(des fois que la connexion soit mise dans je ne sais quel état ailleurs dans
le code)

Ce qui donnerait par exemple :

Dim c As ADODB.Connection
Set c = New Connection
c.Open "Provider=SQLOLEDB;Data Source=ServeurInitial Catalogºse;User
ID=user;Password=motdepasse"
c.BeginTrans
c.Execute "UPDATE MaTable SET MaColonne=MaColonne"
c.CommitTrans
c.Close

Si cela ne marche pas, qu'est ce que cela donne sans BeginTrans/CommitTrans
? Si cela marche, qu'est ce que cela donne en ajoutant le rollbacktrans si
erreur...

Bon courage.

Patrice

--

"marmotte" a écrit dans le message de
news:6ab801c49409$d3c3d660$
voici le code en vb et ça plante après le execute

'Début de transaction
cn.BeginTrans

sql = "UPDATE W_Requetes SET [Nom requête] = '" &
DoubleLesQuotes(NouveauNomRequête) & "',[Créateur requête]
= '" & DoubleLesQuotes(NomProfil) & " ' WHERE [Nom
requête] = '" & DoubleLesQuotes(NomRequete) & "'"
On Error Resume Next
cn.Execute sql
If DetecteErreurSQL(sql) = True Then
cn.RollbackTrans
Exit Sub
End If

'Validation des écritures
cn.CommitTrans

et l'erreur précise est "impossible de créer une nouvelle
connexion en mode de transaction manuelle ou distribuée"

merci

-----Message d'origine-----
Jamais vu. Quelle est la chaîne de connexion ? A quel


moment le plantage ?
Un peu de code ?

Est-ce bien un problème de "connexion" (ne serait ce pas


plutôt
"transaction") ?

--

"marmotte" a écrit


dans le message de
news:04d201c493f4$b3eaf680$
Bonjour,

J'utilise sql server via VB.
Quand je veux exécuter une ligne de code dans vb pour
faire une insertion ou une suppression j'ai le message
suivant dans VB "impossible de créer une nouvelle
connexion manuelle ou distribué".
j'aimerais savoir s'il n'y a pas une option à cliquer dans
sql server pour y remédier.

merci


.



Avatar
marmotte
merci,

ça marche quand on enlève le begin trans, mais est ce que
ce n'est pas dangereux de ne pas pouvoir valider la
requête car s'il y a une erreur le retour en arrière n'est
pas possible.

-----Message d'origine-----
A mon avis :
- la transaction est inutile (par défaut SQL Server met


chaque instruction
dans une transaction auto validée).

Ceci dit, ce code devrait tout de même fonctionner. Si tu


veux tout de même
tirer au clair ce problème :
- mettre en commentaire le "On Error Resume Next"
- que donne la


séquence "Open", "BeginTrans", "Execute", "CommitTrans","
Close" (chez moi cela fonctionne) sans boucle ou autres


travaux préalables
(des fois que la connexion soit mise dans je ne sais quel


état ailleurs dans
le code)

Ce qui donnerait par exemple :

Dim c As ADODB.Connection
Set c = New Connection
c.Open "Provider=SQLOLEDB;Data Source=ServeurInitial


Catalogºse;User
ID=user;Password=motdepasse"
c.BeginTrans
c.Execute "UPDATE MaTable SET MaColonne=MaColonne"
c.CommitTrans
c.Close

Si cela ne marche pas, qu'est ce que cela donne sans


BeginTrans/CommitTrans
? Si cela marche, qu'est ce que cela donne en ajoutant le


rollbacktrans si
erreur...

Bon courage.

Patrice

--

"marmotte" a écrit


dans le message de
news:6ab801c49409$d3c3d660$
voici le code en vb et ça plante après le execute

'Début de transaction
cn.BeginTrans

sql = "UPDATE W_Requetes SET [Nom requête] = '" &
DoubleLesQuotes(NouveauNomRequête) & "',[Créateur requête]
= '" & DoubleLesQuotes(NomProfil) & " ' WHERE [Nom
requête] = '" & DoubleLesQuotes(NomRequete) & "'"
On Error Resume Next
cn.Execute sql
If DetecteErreurSQL(sql) = True Then
cn.RollbackTrans
Exit Sub
End If

'Validation des écritures
cn.CommitTrans

et l'erreur précise est "impossible de créer une nouvelle
connexion en mode de transaction manuelle ou distribuée"

merci

-----Message d'origine-----
Jamais vu. Quelle est la chaîne de connexion ? A quel


moment le plantage ?
Un peu de code ?

Est-ce bien un problème de "connexion" (ne serait ce pas


plutôt
"transaction") ?

--

"marmotte" a écrit


dans le message de
news:04d201c493f4$b3eaf680$
Bonjour,

J'utilise sql server via VB.
Quand je veux exécuter une ligne de code dans vb pour
faire une insertion ou une suppression j'ai le message
suivant dans VB "impossible de créer une nouvelle
connexion manuelle ou distribué".
j'aimerais savoir s'il n'y a pas une option à cliquer




dans
sql server pour y remédier.

merci


.





.



Avatar
Patrice
L'instruction est *déjà* dans une transaction implicite auto-validée (ou
annulée) donc pas de soucis. Cf
http://support.microsoft.com/default.aspx?id8024 pour le détail. Tu peux
vérifier par exemple en provoquant une erreur de division par 0 et en
vérifiant qu'aucun des enregistrements n'est modifié.

Par contre je ne vois toujours pas quel est la raison qui provoque ce
message ? La connexion est-elle utilisée au préalable. Utilise tu la
propriété isolationlevel ? Je crois savoir qu'il arrive que ADO créé des
connexions supplémentaires et j'ai l'impression que c'est ce qu'il essaie de
faire sans succès car une transaction explicite est en cours.

Est-ce que le code suivant sans rien d'autre échoue ?

Dim c As ADODB.Connection
Set c = New Connection
c.Open "Provider=SQLOLEDB;Data Source=Serveur;Initial Catalogºse;User
ID=user;Password=pwd"
c.BeginTrans
c.Execute "UPDATE MaTable SET Colonne=Colonne"
c.CommitTrans
c.Close

Etrange...

Patrice

--

"marmotte" a écrit dans le message de
news:6b8101c49416$d306b500$

merci,

ça marche quand on enlève le begin trans, mais est ce que
ce n'est pas dangereux de ne pas pouvoir valider la
requête car s'il y a une erreur le retour en arrière n'est
pas possible.

-----Message d'origine-----
A mon avis :
- la transaction est inutile (par défaut SQL Server met


chaque instruction
dans une transaction auto validée).

Ceci dit, ce code devrait tout de même fonctionner. Si tu


veux tout de même
tirer au clair ce problème :
- mettre en commentaire le "On Error Resume Next"
- que donne la


séquence "Open", "BeginTrans", "Execute", "CommitTrans","
Close" (chez moi cela fonctionne) sans boucle ou autres


travaux préalables
(des fois que la connexion soit mise dans je ne sais quel


état ailleurs dans
le code)

Ce qui donnerait par exemple :

Dim c As ADODB.Connection
Set c = New Connection
c.Open "Provider=SQLOLEDB;Data Source=ServeurInitial


Catalogºse;User
ID=user;Password=motdepasse"
c.BeginTrans
c.Execute "UPDATE MaTable SET MaColonne=MaColonne"
c.CommitTrans
c.Close

Si cela ne marche pas, qu'est ce que cela donne sans


BeginTrans/CommitTrans
? Si cela marche, qu'est ce que cela donne en ajoutant le


rollbacktrans si
erreur...

Bon courage.

Patrice

--

"marmotte" a écrit


dans le message de
news:6ab801c49409$d3c3d660$
voici le code en vb et ça plante après le execute

'Début de transaction
cn.BeginTrans

sql = "UPDATE W_Requetes SET [Nom requête] = '" &
DoubleLesQuotes(NouveauNomRequête) & "',[Créateur requête]
= '" & DoubleLesQuotes(NomProfil) & " ' WHERE [Nom
requête] = '" & DoubleLesQuotes(NomRequete) & "'"
On Error Resume Next
cn.Execute sql
If DetecteErreurSQL(sql) = True Then
cn.RollbackTrans
Exit Sub
End If

'Validation des écritures
cn.CommitTrans

et l'erreur précise est "impossible de créer une nouvelle
connexion en mode de transaction manuelle ou distribuée"

merci

-----Message d'origine-----
Jamais vu. Quelle est la chaîne de connexion ? A quel


moment le plantage ?
Un peu de code ?

Est-ce bien un problème de "connexion" (ne serait ce pas


plutôt
"transaction") ?

--

"marmotte" a écrit


dans le message de
news:04d201c493f4$b3eaf680$
Bonjour,

J'utilise sql server via VB.
Quand je veux exécuter une ligne de code dans vb pour
faire une insertion ou une suppression j'ai le message
suivant dans VB "impossible de créer une nouvelle
connexion manuelle ou distribué".
j'aimerais savoir s'il n'y a pas une option à cliquer




dans
sql server pour y remédier.

merci


.





.



Avatar
marmotte
j'ouvre une connexion à chaque fois que je fais un select
avant de faire un update

je n'utilise pas la propriété isolationlevel.

C'est vrai que je trouve ça bizarre car je n'avais pas
cette erreur auparavant.
-----Message d'origine-----
L'instruction est *déjà* dans une transaction implicite


auto-validée (ou
annulée) donc pas de soucis. Cf
http://support.microsoft.com/default.aspx?id8024 pour


le détail. Tu peux
vérifier par exemple en provoquant une erreur de division


par 0 et en
vérifiant qu'aucun des enregistrements n'est modifié.

Par contre je ne vois toujours pas quel est la raison qui


provoque ce
message ? La connexion est-elle utilisée au préalable.


Utilise tu la
propriété isolationlevel ? Je crois savoir qu'il arrive


que ADO créé des
connexions supplémentaires et j'ai l'impression que c'est


ce qu'il essaie de
faire sans succès car une transaction explicite est en


cours.

Est-ce que le code suivant sans rien d'autre échoue ?

Dim c As ADODB.Connection
Set c = New Connection
c.Open "Provider=SQLOLEDB;Data Source=Serveur;Initial


Catalogºse;User
ID=user;Password=pwd"
c.BeginTrans
c.Execute "UPDATE MaTable SET Colonne=Colonne"
c.CommitTrans
c.Close

Etrange...

Patrice

--

"marmotte" a écrit


dans le message de
news:6b8101c49416$d306b500$

merci,

ça marche quand on enlève le begin trans, mais est ce que
ce n'est pas dangereux de ne pas pouvoir valider la
requête car s'il y a une erreur le retour en arrière n'est
pas possible.

-----Message d'origine-----
A mon avis :
- la transaction est inutile (par défaut SQL Server met


chaque instruction
dans une transaction auto validée).

Ceci dit, ce code devrait tout de même fonctionner. Si tu


veux tout de même
tirer au clair ce problème :
- mettre en commentaire le "On Error Resume Next"
- que donne la


séquence "Open", "BeginTrans", "Execute", "CommitTrans","
Close" (chez moi cela fonctionne) sans boucle ou autres


travaux préalables
(des fois que la connexion soit mise dans je ne sais quel


état ailleurs dans
le code)

Ce qui donnerait par exemple :

Dim c As ADODB.Connection
Set c = New Connection
c.Open "Provider=SQLOLEDB;Data Source=ServeurInitial


Catalogºse;User
ID=user;Password=motdepasse"
c.BeginTrans
c.Execute "UPDATE MaTable SET MaColonne=MaColonne"
c.CommitTrans
c.Close

Si cela ne marche pas, qu'est ce que cela donne sans


BeginTrans/CommitTrans
? Si cela marche, qu'est ce que cela donne en ajoutant le


rollbacktrans si
erreur...

Bon courage.

Patrice

--

"marmotte" a écrit


dans le message de
news:6ab801c49409$d3c3d660$
voici le code en vb et ça plante après le execute

'Début de transaction
cn.BeginTrans

sql = "UPDATE W_Requetes SET [Nom requête] = '" &
DoubleLesQuotes(NouveauNomRequête) & "',[Créateur




requête]
= '" & DoubleLesQuotes(NomProfil) & " ' WHERE [Nom
requête] = '" & DoubleLesQuotes(NomRequete) & "'"
On Error Resume Next
cn.Execute sql
If DetecteErreurSQL(sql) = True Then
cn.RollbackTrans
Exit Sub
End If

'Validation des écritures
cn.CommitTrans

et l'erreur précise est "impossible de créer une nouvelle
connexion en mode de transaction manuelle ou distribuée"

merci

-----Message d'origine-----
Jamais vu. Quelle est la chaîne de connexion ? A quel


moment le plantage ?
Un peu de code ?

Est-ce bien un problème de "connexion" (ne serait ce pas


plutôt
"transaction") ?

--

"marmotte" a écrit


dans le message de
news:04d201c493f4$b3eaf680$
Bonjour,

J'utilise sql server via VB.
Quand je veux exécuter une ligne de code dans vb pour
faire une insertion ou une suppression j'ai le message
suivant dans VB "impossible de créer une nouvelle
connexion manuelle ou distribué".
j'aimerais savoir s'il n'y a pas une option à cliquer




dans
sql server pour y remédier.

merci


.





.





.