alter PARTITION FUNCTION (Transact-sql)

Bölüm işlevi bölme veya sınır değerlerini birleştirerek değiştirir. alter PARTITION FUNCTION yürütmek, herhangi bir tablo veya bölüm işlevini kullanan dizin bir bölüm iki bölüme ayrılabilir veya iki bölüm içine daha az bölüm birleştirilebilir.

Dikkat notuDikkat

Birden fazla tablo veya dizin ile aynı bölüm işlevi kullanabilirsiniz. alter PARTITION FUNCTION hepsini tek bir işlemde etkiler.

Konu bağlantısı simgesi Transact-SQL Sözdizim 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şlevi addır.

  • BÖLME aralığı ( boundary_value )
    Bir bölüm için bölüm işlevi ekler. boundary_valueYeni bölüm aralığını belirler ve mevcut sınır aralıkları bölüm işlevi farklı olmalıdır. Temel boundary_value, Veritabanı AltyapısıVarolan aralıklarından birini ikiye böler. Bu iki bir yerde yeni boundary_valuebulunduğu yeni bir bölüm olarak kabul edilir.

    Filegroup çevrimiçi bulunmalı ve bölüm işlevini kullanan sonraki kullanılan tutacak yeni bir bölüm bölüm düzeni tarafından işaretlenmiş olabilir. Filegroups bir bölüm düzeni oluşturma deyimi bölümlere ayrılır. Bir bölüm düzeni oluşturma deyimi ayırır, daha fazla filegroups (daha az bölümleri create PARTITION FUNCTION deyiminde onları tutmak için filegroups oluşturulur) gerektiğinde, daha sonra var atanmamış filegroups ve bunlardan sonraki kullanılan bölüm düzeni tarafından işaretlenir. Bu filegroup yeni bölüm yapacak. Herhangi filegroups sonraki kullanılan bölüm düzeni tarafından işaretlenmiş varsa, bir filegroup eklemek veya yeni bir bölüm tutmak için mevcut bir tayin için alter PARTITION düzeni kullanmanız gerekir. Bir filegroup bölüm tutan ek bölümler tutmak için belirlenebilir. Bölüm işlevi birden fazla bölüm düzeni içinde yer alabilir çünkü bölümleri eklediğiniz bölüm işlevini kullanan tüm bölümü düzenleri bir sonraki kullanılan filegroup olmalıdır. Aksi takdirde, alter PARTITION FUNCTION bölüm düzenini veya bir sonraki kullanılan filegroup eksikliği düzenleri görüntüler bir hata ile başarısız olur.

    Tüm bölümleri aynı filegroup oluşturursanız, bu filegroup başlangıçta sonraki kullanılan filegroup otomatik olarak atanır. Ancak, bir bölme işlemi gerçekleştirildikten sonra orada artık belirlenmiş bir sonraki kullanılan filegroup. Filegroup alter PARITION düzeni kullanarak sonraki kullanılan filegroup için açıkça atamanız gerekir veya bir sonraki bölme işlemi başarısız olur.

  • Birleştirme [range ( boundary_value)]
    Bölümde kalan bölümleri biri değerleri birleştirir ve bir bölümü düşer. ARALIĞI (boundary_value) içine bırakılan bölüm değerleri birleştirilmiş bir sınır değeri olmalı. Başlangıçta yapılan filegroup boundary_valuesürece o kalan bölümü tarafından kullanılan veya sonraki kullanılan özelliği ile işaretlenmiş bölüm düzeninden kaldırılır. Birleştirilmiş bölüm tutan aslında değil filegroup içinde bulunduğu boundary_value. boundary_valuedeğişkenleri (kullanıcı tanımlı türü değişkenleri dahil) veya işlevleri (dahil kullanıcı tanımlı işlevler) başvurabilir sürekli bir ifadesidir. Başvuru yapamazsınız bir Transact-SQLifade. boundary_valuegerekir ya da maç onun karşılık gelen bölümleme sütun veri türüne örtük olarak dönüştürülebilir ve boyutunu ve ölçek değeri eşleşmiyor ki bu onun karşılık gelen bir şekilde örtük dönüştürme sırasında kesilmiş olamaz input_parameter_type.

