Bölüm Geçişi kullanarak verimli veri aktarma

Veri bölümleme yönetmenizi ve koruyarak veri alt kümelerine hızlı ve etkili erişim sağlar bütünlük tüm veri koleksiyon.Kullanabileceğiniz Transact-SQL alter table...SWITCH deyim aşağıdaki yollarla veri alt kümelerine hızlı ve verimli bir şekilde aktarmak:

  • Bir tabloda zaten varolan bir bölümlenmiş tablo için bir bölüm olarak atama.

  • Bir bölümü, bir geçiş bölümlenmiş tablo bir başka.

  • Tek bir tablo oluşturmak için bölümü yeniden atama.

Bölüm kavramları ve Bkz: geçiş yapma hakkında bilgi için ReadMe_SlidingWindow örnek.Örnekleri hakkında daha fazla bilgi için bkz: SQL Server Örnekleri ve Örnek Veritabanlarının Yüklenmesiyle İlgili Önemli Noktalar.

Bölüm geçiş için genel gereksinimler

Bir bölümü transfer edildiğinde, verileri fiziksel olarak taşınmaz; yalnızca meta veriler değişiklikleri konumuyla ilgili.Bölümler arasında geçiş yapabilirsiniz önce birkaç genel gereksinimlerin karşılanması gerekir:

  • Her iki tablo anahtarı operasyondan önce varolmalıdır.(Kaynak tablo) bölümü, yüklenmekte olan tabloda taşınan ve geçiş işlemi gerçekleştirmeden önce bölüm (hedef tablo) alma tablo veritabanında bulunması gerekir.

  • Alıcı bölümü mevcut olmalıdır ve boş olmalıdır.Size olan tablo bölümlenmiş tablo zaten varolan bir bölümü olarak ekleme veya bir bölüm bölümlenmiş bir tablodan diğerine, aldığı yeni bir bölüm bölüm bulunmalıdır taşıyıp boş bir bölüm olması gerekir.

  • Alıcı nonpartitioned tablo mevcut olmalıdır ve boş olması gerekir. Nonpartitioned bir tablo oluşturmak için bölümü yeniden atama, yeni bölüm aldığı tablo mevcut olmalıdır ve boş bir nonpartitioned tablo olmalıdır.

  • Bölümler üzerinde aynı sütun olması gerekir. Bir bölümü geçerseniz bölümlenmiş tablo , her iki tablonun aynı sütunda ayrılmış olmalıdır.

  • Kaynak ve hedef tabloları aynı dosya grubu paylaştırmanız gerekir. Kaynak ve hedef tablo alter TABLE'ın...SWITCH deyim aynı dosya grubu içinde bulunmalı ve bunların değeri büyük sütunlar aynı dosya grubu içinde saklanmalıdır.Ayrıca tüm ilgili dizinleri, dizin veya dizinli görünüm bölümleri aynı dosya grubu içinde bulunması gerekir.Ancak, dosya grubu, ilişkili tablolar veya diğer ilgili dizinleri farklı olabilir.

Dizinli görünümleri tanımlı yaparken bölüm değiştirme hakkında daha fazla bilgi için bkz: Dizinli görünümleri tanımlı yaparken bölüm değiştirme.

Tablo ve dizin yapısı gereksinimleri

