J'ai une base de données existante avec tout dans le schéma dbo
. J'ai un projet SSDT avec des objets que j'y ajoute avec un schémafoo
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 à d'autres colonnes. Quelqu'un d'autre (qui maintient le schéma par défaut) peut changer dbo.a.
Je voudrais simplement stocker dbo.a comme:
CREATE table dbo.a (
id INT NOT NULL
CONSTRAINT [PK_a] PRIMARY KEY CLUSTERED
)
Il est donc construit en interne, mais pas déployé. Est-ce possible?
ssdt
deployment
Justin Dearing
la source
la source
Réponses:
Vous pouvez utiliser le filtre de déploiement AgileSqlClub SqlPackage .
Brèves instructions reproduites de l'article original d' Ed Elliott :
DLL
dans le même dossier quesqlpackage.exe
Ajoutez ces paramètres de ligne de commande à votre déploiement:
/p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor
/p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreSchema(BLAH)"
Cela ne déploiera, ne supprimera ou ne modifiera rien dans le
BLAH
schéma.Voir l' article d'origine pour plus de détails.
la source
Seule la gestion d'une partie d'une base de données avec
SSDT
est difficile. S'il n'y avait pas de dépendances, vous pouvez simplement l'interdire de supprimer des objets et ne pas l'inclure dans le projet. Puisqu'il y a des dépendances, mais que vous ne voulez pas les gérer, je pense que vous devrez tromper le système.Une méthode me vient à l'esprit, je n'ai pas la possibilité de les tester pour le moment et je n'ai utilisé qu'une méthode "similaire" à celle-ci, pas celle-ci exactement.
Option 1:
Créez un nouveau projet de base de données avec
dbo.a
.Référencez le tableau avec une dénomination en 3 parties. Pour la première partie du nom, utilisez une variable SQLCMD. Par exemple
[$(DatabaseName)].dbo.a.
Ne déployez jamais votre
foo
base de données.Via les fichiers de publication ou l'interface cli, faites
$(DatabaseName)
correspondre le même nom que votre vraie base de données.la source
Une méthode intégrée «propre» pour ce faire (à partir de 2016) utilise un fichier de comparaison de schéma enregistré. Vous pouvez:
Plus d'informations ici: https://devblogs.microsoft.com/ssdt/schema-compare-in-sqlpackage-and-the-data-tier-application-framework-dacfx/
la source