Präambel
Ich habe heute eine Spalte in SQL Server 2008 geändert und den Datentyp von Währung (18,0) in (19,2) geändert.
Ich habe die Fehlermeldung "Die von Ihnen vorgenommenen Änderungen erfordern, dass die folgenden Tabellen gelöscht und neu erstellt werden" von SQL Server erhalten.
Bevor Sie zur Antwort kommen, lesen Sie bitte Folgendes:
Ich weiß bereits, dass es die Option unter Extras ► Optionen ► Designer ► Tabellen- und Datenbankdesigner gibt. ► Deaktivieren Sie das Kontrollkästchen "Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erfordern". ... also antworte nicht damit!
Aktuelle Frage
Meine eigentliche Frage ist für etwas anderes wie folgt:
Gibt es irgendwelche negativen Auswirkungen / möglichen Nachteile dabei?
Wird die Tabelle tatsächlich gelöscht und automatisch neu erstellt, wenn dieses Kontrollkästchen deaktiviert ist?
Wenn ja, ist die Tabellenkopie eine 100% exakte Kopie der Quelltabelle?
quelle
Antworten:
Die Tabelle wird nur gelöscht und neu erstellt, wenn nur so das Management Studio von SQL Server so programmiert wurde, dass es weiß, wie es geht.
Es gibt sicherlich Fälle, in denen dies der Fall ist, wenn dies nicht erforderlich ist, aber es gibt auch Fälle, in denen Änderungen, die Sie in Management Studio vornehmen, nicht gelöscht und neu erstellt werden, da dies nicht erforderlich ist.
Das Problem ist, dass es ziemlich mühsam sein wird, alle Fälle aufzuzählen und zu bestimmen, auf welche Seite der Linie sie fallen.
Aus diesem Grund verwende ich gerne
ALTER TABLE
in einem Abfragefenster anstelle von visuellen Designern, die verbergen, was sie tun (und ehrlich gesagt Fehler haben). Ich weiß genau, was passieren wird, und kann mich auf Fälle vorbereiten, in denen die einzige Möglichkeit besteht ist, die Tabelle zu löschen und neu zu erstellen (das ist eine Zahl weniger als die Häufigkeit, mit der SSMS Ihnen das antut).quelle
Extras -> Optionen -> Designerknoten -> Deaktivieren Sie " Speichern von Änderungen verhindern, die eine Tabellenerstellung erfordern ".
quelle
Referenz - Wenn Sie diese Option deaktivieren, können Sie vermeiden, dass eine Tabelle neu erstellt wird. Außerdem können Änderungen verloren gehen. Angenommen, Sie aktivieren die Änderungsverfolgungsfunktion in SQL Server 2008, um Änderungen an der Tabelle zu verfolgen. Wenn Sie einen Vorgang ausführen, bei dem die Tabelle neu erstellt wird, wird die Fehlermeldung angezeigt, die im Abschnitt "Symptome" aufgeführt ist. Wenn Sie diese Option jedoch deaktivieren, werden die vorhandenen Änderungsverfolgungsinformationen gelöscht, wenn die Tabelle neu erstellt wird. Microsoft empfiehlt daher, dieses Problem nicht zu umgehen, indem Sie die Option deaktivieren.
quelle
SQL Server löscht die Tabellen nur und erstellt sie neu, wenn Sie:
Die Verwendung von ALTER ist sicherer, da Ihre Daten verloren gehen, wenn die Metadaten beim erneuten Erstellen der Tabelle verloren gehen.
quelle
IDENTITY
Eigenschaft einer Spalte hinzu oder entfernen Sie sie .Ja, dies hat negative Auswirkungen:
Wenn Sie eine Änderung ausschreiben, die durch dieses Flag blockiert ist, erhalten Sie so etwas wie das folgende Skript (alles, was ich in der ID-Spalte in Contact in eine automatisch nummerierte IDENTITY-Spalte verwandle, aber die Tabelle hat Abhängigkeiten). Beachten Sie mögliche Fehler, die auftreten können, während Folgendes ausgeführt wird:
- -
quelle