En İyi Yöntemler

Her zaman tutmak boş bölümler bölüm (yeni veri yüklemeden önce) bölünmüş ve bölüm birleştirme (-den sonra eski veri boşaltma) değil tabi herhangi bir veri taşıma garanti bölümü aralığın her iki ucunda. Bölme veya doldurulan bölümler birleştirme kaçının. Bu-ebilmek var olmak son derece verimsiz olarak bu kadar dört kat daha fazla günlük üretimi neden olabilir ve de ağır kilitleme neden olabilir.

Sınırlamalar ve Kısıtlamalar

alter PARTITION FUNCTION tüm tablolar ve dizinler işlevini kullanan tek bir atom işlemde bölümlendirir. Ancak, çevrimdışı ve genişletebilme, ölçüde bağlı olarak bu işlem gerçekleşir, kaynak yoğun olabilir.

alter PARTITION FUNCTION yalnızca bir bölümü ikiye bölerek ya da birine iki bölümleri birleştirme işlemi için kullanılabilir. Bir tablo yoksa (örneğin, dan 10 Bölüm 5 bölüm) bölümlere şeklini değiştirmek için aşağıdaki seçeneklerden herhangi birini egzersiz yapabilirsiniz. Sistem yapılandırmasına bağlı olarak, bu seçenekler, kaynak tüketimi değişebilir:

  • İstenen bölüm işlevi ile yeni bölümlenmiş tablo oluşturmak ve verileri eski tablodan yeni tabloya bir INSERT INTO kullanarak yerleştirin...select from deyimi.

  • Bir yığın bölümlenmiş kümelenmiş bir dizin oluşturun.

    [!NOT]

    Bölümlenmiş Kümelenmiş dizin bırakarak bölümlenmiş bir yığın sonuçlanır.

  • Bırakın ve varolan bir bölümlenmiş dizini kullanarak yeniden Transact-SQLcreate INDEX deyimi ile varolan drop yan üzerinde =.

  • alter PARTITION FUNCTION deyimleri dizisi gerçekleştirir.

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

Bölüm işlevini kullanan herhangi bir tablo devre dışı bırakılmış bir kümelenmiş dizini olduğunda alter PARTITION FUNCTION başarısız olur.

SQL ServerBölüm işlevi değiştirmek için çoğaltma desteği sağlamaz. Bölüm işlevi yayın veritabanındaki değişiklikleri el ile abonelik veritabanı uygulanmış olması gerekir.

İzinler

alter PARTITION FUNCTION yürütmek için aşağıdaki izinlerden herhangi biri kullanılabilir:

  • HIÇBIR dataspace alter izni. Bu izni üyeleri için varsayılan sysadmin sabit sunucu rolü ve db_owner ve db_ddladmin veritabanı rolleri sabit.

  • control veya alter izni olan bölüm işlevi oluşturulan veritabanı.

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

Örnekler

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

Aşağıdaki örnek, bir tablo veya dizin dört bölüm bölüm bölüm işlevi 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.Bölüme bölümlenmiş bir tablonun iki bölümler birleştirme

Aşağıdaki örnek, yukarıdaki gibi aynı bölüm işlev oluşturur ve sonra iki bölümlerin toplam üç bölüm için bir bölüm birleştirir.

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);

Ayrıca bkz.

Başvuru

PARTITION FUNCTION (Transact-sql) oluştur

PARTITION FUNCTION (Transact-sql) bırak

PARTITION düzeni (Transact-sql) oluştur

alter PARTITION düzeni (Transact-sql)

drop PARTITION düzeni (Transact-sql)

Index (Transact-sql) oluştur

ALTER INDEX (Transact-SQL)

Tablo (Transact-sql) oluştur

sys.partition_functions (Transact-sql)

sys.partition_parameters (Transact-sql)

sys.partition_range_values (Transact-sql)

sys.Partitions (Transact-sql)

sys.Tables (Transact-sql)

sys.indexes (Transact-sql)

index_columns (Transact-sql)

Kavramlar

Bölümlenmiş tablolar ve dizinler