Dies ist ein bekanntes Problem mit Sequenzen bei der Verwendung der SSDT-Tool. Es gibt ein paar Lösungen.
- Ignorieren Sequenz-Objekte bei der Veröffentlichung.
- Verwenden Sie einen benutzerdefinierten Bereitstellungsfilter, um den Startwert zu ignorieren.
- Verwenden Sie
sp_sequence_get_range
anstelle von RESTART WITH
, um den Zähler nach der Bereitstellung zu erhöhen.
1. Sequenz ignorieren Objekte, wenn
Veröffentlichung Dies ist die einfachste Möglichkeit, aber die meisten umständlich, wie es heißt, Sie müssen manuell Sequenzen bereitstellen. Fügen Sie den folgenden Code zu Ihrem Profil veröffentlichen
<ExcludeSequences>True</ExcludeSequences>
Oder von der Kommandozeile
/p:ExcludeObjectType=Sequences
2. Verwenden Sie einen benutzerdefinierten Bereitstellungs Filter
Erster Download AgileSqlClub's Deployment-Filter. Dann folgendes Bereitstellungsprofil hinzufügen:
<AdditionalDeploymentContributors>AgileSqlClub.DeploymentFilterContributor</AdditionalDeploymentContributors>
<AdditionalDeploymentContributorArguments>SqlPackageFilter=IgnoreName(Order_No_Seq)</AdditionalDeploymentContributorArguments>
Oder von der Kommandozeile:
/p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor
/p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreName(Order_No_Seq)"
3. Verwenden sp_sequence_get_range
Hierzu statt RESTART WITH
auf die Verwendung von Produktionsserver, um den Startwert zu ändern, verwenden Sie:
DECLARE @range_first_value SQL_VARIANT;
EXEC sp_sequence_get_range
@sequence_name = 'MySequence',
@range_size = 1000,
@range_first_value = @range_first_value OUTPUT;
Auf diese Weise entspricht der Startwert immer dem erwarteten Wert aus dem Bereitstellungsskript.
Ressourcen