Messaggio di errore Salvataggio delle modifiche non consentito in SSMS

Questo articolo consente di risolvere il problema in cui viene visualizzato un messaggio di errore quando si tenta di salvare una tabella in SQL Server Management Studio (SSMS).

Versione originale del prodotto: SQL Server
Numero originale della Knowledge Base: 956176

Sintomi

Quando si tenta di salvare una tabella dopo averla modificata usando Progettazione in SQL Server management Studio, è possibile che venga visualizzato il messaggio di errore seguente:

Il salvataggio delle modifiche non è consentito. Le modifiche apportate richiedono l'eliminazione e la ricreazione delle tabelle seguenti. Sono state apportate modifiche a una tabella che non è possibile ricreare o è stata abilitata l'opzione Impedisci il salvataggio delle modifiche che richiedono la ricreazione della tabella.

Questo problema si verifica quando si apportano una o più delle modifiche seguenti alla tabella:

  • Modificare l'impostazione Consenti NULL per una colonna.
  • Riordinamento delle colonne nella tabella.
  • Modifica del tipo di dati della colonna.
  • Aggiunta di una nuova colonna.
  • Modifica dell'filegroup di una tabella o dei relativi dati text/image.

Causa

Questo problema si verifica perché l'opzione Impedisci il salvataggio delle modifiche che richiedono la ricreazione della tabella è abilitata per impostazione predefinita in SQL Server Management Studio.

Quando si modifica una tabella in modo da modificarne la struttura dei metadati e quindi la si salva, è necessario ricreare la tabella in base a queste modifiche. Ciò può comportare la perdita di metadati e una perdita diretta di dati durante la ricreazione della tabella. Se si abilita l'opzione Impedisci il salvataggio delle modifiche che richiedono la ricreazione della tabella nella sezione Finestra di progettazione della finestra opzioni SQL Server Management Studio (SSMS), verrà visualizzato il messaggio di errore indicato nella sezione "Sintomi".

Soluzione alternativa

Per risolvere questo problema, usare le istruzioni Transact-SQL ALTER TABLE per apportare le modifiche alla struttura dei metadati di una tabella.

Ad esempio, per modificare la colonna MyDate di tipo datetime nella tabella denominata MyTable affinché accetti valori NULL, è possibile usare:

alter table MyTable alter column MyDate7 datetime NULL

Importante

È consigliabile non risolvere questo problema disattivando l'opzione Impedisci il salvataggio delle modifiche che richiedono la ricreazione della tabella. Per altre informazioni sui rischi di disattivazione di questa opzione, vedere la sezione "Altre informazioni".

Ulteriori informazioni

Per modificare l'opzione Impedisci il salvataggio delle modifiche che richiedono la ricreazione della tabella, seguire questa procedura:

  1. Aprire SQL Server Management Studio.

  2. Nel menu Strumenti fare clic su Opzioni.

  3. Nel pannello di navigazione della finestra Opzioni fare clic su Finestre di progettazione.

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

Nota

Se si disabilita questa opzione, quando si salva la tabella non si riceve l'avviso che le modifiche apportate hanno modificato la struttura dei metadati della tabella. In questo caso, quando si salva la tabella può verificarsi una perdita di dati.

Cosa si rischia disattivando l'opzione "Impedisci il salvataggio delle modifiche che richiedono la ricreazione della tabella"

Anche se la disattivazione di questa opzione consente di evitare la ricreazione di una tabella, può anche comportare la perdita di modifiche. Si supponga, ad esempio, di abilitare la funzionalità Rilevamento modifiche in SQL Server per tenere traccia delle modifiche apportate alla tabella. Quando si esegue un'operazione che causa la ricreazione della tabella, viene visualizzato il messaggio di errore indicato nella sezione Sintomi. Tuttavia, se si disattiva questa opzione, le informazioni di rilevamento modifiche esistenti vengono eliminate quando la tabella viene ricreata. Pertanto, è consigliabile non risolvere questo problema disattivando l'opzione.

Per determinare se la funzionalità Rilevamento modifiche è abilitata per una tabella, seguire questa procedura:

  1. In SQL Server Management Studio individuare la tabella in Esplora oggetti.
  2. Fare clic con il pulsante destro del mouse sulla tabella, quindi fare clic su Proprietà.
  3. Nella finestra di dialogo Proprietà tabella fare clic su Rilevamento modifiche. Se il valore dell'elemento Rilevamento modifiche è True, questa opzione è abilitata per la tabella. Se il valore è False, questa opzione è disabilitata.

Quando la funzionalità Change Tracking è abilitata, usare le istruzioni Transact-SQL per modificare la struttura dei metadati della tabella.

Procedura per riprodurre il problema

  1. In SQL Server Management Studio creare una tabella contenente una chiave primaria nello strumento Progettazione tabelle.
  2. Fare clic con il pulsante destro del mouse sul database che contiene la tabella, quindi fare clic su Proprietà.
  3. Nella finestra di dialogo Proprietà database fare clic su Rilevamento modifiche.
  4. Impostare il valore dell'elemento Rilevamento modifiche su True e quindi fare clic su OK.
  5. Fare clic con il pulsante destro del mouse sulla tabella, quindi fare clic su Proprietà.
  6. Nella finestra di dialogo Proprietà tabella fare clic su Rilevamento modifiche.
  7. Impostare il valore dell'elemento Rilevamento modifiche su True e quindi fare clic su OK.
  8. Nel menu Strumenti fare clic su Opzioni.
  9. Nella finestra di dialogo Opzioni fare clic su Finestre di progettazione.
  10. Fare clic per selezionare la casella di controllo Impedisci il salvataggio delle modifiche che richiedono la ricreazione della tabella e quindi fare clic su OK.
  11. Nello strumento Progettazione tabelle modificare l'impostazione Consenti valori Null in una colonna esistente.
  12. Provare a salvare la modifica alla tabella.