Newsgroup: it.comp.www.asp
Titolo: Compattare un DB in ASP. Sì ma quando?

Con ADO vorrei compattare un DB? Vorrei farlo ogni settimana, il lunedě mattina.
Il mio problema č ke nn so in che evento mettere il codice (pensavo nel global.asa)
e come implementare un sistema che lo compatti solo una volta a settimana. Se avete
suggerimenti, saranno bene accetti. Grazie.
P.S.:Il codice x compattare l'ho recuperato in Internet e funzion;a me serve capire
la logica in base alla mia problematica, poikč il mio DB Access cresce molto rapidamente.
--
Enjoy the .NET community! ASPItalia.com
 
http://forum.aspitalia.com/
 
http://www.aspitalia.com/

Visto che le pagine ASP non vengono eseguite se non chiamate da
qualche utente e sembra non sia possibile schedularle potresti
inserire in una tabella del db o magari in un file txt l'ultima data
(o il giorno della settimana) in cui č stato compattato insieme a un
flag che ti dice se l'hai compattato o meno in quella giornata.
Inserire il tutto nella pagina iniziale del sito e ogni volta che
viene eseguita ti fai i tuoi bei controlli.
se č il giorno della settimana (o se sono passati 7 gg dall'ultima
lavorazione) e il flag č spento allora compatti il db e aggiorni sia
la data che il flag (questo flag ti serve per compattare il db una
sola volta nella giornata prestabilita e non per ogni richiamo
dell'home page).
Se invece dal controllo della data risulta che non sei nella "giornata
del compattamento" allora aggiorni il flag spegnendolo e lasciando
perň la data invariata.
Spero di essere stato chiaro e sicuramente ci saranno altre 1000
soluzioni piů valide ed efficaci.
Ciao.
A.

A.
Alex a dire il vero era proprio ciò ke avevo pensato io, però avevo pensato di
crearmi una var Application e fare una cosa del genere:
global.asa:
sub Application_OnStart()
application("data")=Date()
Application("compatta")=false
' Inizializzo sempre cn la data odierna
end sub
sub Session_OnEnd
if ( DateDiff("d",Date(), application("data") )<=0) And (Not(Application("compatta")))
then
    compattaDB
    Application.lock
    Application("data")=dateAdd("d", 7, Date())
    Application("compatta")=true 
    Application.unlock
else 
    Application.lock
    Application("compatta")=false
    Application.unlock
end if
end sub
Ora ciò ke mi kiedevo era:
il codice è meglio inserirlo nel Session_OnStart o nell'OnEnd?


 la logica in base alla mia problematica, poikč il mio DB Access cresce molto rapidamente.
Boh... potresti fare una funzioncina che controlli, anche con un IF,
A) che sia lunedě 
B) che una variabile application non contenga un x valore
per esempio, nel global.asa
- application_onstart
application.lock
application("datacompattazione") = date()
application.unlock
- session_onend
IF Weekday(date()) = 2 AND Cdate(application("datacompattazione")) <> 
Date() then
  application.lock
  application("datacompattazione") = date()
  application.unlock
  esegui compattazione...
End IF
cosě a occhio dovrebbe funzionare...

Ti posto un articolo preso da 
www.aspitalia.com
, l'ho letto ieri sera
ma non l'ho ancora provato. Ho solo provato a inviare un'email con
"HELP" e mi sono tornate indietro le istruzioni ma le sto leggendo un
po' meglio.
Dagli un'occhiata cmq, potrebbe tornarti utile anche se secondo me il
"fai da te" è la migliore soluzione.
ps: e poi secondo me è meglio sul Session_OnEnd. E poi tieni presente
anche una cosa, mentre fai la compattazione del db gli utenti non
lavorano, magari potrebbe tornare utile una gestione dell'errore che
l'utente visualizza.
Ciao buon lavoro.
A.
 
 
A Roma dal 10/11: ASP, 
ASP.NET
 - online 
ASP.NET
 base I e II - scegli
