Ich habe eine vorhandene Datenbank mit allem im Schema dbo
. Ich habe ein SSDT-Projekt mit Objekten, die ich mit einem Schema hinzufügefoo
Ich habe eine Tabelle, die im Projekt so aussieht:
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
)
Es hängt von dbo.a ab. dbo.a hat viele Spalten, die Fremdschlüssel für andere Spalten sind. Jemand anderes (der das Standardschema verwaltet) ändert möglicherweise dbo.a.
Ich möchte dbo.a einfach speichern als:
CREATE table dbo.a (
id INT NOT NULL
CONSTRAINT [PK_a] PRIMARY KEY CLUSTERED
)
Es wird also intern erstellt, aber nicht bereitgestellt. Ist das möglich?
ssdt
deployment
Justin Dearing
quelle
quelle
Antworten:
Sie können den AgileSqlClub SqlPackage-Bereitstellungsfilter verwenden .
Kurze Anweisungen aus dem Originalartikel von Ed Elliott :
DLL
in den gleichen Ordner wiesqlpackage.exe
Fügen Sie Ihrer Bereitstellung die folgenden Befehlszeilenparameter hinzu:
/p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor
/p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreSchema(BLAH)"
Dadurch wird nichts im
BLAH
Schema bereitgestellt, gelöscht oder geändert.Ausführliche Informationen finden Sie im Originalartikel .
quelle
Es
SSDT
ist schwierig, nur einen Teil einer Datenbank mit zu verwalten . Wenn es keine Abhängigkeiten gäbe, könnten Sie einfach zulassen, dass Objekte gelöscht und nicht in das Projekt aufgenommen werden. Da es Abhängigkeiten gibt, die Sie aber nicht verwalten möchten, müssen Sie das System austricksen.Eine Methode fällt mir ein: Ich kann sie derzeit nicht testen, und ich habe nur eine "ähnliche" Methode verwendet, nicht genau diese.
Option 1:
Erstellen Sie ein neues Datenbankprojekt mit
dbo.a
darin.Verweisen Sie auf die Tabelle mit dreiteiliger Benennung. Verwenden Sie für den ersten Teil des Namens eine SQLCMD-Variable. Z.B
[$(DatabaseName)].dbo.a.
Stellen Sie niemals Ihre
foo
Datenbank bereit .Stellen Sie über die Veröffentlichungsdateien oder die CLI-Oberfläche
$(DatabaseName)
den gleichen Namen wie Ihre echte Datenbank ein.quelle
Eine "saubere" integrierte Methode, um dies zu tun (Stand 2016), ist die Verwendung einer gespeicherten Schema-Vergleichsdatei. Du kannst:
Weitere Informationen finden Sie hier: https://devblogs.microsoft.com/ssdt/schema-compare-in-sqlpackage-and-the-data-tier-application-framework-dacfx/
quelle