Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    accesso conteporaneo negato a stessa tabella

    Ho su una intranet un server con win2000, attraverso un codice asp accodo delle domande estratte casualmente da un archivio in una tabella . Tutto funziona perfettamnete . Se però lancio la procedura da più terminali in contemporanea solo uno funziona , gli altri si bloccano alla riga 59 "rs.update "

    Tipo di errore:
    Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
    [Microsoft][Driver ODBC Microsoft Access] Impossibile aggiornare. Attualmente bloccato dall'utente "admin" sulla macchina "LASER-FB3ADFFE5".
    /TEST/genera_domande.asp, line 59

    Come posso fare per far accedere più utenti in contemporanea alla stessa tabella ?


    grazie per l'aiuto

    ecco qui il codice:
    <%
    Randomize

    dim ID_SESSION
    ID_SESSION=Session.SessionID
    Function CreaFiltro(ByVal strFiltro)
    Dim strValori
    Dim lngInizio
    Dim lngFine
    Dim lngPuntatore

    CreaFiltro = ""
    strValori = Split(strFiltro)
    lngInizio = LBound(strValori)
    lngFine = UBound(strValori)

    For lngPuntatore = lngInizio To lngFine
    If CreaFiltro <> "" Then CreaFiltro= CreaFiltro & " AND "
    CreaFiltro = CreaFiltro & "id <> " & strValori(lngPuntatore)
    Next
    End Function

    Dim conn

    set conn=Server.CreateObject("ADODB.Connection")
    conn.Open "dsn=concorso_dati;"

    Dim strValoriEstratti
    Dim rslogo
    Dim lngNumeroValoriDaEstrarre
    Dim lngPuntatore
    Dim lngMuovitiAvantiDi

    strValoriEstratti = "0"
    lngNumeroValoriDaEstrarre = 60

    strSql = "SELECT * FROM DOMANDE"
    set rslogo = Server.CreateObject("ADODB.recordset")
    rslogo.Open strSql,conn,3,3

    sql = "SELECT * FROM TEST"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn ,3,3

    For lngPuntatore = 1 To lngNumeroValoriDaEstrarre
    rslogo.MoveFirst
    rslogo.Filter = CreaFiltro(strValoriEstratti)
    lngMuovitiAvantiDi = Int(RND * rslogo.RecordCount)
    rslogo.Move lngMuovitiAvantiDi
    strValoriEstratti = strValoriEstratti & " " & rslogo("id")

    rs.addnew
    rs(1) = rslogo("id")
    rs(2) = rslogo("DOMANDA")
    rs(3) = SESSION.SessionID
    rs(4) = NOW
    rs.update

    Next

    rs.Close
    set rs = Nothing
    rslogo.Close
    conn.Close
    set conn = Nothing

    %>

  2. #2
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    ripensa al codice
    stai bloccando le due tabelle

    usa le query sql di insert e di update così non devi lockare le due tabelle.
    Tutti vogliono parlare, nessuno sa ascoltare.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    285
    Spero di non dire una fesseria ma potrebbe trattarsi del tipo di blocco impostato all'apertura del recordset, Open strSql,conn,3,3..

    prova a fare dei test tipo Open strSql,conn,3,1 oppure Open strSql,conn,3,2 ecc.. non giudicatemi male ma non ricordo più bene lo stato dei cursori e del blocco della tabella a quale numero corrispondano..
    vado subito a ripassare

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    285
    Ops.. anticipato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.