Aracılığıyla paylaş


Veri bölümü değiştirme'yi kullanarak verimli aktarılıyor

Veri bölümleme, yönetme ve tüm veri koleksiyon bütünlüğünü koruyarak veri alt kümelerine hızlı ve etkili erişim sağlar.KullanabileceğinizTransact-SQLALTER tablo... anahtar deyim aşağıdaki yollarla veri alt kümelerine hızlı ve verimli bir şekilde aktarmak:

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

  • Bir bölümü, bir geçiş bölümlenmiş tablo diğerine.

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

Örnek kod değiştirme, bölüm uygulayan görmek ve bölüm kavramları değiştirme hakkında bilgi için bkz:Readme_SlidingWindow.

Genel gereksinimler için bölümlerini değiştirme

Bir bölümü Transfer edildiğinde, verileri değil fiziksel olarak taşınır; yalnızca meta veriler hakkında verilerin konumunu değiştirir.Bölümler arasında geçiş yapabilirsiniz önce birkaç genel gereksinimler karşılanmalıdır:

  • Her iki tabloda gerekir önce anahtar işlem yok.(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) alan tabloyu veritabanında bulunması gerekir.

  • Gereken alan bölümü var ve bunu olmalıdır boş.Olup, bir tablo bir bölümü olarak zaten varolan için eklediğiniz bölümlenmiş tablo, veya bir bölümü'nden bölümlenmiş tablo diğerine alan yeni bir bölüm bölüm olması gerekir ve boş bir bölüm olması gerekir.

  • Gereken alan nonpartitioned tablo var ve bunu olmalıdır yok. Nonpartitioned bir tablo oluşturmak için bölümü yeniden atama, tablonun alan yeni bir bölüm bulunmalıdır ve nonpartitioned boş bir tablo olması gerekir.

  • Bölümler olması aynı sütun. Bölümlenmiş bir bölümünden geçiş yapıyorsanız, tablo başka her iki tablo s aynı sütunda bölümlenmesi gerekir.

  • Kaynak ve hedef tablo gerekir paylaşan aynı dosya grubu. Aynı dosya grubu kaynak ve hedef tablonun ALTER tablo... SWITCH ifadesinin bulunması ve kendi büyük değere sütunlar aynı dosya grubu depolanması gerekir.Tüm ilgili dizinleri, dizin bölümleri veya dizinlenmiş görünümün bölümlerini de aynı dosya grubu içinde bulunmalıdır.Ancak, dosya grubu, ilgili tablo veya diğer ilgili dizinleri farklı olabilir.

Hakkında bilgi için bölüm değiştirme, dizin oluşturulmuş görünümler tanımlanan, bakınBölüm, dizin oluşturulmuş görünümler tanımlanmış, değiştirme.

