Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Delete e timeout
martedì 25 luglio 2006 - 16.18
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
adima80
Profilo
| Junior Member
158
messaggi | Data Invio:
mar 25 lug 2006 - 16:18
Ciao sto facendo la DELETE di una mia tabella contenente circa 30000 record e continua ad andare in timeout il comando. Se provo a lanciare il comando da c# va in temout, usando il management studio di SQL Server 2005 invece non mi da nessun problema.
Il comando che uso è questo.
[code]DELETE FROM Accessori
[\code]
Il db è su di un server sql server 2005 Express Edition.
Grazie dell'attenzione ciao
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 25 lug 2006 - 16:24
>Ciao sto facendo la DELETE di una mia tabella contenente circa
>30000 record e continua ad andare in timeout il comando. Se provo
>a lanciare il comando da c# va in temout, usando il management
>studio di SQL Server 2005 invece non mi da nessun problema.
Ciao adima80,
si vede che il tempo di esecuzione del comando supera il valore di default di 30 secondi.
Puoi intervenire su questo valore tramite la proprietà CommandTimeout dell'oggetto SqlCommand:
"Proprietà SqlCommand.CommandTimeout"
http://msdn2.microsoft.com/it-it/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx
>Grazie dell'attenzione ciao
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
adima80
Profilo
| Junior Member
158
messaggi | Data Invio:
mar 25 lug 2006 - 16:28
>
>"Proprietà SqlCommand.CommandTimeout"
Scusa ma ho dimenticato di indicarlo nel post precedente, ho impostato la proprietà TimeOut a 0, così da renderlo infinito.
Grazie per l'attenzione ciao
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 25 lug 2006 - 16:30
>>"Proprietà SqlCommand.CommandTimeout"
>
>Scusa ma ho dimenticato di indicarlo nel post precedente, ho
>impostato la proprietà TimeOut a 0, così da renderlo infinito.
Boh, allora con le informazioni che abbiamo non ne ho la più pallida idea
>Grazie per l'attenzione ciao
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Keyser
Profilo
| Newbie
24
messaggi | Data Invio:
sab 31 mar 2007 - 14:43
Il problema è il file 'LDF' xkè l'engine sposta le righe da eliminare nel file ldf, cosi se l'operazione viene interrotta o da errore,
può ripristinarle.
Di solito per migliorare questo problema (non risolvere perchè la certezza non te la so dare,visti i comportamenti a volte assurdi di sql server)
è quello di avere un file ldf abbastanza grande,o almeno dimensionato rispetto all'mdf.
L'assurdo è che se setti il file ldf che può crescere indefinitivamente il problema non dovrebbe mai sorgere,al massimo dovrebbe metterci di più perchè
deve far crescere spesso il file e quindi causare un timeout, ma dando timeout infinito il problema si presenta lo stesso.
Io penso che a volte non riesce a far crescere il file a causa della frammentazione visto che qualche volta da l'errore e altre no.
Cmq per esperienza il database funziona meglio se l'ldf ha una dimensione considerevole, e un coefficente di crescita elevato; per esempio
ho un database di 1,2GB, tengo l'ldf al minimo (1mb) perchè faccio solo operazioni di lettura, ogni tanto invece lancio una procedura di aggiornamento
che modifica 3000/4000 righe (quindi cancella le vecchie e inserisce le nuove), prima di lanciare la procedura allargo l'ldf a 100mb con valore di accrescimento di 100mb,
cosi vado sul sicuro xkè
1) quando la procedura cancella e inserisce le righe non deve accrescere il file,ma scrive direttamente nell'ldf
2) la procedura occupa circa 15/20 mb del file quindi c'è spazio in abbondanza (serve un valore più alto nel caso sia già in parte pieno)
3) nel caso deve accrescere il file lo fa a "botte" di 100mb a volte, e non cento accrescimenti da 1mb (che secondo me lo mandano in tilt)
Dopo la procedura lancio uno shrink per avere mdf e ldf puliti.
la query per settare la dimensione dell'ldf è questa:
alter database DATABASENAME modify file (name=DATABASENAME _LOG,size=100,maxsize=unlimited,FILEGROWTH=100)
Bye Bye
S'moove Software
Software per Farmacie
Tariffazione automatica ricette farmaceutiche
http://www.smoovesoftware.com
adima80
Profilo
| Junior Member
158
messaggi | Data Invio:
dom 1 apr 2007 - 11:44
Grazie per la dritta. In questo caso ho risolto con un bel TRUNCATE TABLE perchè in realtà la tabella la dovevo svuotare.
Ciao
Torna su
Stanze Forum
Elenco Threads
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 !