これは、SSDT ツールを使用する場合のシーケンスに関する既知の問題です。いくつかの解決策があります。
- パブリッシュ時にシーケンス オブジェクトを無視します。
- カスタム展開フィルターを使用して、開始値を無視します。
- ライブにデプロイした後にカウンターをインクリメントする
sp_sequence_get_range
代わりに使用します。RESTART WITH
1. パブリッシュ時にシーケンス オブジェクトを無視する
これは最も単純なオプションですが、シーケンスを手動でデプロイする必要があるため、最も厄介です。以下を公開プロファイルに追加します
<ExcludeSequences>True</ExcludeSequences>
または、コマンドラインから
/p:ExcludeObjectType=Sequences
2. カスタム展開フィルターを使用する
最初に AgileSqlClub の展開フィルターをダウンロードします。次に、展開プロファイルに次を追加します。
<AdditionalDeploymentContributors>AgileSqlClub.DeploymentFilterContributor</AdditionalDeploymentContributors>
<AdditionalDeploymentContributorArguments>SqlPackageFilter=IgnoreName(Order_No_Seq)</AdditionalDeploymentContributorArguments>
または、コマンドラインから:
/p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor
/p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreName(Order_No_Seq)"
3.使用sp_sequence_get_range
RESTART WITH
これには、運用サーバーで開始値を変更する代わりに、次を使用します。
DECLARE @range_first_value SQL_VARIANT;
EXEC sp_sequence_get_range
@sequence_name = 'MySequence',
@range_size = 1000,
@range_first_value = @range_first_value OUTPUT;
このようにして、開始値は常に展開スクリプトからの期待値と一致します。
資力