Sdílet prostřednictvím


Überlegungen zur Beibehaltung von Daten während der Bereitstellung und während Schemaaktualisierungen

Aktualisiert: November 2007

Bevor Sie zwei Schemas synchronisieren, sollten Sie erwägen, die Einstellungen des Datenbankprojekts zu konfigurieren, um das Risiko des Verlusts wertvoller Daten durch die Änderungen zu minimieren. Durch die Konfiguration dieser Einstellungen können Sie die Synchronisierung blockieren, wenn diese Änderungen umfasst, durch die wahrscheinlich Daten aus der Datenbank des Ziels entfernt werden. Weitere Informationen finden Sie unter Gewusst wie: Steuern von Datenverlusten während der Bereitstellung für vorhandene Datenbanken und unter Gewusst wie: Festlegen von Optionen für das Vergleichen von Datenbankschemas.

Diese Einstellung kann jedoch zu unerwarteten Ergebnissen führen. In einigen Situationen verhindert sie die Bereitstellung von Änderungen, auch wenn diese zu keinem Verlust von wertvollen Daten führen würden. In anderen Fällen ermöglicht diese Einstellung die Bereitstellung von Änderungen, obwohl SQL Server einen Datenverlust verursachen könnte, wenn das Ziel aktualisiert wird.

Unnötig blockierte Bereitstellung

Wenn Sie die Projekteinstellungen konfigurieren, um einen Datenverlust möglichst zu verhindern, ist die Synchronisierung zweier Schemas eventuell auch dann nicht möglich, wenn diese zu keinem Verlust von wertvollen Daten führen würde. Sie können z. B. in einem Datenprojekt eine Spalte mit Daten löschen und versuchen, diese Änderung in der Zieldatenbank bereitzustellen. Auch wenn Sie die Spalte absichtlich gelöscht haben, wird die Bereitstellung blockiert, um den Verlust von Daten im Ziel zu verhindern.

In einem anderen Beispiel wird die Bereitstellung blockiert, wenn ein Datentyp in der Quelle nicht auf Kompatibilität mit dem entsprechenden Datentyp im Ziel überprüft werden kann. Diese Situation kann dann auftreten, wenn entweder die Quelle oder das Ziel einen benutzerdefinierten Datentyp oder einen Common Language Runtime-(CLR-)Typ enthält. Die Bereitstellung wird blockiert, wenn z. B. ein Datentyp in der Quelle als char(100) und der Datentyp im Ziel als ein benutzerdefinierter Datentyp definiert ist, z. B. CREATE TYPE [schema].[UserDefinedDataType] FROM char(100) NOT NULL.

Gegebenenfalls können Sie die Projekteinstellungen temporär konfigurieren, um eine Synchronisierung zuzulassen, nachdem Sie das Skript für die Bereitstellung oder das Update überprüft haben und sichergestellt wurde, dass die Änderungen zu keinem Verlust von wertvollen Daten führen.

Datenverlust während einer nicht blockierten Bereitstellung

Auch wenn Sie das Datenbankprojekt so konfigurieren, um einen Datenverlust möglichst zu vermeiden, kann SQL Server in einigen Fällen während der Ausführung der Synchronisierung einen Datenverlust verursachen. Bevor Sie zwei Schemas synchronisieren, sollten Sie überprüfen, ob das Skript für die Bereitstellung oder das Update Folgendes enthält:

  • Änderungen an der Spaltenreihenfolge einer Tabelle.

  • Änderungen von einem Spaltendatentyp in einen Typ, der nicht mit einem vorhandenen Datentyp kompatibel ist und der SQL Native-Datentypen verwendet. Diese Situation kann auftreten, wenn eine Änderung des Datentyps zu einer Datenkürzung führt, z. B. int in bit oder nvarchar(100) in char(10).

  • Änderungen an einer Spalteneigenschaft, z. B. an der Identität einer Spalte.

  • Änderungen an den Eigenschaften einer Identitätsspalte in einer Tabelle, z. B. am ID-Startwert.

  • Änderungen an einer Spalte, die keine NULL-Werte zulässt und der kein Standardwert zugeordnet ist, z. B. Änderungen an einer Spalte, um NULL-Werte zuzulassen.

  • Änderungen an einer Spalte, die keine NULL-Werte zulässt, wenn die Tabelle zusätzliche Spalten enthält, die an die Spalte gebunden sind, die geändert wird.

  • Hinzufügen einer Spalte, für die das Kontrollkästchen Identische Ordnung der Tabellenspalten erzwingen aktiviert wurde. Weitere Informationen finden Sie unter Optionen (Datenbanktools/Schemavergleich).

  • Änderungen an der Dateigruppe einer Tabelle.

Wenn das Skript für die Bereitstellung oder das Update diese Änderungstypen enthält, können Sie es manuell ändern, damit die Daten beibehalten werden.

Siehe auch

Aufgaben

Gewusst wie: Steuern von Datenverlusten während der Bereitstellung für vorhandene Datenbanken

Gewusst wie: Bereitstellen von Änderungen in neuen oder vorhandenen Datenbanken

Gewusst wie: Festlegen von Optionen für das Vergleichen von Datenbankschemas

Gewusst wie: Synchronisieren von Datenbankschemas

Konzepte

Übersicht über die Terminologie der Database Edition