2016-08-01 11 views
17

Ich versuche, SQL-Schema-Vergleich in Visual Studio 2013/15 zu verwenden und das Problem zu lösen, dass das Aufheben von Tabellen aus dem Löschen sie von der Verarbeitung überhaupt entfernt.Include, aber nicht löschen SQL-Schema Vergleichen

Das Problem ist, dass die Tabellen, die es zu löschen versucht, benutzerdefinierte Tabellen sind. Wenn wir also unsere Version mit ihren Datenbanken synchronisieren, werden sie gelöscht. Wir wollen sie nicht löschen, aber einige ihrer Tabellen haben Einschränkungen für unsere, so dass sie bei CCDR-Versuchen aufgrund von Tabellenbeschränkungen fehlschlägt. Gibt es eine Möglichkeit, die zu erstellende Tabelle hinzuzufügen (wie der Rest von ihnen?), Ohne Skripte für jeden Client zu schreiben, um das zu tun, was SQL Schema Compare bereits für diese wenigen Tabellen tut?

Red-Gate's SQL Compare macht das irgendwie, aber es ist uns verborgen, also nicht ganz sicher, wie es erreicht wird. Das Schließen wird nicht gelöscht, aber auch nicht im Skript.

UPDATE:

Die Option "Drop Einschränkungen nicht in der Quelle" nicht korrekt funktioniert. Es gibt einige, aber es gibt andere, die die Einschränkungen nicht fallen lassen. Im Red-Gate-Tool habe ich beim Vergleich herausgefunden, wie man das SQL daraus holt, und ihr Produkt sagt nicht, dass die Tabelle überhaupt aktualisiert werden muss, während Visual Studio es tut. Sie scheinen fast identisch zu arbeiten, aber die Tabellen, die die, die nicht sind, die nicht Aktualisierung überhaupt sein sollte (lesen Sie unten)

Update 2:

Ein weiteres Problem, das ich gefunden habe, ist „-Spalte Sortierungs Ignorieren“ funktioniert auch nicht richtig, da Tabellen, die nicht gelöscht werden sollten, auch gesagt werden, dass sie aktualisiert werden müssen, obwohl es nur die Reihenfolge der Spaltenänderungen, nicht der tatsächlichen Spalten- oder Datenänderungen ist, was sich wie ein Fehlerbericht anfühlt als alles.

Ignore column collation checked

Still showing column collation

Antwort

0

Ich weiß nicht, ob dies helfen wird, aber ich habe diesen Absatz auf der folgenden Seite: https://msdn.microsoft.com/en-us/library/hh272690(v=vs.103).aspx

Das Update wird scheitern, weil unsere Änderung umfasst, eine Spalte von NOT NULL zu NULL zu ändern, und als Ergebnis Datenverlust verursacht. Wenn Sie mit dem Update fortfahren möchten, klicken Sie auf die Schaltfläche Optionen (die fünfte von links) auf der Symbolleiste für das Schema vergleichen und deaktivieren Sie die Block inkrementelle Bereitstellung bei Datenverlust Option.

+0

Ich habe diese Box bereits deaktiviert, das Problem ist auf einen Schlüssel werfen, nicht wegen Datenverlust. Danke aber – Dispersia

1

Mein Vorschlag mit diesen Arten der erweiterten Datenberechnungen ist, Visual Studio nicht zu verwenden. Setzen Sie die Logik auf die Sql-Engine und schreiben Sie den Code dafür in Sql. Aufgrund der Probleme mit dem Sperren von mehreren Benutzern einer Sql-Engine können diese Arten von Prozessen fehlschlagen, wenn die falschen Kombinationen von Benutzeraktionen gleichzeitig auftreten. Das Visual Studio-Tool kann nicht mit den Datensperrproblemen interagieren, da die Sql-Engine die Datensätze ändern kann. Wenn Sie dies sogar zum Laufen bringen, ist es nur sicher auszuführen, wenn Sie sich im Einzelbenutzermodus befinden.

Es ist ein netter zu bedienendes Werkzeug, einfacher als das Schreiben von SQL, aber es gibt enorme Verlässlichkeit und Konsistenz Risiken für diesen Weg gehen.