Errore SQL Server "Il salvataggio delle modifiche non è consentito" ► Impedisci il salvataggio delle modifiche che richiedono la ricostruzione della tabella


749

Quando creo una tabella in SQL Server e la salvo, se provo a modificare il design della tabella, come cambiare un tipo di colonna da int a real, ottengo questo errore:

Il salvataggio delle modifiche non è consentito. La modifica apportata richiede che la seguente tabella venga eliminata e ricreata. Sono state apportate modifiche a una tabella che non può essere ricreata o abilitata l'opzione per impedire il salvataggio delle modifiche che richiedono la ricreazione della tabella.

Perché devo ricreare la tabella? Voglio solo cambiare un tipo di dati da smallinta real.

Il tavolo è vuoto e non l'ho usato fino ad ora.


Risposte:


1466

Dalla finestra di dialogo Salva (non consentito) su MSDN :

The Save finestra di dialogo (non consentita) avverte che il salvataggio delle modifiche non è consentito poiché le modifiche apportate richiedono che le tabelle elencate vengano eliminate e ricreate.

Le seguenti azioni potrebbero richiedere la ricostruzione di una tabella:

  • Aggiunta di una nuova colonna al centro della tabella
  • Rilasciare una colonna
  • Modifica della nullità di colonna
  • Modifica dell'ordine delle colonne
  • Modifica del tipo di dati di una colonna <<<<

Per modificare questa opzione, dal menu Strumenti , fare clic su Opzioni , espandere Progettazione e quindi fare clic su Progettazione tabelle e database . Selezionare o deselezionare la casella di controllo Impedisci salvataggio modifiche che richiedono di ricreare la tabella .

Vedere anche la voce Blog di Colt Kwong: il
salvataggio delle modifiche non è consentito in SQL 2008 Management Studio


7
SSMS non dovrebbe lasciarti fare qualcosa di pericoloso senza prima avvisarti. Ma hai un backup a portata di mano, per ogni evenienza.
Robert Harvey,

40
Questa opzione dice a SSMS che può andare avanti e creare una tabella temporanea nel nuovo schema, copiare i dati in questo, quindi eliminare la vecchia tabella e rinominare la tabella temporanea con il nome originale. Va bene fare tutto ciò che dovrebbe essere in transazione, tuttavia le relazioni verranno interrotte e ricreate, quindi se non al 100% potrebbe fare qualcosa di inaspettato.
Justin King,

13
Non so perché non riesco a ricordare quei semplici passaggi per eliminare questa opzione e devo sempre cercare la soluzione. Hehehehehe. Grazie uomo!
Sviluppatore

8
Vacca sacra - puoi semplicemente disattivarlo per superare questo errore ?? Non lo sapevo e negli ultimi 3 anni ho vissuto nel timore di progettare inavvertitamente un tavolo senza una specifica di identità e di dover creare un nuovo tavolo. Ottimo consiglio!
nocarrier,

4
Ecco il CAVEAT di Microsoft sulla disabilitazione dell'opzione "Impedisci salvataggio modifiche ...": support.microsoft.com/en-us/kb/956176 . Fondamentalmente, puoi perdere metadati come il rilevamento delle modifiche, se questa è una funzione che usi.
Baodad,

205

Usi SSMS?

Se sì, vai al menu Strumenti >> Opzioni >> Designer e deseleziona “Impedisci il salvataggio delle modifiche che richiedono la ricostruzione della tabella”


