Fehler beim SQL Server "Speichern von Änderungen ist nicht zulässig" ► Verhindern Sie das Speichern von Änderungen, die eine Neuerstellung der Tabelle erfordern

749

Wenn ich eine Tabelle in SQL Server erstelle und speichere und versuche, das Tabellendesign zu bearbeiten, z. B. einen Spaltentyp von int in real zu ändern, wird folgende Fehlermeldung angezeigt:

Das Speichern von Änderungen ist nicht gestattet. Für die von Ihnen vorgenommene Änderung muss die folgende Tabelle gelöscht und neu erstellt werden. Sie haben entweder Änderungen an einer Tabelle vorgenommen, die nicht neu erstellt werden können, oder die Option aktiviert, um das Speichern von Änderungen zu verhindern, bei denen die Tabelle neu erstellt werden muss.

Warum muss ich die Tabelle neu erstellen? Ich möchte nur einen Datentyp von smallintnach ändern real.

Der Tisch ist leer und ich habe ihn bis jetzt nicht benutzt.

Arash
quelle

Antworten:

1466

Im Dialogfeld Speichern (nicht zulässig) auf MSDN :

Das Speichern (nicht zulässig) Dialogfeld warnt Sie , dass die Änderungen zu speichern ist nicht zulässig , da die vorgenommenen Änderungen der aufgeführten Tabellen benötigen gelöscht und neu erstellt werden.

Für die folgenden Aktionen muss möglicherweise eine Tabelle neu erstellt werden:

  • Hinzufügen einer neuen Spalte in der Mitte der Tabelle
  • Eine Spalte löschen
  • Ändern der Spaltennullbarkeit
  • Ändern der Reihenfolge der Spalten
  • Ändern des Datentyps einer Spalte <<<<

Um diese Option zu ändern, auf dem Extras - Menü auf Optionen , erweitern Designer , und klicken Sie dann auf Tabelle und Datenbank - Designer . Aktivieren oder deaktivieren Sie das Kontrollkästchen Speichern von Änderungen verhindern, bei denen die Tabelle neu erstellt werden muss.

Siehe auch Colt Kwong-Blogeintrag: Das
Speichern von Änderungen ist in SQL 2008 Management Studio nicht zulässig

Robert Harvey
quelle
7
SSMS sollte nicht zulassen, dass Sie etwas Unsicheres tun, ohne Sie vorher zu warnen. Halten Sie jedoch für alle Fälle ein Backup bereit.
Robert Harvey
40
Diese Option teilt SSMS mit, dass es eine temporäre Tabelle in einem neuen Schema erstellen, Daten in diese kopieren, dann die alte Tabelle löschen und die temporäre Tabelle wieder in den ursprünglichen Namen umbenennen kann. Alles in Ordnung, wie es in der Transaktion sein sollte, jedoch werden Beziehungen unterbrochen und neu erstellt. Wenn dies nicht zu 100% der Fall ist, kann dies zu etwas Unerwartetem führen.
Justin King
13
Ich weiß nicht, warum ich mich nicht an diese einfachen Schritte erinnern kann, um diese Option zu löschen, und ich muss immer nach der Lösung suchen. Hehehehehe. Danke, Mann!
Entwickler
8
Heilige Kuh - Sie können dies einfach ausschalten, um diesen Fehler zu überwinden? Ich wusste das nicht und habe in den letzten 3 Jahren Angst gehabt, versehentlich eine Tabelle ohne Identitätsspezifikation zu entwerfen und eine neue Tabelle erstellen zu müssen. Toller Tipp!
Nocarrier
4
Hier ist Microsoft CAVEAT zum Deaktivieren der Option "Speichern von Änderungen verhindern ...": support.microsoft.com/en-us/kb/956176 . Grundsätzlich können Sie Metadaten wie Change Tracking verlieren, wenn Sie diese Funktion verwenden.
Baodad
205

Verwenden Sie SSMS?

Wenn ja, gehen Sie zum Menü Extras >> Optionen >> Designer und deaktivieren Sie das Kontrollkästchen "Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erfordern".

