22 messaggi dal 05 febbraio 2009
Ciao

vorrei cambiare il tipo dei dati di un campo portandolo da datetime2 a date semplice; faccio la modifica in SSMS ma all'atto del salvataggio mi dice che devo cancellare e ricreare la tabella.

C'è un altro modo per fare quella modifica visto che mi secca ripopolare la tabella?? Non ha importanza anche se perdo dei dati relativi alla data, in quanto hanno tutti lo stesso valore e stò poco a reinserirli.

Grazie per il suggerimento ...
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog
Sono quasi certo che il messaggio che ricevi sia decisamente diverso, ovvero "Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can't be re-created or enabled the option Prevent saving changes that require the table to be re-created."
In questo caso come vedi la soluzione è scritta nella parte finale del messaggio, ovvero di disabilitare l'opzione "Prevent saving changes that require the table to be recreated". Trovi questa opzione accedendo, in SSMS, al menù Tools -> Options e da qui andare nella sezione Designers -> Table and Database Designers

Bye
22 messaggi dal 05 febbraio 2009
Si si, il messaggio completo è quello che hai riportato tu, io avevo messo solo "il concetto".

Ho trovato quel flag, però mi viene il dubbio di cosa succeda se lo levo e salvo il DB, visto che rimarca che la modifica implica il ricreare la tabella.

Fra l'altro volevo ìmodifciare semplicemente il nome di un altro campo ed anche in quel caso non mi permette di farlo.

Possibile che per due modifiche di quel tipo (sopratutto la seconda) debba ricreare la tabella?? O posso andare tranquillo per questa volta con la modifica??

Grazie ancora
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog
andrea99999 ha scritto:
Si si, il messaggio completo è quello che hai riportato tu, io avevo messo solo "il concetto".


Beh... allora diciamo che nell'esprimere il concetto lo hai stravolto... :-)

Ho trovato quel flag, però mi viene il dubbio di cosa succeda se lo levo e salvo il DB, visto che rimarca che la modifica implica il ricreare la tabella.


Se lo togli non avrai più nessun warning e la modifica alla struttura dati verrà apportata ANCHE se ciò comporta l'eliminazione e la ricreazione della tabella. Non è altro che il comportamento predefinito dell'interfaccia grafica di SQL Server 2005 che COMUNQUE eseguiva tali attività anche se la tabella deve essere ricreata. Questo può avere un impatto insignificante o trascurabile se la tabella è composta da poche centinaia o migliaia di pagine, ma può diventare abbastanza invasivo con una quantità di dati consistente. Per questo motivo si è ritenuto utile introdurre questo check box che, come vedi, puoi abilitare e disabilitare all'occorrenza...

Fra l'altro volevo ìmodifciare semplicemente il nome di un altro campo ed anche in quel caso non mi permette di farlo.


Qui entra in gioco un altro discorso. Molto spesso l'interfaccia grafica segue la via più complicata per eseguire una cosa che potrebbe essere fatta in maniera più semplice, forse perchè chi ha sviluppato SSMS è uno sviluppatore... :-)
In questo caso conoscere il T-SQL ti aiuterebbe... utilizzando la sp_rename puoi rinominare un campo senza tutte le pippe mentali che fa SSMS...

Bye
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
andrea99999 wrote:

Fra l'altro volevo ìmodifciare semplicemente il nome di un altro campo ed anche in quel caso non mi permette di farlo.

un piccolo particolare, interessante o meno... (personalmente mi interessa in quanto preferisco essere "coerente")..
rinominando un colonna, sia con SSMS che con sp_rename, non si provvede a rinominare anche alla modifica dei constraints, indici, chiavi o quant'altro..
utilizzando il designer di SSMS, solitamente un DEFAULT constraint viene creato come di seguito
ALTER TABLE [dbo].[TableName]
ADD CONSTRAINT [DF_TableName_ColumnName] DEFAULT (xx) FOR [ColumnName];

rinominando la colonna da "Id" a "IdTabella", il nome del default non viene modificato conseguentemente...

poi c'e' ovviamente anche l'aspetto formale.. sono da riguardare tutte le procedure, funzioni, viste, etc in quanto la modifica del nome di una colonna non si riflette conseguentemente.. non e' quindi previsto un "refactoring" a livello di catalogo completo..
forse, ma non l'ho mai provato, DataDude (VS for Database Professionals) prevede la funzionalita'
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
22 messaggi dal 05 febbraio 2009
Molte grazie.

Per il rename del campo, questo non è ne chiave ne interessato in relazioni, quindi in questo caso vado a colpo sicuro.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.