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
.NET Framework
Eimare i record in modo dfinitivo anche
martedì 08 marzo 2011 - 12.41
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Carmelo1965
Profilo
| Junior Member
163
messaggi | Data Invio:
mar 8 mar 2011 - 12:41
Ciao a tutti, ho questo problema, ho cancellato tutti i record dalla tabella del server, ho provato ad inserire un nuovo record e mi parte dal numero 30 come ID, è possibile far ripartire il record al numero 1 ??? come posso eliminare tutti i Record in modo definitivo.
grazie mille Carmelo
Ciao, ringrazio tutti per la vostra pazienza...
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 8 mar 2011 - 12:45
>Ciao a tutti, ho questo problema, ho cancellato tutti i record
>dalla tabella del server, ho provato ad inserire un nuovo record
>e mi parte dal numero 30 come ID, è possibile far ripartire il
>record al numero 1 ??? come posso eliminare tutti i Record in
>modo definitivo.
Ciao, quella tabella probabilmente ha un campo identità che autoincrementa.
Il record è eliminato in modo definitivo ma l'incremento è solo in avanti, perchè lo stato a cui è arrivato il campo è salvato sul database server.
Quindi ogni record incrementa l'ultimo id salvato dopo l'utlimo inserimento.
Anche perchè pensa se dovessi eliminare non gli ultimi ma dei record in mezzo.. come fai a riempire quelli interni? Un algoritmo che cerca i buchi, diventa pesante poi e prestazionalmente parlando non è indicato.
Se usi identità le dovrai usare come sono, campi alternativi di autoconteggio su cui non dovrai mai fare logiche. Se ti serve un progressivo effettivo te lo devi fare tu come campo nuovo prendendo il record precedente ed aggiungendo 1 al valore di quel campo progressivo.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
paoval72
Profilo
| Senior Member
297
messaggi | Data Invio:
mar 8 mar 2011 - 14:02
Hai provato con questo?
DBCC CHECKIDENT ("nometabella", RESEED, 0);
Il reseed dovrebbe azzerarti la colonna autoincrementante e farla partire dall'indice che vuoi. Dopo il Reseed aggiungi l'ultimo indice: nell'esempio, il tuo primo nuovo record partirà dall'indice 1 (cioè 0 + 1).
Ciao,
Paolo
Carmelo1965
Profilo
| Junior Member
163
messaggi | Data Invio:
mar 8 mar 2011 - 14:07
ciao paoval72 , grazie mille, effetivamente volevo fare tutto ex novo e caricare i dati puliti, dato che quelli che ho erano come prova.
Grazie mille ancora quindi basta che faccio nel seguento modo
DBCC CHECKIDENT ("nometabella", RESEED, 0 + 1); ma posso farlo con un tasto pulsante
come funzione quando apro il Form dei Recods ????
Ciao, ringrazio tutti per la vostra pazienza...
paoval72
Profilo
| Senior Member
297
messaggi | Data Invio:
mar 8 mar 2011 - 14:18
>ciao paoval72 , grazie mille, effetivamente volevo fare tutto
>ex novo e caricare i dati puliti, dato che quelli che ho erano
>come prova.
>Grazie mille ancora quindi basta che faccio nel seguento modo
>DBCC CHECKIDENT ("nometabella", RESEED, 0 + 1); ma posso farlo
>con un tasto pulsante
>come funzione quando apro il Form dei Recods ????
>
>
>Ciao, ringrazio tutti per la vostra pazienza...
Ma l'eliminazione la vuoi fare dal form? La funzione che ti ho proposto è lato Db, ma credo che si possa legare ad una chiamata da codice.
Mi sono spiegato male, per azzerare il contatore basta inserire l'indice a zero:
DBCC CHECKIDENT ("nometabella", RESEED, 0)
Carmelo1965
Profilo
| Junior Member
163
messaggi | Data Invio:
mar 8 mar 2011 - 14:22
ciao scusami, non sono molto pratico, se mi dici dove devo farla la faccio tranquillamente dove mi dici te, se mi dici dove doevo scriver questa funzione lo faccio, forse dal server nell'interrogazione
della tabella ???
Ciao, ringrazio tutti per la vostra pazienza...
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 8 mar 2011 - 14:35
>ciao scusami, non sono molto pratico, se mi dici dove devo farla
>la faccio tranquillamente dove mi dici te, se mi dici dove doevo
>scriver questa funzione lo faccio, forse dal server nell'interrogazione
>della tabella ???
Attenzione..
il checkident ha bisogno di permission elevate:
"Caller must own the table, or be a member of the sysadmin fixed server role, the db_owner fixed database role, or the db_ddladmin fixed database role."
Detto questo, che in teoria è bloccante, visto che in un ambiente multiutenza non è di certo buono dare permission di quel genere, sei sicuro che a regime poi dovrai svuotare e ricreare da capo sempre?
Queste operazioni sono di amministrazione del database, non applicative..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Carmelo1965
Profilo
| Junior Member
163
messaggi | Data Invio:
mar 8 mar 2011 - 14:57
la tabella l'ho creata io compreso il Database. Scusa una volta canellato tutto, non lo faccio ogni volta ma soltanto ora.
Grazie mille Carmelo
Ciao, ringrazio tutti per la vostra pazienza...
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 8 mar 2011 - 15:02
>la tabella l'ho creata io compreso il Database. Scusa una volta
>canellato tutto, non lo faccio ogni volta ma soltanto ora.
ok, era solo per dirti che i Database Console Command sono riservati ad un admin di solito.. e non alle applicazioni.
In questo caso, se ti serve una tantum e sei admin, paoval72 ti ha dato un buon consiglio a mio avviso.. però tu dicevi di trasformarla in una funzionalità.. e la cosa non mi sembrava di "amministrazione straordinaria"
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Carmelo1965
Profilo
| Junior Member
163
messaggi | Data Invio:
mar 8 mar 2011 - 15:08
Grazie Alex sei molto gentile per la premura che mi dai, sto facendo un prgramma da casa per l'Azienda e mi piacerebbe fargli vedere il Db. dal 1 codice.
Carmelo
Ciao, ringrazio tutti per la vostra pazienza...
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 8 mar 2011 - 16:52
>Grazie Alex sei molto gentile per la premura che mi dai, sto
>facendo un prgramma da casa per l'Azienda e mi piacerebbe fargli
>vedere il Db. dal 1 codice.
non basarti mai sull'identity però.. non ne hai il controllo, meglio fare un progressivo tuo..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Carmelo1965
Profilo
| Junior Member
163
messaggi | Data Invio:
mar 8 mar 2011 - 17:48
mi spighi come posso fare un mio progressimo, puoi farmi un esempio...
ad esempio se il mio indice parte del record 24 senza cancellare nulla, invece il mio indice del
txtrecord mi dice ovviamente 1 - 1 oppure 1 - 2 ect intendevi questo come indice.
ad edempio io faccio bscont.move +1 ect.
partendo da 1 ovviamente
Ciao, ringrazio tutti per la vostra pazienza...
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 8 mar 2011 - 17:52
>mi spighi come posso fare un mio progressimo, puoi farmi un esempio...
intendo aggiungere un campo nella tabella che vale il progressivo massimo prima dell'inserimento + 1.
Lo devi fare a mano
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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 !