ypercubeᵀᴹ
quelle
Extras >> Optionen etc .. nicht "Menü" (nur vom Standpunkt von ssms 2014, von dem ich glaube, dass es in älteren Versionen dasselbe ist)
Tom Stickel
@ TomStickel Ich denke, ich wollte zum Menü gehen: "Tools"
ypercubeᵀᴹ
: P Ja, ich dachte mir das, ich dachte nur, ich würde für jeden einen Kommentar abgeben, der tatsächlich "stecken bleibt", beängstigend, ich weiß, aber ich nehme an, einige Leute könnten schnell ihre Hände hochwerfen ... Danke
Tom Stickel
2
@NeilMeyer beachten Sie, dass das Kontrollkästchen dort aus einem bestimmten Grund aktiviert ist. Dies ist eine Sicherheitsmaßnahme, um zu verhindern, dass Vorgänge
gelöscht
Gehen die Beziehungen zwischen Tabellen verloren, wenn die Tabellen auf diese Weise neu erstellt werden?
Neil Meyer
78

Verhindern Sie das Speichern von Änderungen, die eine Neuerstellung der Tabelle erfordern

Fünf schnelle Klicks

Verhindern Sie das Speichern von Änderungen, die eine Neuerstellung der Tabelle erfordern, mit fünf Klicks

  1. Werkzeuge
  2. Optionen
  3. Designer
  4. Verhindern Sie das Speichern von Änderungen, die eine Neuerstellung der Tabelle erfordern
  5. OK .

Wiederholen Sie nach dem Speichern den Vorgang, um das Kontrollkästchen erneut zu aktivieren. Dies schützt vor versehentlichem Datenverlust.

Weitere Erklärung

  • Standardmäßig verhindert SQL Server Management Studio das Löschen von Tabellen, da beim Löschen einer Tabelle deren Dateninhalt verloren geht. *

  • Wenn Sie den Datentyp einer Spalte in der Tabellenentwurfsansicht ändern und die Änderungen speichern, löscht die Datenbank die Tabelle intern und erstellt dann eine neue.

* Ihre besonderen Umstände haben keine Konsequenzen, da Ihre Tabelle leer ist. Ich gebe diese Erklärung vollständig, um Ihr Verständnis des Verfahrens zu verbessern.

WonderWorker
quelle
27

Gehen Sie folgendermaßen vor, um die Option Änderungen am Speichern verhindern zu ändern, für die die Option zum erneuten Erstellen von Tabellen erforderlich ist:

Öffnen Sie SQL Server Management Studio (SSMS). Klicken Sie im Menü Extras auf Optionen.

Klicken Sie im Navigationsbereich des Optionsfensters auf Designer.

Aktivieren oder deaktivieren Sie das Kontrollkästchen Speichern von Änderungen verhindern, für die eine Neuerstellung der Tabelle erforderlich ist, und klicken Sie dann auf OK.

Hinweis : Wenn Sie diese Option deaktivieren, werden Sie beim Speichern der Tabelle nicht gewarnt, dass die von Ihnen vorgenommenen Änderungen die Metadatenstruktur der Tabelle geändert haben. In diesem Fall kann es beim Speichern der Tabelle zu Datenverlust kommen.

Geben Sie hier die Bildbeschreibung ein

Tabish Usman
quelle
Tischdesigner ist praktisch, aber Sie können nicht alles damit erreichen
Sitecore Sam
22

Es ist ein sehr einfaches und einfaches Einstellungsproblem, das durch Befolgen dieser Schritte in 5 Sekunden behoben werden kann

Führen Sie die folgenden Schritte für Ihre SQL-Einstellung aus, damit Sie Änderungen speichern können, nachdem Sie die Tabelle geändert haben:

  1. Öffnen Sie Microsoft SQL Server Management Studio 2008
  2. Klicken Sie auf Menüoptionen für Extras und dann auf Optionen
  3. Wählen Sie Designer
  4. Deaktivieren Sie die Option "Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erfordern"
  5. OK klicken
  6. Versuchen Sie, Ihren Tisch zu ändern
  7. Ihre Änderungen werden wie gewünscht durchgeführt
Rizwan Gill
quelle
8
Wie trägt dies in irgendeiner Weise zur akzeptierten Antwort bei?
Immortal Blue
17

Gehen Sie zu Tool im oberen Menü.
Wählen Sie Optionen aus der Dropdown-Liste. Sie haben jetzt ein Popup. Wählen Sie die Option Designer im linken Menüblock . Deaktivieren Sie die Option Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erfordern . Klicken Sie auf OK.

FIFO BIZSOL
quelle
12

Deaktivieren Sie das Prevent saving changes that require table re-creationFeld von Extras ► Optionen ► Designer Registerkarte.

