- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Debug - Stored procedure
-
Debug - Stored procedure
Potrebbe essere che lanciando in debug una stored procedure vada perfettamente, mentre richiamandola da una pagina ASP vada solo per un pezzo!?
Mi spiego meglio; io ho un stored procedure Sql Server 2000 che deve ciclare e inserire dei record richiamando altre procedure, quindi se la lancio da debug di Query analyzer va perfettamente, mentre se la richiamo da ASP il ciclo dopo alcuni record inseriti perfettamente si ferma!!
aiutooooooooooooo!!
grazie
ciao
-
Quando utilizzi il Query analyzer, hai parecchio tempo finche non và in time out l'istruzione e te la blocca, mentre tramite IIS questo tempo è più breve, ora non vorrei ricordarmi male, ma in IIS ci dovrebbe essere qualche impostanzione che ti indica quanto tempo attendere l'esecuzione di una Query o Stored da parte di SQL Server prima di troncare la connessione a quest'ultimo.
Per capire se è questo il problema, orientativamente impieghi più di 30 secondi per concludere l'operazione ?
-
@tonyx said:
Quando utilizzi il Query analyzer, hai parecchio tempo finche non và in time out l'istruzione e te la blocca, mentre tramite IIS questo tempo è più breve, ora non vorrei ricordarmi male, ma in IIS ci dovrebbe essere qualche impostanzione che ti indica quanto tempo attendere l'esecuzione di una Query o Stored da parte di SQL Server prima di troncare la connessione a quest'ultimo.
Per capire se è questo il problema, orientativamente impieghi più di 30 secondi per concludere l'operazione ?No assolutamente, al massimo 5 secondi...
Pare che sia quando richiamo altre stored procedure da questa stessa procedura che s'incazza e non riesce ad inserire correttamente tutti i record...che potrebbe essere, non so + dove sbattere
ciao
-
L'inserimento di records riguarda sempre la stessa tabella? Se la risposta fosse no allora controlla i permessi delle tabelle dove l'insert si blocca.
-
@madai said:
L'inserimento di records riguarda sempre la stessa tabella? Se la risposta fosse no allora controlla i permessi delle tabelle dove l'insert si blocca.
La chiamata alla procedura esterna fa si che venga inserito un o + record in una tabella diversa da quella principale...
Cosa dovrei vedere nei permessi!?Ecco un esempio di codice della mia stored procedure
WHILE @intDa < = @intA
BEGININSERT INTO TabellaPrincipale
(CAMPO1, CAMPO2, ...)VALUES(...)IF @variabile1 <> ''
EXEC Stored_pocedureSET @intDa = @intDa + 1
END
-
Facendo diverse prove ho constatato che solo quando richiama una nuova stored procedure non vengono inseriti correttamente tutti i record.
Infatti prelevando il codice della procedura che dovrebbe essere richiamata e spostandolo nella procedura principale i record vengono correttamente inseriti.cosa posso fare!?!?!?!?!?!?!?!?!?!?!?
-
Vai nelle proprietà della SP e controlla che l'utente internet abbia le dovute autorizzazioni
-
@madai said:
Vai nelle proprietà della SP e controlla che l'utente internet abbia le dovute autorizzazioni
In allegato puoi vedere come sono i permessi delle stored procedure, ho messo il flag sul campo EXEC, che prima non c'era, ma comunque non vengono fatti tutti gli inserimenti.
Puoi dargli un occhi e dirmi se c'è qualche cosa che non va!?attendo tue pronte notizie
grazie
ciao
-
Non mi ha allegato il file...
Spero che questa volta vada a buon fine l'upload, eventualmente ti spiego come sono i miei permessiHo un unico utente con permesso che si chiama public non ho la possibilità di modificare nulla se non il campo EXEC...
fammi sapere
ciao
-
Utilizzi public per connetterti al DB? Mi sembra strano. Confronta utenti e permessi di questa SP con quelli di una SP che funziona.
-
@madai said:
Utilizzi public per connetterti al DB? Mi sembra strano. Confronta utenti e permessi di questa SP con quelli di una SP che funziona.
Utilizzo public perchè comunque si tratta di un portale intranet...
Le altre procedure sono identiche a questa, il problema comunque rimane solo quando chiamo nel ciclo altre proceduresono veramente perplesso...
-
Come vedi public non ha i permessi di INSERT. Prova a creare un utente nuovo, dagli i ruoli: public, datareader e datawriter.
Poi vai di nuovo nella SP e aggiungilo dandogli i permessi di INSERT.
Poi ovviamente connettiti con quello e non con public.
Fammi sapere, ciao.
-
Forse dopo 2 giorni di ricerche e prove ho trovato, mancava il "set nocount on" nelle stored procedure
grazie
ciao
-
Ok ciao