Fehlermeldung „Das Speichern von Änderungen ist nicht zulässig“ in SSMS

Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 956176

Summe

Dieser Artikel hilft Ihnen, die Fehlermeldung "Speichern von Änderungen ist nicht zulässig" zu umgehen, die SQL Server Management Studio (SSMS) anzeigt, wenn Sie Änderungen im Tabellen-Designer speichern. Der Fehler tritt auf, wenn eine Änderung erfordert, dass SSMS die Tabelle löscht und neu erstellt, und die Option Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erfordern aktiviert ist. Verwenden Sie ALTER TABLE Transact-SQL (T-SQL)-Anweisungen anstelle des Tabellen-Designers, um diesen Fehler und die dadurch verursachte Neuerstellung der Tabelle zu vermeiden. In diesem Artikel wird auch erläutert, wie Sie die Option ändern und warum das Deaktivieren riskant sein kann, insbesondere für Tabellen, die die Änderungsnachverfolgung verwenden.

Symptome: Fehler beim Speichern von Tabellenänderungen im Tabellen-Designer

Wenn Sie versuchen, eine Tabelle zu speichern, nachdem Sie Änderungen an der Tabelle mithilfe des Tabellen-Designers in SQL Server Management Studio vorgenommen haben, wird möglicherweise die folgende Fehlermeldung angezeigt:

Das Speichern von Änderungen ist nicht zulässig. Die vorgenommenen Änderungen erfordern das Löschen und Neuerstellen der folgenden Tabellen. Sie haben entweder Änderungen an einer Tabelle vorgenommen, die eine Neuerstellung der Tabelle erfordern, oder die Option ‚Speichern von Änderungen verhindern, die die Neuerstellung der Tabelle erfordern‘ aktiviert.

Dieses Problem tritt auf, wenn Sie eine oder mehrere der folgenden Änderungen an der Tabelle vornehmen:

  • Sie ändern die Einstellung "Null zulassen" für eine Spalte.
  • Sie ordnen Spalten in der Tabelle neu an.
  • Sie ändern den Spaltendatentyp.
  • Sie fügen eine neue Spalte hinzu.
  • Sie ändern die filegroup einer Tabelle oder deren text/image-Daten.

Ursache: SSMS verhindert Änderungen, die eine erneute Erstellung der Tabelle erfordern

Dieses Problem tritt auf, da die Option Änderungen nicht speichern, die eine Neuerstellung der Tabelle erforderlich machen in SSMS standardmäßig aktiviert ist.

Wenn Sie eine Tabelle so ändern, dass sich ihre Metadatenstruktur ändert, und sie dann speichern, muss SSMS die Tabelle basierend auf diesen Änderungen neu erstellen. Das erneute Erstellen einer Tabelle kann zu einem Verlust von Metadaten und zu einem direkten Datenverlust führen.

Wenn die Option „Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erfordern“ im Abschnitt „Designer“ des SSMS-Fensters „Optionen“ aktiviert ist, blockiert SSMS den Speichervorgang, und Sie erhalten die Fehlermeldung, die im Abschnitt „Symptome“ erwähnt wird. Weitere Informationen zu dieser Option finden Sie unter Optionen (Designer – Tabelle und Datenbank-Designer).

Problemumgehung: Verwenden Sie ALTER TABLE anstelle des Tabellen-Designers

Um dieses Problem zu umgehen, verwenden Sie ALTER TABLE T-SQL-Anweisungen, um die Änderungen an der Metadatenstruktur einer Tabelle vorzunehmen. Führen Sie die folgenden Schritte aus, um die Statements auszuführen:

  1. Stellen Sie in SQL Server Management Studio eine Verbindung mit der Instanz her, und wählen Sie dann die Datenbank aus, die die Tabelle enthält.
  2. Klicken Sie in der Symbolleiste auf Neue Abfrage.
  3. Geben Sie die T-SQL-Anweisung in das Abfragefenster ein, und wählen Sie dann "Ausführen" aus.

Sie benötigen die ALTER Berechtigung für die Tabelle zum Ausführen von ALTER TABLE Anweisungen.

Wenn Sie beispielsweise die Spalte "MyDate" des Typs datetime in einer Tabelle namens "MyTable " ändern möchten, um NULL-Werte zu akzeptieren, verwenden Sie die folgende Anweisung:

ALTER TABLE MyTable ALTER COLUMN MyDate datetime NULL;

Verwenden Sie die folgende Anweisung, um der selben Tabelle eine neue Spalte namens MyNewColumn vom Typ int hinzuzufügen, die NULL-Werte akzeptiert:

ALTER TABLE MyTable ADD MyNewColumn int NULL;

Wichtig

Es wird dringend empfohlen, dieses Problem nicht zu umgehen, indem Sie die Option Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erfordern deaktivieren. Weitere Informationen zu den Risiken des Deaktivierens dieser Option finden Sie unter Risiko beim Deaktivieren der Option "Speichern von Änderungen verhindern, die eine erneute Erstellung der Tabelle erfordern".

So ändern Sie die Option "Speichern von Änderungen verhindern, für die eine Erneute Erstellung einer Tabelle erforderlich ist"