dove, scegli il meglio!
Ricerca    Super Searchartic...@lgiornoF.A.Q.componentsFocusONrisorsestoreforumregular
expressions
#259 - Costruire uno scheduling con ASP e Getweb   
a cura di Roberto Valentini - martedì 22 maggio 2001
 Versione stampabile    Vota e commenta questo script 
   La community ha giudicato questo script utile 
Sono state evidenziate le seguenti parole: email
Articolo da 
www.aspitalia.com
:
Leggendo diversi post sui newsgroup dedicati alla programmazione ASP,
ho notato molte richieste su come riuscire a rendere automatica
l'esecuzione di certe procedure.
Il seguente script, in pratica, permette di eseguire a distanza di
tempo regolare, una o più procedure su un sito web senza utilizzare
programmi residenti sul server, come lo scheduler.
Per farlo utilizzero un servizio gratuito, disponibile già da diversi
anni, che potrei definire una sorta di server web-mail. Si tratta di
un host remoto gestito da una organizzazione senza scopo di lucro che
ha come intento principale quello di divulgare informazioni a
carattere medico sanitario a chiunque non ha pieno accesso ad
internet, ma solamente alla posta elettronica.
Utilizzeremo il global.asa, con CDONTS, inserendo nella Session_OnEnd
un codice in grado di inviare un'e-mail all'host remoto (chiamato
Getweb) indicando l'indirizzo completo della pagina ASP che si vuole
eseguire.
In questo modo riceveremo alla casella 
ma...@provider.it
 il contenuto,
già processato dal nostro server, di pagina.asp in formato testo.
Naturalmente pagina.asp potrà fare qualsiasi cosa: scrivere e o
leggere su file, inviare email, interrogare database eccetera.
Per attivare il sistema basta inviare un unico messaggio, questa volta
manualmente, a 
get...@usa.healthnet.org
 con nel corpo l'indirizzo
completo della pagina desiderata.
Attenzione all'uso di programmi client che formattano il contenuto del
testo: getweb non "capisce" spazi e righe saltate ad arte come usa ad
esempio Outlook: riceverete in risposta un messaggio di errore.
Per ubbidire al nostro ordine getweb si collegherà al nostro sito e di
conseguenza verrà eseguita la routine Session_onStart, che controllerà
il numero IP.
Nel caso sia uguale a quello inserito nel codice, allora il timeout di
sessione verrà impostato a 360 minuti.
Getweb quindi preleverà la pagina in oggetto e la spedira in formato
testo a 
ma...@provider.it
.
Dopo 360 minuti, con l'escuzione di Session_OnEnd verrà inviato un
nuovo messaggio di richiesta a getweb, e così via.
<SCRIPT  LANGUAGE="VBScript" RUNAT="Server"> 
Sub Session_OnStart() 
   if Request.ServerVariables("REMOTE_ADDR")="198.115.132.1" then 
     Session.Timeout=360 
     Session("IP")=Request.ServerVariables("REMOTE_ADDR") 
   end if 
End Sub 
Sub Session_OnEnd() 
   if Session("IP")="198.115.132.1" then 
     Set InviaMail = Server.CreateObject("CDONTS.NewMail") 
     InviaMail.From = "
ma...@provider.it
" 
     InviaMail.To = "
get...@usa.healthnet.org
" 
     InviaMail.Subject = "" 
     InviaMail.Body = "get 
http://www.sito.boh/pagina.asp
" 
     InviaMail.Send() 
     Set InviaMail = Nothing 
   end if 
End Sub 
</SCRIPT>
Questa specie di loop di messaggi terminerà solo nei seguenti casi: 
1) cancellando il file global.asa 
2) stoppando il server web 
3) nel caso getweb si fermi (eventualità piuttosto rara). 
Il codice in session_onend deve essere posto obbligatoriamente nel
global.asa se si vuole tenere "in vita" il sistema, mentre quello in
session_onstart puo anche essere inserito direttamente all'inizio
della pagina che viene richiesta.
Per avere informazioni dettagliate su come utilizzare getweb, inviare
una mail con nel body HELP.
Non penso ci siano limiti numerici nella richiesta di pagine e non è
richiesta nessuna registrazione, in ogni caso consiglio un utilizzo
moderato del sistema, considerata la sua gratuità.