Saya memiliki database yang ada dengan segala sesuatu dalam skema dbo
. Saya memiliki proyek SSDT dengan objek yang saya tambahkan dengan skemafoo
Saya punya tabel yang terlihat seperti ini di proyek:
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
)
Itu tergantung pada dbo.a. dbo.a memiliki banyak kolom yang merupakan kunci asing ke kolom lainnya. Orang lain (yang mempertahankan skema default) dapat mengubah dbo.a.
Saya ingin menyimpan dbo.a sebagai:
CREATE table dbo.a (
id INT NOT NULL
CONSTRAINT [PK_a] PRIMARY KEY CLUSTERED
)
Jadi itu dibangun secara internal, tetapi tidak dikerahkan. Apakah itu mungkin?
ssdt
deployment
Justin Dearing
sumber
sumber
Jawaban:
Anda bisa menggunakan AgileSqlClub SqlPackage Deployment Filter .
Instruksi singkat direproduksi dari artikel asli oleh Ed Elliott :
DLL
ke dalam folder yang sama dengansqlpackage.exe
Tambahkan parameter baris perintah ini untuk penerapan Anda:
/p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor
/p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreSchema(BLAH)"
Ini tidak akan menyebarkan, menjatuhkan atau mengubah apa pun dalam
BLAH
skema.Lihat artikel asli untuk detail lengkap.
sumber
Hanya mengelola bagian dari database dengan
SSDT
sulit. Jika tidak ada dependensi maka Anda bisa melarangnya untuk menjatuhkan objek dan tidak memasukkannya ke dalam proyek. Karena ada dependensi, tetapi Anda tidak ingin mengelolanya, saya pikir Anda harus mengelabui sistem.Satu metode muncul di pikiran, saya tidak memiliki kemampuan untuk menguji mereka sekarang dan saya hanya menggunakan metode "mirip" dengan ini, bukan yang ini tepatnya.
Pilihan 1:
Buat proyek database baru dengan
dbo.a
di dalamnya.Referensi tabel dengan penamaan 3-bagian. Untuk bagian pertama nama, gunakan variabel SQLCMD. Misalnya
[$(DatabaseName)].dbo.a.
Jangan pernah gunakan
foo
basis data Anda .Melalui file publikasi atau antarmuka cli, buat
$(DatabaseName)
nama yang sama dengan database asli Anda.sumber
Cara bawaan "bersih" untuk melakukan ini (mulai 2016) menggunakan file Bandingkan Skema yang disimpan. Kamu bisa:
Informasi lebih lanjut di sini: https://devblogs.microsoft.com/ssdt/schema-compare-in-sqlpackage-and-the-data-tier-application-framework-dacfx/
sumber