SQL Serverデータツールとパーティション関数


16

私はスライディングウィンドウの読み込みシナリオを作成していますが、パーティション関数は時間とともに境界を変更します。

SQL Serverデータツール(SSDT)データベースプロジェクトに、いくつかの初期境界をハードコーディングしたパーティション関数を作成しました。

ただし、時間が経つとパーティション関数の境界が変化すると、将来のSSDTデータベースの公開では、境界が元の境界に戻ります。

おそらくパーティション機能の公開を無効にすることで、このシナリオを適切に処理する方法はありますか?

私は変更しようとしたビルドアクションデフォルトから、SSDTに分配関数のプロパティをBuildする、Noneが、その後のプロジェクトが原因によっては、オブジェクトで不足している参照にビルドに失敗します。


4
diffベースの展開は根本的に壊れているといつも言っていました。移行は、非常に優れた展開メタファーです!
レムスルサヌ

「無視インデックスのオプションは、」あなたのパーティション索引の展開がトリガされるたびに再構築SSDTを避けるためにも設定する必要があります。

回答:


16

私は自分の問題の解決策を見つけることができました。これが誰かの助けになることを願っています。

各データベースパブリッシュがパーティション機能を再作成しないようにするには、[ パブリッシュ設定詳細]ダイアログ([データベースパブリッシュ]ダイアログの[ 詳細... ]ボタン)で[ パーティションスキームを無視 ]オプションをオンにします。

オプションの説明から(強調鉱山):

データベースに発行するときに、パーティション構成と機能の違いを無視するか更新するかを指定します。

ただし、ページまたは行の圧縮を使用してパーティションオブジェクト(テーブルまたはインデックス)を定義している場合、[ パーティションスキームを無視する ]オプションはパーティション関数を再作成しませんが、パーティションオブジェクトは再作成されます。

これは、パーティション化されたオブジェクトがパーティションごとに定義された圧縮でスクリプト化され、オブジェクトのパーティション数が最初に定義された数と異なるため、SSDTが発行時にオブジェクトを再作成するためです。例(フォーマット済み):

WITH ( DATA_COMPRESSION = PAGE ON PARTITIONS (1)
     , DATA_COMPRESSION = PAGE ON PARTITIONS (2)
     , ...

起こることはない。このためには、あなたもチェックすることができ、テーブルのオプション無視するオプションを、同じに詳細設定パブリッシュダイアログを-ちょうどあなたのような他のオプションを、無視されることを心に留めておくALLOW_ROW_LOCKSALLOW_PAGE_LOCKSテーブルオプションの参照)。

高度な公開設定ダイアログ


1
Googleが私をここに導いた。素晴らしい情報、共有していただきありがとうございます。
ジャミエット

プロジェクトのプロパティ->デバッグページで同様のダイアログを使用している場合、変更は.sqlproj.userファイルに保存されますが、プロジェクトのアンロード時にのみ保存されることに注意してください。
タラン

3

痛い、それは良い状況ではありません。私の知る限り、SSDTはこれをサポートしていません。考えられる最善の回避策は、展開前スクリプトを使用してテーブルに境界を保存し、展開後スクリプトでそれらの値を使用してパーティション関数を変更することです。


ここで私の返事を無視し、上記のゴンサルの返事を判断すると、明らかに間違っていました。
ジャミエット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.