Bölüm işlevi (Transact-SQL) Değiştir

Bölüm işlev , bölme veya birleştirme alt sınır değerleri değiştirir.alter bölüm işlevi yürütülürken, herhangi bir tablo veya bölüm işlev kullanan dizin bölümünün iki bölüme ayrılabilir veya iki bölüm bir daha az bölüm birleştirilebilir.

Dikkat notuDikkat

Birden fazla tablo veya dizin ile aynı bölüm işlevkullanabilirsiniz.alter bölüm işlevi tüm bunları tek bir işlemle etkiler.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

ALTER PARTITION FUNCTION partition_function_name()
{ 
    SPLIT RANGE ( boundary_value )
  | MERGE RANGE ( boundary_value ) 
} [ ; ]

Bağımsız değişkenler

  • partition_function_name
    Değiştirilecek bölüm işlev addır.

  • BÖLME ARALIĞI ( boundary_value )
    Bir bölüm için bölüm işlevekler.boundary_valueYeni bölüm aralık belirler ve bölüm işlevvarolan sınır aralığından farklı olması.Temel boundary_value, Veritabanı Altyapısı Varolan aralıklardan birisini ikiye bölen.Bu iki'nın bulunduğu yeni boundary_value bulunduğu yeni bir bölüm. kabul

    Önemli notÖnemli

    dosya grubu çevrimiçi mevcut olmalıdır ve yeni bölüme tutmak için sonraki kullanılan bölüm işlev kullanan bölümleme düzeni tarafından işaretlenmiş.5. Bir bölüm düzeni oluşturma deyimbölümlere ayrılır.Bir bölüm düzeni oluşturma deyim ayırır, daha fazla filegroups (daha az bölümleri bunları tutmak için filegroups'den bölüm işlevi oluşturma deyim oluşturulur) gerekliyse, daha sonra var atanmamış filegroups ve bunlardan birini sonraki kullanılan bölümleme düzenitarafından işaretlenir.Bu dosya grubu yeni bölüm tutacaktır.Hiçbir dosya gruplarını bir sonraki kullanılan bölümleme düzenitarafından işaretlenmiş varsa, dosya grubuekleme ya da yeni bir bölüm tutmak için mevcut bir belirlemek için alter bölüm DÜZENİNİ kullanmanız gerekir.Zaten bölüm tutan bir dosya grubu ek bölümler tutacak belirlenebilir.Bölüm işlev birden fazla bölümleme düzeniiçinde yer alabilir çünkü bölümleri ekleyerek bölüm işlev kullanan bölümleme şemaları bir sonraki kullanılan dosya grubuolmalıdır.Aksi takdirde, alter bölüm işlev bölümleme düzeni veya bir sonraki kullanılan dosya grubuyetersizliği düzenleri görüntüler bir hata ile başarısız olur.

  • BİRLEŞTİRME [aralık ( boundary_value)]
    Bir bölümü düşünceye ve bölümün kalan bölümleri birine kayıtlı tüm değerleri birleştirir.Aralık (boundary_value) içine bırakılan bölüm değerleri birleştirilir bir sınır değeri olmalı.İlk olarak tutulan dosya grubu boundary_value kalan bölümü tarafından kullanılan veya sonraki kullanılan özellikile işaretlenmiş sürece bölümleme düzeni kaldırıldı.Birleştirilen bölümünün başlangıçta değil tutan dosya grubu içinde bulunduğu boundary_value.boundary_valuedeğişkenleri ( kullanıcı tanımlı tür değişkenleri dahil) veya işlevleri başvuruda bulunabilir bir sabitifade (kullanıcı tanımlı işlevler dahil edilir). Başvuru yapamazsınız bir Transact-SQL ifade.boundary_value* *gerekir ya da aynı veya ilgili bölümleme sütunveri türüne örtük olarak dönüştürülebilir ve boyutu ve ölçek değeri eşleşmiyor olduğunu, kendi karşılık gelen bir şekilde örtük dönüştürme sırasında kesilmiş olamaz input_parameter_type.

Açıklamalar

alter bölüm işlevi tüm tabloları ve tek atomik bir işlemde işlev kullanan dizin yeniden bölümlendirir.Ancak, bu işlem çevrimdışı ve türüne bağlı olarak, yeniden bölümlenmesi ve kapsam gerçekleşir kaynakolabilir-yoğun.

alter bölüm işlevi, yalnızca bir bölümü ikiye bölerek ya da iki bölüm bir birleştirme için kullanılabilir.Bir tablo (örneğin, bölümlerden 10 5 bölüm için) Aksi takdirde bölümlendirilir şeklini değiştirmek için aşağıdaki seçeneklerden herhangi birini alýþtýrma.yapılandırma sistem türüne bağlı olarak, bu seçenekler, kaynak tüketimi değişebilir:

  • İstenen bölüm işlevile yeni bir bölümlenmiş tablo oluşturmak ve verileri eski tablo yeni tablo bir INSERT INTO kullanarak yerleştirin...select from deyim.

  • kümelenmiş dizin bölümlenmiş bir öbek üzerinde oluşturun.

    Not

    kümelenmiş dizinbölümlenmişsonuçlar bölümlenmiş bir yığın içinde bırakarak.

  • Bırakın ve varolan bir bölümlenmiş dizin kullanarak yeniden Transact-SQL create INDEX deyim ile varolan bırakın yan tümceüzerinde =.

  • alter bölüm işlevi ifadeler gerçekleştirin.

alter PARITITION işlevi tarafından etkilenen tüm filegroups çevrimiçi olması gerekir.

Bölüm işlevkullanan bir tablo devre dışı bırakılmış bir kümelenmiş dizin olduğunda alter bölüm işlev başarısız olur.

SQL Server 2008Bölüm işlevdeğiştirmek için çoğaltma desteği sağlamaz.yayın veritabanında bir bölüm işlev değişiklikleri abonelik veritabanında el ile uygulanması gerekir.

İzinler

yürütmek için alter bölüm işlevi aşağıdaki izinlerden herhangi biri kullanılabilir:

  • alter any dataspace izni.Bu izin, üyeleri için varsayılan sysadmin sabit sunucu rolü ve db_owner ve db_ddladmin veritabanı rolleri sabit.

  • Bölüm işlev oluşturulan veritabanı control veya alter izni.

  • Bölüm işlev oluşturulan veritabanının control server veya alter any database izni sunucu üzerinde.

Örnekler

A.bölümlenmiş tablo veya dizin bir bölümü iki bölüm bölme

Aşağıdaki örnek, bir tablo ya da dizin dört bölüme bölüm için bir bölüm işlev oluşturur.ALTER PARTITION FUNCTIONbölümden biri toplam beş bölüm oluşturmak için ikiye böler.

IF EXISTS (SELECT * FROM sys.partition_functions
    WHERE name = 'myRangePF1')
DROP PARTITION FUNCTION myRangePF1;
GO
CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );
GO
--Split the partition between boundary_values 100 and 1000
--to create two partitions between boundary_values 100 and 500
--and between boundary_values 500 and 1000.
ALTER PARTITION FUNCTION myRangePF1 ()
SPLIT RANGE (500);

B.Tek bir bölümde iki bölüm bir bölümlenmiş tablo birleştirme

Aşağıdaki örnek, aynı bölüm işlev yukarıda ve sonra birleştirmelerinin iki bölüm bir bölüm halinde toplam üç bölüm oluşturur.

IF EXISTS (SELECT * FROM sys.partition_functions
    WHERE name = 'myRangePF1')
DROP PARTITION FUNCTION myRangePF1;
GO
CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );
GO
--Merge the partitions between boundary_values 1 and 100
--and between boundary_values 100 and 1000 to create one partition
--between boundary_values 1 and 1000.
ALTER PARTITION FUNCTION myRangePF1 ()
MERGE RANGE (100);