Yukarıdaki genel gereksinimlerine ek olarak, hem kaynak tablosunda hem de hedef tablo aynı yapıya sahip olmalıdır.Yapı gereksinimleri aşağıdaki gibidir:

  • Kaynak ve hedef tabloları aynı sütun yapısı ve sipariş olmalıdır.Tablolar ile aynı adı ve aynı veri türü, uzunluk, harmanlama, duyarlık, ölçek, aynı sütun olması gerekir null atanabilirlikve birincil anahtar kısıtlamaları (varsa), ve ANSI_NULLS ve tırnak içine alınmış TANIMLAYICI için aynı ayarları da vardır.Ayrıca, sütunların aynı sırada tanımlanmalıdır.KİMLİK özellik olarak kabul edilir.

    Dikkat notuDikkat

    Bölüm geçiş yinelenen kimlik sütunlarının değerleri tanıtmak hedef tablosu ve kaynak tablodaki kimlik sütun değerleri boşluklar.dbcc CHECKIDENT, tablolarınızı kimlik değerlerini denetleyin ve isterseniz değerleri düzeltmek için kullanın.

  • Bölümleme sütun verilebilirliğini uymalı.Kaynak ve hedef tabloları ya da null veya not null gerekir.Tablolardan birini bölümlenmiş olmasına, null atanabilirlik sütununda bölümlenmiş tablo sütun için bir tablo bölümleme sütunu karşılık gelen eşleşmesi gerekir.

    Önemli notÖnemli

    Belirttiğiniz değil öneririz üzerinde null bölümleme sütunu bölümlenmiş tabloları.Kaynaklar ya da alter table için Hedefler nonpartitioned tablo değil null belirtmek de öneririz...GEÇİŞ işlemleri.Ne zaman bölümlenmiş sütun olmayan null, bölümleme sütunlar üzerinde hiçbir denetim kısıtlamalarını değil null değerleri denetlemek için zorunlu.Null değerler normalde en sol bölümünde koymak bir bölümlenmiş tablo.Kaynak ve hedef tabloları üzerinde bir not null kısıtlaması yokluğunda da tanımlanan bölümleme sütununda en soldaki bölümü dışında herhangi bir bölümünün geçiş yaparken ve ANSI_NULLS veritabanı seçeneği olduğunda hiçbir Kontrol kısıtlamaları ile etkileyebilir küme açık.

  • Hesaplanan sütunlar aynı sözdizimini olması gerekir.İlgili bölüm anahtarlarını hesaplanan sütunlar, kendi hesaplanmış sütunları tanımlama ifadelerin sözdizimi aynıdır ve her ikisi de hesaplanmış sütunlar kalıcı.

  • ROWGUID özellikleri aynı olması gerekir. ROWGUID özellik ile tanımlanan herhangi bir sütun diğer bir sütuna karşılık tablo , da ROWGUID özellik ile tanımlanmış.

  • xml sütunları aynı olmalıdır. Tüm xml sütunları gerekir tarafından yazılan aynı xml şeması için koleksiyon.

  • Herhangi bir metin, ntext veya görüntü sütunlarını satır ayarlarının aynı olması gerekir. Bu ayar hakkında daha fazla bilgi için bkz: Satır veri.

  • Tablolarda kümelenmiş dizinler aynı olması gerekir.Hem kaynak hem de hedef tablolarda kümelenmiş dizinler aynı olması gerekir ve indeksler bölümlere geçmeden önce geçersiz olamaz.

  • Kümelenmemiş dizinleri tanımlanmalıdır ve aynı olması gerekir. Hedef Tablo üzerinde tanımlı tüm kümelenmemiş dizinleri de kaynak tablo üzerinde tanımlı ve Özgünlüğü, alt anahtarları ve sıralama yönü (asc veya desc) her dizin anahtar bakımından özdeş olarak yapılandırılmış sütun.Devre dışı bırakılan kümelenmemiş dizinleri Bu gereksinimin dışındadır.

Kısıtlama gereksinimleri

Bölümlerini taşımak için aşağıdaki ek gereksinimler karşılanmalıdır:

  • DENETLEME kısıtlamaları, tam bir eşleşme olmalı veya hem kaynak hem de hedef için uygulanabilir. Hedef Tablo üzerinde tanımlı tüm Kontrol kısıtlamaları üzerinde kaynak tablo olarak tam bir eşleşme veya uygulanabilir (örneğin, alt küme küme küme kümesi olarak) olarak hedef tablo için Denetim kısıtlamalarını tanımlanmalıdır.

  • İnt sütun kısıtlamaları aynı veya alt küme küme küme kümesi olması gerekir. Üzerinde herhangi bir denetim kısıtlamalarını int kaynak tablodaki sütunlar eşleştir veya üzerinde alt küme küme küme kümesi kısıtlamaları olarak mevcut int sütun hedef tablo.For example, if the target table has a constraint on an int column Column1 that specifies Column1 < 100, the corresponding column Column1 of the source table must either have the same constraint or a subset of the constraint placed on values in the target table, such as Column1 < 90 of the source table.Birden çok sütun belirtin denetim kısıtlamalarını aynı sözdizimini kullanarak tanımlanması gerekir.

  • Nonpartitioned tablo hedef bölüm olarak aynı kısıtlamalara sahip olmanız gerekir. Olmayan bir ekliyorsanızbölümlenmiş tablo zaten varolan bir bölümü olarak bölümlenmiş tablo, kaynak tabloyu hedef tablo bölüm anahtarına karşılık gelen sütun üzerinde tanımlı bir kısıtlama olmalıdır.Bu değer aralık içinde sınır değerlerini sığdığından emin kılar hedef bölüm.

  • Sınır değerleri kaynak bölüm hedef bölüm sınırları içinde olmalıdır. Bölümlenmiş bir bölümü geçerseniz tablo diğer bölümlere tablo, kaynak bölümünün sınır değerleri hedef bölüm içindeki sınır değerleri sığması gerekir.Sınır değerleri sığmayan, kaynak bölüm anahtar üzerinde tanımlı bir kısıtlama olmalıdır tablo verilerin tümünü emin olmak için tablo sınır değerleri hedef bölüm sığdırır.

    Dikkat notuDikkat

    Veri türü dönüştürme kısıtlaması tanımlarındaki kaçının.Kısıtlamaları ile açık veya kapalı veri kaynakları bölümü değiştirme alter table neden olabilir tablolar üzerinde tanımlı dönüştürme yazın...Başarısız anahtar.

  • Kaynak ve hedef tabloları aynı yabancı anahtar kısıtlamaları olması gerekir. Hedef Tablo herhangi bir yabancı anahtar sınırlamaları varsa, kaynak tablo karşılık gelen sütun tanımlanan aynı yabancı anahtarlar olmalıdır ve bu yabancı anahtarları hedef tablo alanındakiyle aynı birincil anahtar başvuru gerekir.Kaynak tablonun yabancı anahtar olarak işaretlenemez is_not_trusted (görüntülenebilecek sys.foreign_keys katalog Görünüm), sürece, ilgili yabancı anahtar hedef tablo da işaretlenmiş is_not_trusted.For more information about this setting, see Dizinler ve kısıtlamalar devre dışı bırakma yönergeleri.SQL Server applies any CASCADE rules that are defined on the foreign keys of the target table to the newly moved partition.

