Ich erstelle ein Ladeszenario für Schiebefenster und die Partitionsfunktionen ändern ihre Grenzen im Laufe der Zeit.
Ich habe in meinem SQL Server Data Tools-Datenbankprojekt (SSDT) einige Partitionsfunktionen mit einigen fest codierten Anfangsgrenzen erstellt.
Mit der Zeit und den sich ändernden Grenzen der Partitionsfunktionen werden die Grenzen zukünftiger SSDT-Datenbankveröffentlichungen jedoch auf die ursprünglichen Grenzen zurückgesetzt.
Gibt es eine Möglichkeit, dieses Szenario ordnungsgemäß zu handhaben, möglicherweise durch Deaktivieren der Veröffentlichung der Partitionsfunktionen?
Ich habe versucht, die Build Action- Eigenschaft der Partitionsfunktionen in SSDT von der Standardeinstellung Build
in zu ändern None
, aber dann kann das Projekt aufgrund eines fehlenden Verweises in den abhängigen Objekten nicht erstellt werden.
quelle
Antworten:
Ich konnte eine Lösung für mein Problem finden - hoffe, das hilft jemand anderem.
Um zu vermeiden, dass bei jeder Datenbankveröffentlichung die Partitionsfunktion neu erstellt wird, können Sie die Option Partitionsschemata ignorieren im Dialogfeld Erweiterte Veröffentlichungseinstellungen ( Schaltfläche Erweitert ... im Dialogfeld Datenbankveröffentlichung) aktivieren.
Aus der Beschreibung der Option (Schwerpunkt Mine):
Wenn Sie jedoch ein partitioniertes Objekt (Tabelle oder Index) mit Seiten- oder Zeilenkomprimierung definiert haben , wird das partitionierte Objekt trotzdem neu erstellt , obwohl die Option Partitionsschemata ignorieren die Partitionsfunktion nicht mehr wiederherstellt.
Dies liegt daran, dass für das partitionierte Objekt Skripts mit der pro Partition definierten Komprimierung erstellt werden und dass SSDT das Objekt beim Veröffentlichen neu erstellt, da das Objekt eine andere Anzahl von Partitionen aufweist als ursprünglich definiert. ZB (formatiert):
Damit dies nicht passiert, können Sie auch die Option " Tabellenoptionen ignorieren" im selben Dialogfeld " Erweiterte Veröffentlichungseinstellungen" aktivieren. Beachten Sie jedoch, dass Sie andere Optionen wie
ALLOW_ROW_LOCKS
und ignorierenALLOW_PAGE_LOCKS
( Referenz der Tabellenoptionen ).quelle
Autsch, das ist keine gute Situation. Soweit ich weiß, unterstützt SSDT dies nicht. Die beste Lösung, die ich mir vorstellen kann, besteht darin, ein Skript vor der Bereitstellung zu verwenden, um die Grenzen in einer Tabelle zu speichern und dann die Partitionsfunktion mithilfe dieser Werte im Skript nach der Bereitstellung zu ändern.
quelle