11 messaggi dal 02 agosto 2004
sbonnini ha scritto:
mpolleschi ha scritto:
il comando arriva a SQL? controlla con Profiler.
ciao


Effettivamente non ho fatto questa verifica ... appena ho qualche risultato in merito vi aggiorno.


Ho fatto il test richiesto ed ho visto che la query arriva a SQL (ho usato appunto il profiler), ma nulla ritorna indietro, anche se - lo riconfermo - il record per l'utente richiesto era presente.

Nella configurazione di rete di SQL Server 2005, nei protocolli per MSSQLSERVER, erano attivi "Shared memory" e "TCP/IP", mentre nei protocolli per SQL Native Client erano attivi anche i "Named pipes". Secondo voi questo può contare? Tenete conto che la stringa di connessione che uso è così fatta:
connectionString="Data Source=SERVERNAME;Initial Catalog=DBNAME;Persist Security Info=True;User ID=sa;Password=****"

Stefano Bonnini
46 messaggi dal 25 febbraio 2002
scusa la banalità, ma hai provato a mettere una trim su username?
non so come raccogli questo parametro e tutto può succedere quando c'è input dall'utente.
a titolo diagnostico in caso di row.count==0 tenterei una seconda lettura programmaticamente loggando l'evento.
ciao
11 messaggi dal 02 agosto 2004
mpolleschi ha scritto:
scusa la banalità, ma hai provato a mettere una trim su username?
non so come raccogli questo parametro e tutto può succedere quando c'è input dall'utente.
a titolo diagnostico in caso di row.count==0 tenterei una seconda lettura programmaticamente loggando l'evento.
ciao


In effetti non ho inserito una trim quindi lo faccio subito :-) tuttavia con il debug ho verificato più volte che la stringa proveniente dalla textbox di login è corretta.

Effettivamente ho anche provato quello che hai detto tu. Ho cioè inserito una seconda query da eseguirsi solo quando Rows.Count==0: un SqlCommand con una SELECT hard coded, senza passare cioè attraverso un Table Adapter tipizzato. Ho verificato che nel caso in cui il TableAdapter tipizzato fallisca fallisce anche questa seconda query.
Ammetto che non so proprio più dove sbattere la testa. Il fatto è che quando si manifesta questo comportamento "assurdo" (tra virgolette perchè senz'altro una motivazione ci sarà), ogni successiva query o insert/update/delete fallisce o comunque manifestano comportamenti non prevedibili. Per esempio se l'utente che tenta di accedere inserisce non correttamente le credenziali procedo a scrivere una riga di log in TLogApplicazione. Questa tabella ha una chiave autoincrementante e l'inserimento lo faccio attraverso un banalissimo INSERT attraverso - ovviamente - un TableAdapter tipizzato. Questo insert fallisce clamorosamente se la query iniziale per vedere se l'utente esiste o meno nel database ha fallito. L'errore che viene dato è che - attenzione - "la chiave non può essere null"!. Va da sè, spero mi crediate, che l'INSERT che ho scritto non scrive proprio niente nella chiave (visto che è auto incrementante).
Boh ...

P.S.: il problema si è manifestato anche dopo che ho configurato nel medesimo modo SQL server e SQL Native Client con protocollo TCP/IP e Shared Memory attivate e Named Pipes disabilitate (prima erano abilitate nel native client e disabilitate sul server).
Ri-boh...

Stefano Bonnini
46 messaggi dal 25 febbraio 2002
intanto abbiamo appurato che il problema non è insito nel tableadapter e dataset.
potresti provare a fare la insert di logging su un db a parte con una connection fresca.
per consolarti pensa che randomicamente abbiamo una situazione di non scrivibilità sul db di MSCRM (sqlserver) che dobbiamo sbloccare addirittura con SQL STOP e START monitorando notte e giorno il sito di e-commerce.
ciao
11 messaggi dal 02 agosto 2004
Veramente fantastico ... penso che adesso, giusto come tentativo, sostituirò l'uso del TableAdapter con quello di un SqlDataReader (che detto tra noi significa in effetti che non so che pesci pigliare).

Stefano Bonnini
sei sicuro che non ci siano problemi con il database?
hai modo di provarlo con un altro server/versione?

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
11 messaggi dal 02 agosto 2004
Daniele Bochicchio ha scritto:
sei sicuro che non ci siano problemi con il database?
hai modo di provarlo con un altro server/versione?


In effetti questa prova per ora non riesco a farla perché purtroppo ho tempi strettissimi di consegna anche su altre cosette. Tuttavia ho una installazione con Microsoft SQL Server 2008 e proverò su quello: appena fatto vi aggiornerò.
Detto questo vi faccio notare che il medesimo comportamento l'ho riscontrato su tre applicativi diversi che hanno le seguenti caratteristiche:
1. Primo applicativo: ASP.NET 2.0, SQL 2005, os Windows XP ultimo sp;
2. Secondo applicativo: ASP.NET 4.0, SQL 2005, os Windows Server 2003 SE;
3. Terzo applicativo: come il secondo.
In tutti e tre i casi è presente IIS 6.0.

Stefano Bonnini
11 messaggi dal 02 agosto 2004
sbonnini ha scritto:
Veramente fantastico ... penso che adesso, giusto come tentativo, sostituirò l'uso del TableAdapter con quello di un SqlDataReader (che detto tra noi significa in effetti che non so che pesci pigliare).


Ho dimenticato di aggiornavi ... come prevedevo anche con il data reader non è cambiato nulla: poco fa mi si è presentato il caso di una query sulla tabella degli utenti dato lo username (operatore): mi ritornava una tabella vuota, mentre eseguendola da SQL Server Management Studio tornava correttamente una riga. Sono uscito dall'applicazione, chiudendo il browser, ed una volta ritornato nell'ambiente di sviluppo ho prima riavviato il web server di sviluppo e poi riavviata l'applicazione stessa: tutto è tornato a funzionare regolarmente.

Stefano Bonnini

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.