Errore di runtime ‘3151’. ODBC connessione a ‘SQL ServerServerName’ no...

mercoledì 12 novembre 2008 - 12.02

vellgiul Profilo | Newbie

Ciao a tutti,

Da un po’ di mesi a questa parte ho un problema abbastanza serio con la mia applicazione che utilizza come linguaggio di programmazione VBA (Access 2000) e VB6.

Lo scenario con cui succede il problema è il seguente:

Strumento di Programmazione:
Microsoft Access 2000 (Microsoft Access 2007) e Visual Basic 6

Database:
SQL Server 2000 o SQL Server 2005. Entrambi aggiornati con le ultime patch disponibili.

Sistema Operativo Client:
Windows XP SP2 o SP3

Sistema Operativo Server:
Windows 2003 Server.

Accesso ai dati:
Microsoft DAO tramite tabelle allegate.

In modo Random la procedura va in errore restituendo:
Errore di runtime ‘3151’. ODBC connessione a ‘SQL ServerServerName’ non riuscita.

E’ molto importante sottolineare che se accedo con client Windows 2000 allo stesso database e nelle stesse condizioni di rete il problema non si verifica.
Le reti sono certificate e non hanno perdite di pacchetti (ho fatto dei test e nel momento in cui si verifica il problema la rete funziona correttamente).
L’errore si verifica solo in presenza di una rete (in locale nel server il problema non di verifica).
L’errore si manifesta quando si effettuano operazioni ripetitive tramite oggetti DAO (in particolare QueryDef) su tabelle con un gran numero di dati.
L’errore compare dopo circa 60 secondi.

L’errore succede con qualsiasi tabella ed è indipendente dal gestinale. Ho scritto delle semplici routine di test che leggono ad esempio le testate dei documenti e per ogni testata scorrono le righe e la procedura va in errore.

Questo è un esempio di codice:
Dim db As dao.Database
Dim qdRig As dao.QueryDef
Dim rsRig As dao.Recordset
Dim rsTes As dao.Recordset
Dim strsql As String

Set db = CodeDb

strsql = "SELECT * FROM EosVn_Documenti WHERE EosVn_dOCUMENTI.FCliFor = 'C'"

Set rsTes = db.OpenRecordset(strsql, dbOpenDynaset)

strsql = "PARAMETERS Parameter1 Text; " _
& "SELECT * FROM EosVN_dOCrIGHE where eosvn_docrighe.iddocumento = [Parameter1]"

Set qdRig = db.CreateQueryDef("", strsql)
qdRig.Parameters!Parameter1 = ""
Set rsRig = qdRig.OpenRecordset(dbOpenDynaset)


If Not rsTes.EOF Then
While Not rsTes.EOF

qdRig.Parameters!Parameter1 = rsTes!IDDocumento

rsRig.Requery qdRig
While Not rsRig.EOF
Debug.Print rsRig!IDDocumento
rsRig.MoveNext
Wend


rsTes.MoveNext
Wend
End If

L'istruzione che va in errore è rsRig.Requery qdRig.

Ho provato in un PC con Office 2007 e il problema è lo stesso.

Avete già riscontrato il problema ?
Esiste qualche patch in merito ?

Grazie

janez69 Profilo | Newbie

Scusami, hai risolto? ho un problema simile anch'io.
Grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5