web-dev-qa-db-ja.com

SSDTパブリッシュは、テーブルが再構築されるときに常に「データ損失が発生する可能性があります」で失敗しますか?

次のシナリオを検討してください。

  • SSDTデータベースプロジェクトがあります。
  • テーブルの中央に新しい列を追加します。
  • これにより、変更をデプロイするために、データベースプロジェクトはテーブルを再構築する必要があります。
  • このSSDTデータベースプロジェクトは、「データ損失が発生した場合に増分展開をブロックする」設定を有効にして公開します。
  • 上記の設定が有効になっていて、(また、私が思うに)テーブルが再構築されているため、データが失われる可能性があることを示すエラーが(正しく)スローされます。

私の質問はこれです:SSDTパブリッシュの一部としてテーブルを再構築する必要があるときはいつでも、このエラーがスローされるという事実に依存できますか?

3
jacobappleton

はい、信頼できます。 「BlockOnDataLoss」属性を有効にすると、実際に発生するのはSSDTが展開スクリプトにこのようなチェックを追加することです

IF EXISTS(SELECT 1 FROM TableToChange)
BEGIN
     RAISEERROR ...
END
2
Hard Tour Vela