web-dev-qa-db-fra.com

SSDT publiera-t-il toujours échouer avec "la perte de données peut survenir" lorsque la table est reconstruite?

Considérez le scénario suivant:

  • Nous avons un projet de base de données SSDT.
  • Nous ajoutons une nouvelle colonne au milieu d'une table.
  • Cela oblige le projet de base de données à reconstruire la table afin de déployer le changement.
  • Nous publions ce projet de base de données SSDT avec le paramètre "Bloquer le déploiement incrémental si une perte de données peut survenir" activé.
  • Parce que nous avons le paramètre ci-dessus activé, et (aussi, je pense) que la table est en cours de reconstruction du déploiement (correctement) jette une erreur indiquant que la perte de données peut survenir.

Ma question est la suivante: Pouvons-nous compter sur le fait que chaque fois que la table doit être reconstruite dans le cadre d'une publication SSDT, cette erreur sera lancée?

3
jacobappleton

Oui, vous pouvez compter sur cela. Lorsque vous activez l'attribut "BlockONDAtaloss", ce qui se passe réellement, c'est que SSDT ajoute au script de déploiement un chèque comme celui-ci

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