Azzeramento Identificatori tabelle Sql

venerdì 23 novembre 2012 - 10.53
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  SQL Server Express

alsa Profilo | Junior Member

Salve ragazzi,
ho bisogno di una piccola dritta,
Ho creato un applicativo che sfrutta un database Sql e, ovviamente, ho provato e riprovato il tutto creando, modificando e cancellando record a mio piacimento.
Ora, dovrei consegnare il progetto ma vorrei evitare di scrivere una procedura per la creazione ex novo dello stesso db anche perchè ci sono molte stored_procedure e quindi sarebbe un operazione abbastanza onerosa in termini di tempo.
Per questo motivo vi chiedo, esiste un modo per azzerare i campi identificatori di ogni tabella di modo che io svuoto il db e alla creazione del prossimo record in una tabella con identificatore, quest'ultimo riparta da 1?

Grazie.

alx_81 Profilo | Guru

>Salve ragazzi,
ciao

>Ora, dovrei consegnare il progetto ma vorrei evitare di scrivere
>una procedura per la creazione ex novo dello stesso db anche
>perchè ci sono molte stored_procedure e quindi sarebbe un operazione
>abbastanza onerosa in termini di tempo.
>Per questo motivo vi chiedo, esiste un modo per azzerare i campi
>identificatori di ogni tabella di modo che io svuoto il db e
>alla creazione del prossimo record in una tabella con identificatore,
>quest'ultimo riparta da 1?
a prescindere che la funzione esiste ed è un database console command (DBCC) ed è il seguente:
DBCC CHECKIDENT('schema.nometabella',RESEED, 0)

puoi farlo anche in altri modi:
- TRUNCATE TABLE se la tabella non è riferita in relazioni
- DROP e CREATE della tabella daccapo

detto questo, un piccolo consiglio per le prossime volte. Una volta definito il tuo modello ed il tuo database è pronto e sviluppato, prima di scrivere record, fai un backup che sarà alla fine quello "vuoto" di partenza. Chiaro è che dall'impianto alla consegna le cose possono cambiare, ma puoi sempre fare le diff delle strutture con tool che trovi su internet (vedi ad esempio i tool di red-gate, che in versione dimostrativa possono già aiutarti).
Considera comunque, che in deploy è buona norma avere sempre uno script di impianto. Le stored procedure poi, non le devi toccare, non c'entrano nulla coi dati e non devi ricreare il db a mano.. SQL Server Management studio poi, ti consente la generazione dello script dell'intero database. Tasto destro sul mouse, e nei task troverai "generate scripts..".

>Grazie.
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

totti240282 Profilo | Guru

Quindi se si hanno relazioni per fare il RUNCATE TABLE bisogna disattivarle momentaneamente o c'è qualche altra soluzione ?
C'è solo un capitano !!!!!!

alx_81 Profilo | Guru

>Quindi se si hanno relazioni per fare il RUNCATE TABLE bisogna
>disattivarle momentaneamente o c'è qualche altra soluzione ?
non puoi fare truncate sulla tabella "padre" se ci sono FK. Sulla "figlia" sì, puoi.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

totti240282 Profilo | Guru

E se cancello la figlia e poi faccio il truncate sulla tabella padre ?
C'è solo un capitano !!!!!!

alx_81 Profilo | Guru

>E se cancello la figlia e poi faccio il truncate sulla tabella padre ?
intendi i dati? No, intendi le strutture? Sì, scompare la relazione.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
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 !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5