Beispiel für SQL Server 2012:

Geben Sie hier die Bildbeschreibung ein

pedram
quelle
12

Dies kann in Microsoft SQL Server leicht geändert werden .

  1. Öffnen Sie Microsoft SQL Server Management Studio 2008
  2. Klicken Sie auf das Menü Extras
  3. Klicken Sie auf Optionen
  4. Wählen Sie Designer
  5. Deaktivieren Sie "Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erfordern".
  6. OK klicken

Geben Sie hier die Bildbeschreibung ein

Irshad Ahmed Akhonzada
quelle
7

Von diesem Link kopiert "... Wichtig Wir empfehlen dringend, dieses Problem nicht zu umgehen, indem Sie die Option" Speichern verhindern "deaktivieren, die eine Neuerstellung der Tabelle erfordern. Weitere Informationen zu den Risiken des Deaktivierens dieser Option finden Sie unter" Weitere Informationen "Abschnitt."

"... Um dieses Problem zu umgehen, verwenden Sie Transact-SQL-Anweisungen, um die Änderungen an der Metadatenstruktur einer Tabelle vorzunehmen. Weitere Informationen finden Sie im folgenden Thema in SQL Server Books Online

Um beispielsweise die MyDate-Spalte vom Typ datetime in der Tabelle MyTable so zu ändern, dass NULL-Werte akzeptiert werden, können Sie Folgendes verwenden:

alter table MyTable alter column MyDate7 datetime NULL "

Panagiotis
quelle
2
Bei so vielen Antworten, die alle dasselbe sagten, war dies die Antwort, nach der ich gesucht hatte, da ich Live-Daten in meiner Tabelle hatte, die ich nicht verlieren wollte. Ich musste eine Dezimalspalte von 0 Dezimalstellen auf 2 Dezimalstellen aktualisieren und die einfache alter-Anweisung funktionierte perfekt!
stitz
Die Tragödie hier ist, dass SSMS genau dies unter der Haube tun sollte und daher nicht den Tisch fallen lassen muss
m12lrpv
6

Und nur für den Fall, dass jemand hier auch nicht aufpasst (wie ich):

Für Microsoft SQL Server 2012 gibt es im Dialogfeld "Optionen" ein kleines Kontrollkästchen, mit dem alle anderen Einstellungen scheinbar ausgeblendet werden. Obwohl ich sagen muss, dass ich dieses kleine Monster die ganze Zeit vermisst habe !!!

Danach können Sie mit den Schritten fortfahren, Designer, deaktivieren Sie das Speichern verhindern bla bla bla ...

Sneaky_check_box_in_option

Gellie Ann
quelle
5

Extras >> Optionen >> Designer und deaktivieren Sie "Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erfordern":

Beschreibung im Fotoformat

سیدرسول میرعظیمی
quelle
2

1) Öffnen Sie das Werkzeug oben.
2) Wählen Sie Optionen aus der Auswahlliste.
3) Jetzt erscheint das Popup und Sie können jetzt die Designer-Option aus der Liste der Menüs auf der linken Seite auswählen.
4) Verhindern Sie nun, dass Änderungen beim Speichern deaktiviert werden müssen, damit die Tabelle neu erstellt werden kann. Klicken Sie jetzt auf OK.

Rishabh Seth
quelle
1

Klicken Sie im Menü Extras auf Optionen, wählen Sie im Seitenmenü Designer aus und deaktivieren Sie Änderungen, die zur Neuerstellung einer Tabelle führen können. Speichern Sie dann die Änderungen

Ogbonna Vitalis
quelle
0

Wenn Sie nicht die „Verhindern , dass die Änderungen zu speichern , die Tabelle Neuschöpfung erforderlich“ sehen in der Liste wie das Bild

Sie müssen die Änderungsverfolgung aktivieren.

  • Klicken Sie mit der rechten Maustaste auf Ihre Datenbank und klicken Sie auf Eigenschaften
  • Klicken Sie auf Änderungsverfolgung und aktivieren Sie sie
  • Gehen Sie erneut zu Extras -> Optionen -> Designer und deaktivieren Sie es.
Emre Karataşoğlu
quelle
0

Wenn Sie SQL Server Management Studio verwenden, gehen Sie zu Extras >> Optionen >> Designer und deaktivieren Sie das Kontrollkästchen "Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erfordern". Es funktioniert bei mir

Taher Chtaywi
quelle