Tablo ve dizin yapısı gereksinimleri

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

  • Kaynak ve hedef tablo aynı sütun yapısı ve düzeni olmalıdır.Aynı sütun aynı ada sahip tablolar olmalı ve aynı veri türü, uzunluk, Harmanlama, duyarlık, Ölçek, null atanabilirlik ve birincil anahtar kısıtlamaları (varsa) ve aynı ayarları ANSI_NULLS ve tırnak içine alınmış TANIMLAYICI da vardır.Ayrıca, sütunlar, aynı sırada tanımlanmalıdır.KİMLİK özellik olarak kabul edilmez.

    Uyarı

    Bölüm geçiş IDENTITY sütunları Kaynak tablosundaki değerleri boşluklar ve hedef tablosunun IDENTITY sütunları yinelenen değerler neden olabilir.DBCC CHECKIDENT tabloları kimlik değerlerini denetleyin ve isterseniz, değerleri düzeltmek için kullanın.

  • Bölümleme sütunların null atanabilirlik aynı olmalıdır.Kaynak ve hedef tablo ya da NULL olarak veya NOT NULL.Çok bölümlendirilir değil, sütunu tablonun bölümleme sütununa karşılık gelen sütun null atanabilirlik eşleşmelidir bölümlenmiş tablo.

    Important noteImportant Note:

    Bölümlenmiş tabloları bölümleme sütun NOT NULL belirtmeniz önerilir.NOT NULL, kaynak ve hedef ALTER tablo... anahtar işlemleri nonpartitioned tablolar, belirttiğiniz öneririz.Bölümlenmiş sütun olduğunda NOT NULL, sütun bölümleme, bir CHECK kısıtlamaları olmayan boş değerleri denetlemek için zorunlu.Null değerler normalde en sol bölümünde koymak bir bölümlenmiş tablo.Bir kaynak ve hedef tablolarda NOT NULL kısıtlaması olmayışı, ayrıca bölümleme sütun sola büyük bölümü dışında herhangi bir bölümünün geçiş yaparken tanımlanır ve veritabanı seçeneği ANSI_NULLS ON olarak ayarlandığında CHECK kısıtlamalarına sahip etkileyebilir.

  • Computed sütun sözdiziminde olmalıdır.Hesaplanan sütunlar, ilgili bölüm anahtarları, tanımladığınız, hesaplanan sütun ifadesinin sözdizimi aynı; her ikisi de hesaplanan sütunlar kalıcı.

  • ROWGUID özelliklerinin aynı olması gerekir. ROWGUID özellik ile tanımlanan her sütuna diğer bir sütuna karşılık tablo, aynı zamanda tanımlanmış ROWGUID özellikyle.

  • XML sütun olması gerekir aynı şema. Her xmlsütunlar gerekir tarafından yazılan aynı XML şema koleksiyon.

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

  • Tablo aynı kümelenmiş dizin olmalıdır.Dizinler bölümleri geçmeden önce devreden olamaz ve hem kaynak hem de hedef tablo aynı kümelenmiş dizin olmalıdır.

  • Kümelenmemiş dizin tanımlanmalıdır ve aynı olması gerekir. Hedef tabloda tanımlanan tüm kümelenmemiş dizinler Ayrıca, tanımlanan kaynak tablo ve her dizin anahtar sütun için benzersiz alt anahtarlarını ve sıralama yönü (ASC veya DESC) açısından aynı şekilde yapılandırılmıştır.Devre dışı bırakılan kümelenmemiş dizinleri bu gereksiniminden dışındadır.

Kısıtlama gereksinimleri

Bölümlerini taşımak için aşağıdaki ek kısıtlama gereksinimlerin yerine getirilmesi gereken:

  • CHECK kısıtları tam olmalı veya uygun kaynak ve hedef. Hedef tanımlanan tüm CHECK kısıtlamaları tablo kaynağı üzerinde tanımlı tablo tam olarak veya (örneğin, alt küme küme küme kümesi olarak) uygun olarak hedefin CHECK kısıtlamaları tablo.

  • İnt sütun kısıtlamaları olması gerekir aynı veya alt küme küme küme kümesi. CHECK tüm kısıtlamalar intkaynak tablodaki sütunların gerekir veya uygun olarak mevcut bir alt küme kısıtlamalar, intsütun hedef tablo.Örneğin hedef tablonun bir kısıtlamaya sahip birintsütun Sütun1 Sütun1 belirtir<100, kaynak tablo, karşılık gelen sütun Sütun1 ya da olması gerekir aynı sınırlama veya kısıtlama yerleştirilen Sütun1 gibi hedef tablodaki değerleri kümesini<90 kaynak tablosu.Birden çok sütunu belirten CHECK kısıtlamaları aynı sözdizimini kullanarak tanımlanması gerekir.

  • Nonpartitioned gereken tablonuz aynı kısıtlamalar hedef bölüm. Olmayan bir ekliyorsanız bölümlenmiş tablo zaten varolan bir bölümü olarak bölümlenmiş tablo, hedef tablonun bölümü anahtarına karşılık gelen kaynak tablonun sütun tanımlı bir kısıtlama olmalıdır.Bu değer aralık sınır değerleri hedef bölüm içinde uyum sağlar.

  • kaynak bölüm sınır değerleri sınırları içinde olmalıdır hedef bölüm. Bir bölümü bölümlenmiş bir geçiş yapıyorsanız, tablo diğer bölümlere tablo, kaynak bölüm sınır değerleri hedef bölüm sınır değerleri içinde sığması gerekir.Sınır değerleri sığmayan, tablodaki tüm verileri hedef bölüm sınır değerlere uyma olduğundan emin olmak için kaynak tablonun bölümü anahtar için tanımlanan bir kısıtlaması olmalı.

    Uyarı

    Veri türü dönüştürme sınırlama tanımlarında kaçının.Örtülü veya açık veri sınırlamaları dönüştürme başarısız ALTER tablo... anahtar bölümü değiştirme, kaynakları neden olan tabloları tanımlanan yazın.

  • Kaynak ve hedef tablolar olması gerekir aynı yabancı anahtar kısıtlamaları. Hedef tablodaki tüm yabancı anahtar kısıtlamaları, kaynak tablo aynı yabancı anahtarlarla ilgili sütunlar üzerinde tanımlı olması gerekir ve bu yabancı anahtarlar aynı birincil anahtar olarak hedef tablonun başvurmanız gerekir.Kaynak tablosunun yabancı anahtarları olamaz işaretlenmişis_not_trusted (görüntülenebilir sys.foreign_keys Katalog görünümü), hedef tablonun karşılık gelen yabancı anahtar da işaretli değilse 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 gereksinimleri

