Erreurs de rôle application SQL avec regroupement de ressource OLE DB

Traductions disponibles Traductions disponibles
Numéro d'article: 229564 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsque vous activez un rôle d'application SQL Server sur une connexion ADO (Microsoft ActiveX Data Objects) à SQL Server, le message d'erreur suivant peut s'afficher lorsque vous vous connectez à SQL Server 7.0 :
sp_setapprole a été invoqué pas correctement. Reportez-vous à la documentation pour plus d'informations.
Lorsque vous vous connectez à SQL Server 2000, l'erreur peut apparaître comme suit :
[DBNETLIB][ConnectionRead (WrapperRead()).]Erreur de réseau générale. Consultez la documentation de votre réseau
Cette erreur se produit lorsque sp_setapprole est appelée sur une connexion ADO qui a été affectée de la liste des ressources OLE DB. Cette erreur se produit avec le fournisseur SQLOLEDB ou la ODBC SQL Server pilote.

La limite qui est décrit dans cet article existe également dans SQL Server .NET fournisseur de données et dans .NET OLE DB fournisseur de données utilisé avec le fournisseur OLE DB SQLOLEDB. Lorsque vous tentez de définir un rôle d'application sur une connexion qui est dessinée de la liste de connexion, le message d'erreur suivant s'affiche :
Erreur de réseau générale

Cause

Dans la conception en cours, une fois qu'un rôle d'application est activé sur une connexion client vers SQL Server, vous ne pouvez pas réinitialiser le contexte de sécurité de connexion. Par conséquent, lorsque l'utilisateur termine la session de SQL Server et déconnecté du serveur, la session n'est pas réutilisable. Toutefois, OLE DB regroupement de ressources renvoie la connexion fermée vers le pool et l'erreur se produit lorsque cette connexion est réutilisée et l'application client tente de réinitialiser le contexte de sécurité de la connexion en appelant sp_setapprole à nouveau.

Contournement

La solution de contournement uniquement disponible consiste à désactiver ressources OLE DB Pooling, ADO utilise par défaut. Cela en ajoutant « services OLE DB =-2 » à la chaîne connexion ADO, comme illustré ici :
'For SQLOLEDB provider
 'strConnect = "Provider=SQLOLEDB;server=SQL7Web;OLE DB Services = -2;uid=AppUser;pwd=AppUser;initial catalog=northwind"

' For MSDASQL provider 
'strConnect = "DSN=SQLNWind;UID=Test;PWD=Test; OLE DB Services= -2"
				

Pooling peut être désactivée pour SQL Server .NET données fournisseur en ajoutant « Pooling = False » à la chaîne de connexion.

Plus d'informations

Le code suivant reproduit l'erreur :
Private Sub Command2_Click()
 Dim adoCn1 As ADODB.Connection
 Dim adoCn2 As ADODB.Connection

 Set adoCn1 = GetConnection
 
 Set adoCn2 = GetConnection
 Set adoCn2 = Nothing
 Set adoCn2 = GetConnection
 Set adoCn2 = Nothing
 Set adoCn2 = GetConnection  'Gives errors for both SQLOLEDB and ODBC
 Set adoCn2 = Nothing
End Sub

Private Function GetConnection() As ADODB.Connection
 Dim cn As ADODB.Connection
 Dim sSQL As String
 Dim strConnect As String

 Set cn = New ADODB.Connection
 
'For OLE DB provider
 strConnect = "Provider=SQLOLEDB;server=myServer;uid=AppUser;pwd=AppUser;initial catalog=northwind"

'Turn off Pooling ( all other services are enabled )
'strConnect = "Provider=SQLOLEDB;server=myServer;OLE DB Services= -2;uid=AppUser;pwd=AppUser;initial catalog=northwind"
 
 'For ODBC driver
 'strConnect = "DSN=SQLNWind;UID=Test;PWD=Test; "

'Turn off Pooling
'strConnect = "DSN=SQLNWind;UID=Test;PWD=Test; OLE DB Services= -2"

cn.ConnectionString = strConnect
cn.Open
 
 sSQL = "sp_setapprole 'order_entry', 'password'"
 cn.Execute sSQL
 Set GetConnection = cn
End Function
				

RÉFÉRENCES

Documentation en ligne de SQL ; rubrique: « sécurité et application rôles d'application »

Pour plus d'informations sur la désactivation de services OLE DB, consultez l'article technique « regroupement dans le Microsoft Data Access Components, » disponible sur MSDN Online :
http://msdn2.microsoft.com/en-us/library/ms810829.aspx
Pour plus d'informations sur la façon d'activer désactiver services OLE DB, consultez le fichier Lisezmoi.txt OLE DB.

Propriétés

Numéro d'article: 229564 - Dernière mise à jour: jeudi 15 février 2007 - Version: 4.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 7.0 Standard
  • Microsoft SQL Server 2000 Standard
  • Microsoft Data Access Components 2.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
  • Microsoft Data Access Components 2.8
Mots-clés : 
kbmt kbfaq kbpending kbprb KB229564 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 229564
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com