Führen Sie die folgenden Schritte aus, um die Option Änderungen nicht speichern, die eine Neuerstellung der Tabelle erfordern zu aktivieren oder zu deaktivieren:

  1. Öffnen Sie SQL Server Management Studio.
  2. Klicken Sie im Menü Extras auf Optionen.
  3. Wählen Sie im Navigationsbereich des Fensters "Optionen" die Option "Designer" aus.
  4. Aktivieren oder deaktivieren Sie das Kontrollkästchen „Änderungen, die eine Neuerstellung der Tabelle erfordern, nicht speichern“, und wählen Sie dann OK aus.

Hinweis

Wenn Sie diese Option deaktivieren, werden Sie beim Speichern der Tabelle nicht davor gewarnt, dass die von Ihnen vorgenommenen Änderungen die Metadatenstruktur der Tabelle verändert haben. In diesem Fall kann der Datenverlust auftreten, wenn Sie die Tabelle speichern.

Mit dem Deaktivieren der Option „Speichern von Änderungen verhindern, die die Neuerstellung der Tabelle erfordern“ verbundenes Risiko

Obwohl das Deaktivieren dieser Option helfen kann, den Fehler zu vermeiden, kann dies auch dazu führen, dass Änderungen verloren gehen. Wenn die Option Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erfordern aktiviert ist, zeigt SSMS den Fehler für jede Änderung an, für die die Tabelle neu erstellt werden muss, da das erneute Erstellen einer Tabelle zu einem Verlust von Metadaten oder Daten im Allgemeinen führen kann. Die Änderungsnachverfolgung ist ein Beispiel für die Metadaten, die verlorengehen können.

Angenommen, Sie aktivieren das Feature "Änderungsnachverfolgung" in SQL Server, um Änderungen an der Tabelle nachzuverfolgen. Wenn Sie einen Vorgang ausführen, der bewirkt, dass die Tabelle neu erstellt wird, erhalten Sie die Fehlermeldung, die im Abschnitt "Symptome" erwähnt wird. Wenn Sie die Option jedoch deaktivieren, werden die vorhandenen Änderungsnachverfolgungsinformationen bei der Neuerstellung der Tabelle gelöscht. Daher wird empfohlen, dieses Problem nicht zu umgehen, indem Sie die Option deaktivieren.

So überprüfen Sie, ob die Änderungsnachverfolgung für eine Tabelle aktiviert ist

Gehen Sie wie folgt vor, um zu ermitteln, ob das Feature Änderungsnachverfolgung für eine Tabelle aktiviert ist:

  1. Suchen Sie die Tabelle im Objekt-Explorer von SQL Server Management Studio.
  2. Klicken Sie mit der rechten Maustaste auf die Tabelle, und wählen Sie dann "Eigenschaften" aus.
  3. Wählen Sie im Dialogfeld "Tabelleneigenschaften " die Option "Änderungsnachverfolgung" aus. Wenn der Wert des Änderungsnachverfolgungselements"True" lautet, ist die Änderungsnachverfolgung für die Tabelle aktiviert. Wenn der Wert "False" lautet, ist er deaktiviert.

Wenn das Feature "Änderungsnachverfolgung" aktiviert ist, verwenden Sie T-SQL-Anweisungen, um die Metadatenstruktur der Tabelle zu ändern. Weitere Informationen zum Aktivieren und Deaktivieren der Änderungsnachverfolgung finden Sie unter Aktivieren und Deaktivieren der Änderungsnachverfolgung.

Schritte zum Reproduzieren des Problems

Führen Sie die folgenden Schritte aus, um den Fehler zu reproduzieren:

  1. Erstellen Sie in SQL Server Management Studio im Tool Tabellen-Designer eine Tabelle, die einen Primärschlüssel enthält.
  2. Klicken Sie mit der rechten Maustaste auf die Datenbank, die diese Tabelle enthält, und wählen Sie dann "Eigenschaften" aus.
  3. Wählen Sie im Dialogfeld "Datenbankeigenschaften " die Option "Änderungsnachverfolgung" aus.
  4. Legen Sie den Wert des Elements „Änderungsnachverfolgung“ auf "True" fest, und wählen Sie dann "OK" aus.
  5. Klicken Sie mit der rechten Maustaste auf die Tabelle, und wählen Sie dann "Eigenschaften" aus.
  6. Wählen Sie im Dialogfeld "Tabelleneigenschaften " die Option "Änderungsnachverfolgung" aus.
  7. Legen Sie den Wert des Änderungsnachverfolgungselements auf True fest, und wählen Sie dann OK aus.
  8. Klicken Sie im Menü Extras auf Optionen.
  9. Wählen Sie im Dialogfeld OptionenDesigner aus.
  10. Aktivieren Sie das Kontrollkästchen Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erfordern, und wählen Sie dann OK aus.
  11. Ändern Sie im Tool Tabellen-Designer die Einstellung NULL-Werte zulassen für eine vorhandene Spalte.
  12. Versuchen Sie, die Änderung an der Tabelle zu speichern.