Saving changes is not permitted

SQL: Saving changes is not permitted.

Oggi voglio vedere con voi uno dei più frequenti errori che ci troviamo a dover gestire quando cerchiamo di manipolare le tabelle di un database in uso. Saving changes is not permitted.

Fastidioso, cerchiamo di analizzare cosa accade e quando accade.

Questo il messaggio per intero:

Saving changes is not permitted. The changes that 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.

SQL

Questo comportamento è molto semplice da risolvere ed è ben documentato qui: Error message when you try to save a table in SQL Server: “Saving changes is not permitted”. Cercherò di essere un po’ più sintetico.

Il messaggio di errore di SQL

Questo problema si verifica quando alcune opzioni di MSSQL sono abilitate e si apportano una o più delle seguenti modifiche ad una tabella:

  • Si prova a modificare l’impostazione “Allow null” per una colonna;
  • Si prova a riordinare le colonne in una tabella;
  • Si prova a cambiare il tipo di dati di una colonna;
  • Si prova ad aggiungere unanuova colonna.

Analizziamo cosa accade: quando si fa una delle azioni precedenti si va a modificare la struttura dei metadati della tabella e quindi, quando si salva, è necessario ricreare la tabella in base a tali modifiche. Ciò può comportare la perdita di metadati e una perdita di dati durante la ricreazione della tabella. Se si attiva l’opzione “Impedisci modifiche di salvataggio che richiedono l’opzione di ricreazione della tabella” nella sezione “Designer” della finestra “Opzioni” di SQL Server Management Studio (SSMS), viene visualizzato il messaggio di errore:

Saving changes is not permitted. The changes that you have made require the following tables to be dropped and re-created.

La soluzione è abbastanza rapida, bisogna procedere nel seguente modo:

  • Aprire SQL Server Management Studio (SSMS);
  • Navigare nel menù Tools e selezionare Options;
  • Nel riquadro di navigazione della finestra Opzioni, fare selezionare Designer;
  • Deselezionare la casella di controllo “Prevent saving changes that require the table re-creation”, quindi fare clic su OK.
Saving changes is not permitted.

Ecco fatto. Possiamo procedere con la modifica che ci era impedita.