Bölümlerini taşımak için ek gereksinimler

Aşağıdaki ek gereksinimler bölümlerini taşımak için de karşılanmalıdır:

  • Tablo bölümleri ile dizinleri hizalı gerekir. Kaynak tablodaki tüm dizinleri kaynak tablo ile hizalı gerekir, hedef tablodaki tüm dizinleri ile hedef tablo hizalanması gerekir.Kaynak tablo ile hedef tablosu hem de bölümlenmiş veya hem bölümlenmemiş veya tek bir tablo bölümlenmiş olabilir.Dizin hizalama hakkında daha fazla bilgi için bkz: Bölümlenmiş dizinler için özel yönergeleri.

  • Kaynak tablolar ile dizin oluşturulmuş görünümler için ek kısıtlamaları ve gereksinimleri uygulanır. Hedef alter table tablo … SWITCH deyim, tanımlanan dizinli görünüm varsa, bkz: Dizinli görünümleri tanımlı yaparken bölüm değiştirme kısıtlamaları ve örnekler.

  • Tam metin dizinlerini izin verilir. Kaynak tablo veya hedef tablo tam metin dizin olabilir.

  • xml dizinler üzerinde hedef tablo için izin. Hedef Tablo üzerinde hiçbir xml dizinler olabilir.

  • Birincil anahtarı yabancı anahtar, tanımlanan kaynak tablo birincil anahtar vardır. Hiçbir etkin birincil anahtar yabancı anahtar ilişkisi kaynak tablo ile hedef tablo içinde kaynak tablonun birincil anahtar tutan arasında olabilir.

  • birincil anahtar yabancı anahtar, tanımlanan hedef tablo yabancı anahtarı vardır. Hiçbir etkin birincil anahtar yabancı anahtar ilişkisi kaynak tablo ile hedef tablo içinde hedef tablosu yabancı anahtar tutar arasındaki olabilir.

  • Hiçbir başka bir tablodaki yabancı anahtar kaynak tablo başvurabilirsiniz. Kaynak tablo başka bir tablodaki yabancı anahtar olarak başvurulamaz.

  • Kaynak veya hedef tablo kurallarında izin verilmez. Kaynak tablo veya hedef tablo üzerinde tanımlı kural yok olabilir.Kontrol kısıtlamaları kaynak ve hedef tabloları üzerinde kullanılabilir.

    Not

    Geriye dönük uyumluluk özelliğini kurallardır.Tercih edilen denetim kısıtlamalarını kullanmak uygulamasıdır.ONAY kısıtlaması sınırlamaları için bkz: Kısıtlama gereksinimleri bu konudaki önceki.

  • Kaynak ve hedef tabloları çoğaltılmalıdır değil. Kaynak tablo veya hedef tablo çoğaltma kaynakları olabilir.

  • Bölüm geçiş önce gerekli veritabanı izinleri olması gerekir. Bölüm geçiş alter table deyim kullandığından, alter table deyim ile ilişkilendirilmiş gerekli veritabanı izinleri olması gerekir.İzinler küme kaynak tablo ile hedef tablo arasında aynı olması gerekmez.

  • Tetikleyiciler Bölümleri taşırken etkinleştirmeniz gerekir. INSERT, update veya delete Tetikleyiciler ya da basamaklı eylemleri Tablo bölümleri taşıyarak etkinleştirilir ve tetikleyiciler bölümlere taşımanız için benzer şekilde tanımladığınız kaynak veya hedef tabloları için gerekli değildir.

    Not

    Sırasında bir alter table…GEÇİŞ işlemi, schema-modify kilit diğer bağlantılar sırasında değişiklik tabloları başvuru emin olmak için kaynak ve hedef tabloları aldı.Kilitleri hakkında daha fazla bilgi için bkz: Kilit modları.

Tablo bölümleri taşımak için