SQL Server Veri Araçları ve bölümleme işlevleri


16

Sürgülü pencere yükleme senaryosu oluşturuyorum ve bölüm fonksiyonları zaman içinde sınırlarını değiştiriyor olacak.

SQL Server Veri Araçları (SSDT) ​​veritabanı projemde bazı başlangıç ​​işlevleri sabit kodlanmış bazı bölüm işlevleri oluşturduk.

Ancak, zaman geçtikçe ve bölüm işlevlerinin sınırları değiştikçe, gelecekteki SSDT veritabanı yayımları sınırları özgün olanlara geri döndürecektir.

Bu senaryoyu, muhtemelen bölüm işlevlerinin yayımlanmasını devre dışı bırakarak, ele almanın bir yolu var mı?

Ben değiştirmeyi denedim Oluştur eylem varsayılan, SSDT içinde bölme fonksiyonlarının özelliğini Buildiçin, Noneama sonra proje nedeniyle bağlı nesneleri eksik bir referansa yapı başarısız olur.


4
Her zaman fark tabanlı konuşlandırmanın temelde bozuk olduğunu söylemiştim. Göçler çok büyük bir dağıtım metaforudur !
Remus Rusanu

'Yoksay endeks seçenekleri' senin bölümlenmiş indeksi dağıtım tetiklenen her zaman yeniden SSDT önlemek için de ayarlanmalıdır.

Yanıtlar:


16

Sorunuma bir çözüm bulabildim - umarım bu başka birine yardımcı olur.

Her veritabanı yayımının bölüm işlevini yeniden oluşturmasını önlemek için , Gelişmiş Yayınlama Ayarları iletişim kutusundaki ( Veritabanı Yayımlama iletişim kutusundaki Gelişmiş ... düğmesi) Bölüm düzenlerini yoksay seçeneğini işaretleyebilirsiniz .

Seçeneğin açıklamasından (vurgu mayını):

Bir veritabanında yayımladığınızda bölüm düzenlerindeki ve işlevlerindeki farklılıkların yok sayılması veya güncellenmesi gerekip gerekmediğini belirtir .

Bununla birlikte, sayfa veya satır sıkıştırma ile bölümlenmiş bir nesne (tablo veya dizin) tanımladıysanız, Bölüm düzenlerini yoksay seçeneği artık bölüm işlevini yeniden oluşturmaz, ancak bölümlenmiş nesne yine de yeniden oluşturulur.

Bunun nedeni, bölümlenmiş nesnenin bölüm başına tanımlanan sıkıştırma ile komut dosyası alması ve nesnenin başlangıçta tanımlandığından farklı sayıda bölüme sahip olması nedeniyle SSDT, nesneyi yayımlama sırasında yeniden oluşturur. Ör (biçimlendirilmiş):

WITH ( DATA_COMPRESSION = PAGE ON PARTITIONS (1)
     , DATA_COMPRESSION = PAGE ON PARTITIONS (2)
     , ...

Bunun gerçekleşmemesi için, aynı Gelişmiş Yayınlama Ayarları iletişim kutusunda Tablo seçeneklerini yoksay seçeneğini de işaretleyebilirsiniz - ve ( tablo seçeneklerinin referansı) gibi diğer seçenekleri göz ardı edeceğinizi unutmayın .ALLOW_ROW_LOCKSALLOW_PAGE_LOCKS

Gelişmiş Yayınlama Ayarları iletişim kutusu


1
Google beni buraya getirdi. Harika bilgi, paylaştığın için teşekkürler.
jamiet

Proje özellikleri -> Hata ayıklama sayfasında benzer bir iletişim kutusu kullanıyorsanız, değişikliklerin .sqlproj.user dosyasına kaydedileceğini, ancak yalnızca proje kaldırıldığında kaydedileceğini unutmayın.
Taran

3

Ah, bu iyi bir durum değil. Bildiğim kadarıyla SSDT bunu desteklemiyor. Aklıma gelen en iyi çözüm, sınırları bir tabloda depolamak için bir Dağıtım Öncesi komut dosyası kullanmak ve ardından Dağıtım Sonrası komut dosyasında bu değerleri kullanarak bölüm işlevini değiştirmek.


Buradaki cevabımı görmezden gel, Gonsalu'nun yukarıdaki cevabını değerlendirdiğimde açıkça yanıldım.
jamiet
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.