Bölümlerini taşımak için aşağıdaki ek koşulları da sağlanmalıdır:

  • Dizinler gerekir hizalı tablo bölümleri. Kaynak tablo ile kaynak tablodaki tüm dizinleri hizalı, hedef tablodaki tüm dizinleri hedef tabloyla hizalanır.Kaynak tablo ile hedef tablosu, her ikisi de bölümlere veya hem olmayan bölümlemeli veya tek tek tabloların bölümlenmiş olabilir.Dizin hizalama hakkında daha fazla bilgi için bkz:Bölümlenmiş dizinler için özel yönergeleri.

  • Ek sınırlamalar ve gereksinimler uygulanan kaynak tablolar dizin oluşturulmuş görünümler. ALTER tablo … SWITCH deyim hedef tabloda tanımlanan dizinli görünüm, Bölüm, dizin oluşturulmuş görünümler tanımlanmış, değiştirmekısıtlamaları ve örnekler için Bkz:

  • İzin yok tam metin dizinlerini. Kaynak tablo veya hedef tablonun tam metin dizin olabilir.

  • Hayır XML dizinler izin verilen hedef tablo. Hedef tablo üzerinde XML dizin olabilir.

  • birincil anahtar yabancı anahtar tanımlanmış, kaynak tablo olan birincil anahtar. Hiçbir etkin birincil anahtar yabancı anahtar arasındaki ilişki kaynak tablo hedef tablonun kaynak tablo birincil anahtar içeren, olabilir.

  • birincil anahtar yabancı anahtar tanımlanmış, hedef tablo olan yabancı anahtar. Yok etkin birincil anahtar yabancı anahtar ilişkisi, hedef tablonun yabancı anahtarı içeren hedef tablonun kaynak tablo arasındaki olabilir.

  • Herhangi bir diğer tablonun yabancı anahtar başvuru kaynağı tablo. 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.CHECK kısıtlamaları kaynak ve hedef tablolarda kullanılabilir.

    Not

    Geriye dönük uyumluluk özelliğini kurallardır.Tercih edilen uygulama CHECK kısıtlamaları'nı kullanmaktır.Görmek için CHECK kısıtlaması kısıtlamalarıKısıtlama gereksinimleri daha önce bu konuyu.

  • Kaynak ve hedef tablolar gerekir değil çoğaltılır. Kaynak tablo ya da hedef tablonun kaynak çoğaltma olabilir.

  • Önce gerekli veritabanı izinleri olması gerekir bölümün anahtarı. ALTER tablo deyim kullanan bir bölüme geçmek için ALTER tablo deyim ile ilgili gerekli veritabanı izinleri olması gerekir.küme İzinleri hedef tablonun kaynak tablo arasındaki aynı olması gerekmez.

  • Tetikleyiciler gerekir değil etkinleştirme sırasında taşıma bölümleri. Tablo bölümleri taşıyarak INSERT, UPDATE veya DELETE tetikleyici ya da geçişli eylem etkinleştirilir ve bölümlerini taşımak için tetikleyici benzer şekilde tanımladığınız kaynak veya hedef tablo için gerekli değildir.

    Not

    ALTER tablo…SWITCH işlemi sırasında diğer bir bağlantı sırasında değişiklik tabloları başvuru olduğundan emin olmak için kaynak ve hedef tablolardaki schema-modify kilit alındı.Kilitlerin hakkında daha fazla bilgi için bkz: Kilit modu.

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