Belirli bir tabloyu SSDT dağıtımından hariç tutma


11

Şemadaki her şeyi içeren mevcut bir veritabanım var dbo. Şema ile eklediğim nesneleri içeren bir SSDT projem varfoo

Projede şöyle görünen bir tablo var:

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
)

Bu dbo.a'ya bağlıdır. dbo.a, diğer sütunların yabancı anahtarları olan birçok sütuna sahiptir. Başka biri (varsayılan şemayı koruyan) dbo.a'yı değiştirebilir.

Ben basit mağaza dbo.a istiyorum:

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

Böylece dahili olarak inşa edilir, ancak konuşlandırılmaz. Mümkün mü?


Dağıtımlarınız için Schema Compare'i kullanmıyor musunuz? Değişiklikler algılandığında bu tablonun listeden işaretini kaldırabilirsiniz.
Dave

Şu anda bir şema karşılaştırması yapıyorum, ancak dizüstü bilgisayarımdan dev sunucusuna hayır, gerçek bir yayın dağıtımı yapmak istiyorum.
Justin Dearing

Yanıtlar:


11

Sen kullanabilirsiniz AgileSqlClub SqlPackage Dağıtım Filtre .

Kısa talimatlar gelen çoğaltılabilir orijinal makaleye göre Ed Elliott :

  1. Filtreyi agilesqlclub.codeplex.com adresinden indirin
  2. İle DLLaynı klasöre yerleştirinsqlpackage.exe
  3. Bu komut satırı parametrelerini dağıtımınıza ekleyin:

    /p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor /p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreSchema(BLAH)"

    Bu, BLAHşemadaki hiçbir şeyi konuşlandırmaz, düşürmez veya değiştirmez .

Tüm ayrıntılar için orijinal makaleye bakın.


Devenv.exe'den foo.publish.xml dosyaları aracılığıyla dağıttığımda sqlpackage.exe dosyasını oluşturmaz. Bunu yapmamın bir yolu var mı?
Justin Dearing

Yaptığım şey, değişiklikleri dağıtmak için devenv'i kullanmak değil, bunun yerine projeyi oluşturmak ve sqlpackage.exe'yi sürmek için bir komut dosyası kullanmak değil - bu şekilde dağıtım katılımcılarını kolayca kullanmak ve diğer ortamlarınızda kullanabileceğiniz komut dosyasını test etmek gibi şeyler yapabilirsiniz ci sürecinizde!
Ed Elliott

Bu benim için büyük bir yardımdı, sadece belirli bir şemayı dağıtmam gerekiyordu. Gelecekte başkaları için not, ignoreschema yöntemi, IgnoreSchema (^ (?! \ B (? İ) BLAH \ b). *),
BLAH

3

Sadece bir veritabanının bir kısmını yönetmek SSDTzordur. Bağımlılık yoksa, nesneleri bırakmasına izin veremez ve projeye dahil edemezsiniz. Bağımlılıklar olduğu için, ancak onları yönetmek istemediğiniz için, sistemi kandırmanız gerektiğini düşünüyorum.

Bir yöntem akla geliyor, şu anda bunları test etme yeteneğim yok ve sadece buna benzer bir yöntem kullandım, tam olarak değil.

Seçenek 1:

  1. dbo.aİçinde yeni bir veritabanı projesi oluşturun .

  2. 3 parçalı adlandırma içeren tabloya bakın. Adın ilk bölümü için bir SQLCMD değişkeni kullanın. Örneğin[$(DatabaseName)].dbo.a.

  3. fooVeritabanınızı asla dağıtmayın .

  4. Yayınlama dosyaları veya cli arabirimi aracılığıyla $(DatabaseName)gerçek veritabanınızla aynı adı kullanın.


Bunu deneyecek
Justin Dearing

@JustinDearing Dağıtım filtresi yöntemini kullanın, kullanım durumunuza tam olarak uyar (Yani tüm tabloları kaynak kontrolünde tutun ve dağıtımda bazılarını göz ardı edin)
Ed Elliott

0

Bunu yapmanın "temiz" yerleşik bir yolu (2016 itibariyle) kaydedilmiş bir Schema Compare dosyası kullanmaktır. Yapabilirsin:

  1. Şema Karşılaştırmanızı gerçekleştirin (veritabanı projenizden -> bir hedef sunucudan) ve güncelleme için hariç tutmak istediğiniz nesnelerin işaretini kaldırın.
  2. Şema Karşılaştırmanızı * .scmp dosyasına kaydedin
  3. Gerekirse farklı ortamlar için sürümler oluşturmak üzere .scmp dosyasını kopyalayıp yapıştırabilir ve kaynağı değiştirmek (çıktı dacpac dosyası oluşturmak üzere), bağlantı vb. Değiştirmek veya hatta bölümdeki öğeleri manuel olarak eklemek / değiştirmek için XML düzenleyicisinde kolayca düzenleyebilirsiniz. .
  4. Dacpac dağıtım / yayımlama komut parametrelerinizi yayınlama için uygun .scmp dosyasını kullanacak şekilde yapılandırın. ör. SqlPackage.exe / Eylem: yayınla /KaynakDosyası:c:\project\schema_compare.scmp

Daha fazla bilgi burada: https://devblogs.microsoft.com/ssdt/schema-compare-in-sqlpackage-and-the-data-tier-application-framework-dacfx/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.