DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 229564 - Ultima modifica: giovedì 15 febbraio 2007 - Revisione: 4.3

 

In questa pagina

Sintomi

Quando si attiva un ruolo di applicazione SQL Server su una connessione di Microsoft ActiveX Data Objects (ADO) a SQL Server, viene potrebbe essere visualizzato il seguente messaggio di errore quando ci si connette a SQL Server 7.0:
sp_setapprole non è stata richiamata correttamente. Fare riferimento alla documentazione per ulteriori informazioni.
Quando ci si connette a SQL Server 2000, l'errore può essere visualizzato come segue:
[DBNETLIB][ConnectionRead (WrapperRead()).]Errore generale di rete. Consultare la documentazione della rete
Questo errore si verifica quando viene chiamato sp_setapprole su una connessione ADO che è stata allocata dal pool di risorse OLE DB. Questo errore si verifica con il provider SQLOLEDB o SQL Server ODBC driver.

La limitazione descritta in questo articolo esiste anche in SQL Server .NET provider di dati e in .NET OLE DB provider di dati quando utilizzato con il provider OLE DB SQLOLEDB. Quando si tenta di impostare un ruolo applicazione in una connessione che viene disegnata dal pool di connessioni, viene visualizzato il seguente messaggio di errore:
Errore generale di rete

Cause

Nella struttura corrente, dopo aver attivato un ruolo applicazione su una connessione client a SQL Server, non puoi reimpostare il contesto di protezione di tale connessione. Di conseguenza, quando l'utente termina la sessione di SQL Server e si disconnette dal server, la sessione non è riutilizzabile. Tuttavia, OLE DB pool di risorse restituisce la connessione chiusa il pool e l'errore si verifica quando viene riutilizzata la connessione e l'applicazione client tenta di ripristinare nuovamente contesto di protezione della connessione chiamata sp_setapprole.

Workaround

La soluzione è disponibile solo consiste nel disattivare OLE DB resource pooling che ADO utilizza per impostazione predefinita. Procedere aggiungendo "OLE DB Services = -2" alla stringa di connessione ADO, come illustrato di seguito:
'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"
				

Pool può essere disattivato per SQL Server .NET Data Provider aggiungendo "Pooling = false" alla stringa di connessione.

Informazioni

Il codice riportato di seguito viene riprodotto l'errore:
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
				

RIFERIMENTI

Documentazione in linea di SQL, argomento: "Protezione e ruoli di applicazione applicazione"

Per ulteriori informazioni sulla disattivazione di servizi OLE DB, vedere l'articolo tecnico "Pool in the Microsoft Data Access Components," disponibile in MSDN Online:
http://msdn2.microsoft.com/en-us/library/ms810829.aspx (http://msdn2.microsoft.com/en-us/library/ms810829.aspx)
Per ulteriori informazioni su come disattivare i servizi OLE DB, vedere il file Readme.txt OLE DB.

Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • 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
Chiavi: 
kbmt kbfaq kbpending kbprb KB229564 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 229564  (http://support.microsoft.com/kb/229564/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store