Strumenti >> Opzioni ecc. Non "Menu" (solo dal punto di vista dell'sms 2014, che credo sia lo stesso nelle versioni precedenti)
Tom Stickel,

@TomStickel Immagino che volevo andare al menu: "Strumenti"
ypercubeᵀᴹ

: P Sì, ho pensato che, ho solo pensato di commentare per chiunque si sarebbe davvero "bloccato", spaventoso lo so, ma suppongo che alcune persone potrebbero rapidamente alzare le mani ... grazie
Tom Stickel,

2
@NeilMeyer attenzione che la casella di controllo è selezionata per un motivo. È una misura di sicurezza per prevenire operazioni che
lasceranno

le relazioni tra le tabelle andranno perse se le tabelle vengono ricreate in questo modo?
Neil Meyer,

78

Impedisci il salvataggio delle modifiche che richiedono la ricostruzione della tabella

Cinque rapidi clic

Impedisci il salvataggio delle modifiche che richiedono la ricostruzione della tabella in cinque clic

  1. Utensili
  2. Opzioni
  3. Designers
  4. Impedisci il salvataggio delle modifiche che richiedono la ricostruzione della tabella
  5. OK .

Dopo aver salvato, ripetere la procedura per selezionare nuovamente la casella. Questo protegge contro la perdita accidentale di dati.

Ulteriori spiegazioni

  • Per impostazione predefinita, SQL Server Management Studio impedisce l'eliminazione delle tabelle, poiché quando si elimina una tabella il contenuto dei dati viene perso. *

  • Quando si modifica il tipo di dati di una colonna nella vista Progettazione tabella, quando si salvano le modifiche, il database rilascia la tabella internamente e quindi ne ricrea una nuova.

* Le tue circostanze specifiche non porteranno una conseguenza poiché il tuo tavolo è vuoto. Fornisco questa spiegazione interamente per migliorare la comprensione della procedura.


27

Per modificare l'opzione Impedisci il salvataggio delle modifiche che richiedono l'opzione di ricostruzione della tabella, attenersi alla seguente procedura:

Apri SQL Server Management Studio (SSMS). Nel menu Strumenti, fare clic su Opzioni.

Nel riquadro di navigazione della finestra Opzioni, fare clic su Designer.

Selezionare o deselezionare la casella di controllo Impedisci il salvataggio delle modifiche che richiedono la ricostruzione della tabella, quindi fare clic su OK.

Nota : se si disabilita questa opzione, quando si salva la tabella non si viene avvisati che le modifiche apportate hanno modificato la struttura dei metadati della tabella. In questo caso, è possibile che si verifichi una perdita di dati quando si salva la tabella.

inserisci qui la descrizione dell'immagine


Il designer di tavoli è utile, ma non puoi ottenere tutto con esso
Sitecore Sam

22

È un problema di impostazione molto facile e semplice che può essere risolto in 5 secondi seguendo questi passaggi

Per consentire di salvare le modifiche dopo aver modificato la tabella, attenersi alla seguente procedura per l'impostazione sql:

  1. Apri Microsoft SQL Server Management Studio 2008
  2. Fai clic su Opzioni del menu Strumenti, quindi fai clic su Opzioni
  3. Seleziona designer
  4. Deseleziona l'opzione "impedisce il salvataggio delle modifiche che richiedono la ricostruzione della tabella"
  5. Clicca OK
  6. Prova a modificare il tuo tavolo
  7. Le modifiche verranno eseguite come desiderato

8
come si aggiunge in qualche modo alla risposta accettata?
Immortal Blue,

17

Vai su Strumento situato nel menu in alto.
Scegli le opzioni dal menu a discesa. Ora hai un popup seleziona l' opzione Designer situata sul blocco di menu a sinistra. Deseleziona l'opzione Impedisci il salvataggio delle modifiche che richiedono la ricostruzione della tabella . Fare clic sul pulsante OK.


12

Deseleziona la Prevent saving changes that require table re-creationcasella da Strumenti ► Opzioni ► scheda Progettisti .

Esempio di SQL Server 2012:

inserisci qui la descrizione dell'immagine


12

Questo può essere modificato facilmente in Microsoft SQL Server .

  1. Apri Microsoft SQL Server Management Studio 2008
  2. Fai clic sul menu Strumenti
  3. Fai clic su Opzioni
  4. Seleziona designer
  5. Deseleziona "Impedisci il salvataggio delle modifiche che richiedono la ricostruzione della tabella"
  6. Clicca OK

inserisci qui la descrizione dell'immagine


7

Copiato da questo link "... Importante Si consiglia vivamente di non aggirare questo problema disattivando l'opzione Impedisci salvataggio modifiche che richiedono la ri-creazione della tabella. Per ulteriori informazioni sui rischi di disattivare questa opzione, vedere" Ulteriori informazioni "sezione. ''

"... Per aggirare questo problema, utilizzare le istruzioni Transact-SQL per apportare le modifiche alla struttura dei metadati di una tabella. Per ulteriori informazioni, consultare il seguente argomento nella documentazione in linea di SQL Server

Ad esempio, per modificare la colonna MyDate di tipo datetime nella tabella denominata MyTable per accettare i valori NULL, è possibile utilizzare:

alter table MyTable alter column MyDate7 datetime NULL "


2
Con così tante risposte che dicono tutte la stessa cosa, questa è stata la risposta che stavo cercando poiché avevo dati dal vivo nella mia tabella che non volevo perdere. Avevo bisogno di aggiornare una colonna decimale da 0 decimali a 2 decimali e la semplice istruzione alter ha funzionato perfettamente!
Stitz,

La tragedia qui è che SSMS dovrebbe fare esattamente questo sotto il cofano e quindi non richiedere la caduta del tavolo
m12lrpv

6

E nel caso qualcuno qui non presti attenzione (come me):

Per Microsoft SQL Server 2012, nella finestra di dialogo delle opzioni, è presente una piccola casella di controllo che APPARENTEMENTE nasconde tutte le altre impostazioni. Anche se devo dire che mi sono perso quel piccolo mostro per tutto questo tempo !!!

Dopodiché, puoi procedere con i passaggi, designer, deseleziona impedisci di salvare bla bla bla ...

sneaky_check_box_in_option



2

1) Apri lo strumento che si trova in alto.
2) Scegli le opzioni dall'elenco.
3) Ora viene visualizzato il popup e ora puoi selezionare l'opzione designer dall'elenco dei menu sul lato sinistro.
4) Ora, per impedire che le modifiche al salvataggio siano deselezionate, è necessario ricreare la tabella. Ora fai clic su OK.


1

Dal menu Strumenti, fare clic su Opzioni, selezionare Designer dal menu laterale e deselezionare per impedire modifiche che possono portare alla ricreazione di una tabella. Quindi salvare le modifiche


0

Se non riesci a visualizzare l'elenco "Impedisci il salvataggio delle modifiche che richiedono la ricostruzione della tabella" in questo modo L'immagine

Devi abilitare il rilevamento delle modifiche.

  • Fare clic con il tasto destro sul database e fare clic su Proprietà
  • Fai clic su cambia tracciamento e abilitalo
  • Vai Strumenti -> Opzioni -> Designer di nuovo e deseleziona.

0

Se usi sql server Management studio vai su Strumenti >> Opzioni >> Designer e deseleziona “Impedisci il salvataggio delle modifiche che richiedono la ricostruzione della tabella” Funziona con me

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.