web-dev-qa-db-fra.com

En excluant une table spécifique d'un déploiement SSDT

J'ai une base de données existante avec tout dans Schema dbo. J'ai un projet SSDT avec des objets que j'ajoute avec Schema foo

J'ai une table qui ressemble à ceci dans le projet:

CREATE table foo.a (
    id INT NOT NULL
        CONSTRAINT [PK_foo_a] PRIMARY KEY CLUSTERED
        CONSTRAINT [FK_foo_a] FOREIGN KEY REFERENCES [dbo].[a],
    desc NVARCHAR(50) NOT NULL
)

Cela dépend de DBO.A. DBO.A a de nombreuses colonnes qui sont des clés étrangères pour d'autres colonnes. Quelqu'un d'autre (qui maintient le schéma par défaut) pourrait changer de DBO.A.

Je voudrais un stock simple dbo.a comme:

CREATE table dbo.a (
    id INT NOT NULL
        CONSTRAINT [PK_a] PRIMARY KEY CLUSTERED
)

Donc, il est construit en interne, mais non déployé. Est-ce possible?

11
Justin Dearing

Une manière intégrée "propre" pour le faire (à partir de 2016) utilise un fichier de comparaison de schéma enregistré. Vous pouvez:

  1. Effectuez votre schéma Comparer (à partir de votre projet de base de données -> un serveur cible) et décochez des objets que vous souhaitez exclure pour la mise à jour.
  2. Enregistrez votre schéma comparer à un fichier * .SCMP
  3. Vous pouvez copier et coller le fichier .SCMP pour créer des versions pour différents environnements si nécessaire et simplement modifier dans l'éditeur XML pour modifier la source (pour mettre en évidence le fichier DACPAC de sortie), la connexion, etc. ou même ajouter/modifier manuellement des éléments dans la section .
  4. Configurez vos paramètres de commande de déploiement/publication DACPAC pour utiliser le fichier .SCPP approprié pour la publication. par exemple. Sqlpackage.exe/action: Publier /Sourcefile:C:\ProjectoSchema_compare.scmp

Plus d'informations ici: https://devblogs.microsoft.com/ssdt/schema-compare-in-sqlpackage-and-the-Data-titer-application-Framework-dacfx/

0
Jeremy H